Global-Powershell-Logging指南:如何用USB Rubber Ducky一键开启PowerShell日志防御
【免费下载链接】usbrubberducky-payloadsThe Official USB Rubber Ducky Payload Repository项目地址: https://gitcode.com/GitHub_Trending/us/usbrubberducky-payloads
本文介绍 usbrubberducky-payloads 官方仓库中的Global-Powershell-Logging载荷:通过 USB Rubber Ducky 在 Windows 上快速开启 PowerShell 全局日志与转录,让所有 PowerShell 输入输出自动留痕,为 PowerShell 日志防御提供一套可复现的部署方案。
一、先认识 USB Rubber Ducky 威胁
USB Rubber Ducky 是一款"Bad USB"设备:它插入电脑后被系统识别为键盘,随后以极快的速度"敲入"预设的 DuckyScript™ 脚本。对普通用户来说,一次插拔就可能悄悄打开 PowerShell 并执行一串命令,整个过程屏幕上只闪一下窗口,极难察觉。
传统的安全响应思路是"事后排查",但如果能提前给 PowerShell 装上"行车记录仪"——把每一次打开、每一条命令、每一段输出都写成日志文件——那么无论是脚本小子还是勒索软件,操作痕迹都无法抹掉。
这正是本仓库incident_response(应急响应)分类下 Global-Powershell-Logging 载荷要做的事:把 USB Rubber Ducky 的"自动化"能力反过来用,替你完成防御配置。
二、Global-Powershell-Logging 的工作原理
该载荷由两个文件组成,位于 payloads/library/incident_response/Global-Powershell-Logging/ 目录:
- 载荷脚本:Payload.txt —— 编译后写入 Ducky 的 DuckyScript™ 流程
- 实际执行的防御脚本:Global-Powershell-Logging.ps1 —— 负责开启/关闭日志的 PowerShell 脚本
- 模块说明:README.md —— 作者 beigeworm 给出的官方用法
它的执行流程只有 4 步,非常轻量:
- 识别系统:载荷内嵌了
PASSIVE_WINDOWS_DETECT被动检测扩展,确认目标确实是 Windows 10/11 才继续,否则会亮起红灯并停止,避免误操作 Mac/Linux 系统。 - 打开 PowerShell:用
GUI r快捷键唤起运行框,自动输入一条"绕过执行策略 + 隐藏窗口 + 从服务器下载脚本并执行"的命令。 - 请求管理员权限:通过
CTRL-SHIFT ENTER触发 UAC 提权,你只需点一次"是"。 - 一键完成配置:脚本写入系统级策略,之后每一次新开的 PowerShell 会话都会自动生成转录文件。
💡 上图是防御配置前 PowerShell 的默认执行策略(ExecutionPolicy)状态。脚本之所以要加
-Ep Bypass参数,就是为了不受这些策略限制,顺利部署日志功能。
三、快速部署:三步开启 PowerShell 全局日志
第 1 步:替换脚本下载地址
打开 Payload.txt,找到DEFINE #SCRIPTURL一行,把默认的https://yourserver.com/rawfile/Global-Powershell-Logging.ps1换成你自己服务器上托管的 Global-Powershell-Logging.ps1 文件地址。
⚠️ 仓库中的地址是占位符,务必替换为你自己的可信地址,不要直接使用他人服务器。
第 2 步:编译并写入 Ducky
在 Payload.txt 中使用 DuckyScript™ 语法(如DEFINE、EXTENSION、LED_G等),按照官方 PayloadStudio 的指引编译成 Ducky 可识别的二进制格式,再写入 USB Rubber Ducky 存储即可。仓库根目录的 README.md 和 CONTRIBUTING.md 都给出了编译与提交的相关说明。
第 3 步:插入设备,等待绿灯
把 Ducky 插入 Windows 电脑后,指示灯先闪绿(代表识别到 Windows),随后自动完成全部配置。整个过程中你只需要在 UAC 弹窗出现时点一次"是"。
四、日志记录在哪些位置?
脚本生效后,日志会分两层落盘:
| 记录内容 | 位置 |
|---|---|
| 每个 PowerShell 会话的完整转录(含时间戳、命令、输出) | 文档\WindowsPowerShell\Transcript.日期.txt |
| 转录文件的索引台账 | 文档\WindowsPowerShell\Transcripts_Logging.txt |
除此之外,脚本还会开启两项系统级策略(写入HKLM:\Software\Policies\Microsoft\Windows\PowerShell注册表键):
- EnableScriptBlockLogging = 1:PowerShell 引擎级别记录所有脚本块;
- EnableModuleLogging = 1:记录模块加载行为。
也就是说,即使攻击者手动"关掉"了我们注入的转录脚本,系统策略层依然会留下痕迹——这就是纵深防御的意义。
五、如何关闭日志:同一个脚本再跑一次
Global-Powershell-Logging.ps1 是一个开关式脚本:它通过检测文档\WindowsPowerShell目录下是否已有.ps1转录文件来判断当前状态。
- 目录为空 → 显示 "Adding Powershell logging",开启日志;
- 已有文件 → 显示 "Removing Powershell logging",删除注入文件并把两个策略值归零。
因此关闭防御只需重复第 1~3 步再执行一次即可,无需额外卸载工具。
六、注意事项与常见问题
🔐需要管理员权限脚本要修改机器级注册表和系统策略,UAC 提权是必需的。如果点"是"后失败,请确认账户具有本地管理员权限。
🛡️仅限受管设备README 中明确声明:该脚本仅适用于你拥有或获得授权使用的系统。在未经授权的电脑上部署日志采集属于违规行为,请务必遵守。
🖥️Windows 10 / 11 专用载荷的Target标注为 Windows 10/11。插入非 Windows 设备时,被动检测扩展会直接终止载荷(红灯提示),不会执行任何操作,这一点设计得很安全。
七、相关文件路径汇总
- 载荷主文件:payloads/library/incident_response/Global-Powershell-Logging/Payload.txt
- 防御脚本:payloads/library/incident_response/Global-Powershell-Logging/Global-Powershell-Logging.ps1
- 模块文档:payloads/library/incident_response/Global-Powershell-Logging/README.md
- 同类应急响应载荷目录:payloads/library/incident_response/
八、写在最后
Global-Powershell-Logging 展示了 Bad USB 仓库的另一面:Payload 库不只是攻击者的工具箱,更是蓝队的自动化响应武器库。用 USB Rubber Ducky 完成一次性的日志配置,之后整个 Windows 系统的 PowerShell 行为都会自动留痕——对于经常接触未知 USB 设备的运维和安全人员来说,这无疑是最低成本、收益极高的 PowerShell 日志防御方案。
📌 延伸阅读:仓库中还有 Disable-Windows-Defender-Permanently 等攻防对照模块,对照阅读能帮助你更完整地理解 Windows 防御体系。
【免费下载链接】usbrubberducky-payloadsThe Official USB Rubber Ducky Payload Repository项目地址: https://gitcode.com/GitHub_Trending/us/usbrubberducky-payloads
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考