☰
Global-Powershell-Logging指南:如何用USB Rubber Ducky一键开启PowerShell日志防御
2026/10/7 8:09:50 网站建设 项目流程

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 步,非常轻量:

  1. 识别系统:载荷内嵌了PASSIVE_WINDOWS_DETECT被动检测扩展,确认目标确实是 Windows 10/11 才继续,否则会亮起红灯并停止,避免误操作 Mac/Linux 系统。
  2. 打开 PowerShell:用GUI r快捷键唤起运行框,自动输入一条"绕过执行策略 + 隐藏窗口 + 从服务器下载脚本并执行"的命令。
  3. 请求管理员权限:通过CTRL-SHIFT ENTER触发 UAC 提权,你只需点一次"是"。
  4. 一键完成配置:脚本写入系统级策略,之后每一次新开的 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),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询