安裝
apt-get install bloodhound
運行neo4j
neo4j start
錯誤1
ERROR! Neo4j cannot be started using java version 1.8.0_221.
* Please use Oracle(R) Java(TM) 11, OpenJDK(TM) 11 to run Neo4j.
* Please see https://neo4j.com/docs/ for Neo4j installation instructions.
因為我的電腦中默認不是openjdk
解決辦法
修改usr/share/neo4j/bin/neo4j
164行:JAVA_CMD="/usr/lib/jvm/java-11-openjdk-amd64/bin/java"
188行:JAVA_HOME="/usr/lib/jvm/java-11-openjdk-amd64/"
錯誤2
root@windows7:~# neo4j start
Directories in use:
home: /usr/share/neo4j
config: /usr/share/neo4j/conf
logs: /usr/share/neo4j/logs
plugins: /usr/share/neo4j/plugins
import: /usr/share/neo4j/import
data: /usr/share/neo4j/data
certificates: /usr/share/neo4j/certificates
run: /usr/share/neo4j/run
Starting Neo4j.
WARNING: Max 1024 open files allowed, minimum of 40000 recommended. See the Neo4j manual.
./bin/neo4j:行394: /usr/share/neo4j/logs/neo4j.log: 沒有那個文件或目錄
解決辦法
創建/logs/
目錄 和neo4j.log
文件
成功
- 第一次登錄后會要求修改密碼
Host默認為 bolt://127.0.0.1:7687
User默認為 neo4j
Password默認為 neo4j
運行bloodhound
bloodhound
- 輸入帳號密碼登錄即可
帳號密碼為neo4j的帳號密碼
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
采集數據
SharpHound.exe -c all
或者
Invoke-Bloodhound -CollectionMethod ALL
收集器選項
枚舉選項
CollectionMethod - 要使用的集合方法。此參數接受以逗號分隔的值列表。具有以下默認值(Default: Default):
Default - 執行組成員身份收集、域信任收集、本地管理收集和會話收集
Group- 執行組成員身份集合
LocalGroup - 執行本地管理員集合
RDP - 執行遠程桌面用戶集合
DCOM - 執行分布式COM用戶集合
GPOLocalGroup - 使用組策略對象執行本地管理員收集
Session- 執行會話收集
ObjectProps - 為LastLogon或PwdLastSet等屬性執行對象屬性收集
ComputerOnly - 執行本地管理員,RDP,DCOM和會話集合
LoggedOn - 執行特權會話收集(需要目標系統上的管理員權限)
Trusts - 執行域信任枚舉
ACL - 執行ACL的收集
Container - 執行容器的收集
DcOnly - 僅使用LDAP執行收集。包括Group,Trusts,ACL,ObjectProps,Container和GPOLocalGroup。
All- 執行除GPOLocalGroup和LoggedOn之外的所有收集方法
SearchForest - 搜索林中的所有域,而不僅僅是當前域
Domain - 搜索特定域。如果為null,則使用當前域(默認值:null)
Stealth - 執行隱藏收集方法。所有隱藏選項都是單線程的。
SkipGCDeconfliction - 會話枚舉期間跳過全局編錄取消沖突。這可以加快枚舉速度,但會導致數據可能不准確。
ExcludeDc - 從枚舉中排除域控制器(避免使用Microsoft ATA標志:)
ComputerFile - 指定要從中加載計算機名稱/ IP的文件
OU - 指定要枚舉的OU
連接選項
DomainController - 指定要連接的域控制器(默認值:null)
LdapPort - 指定LDAP所在的端口(默認值:0)
SecureLdap - 使用安全LDAP而不是常規LDAP連接到AD。默認情況下將連接到端口636。
IgnoreLdapCert - 忽略LDAP SSL證書。例如,如果存在自簽名證書,則使用
LDAPUser - 用於連接LDAP的用戶名。還需要LDAPPassword參數(默認值:null)
LDAPPass - 用戶連接LDAP的密碼。還需要LDAPUser參數(默認值:null)
DisableKerbSigning - 禁用LDAP加密。不推薦。
性能選項
Threads- 指定要使用的線程數(默認值:10)
PingTimeout - 指定ping請求的超時(以毫秒為單位)(默認值:250)
SkipPing - 指示Sharphound跳過ping請求以查看系統是否已啟動
LoopDelay - 會話循環之間的秒數(默認值:300)
MaxLoopTime - 繼續會話循環的時間值。格式為0d0h0m0s。Null值將會循環兩個小時。(默認值:2h)
Throttle - 在每次請求到計算機后添加延遲。值以毫秒為單位(默認值:0)
Jitter - 為閥門值增加百分比 jitter。(默認值:0)
輸出選項
JSONFolder - 存儲json文件的文件夾(默認值: .)
JSONPrefix - 要添加到JSON文件的前綴(默認值:“”)
NoZip - 不要將JSON文件壓縮到zip文件。將JSON文件存儲在磁盤上。(默認值:false)
EncryptZip - 將隨機生成的密碼添加到zip文件中。
ZipFileName - 指定zip文件的名稱
RandomFilenames -隨機輸出文件名
PrettyJson - 在多行上輸出帶縮進的JSON以提高可讀性。權衡是增加文件大小。
緩存選項
CacheFile - Sharphound緩存的文件名。(默認值:BloodHound.bin)
NoSaveCache - 不要將緩存文件存儲到磁盤上。如果沒有此標志,BloodHound.bin將從磁盤中被刪除
Invalidate --使緩存文件無效並生成新緩存
雜項選項
StatusInterval - 枚舉期間顯示進度的間隔(以毫秒為單位)(默認值:30000)
詳細 - 啟用詳細輸出
## 界面使用
1.界面介紹
BloodHound界面設計直觀,操作重點突出。因為BloodHound是以Electron應用程序編譯的,所以它跨平台的,可在Windows,OSX和Linux上運行。
(1).認證
當您第一次打開BloodHound時,會收到登錄提示:
BloodHound登錄提示
Database URL是NEO4J數據庫運行的IP地址和端口,格式應為bolt://ip:7687
DB Username是為NEO4J的數據庫的用戶名。NEO4J數據庫的默認用戶名是NEO4J
DB Password 是NEO4J數據庫的密碼。NEO4J數據庫的默認密碼是NEO4J。提供的示例數據庫的密碼是BloodHound
(2).概觀
成功登錄后,BloodHound將在其名稱中繪制名為“Domain Admins”的任何組,並向您顯示屬於該組的有效用戶:
BloodHound界面概述
上圖中,BloodHound界面分為5個部分:
- 1.菜單和搜索欄
- 2.圖形繪制區域
- 3.設置
- 4.放大/縮小並重置
- 5.初始密碼查詢
(3).菜單和搜索欄
BloodHound菜單
搜索欄和菜單旨在直觀且以操作為重點。左上角的三行將切換“數據庫信息”,“節點信息”和“查詢”選項卡的下拉列表。
“數據庫信息”選項卡顯示有關當前加載的數據庫的基本信息,包括用戶、計算機、組和關系(或邊)的數量。您還可以在這里執行基本的數據庫管理功能,包括注銷和切換數據庫,以及清除(讀取:從中刪除所有信息)當前加載的數據庫(注意!)
“節點信息”選項卡將顯示有關您在圖表中單擊的節點的信息。
“查詢”選項卡將顯示我們在BloodHound中包含的預建查詢,以及您可以自己構建其他查詢。稍后將提供有關此內容的更多信息。
(4).圖形繪制區域
這是BloodHound繪制節點和邊緣的區域。按住ctrl鍵將循環顯示三個選項以顯示節點標簽:Default Threshold, Always Show, Never Show.。可以單擊並按住一個節點,將其拖動到其他點。您也可以單擊一個節點,偵探犬將用該節點的信息填充“節點信息”選項卡。
(5).設置
設置
- 刷新 - BloodHound將重新計算並重新繪制當前顯示。
- 導出圖表 - BloodHound可以將當前繪制的圖形導出為JSON格式,或者導出為PNG。
- 導入圖 表- BloodHound將以JSON格式繪制導入的圖形。
- 上傳數據 - BloodHound將自動檢測然后提取CSV格式的數據。有關此內容的更多信息,請參閱CSV提取。
- 更改布局類型 - 在分層(dagre)和強制導向圖布局之間切換。
- 設置 - 改變節點折疊行為,並在低細節模式之間切換
(6).放大/縮小並重置
加號(+)將放大。減號(-)將縮小。中心圖標會將圖表重置為默認縮放。
(7).初始密碼查詢
BloodHound您對當前加載的NEO4J數據庫運行自定義密碼查詢。有關此主題的更多信息,請參閱Cypher查詢語言。
2.用戶
單擊計算機節點將在“ Node Info”選項卡中填充有關該計算機的信息:
BloodHound用戶節點信息
(1).節點信息
-Name:這是節點的名稱,采用域簡單格式。
- SAMAccountName:這是用戶的SAMAccountName。此信息目前不是由接收程序收集的。
- Display Name:這是用戶的Windows顯示名稱。此信息目前不是由接收程序收集的。
-Password Last Changed:這是用戶密碼上次更改的日期。此信息目前不是由接收程序收集的。
- Sessions:這些是接收程序在收集期間標識用戶登錄的所有計算機
(2).組成員身份
- First Degree Group Memberships:這些組是用戶顯式成員的組。這是輸入命令net user username /domain 時看到的信息
- Unrolled Group Memberships: 這些都是用戶有效的組成員身份。這相當於運行Get-NetGroup -User username的信息
- Foreign Group Memberships:這些是用戶所屬的所有外部組
(3).本地管理員權利
- First Degree Local Admin: 這些計算機明確地將用戶本身添加為系統上的本地管理員
- Group Delegated Local Admin Rights: 這些是用戶根據委派的組權限獲得管理員權限的計算機
- Derivative Local Admin Rights:: 這些是用戶可以通過模擬當前使用具有管理員權限的計算機的用戶來獲得管理員權限的計算機,而不管鏈接的深度如何
(4).出站對象控制
-First Degree Object Control::這些是用戶直接控制的其他對象
- Group Delegated Object Control:這些是此用戶通過安全組委派控制的對象。
-Transitive Object Control:這些用戶具有僅ACL的攻擊路徑的對象。
(5).入站對象控制
- Explicit Object Controllers:對該用戶具有一級控制權的其他主體。
- Unrolled Object Controllers:通過展開控制此用戶的一級組,我們可以看到通過安全組委派控制此對象的所有有效主體
- Transitive Object Controllers:這些是環境中具有此用戶對象的僅ACL攻擊路徑的其他主體。
3.計算機
單擊計算機節點將在“ Node Info”選項卡中填充有關該計算機的信息:
BloodHound計算機節點選項卡
(1).節點信息
- Name:這是節點的名稱,采用完全限定格式。
- OS:計算機的操作系統。此信息目前不是由接收程序收集的。
- Allows Unconstrained Delegation:計算機是否允許無約束委派。此信息目前不是由接收程序收集的。
- Sessions: 這些是在數據收集過程中由接收程序識別的計算機上的用戶會話。
(2).本地管理員
- Explicit Admins:這些是在系統上具有本地管理員權限的顯式用戶和組。這相當於在主機上運行命令net localgroup administrators
- Unrolled Admins:這些是對系統具有管理員權限的所有有效組和用戶。這相當於運行命令get netlocalgroup-computername computername-recurse
- Derivative Local Admins:這些是具有計算機衍生管理風格攻擊路徑的所有有效組和用戶
(3).組成員身份
- First Degree Group Membership:這些是計算機所屬的組。
- Unrolled Group Memberships: 這些都是計算機擁有的有效組成員身份。
- Foreign Group Memberships::這些是計算機所屬的所有外部組。
(4).本地管理員權限
- First Degree Local Admin:這些計算機對象在系統上顯式添加為本地管理員的計算機。
- Group Delegated Local Admin Rights::這些是計算機根據委派的組權限獲得管理員權限的計算機。
- Derivative Local Admin Rights:這些是計算機可以通過冒充當前使用用戶具有管理員權限的計算機的用戶獲得管理員權限的計算機,無論此鏈接的深度如何。
(5).出站對象控制
- First Degree Object Control::這些是此計算機可直接控制的其他對象。
- Group Delegated Object Control:這些是此計算機通過安全組委派控制的對象。
-Transitive Object Control:這些是此計算機具有僅ACL的攻擊路徑的對象。
4.組
單擊計算機節點將在“ Node Info”填充有關該組的信息
BloodHound計算機節點選項卡
(1).節點信息
- Name::組的顯示名稱。
- Sessions:這些是接收程序在收集過程中識別出該組的有效用戶登錄的所有計算機
(2).組成員
- Direct Members: 這些是顯式添加到此組的用戶和組。這是輸入命令 net group groupname/domain時看到的信息
- Unrolled Members::這些都是組的有效組成員身份。這相當於運行命令get netgroup-groupname groupname-recurse
- Foreign Members::這些屬於該組的用戶本身屬於外部域
(3).組成員身份
- First Degree Group Memberships:這些是屬於此組的用戶,它們自己屬於外部域
- Unrolled Group Memberships:這些都是組中有效的組成員身份
- Foreign Group Memberships:: 這些是組所屬的所有外部組。
(4).本地管理員權限
- First Degree Local Admin:這些是將組本身明確添加為系統本地管理員的計算機。
-Group Delegated Local Admin Rights:這些是用戶組管理員根據委派的組權限進行權限的計算機。 這些是用戶組管理員根據委派的組權限授予的計算機。
- Derivative Local Admin Rights::這些是該組可以通過冒充當前使用用戶具有管理員權限的計算機的用戶獲得管理員權限的計算機,無論此鏈接的深度如何。
這些是組可以通過模擬當前使用用戶具有管理員權限的計算機的用戶來獲得管理員權限的計算機,而不管鏈接的深度如何
(5).出站對象控制
- First Degree Object Control::這些是此計算機可直接控制的其他對象。
- Group Delegated Object Control:這些是此計算機通過安全組委派控制的對象。
-Transitive Object Control:這些是此計算機具有僅ACL的攻擊路徑的對象。
(6).入站對象控制
- Explicit Object Controllers:對該組具有一級控制權的其他主體。
-Unrolled Object Controllers: 通過展開控制此組的一級組,我們可以看到通過安全組委派控制此對象的所有有效主體
- Transitive Object Controllers::這些是環境中具有此組對象的僅ACL攻擊路徑的其他主體。
5.尋路徑
BloodHound中的尋路徑的工作原理與您喜歡的圖形軟件中的工作方式類似。單擊道路圖標,將彈出“Target Node”文本框。
BloodHound尋路
首先,指定“開始節點”。這可以是BloodHound圖表中的任何類型的節點。BloodHound將為您自動完成此字段。
接下來,指定“目標節點”。同樣,這可以是BloodHound圖表中的任何類型的節點,BloodHound將為您自動完成此字段。
按“播放”按鈕,如果存在此類路徑,BloodHound將確定起始節點和目標節點之間的所有最短路徑。然后,BloodHound將在圖形繪制區域中顯示路徑
查詢分析信息數據
- 進入查詢模塊,有24個常用的查詢條件
|模塊|解釋|
| ---- | ---- |
|Find all Domain Admins|查找所有域管理員|
|Find Shortest Paths to Domain Admins|查找到域管理員的最短路徑|
|Find Principals with DCSync Rights|查找具有DCSync權限的主體|
|Users with Foreign Domain Group Membership|具有外部域組成員資格的用戶|
|Groups with Foreign Domain Group Membership|具有外部域組成員身份的組|
|Map Domain Trusts|映射域信任|
|Shortest Paths to Unconstrained Delegation Systems|無約束委托系統的最短路徑|
|Shortest Paths from Kerberoastable Users|Kerberosatable用戶的最短路徑|
|Shortest Paths to Domain Admins from Kerberoastable Users|Kerberoastable用戶到域管理員的最短路徑|
|Shortest Path from Owned Principals|從擁有的主體的最短路徑|
|Shortest Paths to Domain Admins from Owned Principals|從擁有的主體到域管理員的最短路徑|
|Shortest Paths to High Value Targets|通往高價值目標的最短路徑|
|Find Computers where Domain Users are Local Admin|查找域用戶為本地管理員的計算機|
|Shortest Paths from Domain Users to High Value Targets|從域用戶到高價值目標的最短路徑|
|Find All Paths from Domain Users to High Value Targets|查找從域用戶到高價值目標的所有路徑|
|Find Workstations where Domain Users can RDP|查找域用戶可以RDP的工作站|
|Find Servers where Domain Users can RDP|查找域用戶可以RDP的服務器|
|Find Dangerous Rights for Domain Users Groups|查找域用戶組的危險權限|
|Find Kerberoastable Members of High Value Groups|尋找高價值群體中的Kerberosatable成員|
|List all Kerberoastable Accounts|列出所有Kerberostable帳戶|
|Find Kerberoastable Users with most privileges|查找擁有最多權限的Kerberostable用戶|
|Find Domain Admin Logons to non-Domain Controllers|查找到非域控制器的域管理員登錄|
|Find Computers with Unsupported Operating Systems|查找具有不受支持的操作系統的計算機|
|Find AS-REP Roastable Users (DontReqPreAuth)|查找AS-REP可烘焙用戶(DontReqPreAuth)|
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 查看指定計算機與域的關系
單擊任意計算機圖標,可看到該計算機在域內的名稱、系統版本、是否啟用、是否允許無約束委托等信息。單擊域控看看:
更多請參考:https://www.cnblogs.com/backlion/p/10643132.html
https://www.cnblogs.com/-chenxs/p/12375489.html