Poor_Mans_Nmap Payload解析:USB Rubber Ducky仓库里的轻量端口扫描
【免费下载链接】usbrubberducky-payloadsThe Official USB Rubber Ducky Payload Repository项目地址: https://gitcode.com/GitHub_Trending/us/usbrubberducky-payloads
在 usbrubberducky-payloads 官方仓库中,有一款名为Poor_Mans_Nmap的 Payload:它让 USB Rubber Ducky 变成一台「轻量端口扫描器」——无需安装 Nmap,纯靠 Windows 自带 PowerShell 完成整个局域网的存活探测,并把结果直接发到你的邮箱。本文将带你完整拆解这款 Payload 的工作原理、各阶段动作和使用限制,适合刚接触 DuckyScript 的新手阅读。
它是什么:一个藏在U盘里的局域网扫描器
Poor_Mans_Nmap 位于仓库的 payloads/library/exfiltration/Poor_Mans_Nmap/ 目录,作者 JoustingZebra,目标平台为 Windows(PowerShell 5/7)。
它的核心思路非常「穷人的智慧」:
| 传统做法 | Poor_Mans_Nmap 的做法 |
|---|---|
| 在目标机器安装 Nmap | 只用 PowerShell 内置 cmdlet |
| 手动运行、手动导出 | 插入U盘自动执行 |
| 结果留在本机磁盘 | 扫描完直接邮件外发并自清理 |
整个扫描脚本被压缩成一行STRING命令写入目标机的临时目录(netscan.ps1),执行后以附件形式通过 Outlook SMTP 外发,再删除痕迹。
工作原理:从插入U盘到邮件外发的5个阶段
Payload 源文件为 payload.txt,执行流程可以拆成 5 步:
第1步:唤醒并打开 PowerShell
插入后延迟 1 秒,GUI r打开「运行」对话框,输入powershell.exe -Nop -Noni启动一个无配置文件、非交互式的 PowerShell 窗口。
第2步:把扫描脚本「打字」进目标机
用一条超长STRING命令把完整 PowerShell 扫描脚本写入$ENV:temp\netscan.ps1。脚本会:
- 通过
Get-NetAdapter找到第一个处于 Up 状态的网卡 - 自动计算子网掩码、网络地址和广播地址(仅支持 IPv4)
- 用
Test-Connection(即 Ping)逐个探测网段内每个 IP 是否存活 - 对存活主机用
Get-NetNeighbor读取其 MAC 地址 - 带
Write-Progress进度条,C 类网段约6 分钟扫完
第3步:放开执行策略并运行
Set-ExecutionPolicy Bypass -Scope Process cd $ENV:temp第4步:执行 + 邮件外发(一行搞定)
关键设计:扫描、邮件、清理全部写在同一行命令里执行。这样 Rubber Ducky 完成「打字」后可以立刻拔出,不用等脚本跑完。命令链包括:
- 运行
netscan.ps1,输出保存为netscan.txt Send-MailMessage通过smtp-mail.outlook.com:587外发(带附件)Remove-Item删除netscan.*- 清除 PowerShell 历史,保护邮件凭据
第5步:超长等待后自动退出
DELAY 10000 + REPEAT 9831组合产生约27.3 小时的空等——为的是给 B 类大网段留足扫描时间,到期后自动EXIT关闭窗口。
为什么叫「Poor Man's(穷人的)」Nmap
几个取舍让它既轻又巧:
- 零外部依赖:不需要下载任何工具,扫描逻辑全靠系统自带的
Test-Connection、Get-NetNeighbor等 cmdlet - 速度换功能:单线程逐 IP Ping,不扫端口细节,胜在「够轻、够快部署」
- 即插即走:一行命令设计让 Ducky 打完整段脚本就退场,不占用目标机
- 自动反取证:删文件、清历史,目标机不留扫描痕迹
⚠️ 使用限制(源自文件头部注释):
- 仅支持Class B 及更小的网段,仅IPv4,只扫找到的第一个局域网
- 执行前必须把命令中的用户名(出现 3 处)和密码(1 处)替换成自己的邮箱凭据
延伸阅读:仓库里的更多网络侦察 Payload
如果你对「插一下U盘就摸清一台机器」感兴趣,仓库里还有这些值得对照阅读的作品:
- NullSec-NetworkMapper:纯原生 Windows 命令的自动网络测绘,含子网 Ping 扫描和默认网关常见端口扫描,约 45 秒出报告,是 Poor_Mans_Nmap 的「加强版」
- lin-icmp_timing-based-data-exfiltration:Linux 下基于 ICMP 时序的隐蔽数据外传,同样是「用 Ping 做文章」
- PingZhellDucky:把 ICMP 通道升级为远程 Shell
写在最后
Poor_Mans_Nmap 是学习 DuckyScript 的优秀案例:它展示了如何用最少命令编排「打开程序→写文件→执行→外传→清痕→退出」的完整攻击链。请务必仅在自己拥有或获得明确授权的网络环境中进行测试,扫描未授权网络在多数地区均属违法行为。
📚 更多 Payload 分类可参考仓库目录:execution、recon、exfiltration、remote_access。
【免费下载链接】usbrubberducky-payloadsThe Official USB Rubber Ducky Payload Repository项目地址: https://gitcode.com/GitHub_Trending/us/usbrubberducky-payloads
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考