一、簡介
BloodHound是一款將域內信息可視化的單頁的web應用程序,是一款在域內進行信息收集的免費工具;
bloodhound通過圖與線的形式,將域內用戶、計算機、組、會話、ACL以及域內所有的相關用戶、組、計算機、登錄信息、訪問控制策略之間的關系呈現出來。
可供滲透測試人員快速的分析域內情況、拓撲圖;
使用bloodhound可以快速、深入地了解活動目錄中用戶之間的關系,獲取哪些用戶具有管理員權限、哪些用戶對所有的計算機都具有管理員權限、哪些用戶是有效的用戶組成員信息。
數據分析基於Neo4j數據庫
BloodHound可以在域內導出相關信息,將采集的數據導入本地的neo4j數據庫,並進行展示和分析。
neo4j是一款noSQL圖形數據庫,它將結構化數據存儲在網絡內而不是表中。bloodhound利用這種特性,直觀的以節點空間的形式表達相關數據。
neo4j數據庫同其他數據庫一樣,擁有自己的查詢語言。
推薦Neo4j教程:https://www.w3cschool.cn/neo4j/
二、安裝配置BloodHound
為了方便快捷地使用Neo4j的web管理界面,推薦使用Chrome或者火狐瀏覽器
0x01windows
1、安裝java環境
neo4j運行需要java環境,因此需要配置java環境;
2、下載Neo4j
在neo4j官方網站下載最新版的neo4j數據庫安裝包:https://neo4j.com/
選則community server的windows版本:
但官網下載速度着實急死人,推薦個網盤下載:
3.5.5版本:https://pan.baidu.com/s/1hygHS6_W5rqoAc41V30sTQ 提取碼:v5z4
3、啟動neo4j服務
下載后,解壓,進入到/bin目錄中,然后打開cmd控制端,輸入命令 neo4j.bat console
像上面這樣表示啟動服務成功,然后打開瀏覽器,訪問url http://127.0.0.1:7474/browser ;
默認的用戶名和密碼都為:neo4j
之后會修改密碼,為了方便起見改為123456
4、下載BloodHound
github:https://github.com/BloodHoundAD/BloodHound/releases/
選在windows 32或者64版本。
更多地址:
https://github.com/BloodHoundAD/BloodHound https://codeload.github.com/BloodHoundAD/BloodHound/zip/master
5、啟動bloodhound
解壓后,進入解壓目錄,找到BloodHound.exe雙擊,之后會彈出登錄框,需要neo4j數據庫的賬號密碼,賬號為neo4j,密碼為123456;
點擊login即可登入到bloodhound主界面:
0x02 kali
kali安裝配置BloodHound更簡單,我就是用的kali來安裝的bloodhound,因為主要還是windows上下載gloodhound時太慢。
首先得確保自己得kali系統是最新的:
apt-get update apt-get dist-upgrade
然后通過一條命令即可下載Neo4j及BloodHoun:
apt-get install bloodhound
之后直接運行命令:neo4j console 來啟動neo4j數據庫;
同樣的進去更改密碼為123456或其他;
打開新的一個終端,輸入命令: bloodhound 即可啟動bloodhound窗口。
三、BloodHound主界面講解
1、界面左上角是菜單按鈕和搜索欄。點開菜單按鈕,有三個選項卡;
三個選項卡分別是:數據庫信息、節點信息和查詢;
在數據庫信息下可以顯示所分析域的用戶數量、計算機數量、組數量、Sessions數量、ACLs數量、關系;
節點信息中顯示了用戶在圖表中單擊的節點的信息;
查詢選項卡中顯示了BloodHound預設置的查詢請求和用戶自己構建的查詢請求。
2、右上角是設置區。第一個是刷新;第二個是導出圖形功能,可將當前繪制的圖形導出為JSON或PNG文件;
第三個是導入圖形功能;第四個是上傳數據功能,BloodHound會幫助我們分析並展示數據;
第五個是更改布局類型功能,用於在分層和強制定向圖布局之間切換;第六個是設置功能,可以更改節點的折疊行為。
四、數據采集
0x01准備
BloodHound需要來自Active Directory(AD)環境的三條信息才能運行:
- 哪些用戶登錄了哪些機器
- 哪些用戶擁有管理員權限
- 哪些用戶和組屬於哪些組
在大多數情況下,收集此信息不需要管理員權限,也不需要在遠程系統上執行代碼。
因為需要的這三條信息都依賴於powerview.ps1腳本的bloodhound,其分為兩部分:
- 一是powershell采集器腳本SharpHound.ps1
- 二是可執行文件SharpHound.exe.
這兩個采集器的下載地址為:
https://github.com/BloodHoundAD/BloodHound/blob/master/Ingestors/SharpHound.ps1 https://github.com/BloodHoundAD/BloodHound/blob/master/Ingestors/SharpHound.exe
這里主要介紹這兩個采集器,其他的還有什么基於C、python的等
0x02 使用SharpHound.exe提取域內信息數據
下載好sharphound.exe后,將其上傳到目標系統中,這里用cs來進行操作:
注意:cs連接的目標機需要是域用戶登錄(任何域用戶均可)或者是system權限才能采集到有用的數據。
上傳到C:\ProgramData下面,然后在cs的beacon中執行命令:
shell C:\ProgramData\SharpHound.exe -c all
執行后會自動進行信息采集,會在同beacon的當前目錄下生成類似“20200227235955_BloodHound.zip”的壓縮包或者單個的json文件;
0x03 導入數據
將所有生成的文件下載下來,然后復制到存在neo4j服務、bloodhound的計算機上(也就是我的kali),再將產生的壓縮包和json文件使用bloodhound的上傳功能逐個導入。
可以進行拖拽上傳,可拖拽到bloodhound界面上除信息選項卡以外的任意位置。
文件上傳后,即可查看內網信息。
五、查詢分析信息數據
可以看到數據庫中現在有5個用戶、3台計算機、50個組、439條ACL、496個關系。
由於我是用的自己搭的由三台機子搭建的最簡單的 域,因此數據不是很多。
進入查詢模塊,有12個常用的查詢條件:
1、查找所有域管理員 2、尋找最短到達域管理員路徑 3、尋找管理員登陸記錄 4、存在Session記錄最多的前十個用戶 5、存在Session記錄最多的前十個計算機 6、擁有最多本地管理權限的前十個用戶 7、擁有最多的管理員登陸的前十個機器 8、具有外部域組成員的用戶 9、具有外部域組成員的組 10、域信任地圖 11、SPN用戶的最短路徑 12、SPN用戶到域管理員的最短路徑
0x01 查詢所有域管理員
點擊Find all Domain Admins選項,選擇需要查詢的域名,如圖:
可以看出當前域只有1個具有管理員權限的用戶。
按ctrl鍵可循環顯示不同的節點標簽。也可選中某個節點,在其圖標上按住鼠標左鍵,將節點移動到其他位置。單擊節點可看節點信息。
0x02 查找到達域管理員的最短路徑
單擊“Find Shortest Paths to Domain Admins”選項,bloodhound進行分析,將列出可以到達域管理員最短的路徑:
我的環境就三台機子,並且我拿下的這台機子上就是域管理員在登錄,因此就直接到達域管。
就用一下書上的圖做演示吧:
用戶組為從上到下的包含制度:兩個組,上面的節點包含下面的。
一個人的節點圖標:代表一個用戶;
多個人的節點圖標:代表用戶組;
計算機圖標:代表域內一台計算機;
MemberOf:表示組的成員
GenericAll:表示我對你有權限
ForceChangePassword: 分支用戶表示我可以對你強制推送策略,可以直接更改你的用戶密碼;
AdminTo:表示我是你的本地管理員
HasSession:表示我可以拿到你的會話;
DCSync: 分支用戶表示我可以對該域的域控進行DCSync同步
- 左上角為目標域管理員組,也就是擁有15個具有域管理員權限的用戶,我們只需順着路徑得到這15個中的一個節點即可,因此他們是橫向的核心目標,是這次路徑查詢的每跳路徑的盡頭;
- 左下角第一條線路,這三個用戶屬於第一個節點的組、第一節點組又在第二節點組的組內,第二節點組又對其上部的第三節點的用戶具有權限,該用戶又是上一台第四個節點的計算機的本地管理員,可以在這台計算機上拿到上面一個就是第五個節點用戶的session會話,該用戶屬於DOMAIN ADMINS組。可以通過hash傳遞(PTH)的方法拿下域管理員和域控制器。在其中第三個節點的分支中的用戶可以對處於第三節點的用戶強制推送惡意策略,可以直接修改第三節點用戶密碼,進而再次PTH拿下第四節點,繼續推進。
- 中間的組,第一個節點中的三個用戶為域管理員委派服務賬號,有權限可以對該域的域控制器進行DCsync同步,將第二節點的用戶的HASH同步過來,第二節點用戶屬於DOMAIN ADMINS組,進而拿下域控制器。
- 最右邊那組,第一節點的用戶是第二節點計算機的本地管理員,在該計算機上可以獲得第三節點的用戶HASH,第三節點用戶又屬於第四節點的組,第四節點組是第五節點計算機的本地管理員組,在該計算機可以獲取第五節點用戶的HASH,該用戶是DOMAIN ADMINS組用戶,進而拿下域控制器。
0x03 查看指定用戶與域關聯的詳細信息
單擊某個用戶節點,bloodhound將在節點信息選項卡中羅列出該節點的信息。可以查看該用戶Name、DisPlayName、最后修改密碼時間、最后登陸時間、該用戶登陸在那台計算機存在Session,是否啟動、屬於那些組、擁有那些機器的本地管理員權限、對訪問對象對控制權限等。
0x04 查看指定計算機與域的關系
單擊任意計算機圖標,可看到該計算機在域內的名稱、系統版本、是否啟用、是否允許無約束委托等信息。單擊域控看看:
最后
總的來說bloodhound這款工具對於我們進行域內的信息收集、域內的大概拓撲都整理得非常好;但采集器sharphound在收集信息的時候會報毒,並且會在系統上留下很多日志,有利有弊吧,對於小點的域環境的話還不錯。