Active Directory 自動列舉
Active Directory 自動列舉
列舉 AD 好用的自動化工具
- PingCastle https://www.pingcastle.com/ 這是一個付費工具
- BloodHound https://bloodhound.readthedocs.io/en/latest/ 我們主要會用這個免費工具
- SharpHound https://bloodhound.readthedocs.io/en/latest/data-collection/sharphound.html 收集資料
匯入 Sharphound 模組,一樣記得要先 powershell -ep bypass
為了運行 SharpHound 必須先運行 Invoke-BloodHound
指令 Invoke-BloodHound -CollectionMethod All -OutputDirectory C:\Users\stephanie\Desktop\ -OutputPrefix "corp audit" , 需要一段時間收集相關資訊,查看桌面文件時發現有另外一個 bin 檔案,這是快取檔案用以加快資料收集速度用,分析並不需要它所以可以直接刪除或忽略
練習 1 : 使用 SharpHound 收集域資料。我們可以使用 SharpHound 的哪個函數來查看域在較長時間內發生的變化?
查看這裡 https://bloodhound.readthedocs.io/en/latest/data-collection/sharphound.html
可以知道使用 --loop
練習 2 : SharpHound 中的哪種語法允許我們對生成的 .zip 檔案設定密碼?
參考 https://github.com/BloodHoundAD/SharpHound
答案 --zippassword
kali 機器上 neo4j 預設沒有安裝,輸入 neo4j 進行安裝
安裝完畢後啟動 neo4j,sudo neo4j start,可以看到服務預設跑在 http://localhost:7474
開啟瀏覽器輸入 http://localhost:7474,並用預設的帳號密碼 neo4j / neo4j 登入
登入後要我們換密碼,這裡就隨便用一個密碼 VQZxaLcBD7f4ReR 繼續
neo4j 圖形資料庫運行後接著啟動 BloodHound,預設一樣沒安裝,輸入 bloodhound 進行安裝
會直接出現要我們連接使用 neo4j 資料庫的連線資訊,輸入帳號密碼後繼續
將剛剛傳到 kali 機器的 zip 檔直接匯入或是拖拉過去都可以
點擊左邊的選單就可以看到有相關資訊進來了
第一步當然是先看看 Domain Admins
透過 setting 將節點資訊打開就可以看到節點的資訊了
接著讓我們查看分析頁籤中,顯示到達 Domain Admins 的最短路徑
這張圖直接告訴了我們如何入侵是最短的路徑,以便決定攻擊路徑
點擊 Help 查看 stepphanie 到 Client74 中間的 AdminTo 圖示
雖然我們登入的是 client75,但告訴我們 stephanie 對 client74 有管理權限
繼續看圖發現其中一個 Domain Admin "Jeffadmin" 對 Client74 有著 Session
這看來讓我們下一步進入 Client74 是一個漂亮的攻擊路徑
左上 search stephanie@corp.com 然後在右圖中滑鼠右鍵選擇 "! Mark User as Owned"
接著他會出現骷髏頭圖示如下
接著重複的手法對現在登入的 Client75 選擇 "! Mark Computer as Owned"
一樣會出現骷髏頭圖示如下
接著選這個 "Shortest Paths to Domain Admins from Owned Principals"
可以看到路徑相對變得簡單多了
練習 : 以 Stephanie 身分登入 CLIENT75。從 CLIENT75 枚舉網域使用者的物件權限。一旦識別出弱權限,就可以使用它們來完全控制帳戶並使用它來登入網域。登入後,使用本模組中所示的技術重複枚舉程序以取得標誌
stephanie 登入 Client75
└─$ xfreerdp /u:stephanie /p:'LegmanTeamBenzoin!!' /d:corp.com /v:192.168.240.75
看一下本機有沒有其他 Session,Get-NetSession -ComputerName 127.0.0.1 -Verbose
結果顯示沒有其他 Session
改用 PSTools 中的 PsLoggedon.exe 查詢本機,看到還有一個 Session dave
看來就是要破解 dave 因為他是本機 Administrators 群組成員之一
經過一番提權列舉後發現無法提權成功,暫時放棄改枚舉物件權限看看
先使用 Get-ObjectAcl -Identity stephanie
從前兩行先得知 stephanie 的 SID 尾碼是 -1104 先記下來
ObjectDN : CN=stephanie,CN=Users,DC=corp,DC=com
ObjectSID : S-1-5-21-1987370270-658905905-1781884369-1104
上述指令是察看誰對 stephanie 這個帳號 object 物件有權限
但我們現在已經知道 stephanie 的密碼,想要的是進一步的權限,所以先知道他的 SID 後
去查看其他物件看看誰有 GenericAll 的權限,然後顯示 SID 尾碼是 -1104 才有價值
故先列舉一下網域使用者 Get-NetUser | select cn
接著查看每個物件的 GenericAll 權限
Get-ObjectAcl -Identity "krbtgt" | ? {$_.ActiveDirectoryRights -eq "GenericAll"} | select SecurityIdentifier,ActiveDirectoryRights
這麼重要的帳號看來沒有權限......廢話
列舉使用者 dave 看看
Get-ObjectAcl -Identity "dave" | ? {$_.ActiveDirectoryRights -eq "GenericAll"} | select SecurityIdentifier,ActiveDirectoryRights
一樣沒有權限,因為沒看到尾碼是 -1104
一路列舉網域使用者帳號,發現在 robert 出現了
Get-ObjectAcl -Identity "robert" | ? {$_.ActiveDirectoryRights -eq "GenericAll"} | select SecurityIdentifier,ActiveDirectoryRights
既然有權限那就先將該使用者的密碼重置,第一步設定一個參數 $UserPassword
將該使用者的密碼設定為 Password123!
指令 $UserPassword = ConvertTo-SecureString 'Password123!' -AsPlainText -Force
接著使用 Powershell 指令將該網域使用者 robert 密碼重置
指令 Set-DomainUserPassword -Identity robert -AccountPassword $UserPassword
加上 -Verbose 輸出看結果,可以看到顯示成功重置了
回頭看題目,是找到弱權限,這個帳號可以重置密碼就是一種弱權限的體現
又告知我們用該帳戶來登入網域,所以接下來用帳號密碼 robert / Password123! 登入其他機器
發現在 Client74 可以直接登入
└─$ xfreerdp /u:robert /p:'Password123!' /d:corp.com /v:192.168.240.74
練習補充說明
有使用指令 Get-LocalGroupMember Administrators 查看發現 robert 隸屬本機的管理者群組
所以對該台機器有最大權限,故要好好的瀏覽一下
要找的檔案是 flag.txt 或是 proof.txt 或是 local.txt,尋找的方式指令如下
切換到 cmd 使用指令 dir /s flag.txt == proof.txt == local.txt
Powershell 的指令尋找方式如下
指令 Get-ChildItem -Path C:\ -Include proof.txt -File -Recurse -ErrorAction SilentlyContinue
proof.txt 可以支援萬用字元例如 *proof*
指令 Get-ChildItem -Path C:\ -Include *proof* -File -Recurse -ErrorAction SilentlyContinue
留言
張貼留言