Jump to content

0x00 概要

1。ブラッドハウンドの紹介

BLOODHOUNDは、Linkuriousに基づいて構築され、電子でコンパイルされた単一ページJavaScript Webアプリケーションです。 NEO4JデータベースはPowerShell/C#Ingestorです。

Bloodhoundは、視覚化を使用して、アクティブなディレクトリ環境に非表示および関連するホストコンテンツを表示します。攻撃者は、ブラッドハウンドを使用して非常に複雑な攻撃パスを簡単に識別できます。そうしないと、それらを迅速に識別することは困難です。ディフェンダーは、ブラッドハウンドを使用して、同じ攻撃パスを特定して防御することができます。青と赤の両方のチームは、BloodHoundを使用して、アクティブなディレクトリ環境での許可関係に関する洞察を簡単に得ることができます。

BloodHound白色红色标志

Bloodhoundは、 @_wald0、 @cptjesus、 @harmj0yが共同で開発しました。

2。初心者の基本

Bloodhoundを始めるのは非常に簡単です。完了したら、データ収集セクションに移動してデータの収集を開始するか、Bloodhoundを使用して含まれているデータベースを表示します。

(1).windows

このビデオは、neo4j:https://youtu.be/o22emeubrnkのセットアップのプロセスを示しています

Neo4JにはJava環境が必要なので、Javaの最新バージョンを実行していることを確認してください。

neo4j.com/downloadに移動して、[サーバーをダウンロード]をクリックします

Windows用のNeo4J Serverの現在のバージョンをダウンロードし、32ビットまたは64ビットを選択します。

ステップ4でダウンロードされたzipフォルダーの内容を解凍します。

管理者として実行されているCMD.exeを開き、ステップ4で解凍したフォルダーに移動します。

binディレクトリへのCDを実行してNEO4Jをサービスとしてインストールします:neo4j.batインストールサービス

Bloodhound Github Repoをダウンロード/クローンし、bloodhoundexampledb.graphdbをデータ\ databaseneo4jディレクトリの下のフォルダーにコピーします。

cmd.exeでは、ディレクトリとCDをconfディレクトリに返します。 neo4j.confを開き、ラインdbms.active_database=graph.dbを開きます。この行を変更して、dbms.active_database=bloodhoundsexampledb.graphdbとして表示されます。また、dbms.allow_upgrade=trueの行を除外して、dbms.allow_upgrade=trueとして表示され、ファイルを保存します。

cmd.exeを入力してEnter:neo4jnet neo4jを開始します

NEO4Jがブラウザでhttp://LocalHost:7474を開いて実行されていることを確認します。 NEO4J Webコンソールは正常に表示されるはずです。

ここからダウンロードしたバージョンからBloodHound.exeを実行するか、ソースからBloodhoundをコンパイルします。

bolt: //localhost:7687で提供されたサンプルグラフデータベースを認証します。ユーザー名は「NEO4J」で、パスワードは「BloodHound」です。

今すぐデータの収集を開始できます!

(2).linux

LinuxでBloodhoundのセットアップに関するより良い指示については、このブログ投稿を参照してください:https://Stealingthe.network/quick-guide-to-installing-bloodhound-in-cali-rolling/

NEO4Jコミュニティバージョンをダウンロードしてインストールします。

オプション:さまざまなホストでNEO4JおよびPowerShellレシーバープログラムを実行する予定がある場合は、リモート接続を受け入れるようにREST APIを構成します。

クローンBloodHoundGithub Repo

git clone 3https://github.com/adaptivethreat/bloodhound

NEO4Jサーバーを起動し、NEO4Jを指定されたサンプルグラフデータベースにポイントします。

ここにある対応するバージョンからBloodhoundを実行するか、ソースからBloodhoundをコンパイルします。

./Bloodhound

BOLT: //localhost:7687で提供されるグラフデータベースの例を介した認証。ユーザー名は「NEO4J」で、パスワードは「BloodHound」です

今すぐデータの収集を開始できます!

(3).kali

1.最新のシステムであることを確認し、次のコマンドを実行してシステムApt-Get updateapt-Get dist-upgrade2を更新します。 Bloodhoundのインストールは、次のコマンドを実行する必要があります。 BloodhoundはNeo4Jに依存するため、同様にインストールされます。 apt-getインストールBloodhound xx4wrnqc4xl8086.png

3。NEO4JのデフォルトパスワードNEO4Jコンソール0z52emgvzeu8087.pngを変更します

4.現在、http://LocalHost:7474にリモートインターフェイスがあります。ブラウザを介してこのURLリンクアドレスを開き、デフォルトのパスワードを変更します。また、LocalHostでボルトが有効になっていることがわかります。これは後で使用されます。

xkocx4kuk4j8088.png

5。デフォルトの資格情報(次のように)でログインすると、パスワードを変更するように求められます。

ユーザー名:NEO4Jパスワード:NEO4J rzljugxinbi8089.png

パスワードの変更を完了し続け、ブラウザウィンドウを閉じた後。

6.新しい端子ウィンドウがポップアップして開き、次のコマンドを実行してBloodhoundを開始します。

Bloodhound 0qqp0bqzxsc8090.png

ご覧のとおり、Bloodhoundは現在走っていて、ユーザーの入力を待っています。また、NEO4Jがリリースされる前に、Bolt: //127.0.0.1:7687でBoltを有効にしました。データベースURLとして使用する必要があります。

データベースURL -BOLT: //127.0.0.1:7687 USERNAME -NEO4Jパスワード - 新しく変更されたパスワードのログインをクリックすると、BloodHoundツールがデータを削除したことがわかります。これで、データをインポートして分析を実行できます。

xs4c5zlrge18091.png

(4).osx

NEO4Jコミュニティバージョンをダウンロードしてインストールします。

オプション:さまざまなホストでNEO4JおよびPowerShellレシーバープログラムを実行する予定がある場合は、リモート接続を受け入れるようにREST APIを構成します。

クローンBloodHoundGithub Repo

git clone 3https://github.com/adaptivethreat/bloodhound

NEO4Jサーバーを起動し、NEO4Jを指定されたサンプルグラフデータベースにポイントします。

ここから対応するバージョンを見つけて、Bloodhoundアプリケーションを実行するか、ソースコードからBloodhoundをコンパイルします。

BOLT: //localhost:7687で提供されるグラフデータベースの例を介した認証。ユーザー名は「NEO4J」で、パスワードは「BloodHound」です。データの収集を開始できます。

3。ソースコードコンパイルBloodhound

(1).windows

インストールnodejs

電子パッカーをインストールします

NPMインストール-G Electron -Packager

クローンブラッドハウンドGithubrepo

git clone 3https://github.com/adaptivethreat/bloodhound

ルートディレクトリブラッドハウンドから「NPMインストール」コマンドを実行します

NPMインストール

「NPM Run Winbuild」コマンドを使用してBloodHoundをコンパイルします

npm run winbuild

(2).linux

nodejsをインストールします

電子パッカーをインストールします

sudo npmインストール-g電子パッカー

クローンブラッドハウンドGithubrepo

git clone 3https://github.com/adaptivethreat/bloodhound

ルートディレクトリブラッドハウンドから「NPMインストール」コマンドを実行します

NPMインストール

「NPM Run Winbuild」コマンドを使用してBloodHoundをコンパイルします

npm rinuxbuild

(3).osx

nodejsをインストールします

電子パッカーをインストールします

sudo npmインストール-g電子パッカー

クローンブラッドハウンドGithubrepo

git clone 3https://github.com/adaptivethreat/bloodhound

ルートディレクトリブラッドハウンドから「NPMインストール」コマンドを実行します

sudo npmインストール

「NPM Run Winbuild」コマンドを使用してBloodHoundをコンパイルします

npm run macbuild

4。 Bloodhound

の開発バージョンを実行します

インストールnode.js

クローンブラッドハウンドGithubrepo

git clone 3https://github.com/adaptivethreat/bloodhound

ルートディレクトリブラッドハウンドから「NPMインストール」コマンドを実行します

NPMインストール

'npm run dev'コマンドを使用して開発バージョンサーバーを実行します

npm run dev

Ctrl + RでWebpackコンピレーションを完了したら、電子ウィンドウを更新します

0x02データ収集

1。はじめに

BLOODHOUNDには、実行するためにActive Directory環境から3つの情報が必要です。

誰がログインしていますか?誰が管理権限を持っていますか?どのユーザーとグループがどのグループに属しますか? (オプション)他のユーザーやグループオブジェクトを制御できるプリンシパルはどれですか?ほとんどの場合、この情報を収集しても、管理者の権利は必要ありません。また、リモートシステムでコード実行を必要としません。 PowerViewベースのPowerShell Ingesterは、データ収集を迅速かつ簡単にします。 Ingestor(Collector)は、Bloodhound Repoの下のIngestorディレクトリにあります。

コレクターは、より多くのパスを提供する多くの追加データと、使いやすいノードプロパティを収集します。

(1).powershell実行戦略

デフォルトでは、PowerShellはPowerShellスクリプトの実行を許可していません。ただし、ほとんどの場合、この制限をバイパスすることは非常に簡単です。通常、次のコマンドを実行することにより、制限されずにコマンドを実行するためにPowerShellを入力できます。

PS C: \ PowerShell -Execバイパス

その他のオプションについては、NetSPIに関するこの素晴らしいブログ投稿を参照してください。これは、PowerShellの実行戦略をバイパスする15の異なる方法を説明しています。

(2).dataコレクション

Bloodhoundインターフェイスを使用して、データ収集を完了します。このインターフェイスは、ZIPファイルをデータとともにアップロードすることと、単一のJSONファイルをサポートします。

Bloodhoundインターフェイスを介してJSONを収集します

2。データコレクター

(1).sharphound -c#gestor

Bloodhoundには、獲得タスクをサポートするためにゼロから書かれた完全なカスタムC#コレクターが含まれるようになりました。コレクター、実行可能ファイル、PowerShellスクリプトを使用する2つのオプションがあります。どちらのコレクターも同じ一連のオプションをサポートしています。 PowerShellバージョンを実行するコマンドはInvoke-Bloodhoundです。すべてのPowerShellスクリプトと同様に、実行ポリシーの制限なしにPowerShell Run環境で実行する必要があります。実行ポリシーのバイパスをバイパスするPowerShellの実行の詳細については、NetsPIによるこのブログ投稿を参照してください。

ロゴや新機能などの詳細については、こちらのブログ投稿をご覧ください。

Bloodhoundを呼び出します

(2)。基本的使用

InvokeBloodhoundは、BackEnd Bloodhoundデータベースを入力するために必要なコレクションオプションを実行します。オプションが指定されていない場合、デフォルトでは、すべての拡張されたグループメンバーシップ情報、すべてのアクセス可能なドメイントラスト情報を収集し、現在のドメインからアクセス可能なすべてのコンピューターのセッション/ローカル管理者データを収集します。すべてのデータは、現在のディレクトリのJSONファイルにエクスポートされます。 * -JSONFOLDER C: \ TEMP*パラメーターは、ファイルが出力されるフォルダーを変更し、

-jsonprefix domainx各出力ファイルの先頭に指定されたフラグを追加します。

ログインドメインのないユーザーセッションデータの場合、デフォルトでは、グローバルカタログを使用して、競合するユーザーの可能なドメインを元に戻そうとします。ユーザーが森の複数のドメインに存在する場合、攻撃パスを変更する可能性は一連の重みで使用されます。このグローバルカタログ競合方式をスキップする場合は、-skipgcdeconfluctionフラグを指定します

(3).collectorオプション

列挙オプション

CollectionMethod-使用するコレクション方法。このパラメーターは、値のコンマ分離されたリストを受け入れます。次のデフォルト値を持っています(デフォルト:デフォルト):デフォルト - 実行グループメンバーシップコレクション、ドメイントラストコレクション、ローカルマネジメントコレクション、およびセッションコレクショングループメンバーシップコレクションローカルグループメンバーコレクションローカル管理者コレクションRDP-実行リモートデスクトップユーザーコレクションPWDLASTSET COMPUTERONLY-実行- ローカル管理者、RDP、DCOM、およびセッションコレクションログドン - 実行特権セッションコレクション(ターゲットシステムで管理者特権が必要) - 信頼ドメイントラスト列挙ACL-コレクションコンテナ - 実行コンテナコレクションDCONLY-RDAPのみを使用してコレクションを実行します。グループ、トラスト、ACL、ObjectProps、コンテナ、GpolocalGroupが含まれます。 GpolocalGroupおよびLoggedon SearchForestを除くすべてのすべての収集方法- 現在のドメインドメイン検索固有のドメインだけでなく、森のすべてのドメインを検索します。 nullの場合、現在のドメイン(デフォルト:null)ステルスを使用して、隠された収集方法を実行します。すべての隠されたオプションはシングルスレッドです。 SKIPGCDECONFLUCTION -SKIPグローバル列挙は、セッション列挙中に競合をキャンセルします。これにより、列挙をスピードアップできますが、データが不正確になる可能性があります。列挙からドメインコントローラーを除外しました(Microsoft ATAフラグを避けます:) ComputerFile ComputerFile ComputerFileは、コンピューター名/IPがロードされるファイルを指定します - 列挙されるOUを指定します

接続オプション

ドメインコントローラーを指定します。通常のLDAPの代わりにセキュアLDAPを使用して広告。デフォルトでは、ポート636に接続します。IngorelDapcert-LDAP SSL証明書を無視します。たとえば、自己署名証明書が存在する場合は、LDAPUSERを使用します。これは、LDAPに接続するために使用されるユーザー名です。 ldappasswordパラメーター(デフォルト:null)ldappass-ユーザーがLDAPに接続するパスワード。また、LDAPUSERパラメーター(デフォルト:null)DisableKerbsIging- LDAP暗号化を無効にすることも必要です。お勧めしません。

パフォーマンスオプション

スレッド - 使用するスレッドの数を指定します(デフォルト:10)PingTimeOut- MillisecondsでのPingリクエストのタイムアウト(デフォルト:250)スキップ - SharphoundはPingリクエストをスキップして、システムがループデレイ数の間にループを開始するかどうかを確認するためにPingリクエストをスキップします。フォーマットは0d0h0m0sです。ヌル値は2時間循環します。 (デフォルト:2H)スロットル - 各リクエストの後にコンピューターへの遅延を追加します。

ミリ秒単位の値(デフォルト:0)ジッター - バルブ値ジッターの割合を増加させます。 (デフォルト:0)

出力オプション

jsonfolder- jsonファイルが保存されているフォルダー(デフォルト:)jsonprefix- jsonファイルに追加するプレフィックス(デフォルト: '")nozip- zipファイルに圧縮しないでください。 zipファイルのランダム出力ファイル名- jsonは、より大きな読み取りのためにjsonを指定します無効化- キャッシュファイルを無効にし、新しいキャッシュ

キャッシュオプション

ステータスインターバル - 列挙中に進行状況が表示される間隔(デフォルト:30000)の詳細- verbose出力

その他のオプション

Sharphound出力は、デフォルトでいくつかのJSONファイルを出力します。 Bloodhoundインターフェイスは、単一のファイルとzipファイルをサポートしています。データをアップロードする最も簡単な方法は、[ノード表示]タブを除くユーザーインターフェイスのどこにでもファイルをドラッグアンドドロップすることです。

食入

3.jsonコレクション

Bloodhound.pyは、インパケットに基づいたPythonベースのBloodhound Collectorです。

Bloodhoundのこのバージョンは、Bloodhound 2.0以降のみと互換性があります。

4。 PythonベースのBloodhound Collector

Bloodhound.pyには現在、次の制限があります。

すべてのBloodhound(Sharphound)機能はまだサポートされていません(サポートされている収集方法については以下を参照) Bloodhound.pは、Impacket、LDAP3、およびDNSPythonモジュールを正常に実行する必要があります

インストールにより、コマンドラインツールBloodhound-Pythonがパスに追加されます。

Bloodhound-Collectorを使用するには、少なくともドメインの資格情報が必要です。このドメインのユーザー名(または信頼できるドメインのユーザーのusername@ドメイン)を使用して-uオプションを指定する必要があります。 DNSが正しく設定され、ADドメインがDNS検索リストにある場合、BloodHound.pyは自動的にドメインを検出します。そうでない場合は、-dオプションを使用して手動で指定する必要があります

デフォルトでは、BloodHound.pyはLDAPとドメインの個々のコンピューターを照会し、ユーザー、コンピューター、グループ、信頼、セッション、ローカル管理者を列挙します。コレクションを制限する場合は、次のオプション(Sharphoundと同様)をサポートする-collectionMethodパラメーターを指定します。

デフォルトローカル管理者コレクションおよびセッションコレクション実行グループメンバーシップコレクション、ドメイントラストコレクション、ローカルマネジメントコレクション、セッションコレクションおよびセッションコレクショングループメンバーシップコレクションローカルアドミン - エクスケーションセッションセッションセッションコレクションACL-解放ACL-解釈ACL-削除- 解釈ドメイン信託排出排出術lastlogonやpwdlastsetなどのプロパティの属性コレクションオールランログドンmulipleコレクションメソッドを除くすべての方法は、たとえば、コンマで分離する必要があります。

特定の自動検出オプションをオーバーライドできます。たとえば、別のドメインコントローラーを使用する場合、-DCを使用してプライマリドメインコントローラーのホスト名を指定するか、-GCを使用して独自のグローバルカタログを指定します。

(1).limitations

1。

0 Comments

Recommended Comments

There are no comments to display.

Guest
Add a comment...