From 50a5a569bcfbda8d7e69cf4f67d1d13f43e181f4 Mon Sep 17 00:00:00 2001 From: Translator Date: Mon, 28 Jul 2025 12:13:03 +0000 Subject: [PATCH] Translated ['src/windows-hardening/active-directory-methodology/adws-enu --- src/SUMMARY.md | 1 + .../adws-enumeration.md | 106 ++++++++++++++++++ .../bloodhound.md | 105 ++++++++--------- 3 files changed, 155 insertions(+), 57 deletions(-) create mode 100644 src/windows-hardening/active-directory-methodology/adws-enumeration.md diff --git a/src/SUMMARY.md b/src/SUMMARY.md index 4f96c20dc..ad681ba95 100644 --- a/src/SUMMARY.md +++ b/src/SUMMARY.md @@ -260,6 +260,7 @@ - [Ad Certificates](windows-hardening/active-directory-methodology/ad-certificates.md) - [AD information in printers](windows-hardening/active-directory-methodology/ad-information-in-printers.md) - [AD DNS Records](windows-hardening/active-directory-methodology/ad-dns-records.md) + - [Adws Enumeration](windows-hardening/active-directory-methodology/adws-enumeration.md) - [ASREPRoast](windows-hardening/active-directory-methodology/asreproast.md) - [BloodHound & Other AD Enum Tools](windows-hardening/active-directory-methodology/bloodhound.md) - [Constrained Delegation](windows-hardening/active-directory-methodology/constrained-delegation.md) diff --git a/src/windows-hardening/active-directory-methodology/adws-enumeration.md b/src/windows-hardening/active-directory-methodology/adws-enumeration.md new file mode 100644 index 000000000..e446167ab --- /dev/null +++ b/src/windows-hardening/active-directory-methodology/adws-enumeration.md @@ -0,0 +1,106 @@ +# Active Directory Web Services (ADWS) Enumeration & Stealth Collection + +{{#include ../../banners/hacktricks-training.md}} + +## ADWSとは? + +Active Directory Web Services (ADWS)は、**Windows Server 2008 R2以降のすべてのドメインコントローラーでデフォルトで有効**になっており、TCP **9389**でリッスンしています。名前に反して、**HTTPは関与していません**。代わりに、このサービスは独自の.NETフレーミングプロトコルのスタックを介してLDAPスタイルのデータを公開します: + +* MC-NBFX → MC-NBFSE → MS-NNS → MC-NMF + +トラフィックはこれらのバイナリSOAPフレーム内にカプセル化され、一般的でないポートを通過するため、**ADWSを介した列挙は、従来のLDAP/389および636トラフィックよりも検査、フィルタリング、または署名される可能性がはるかに低い**です。オペレーターにとって、これは意味します: + +* ステルスな偵察 – ブルーチームはしばしばLDAPクエリに集中します。 +* **非Windowsホスト(Linux、macOS)**から9389/TCPをSOCKSプロキシを介してトンネリングする自由。 +* LDAPを介して取得するのと同じデータ(ユーザー、グループ、ACL、スキーマなど)と、**書き込み**を行う能力(例:**RBCD**のための`msDs-AllowedToActOnBehalfOfOtherIdentity`)。 + +> 注:ADWSは多くのRSAT GUI/PowerShellツールでも使用されるため、トラフィックは正当な管理者の活動と混在する可能性があります。 + +## SoaPy – ネイティブPythonクライアント + +[SoaPy](https://github.com/logangoins/soapy)は、**純粋なPythonでのADWSプロトコルスタックの完全な再実装**です。NBFX/NBFSE/NNS/NMFフレームをバイト単位で作成し、.NETランタイムに触れることなくUnix系システムからの収集を可能にします。 + +### 主な機能 + +* **SOCKSを介したプロキシ**をサポート(C2インプラントから便利)。 +* LDAPの`-q '(objectClass=user)'`と同じ細かい検索フィルター。 +* オプションの**書き込み**操作(`--set` / `--delete`)。 +* BloodHoundへの直接取り込みのための**BOFHound出力モード**。 +* 人間の可読性が必要な場合にタイムスタンプや`userAccountControl`を整形するための`--parse`フラグ。 + +### インストール(オペレーターのホスト) +```bash +python3 -m pip install soapy-adws # or git clone && pip install -r requirements.txt +``` +## ステルスADコレクションワークフロー + +以下のワークフローは、ADWSを介して**ドメインおよびADCSオブジェクト**を列挙し、それらをBloodHound JSONに変換し、証明書ベースの攻撃経路を追跡する方法を示しています - すべてLinuxから: + +1. **ターゲットネットワークからあなたのボックスへの9389/TCPトンネル**(例:Chisel、Meterpreter、SSH動的ポートフォワードなど)。 `export HTTPS_PROXY=socks5://127.0.0.1:1080`をエクスポートするか、SoaPyの`--proxyHost/--proxyPort`を使用します。 + +2. **ルートドメインオブジェクトを収集する:** +```bash +soapy ludus.domain/jdoe:'P@ssw0rd'@10.2.10.10 \ +-q '(objectClass=domain)' \ +| tee data/domain.log +``` +3. **Configuration NCからADCS関連オブジェクトを収集する:** +```bash +soapy ludus.domain/jdoe:'P@ssw0rd'@10.2.10.10 \ +-dn 'CN=Configuration,DC=ludus,DC=domain' \ +-q '(|(objectClass=pkiCertificateTemplate)(objectClass=CertificationAuthority) \\ +(objectClass=pkiEnrollmentService)(objectClass=msPKI-Enterprise-Oid))' \ +| tee data/adcs.log +``` +4. **BloodHoundに変換:** +```bash +bofhound -i data --zip # produces BloodHound.zip +``` +5. **ZIPをアップロード**し、BloodHound GUIで`MATCH (u:User)-[:Can_Enroll*1..]->(c:CertTemplate) RETURN u,c`のようなサイファークエリを実行して、証明書昇格パス(ESC1、ESC8など)を明らかにします。 + +### `msDs-AllowedToActOnBehalfOfOtherIdentity` (RBCD)の記述 +```bash +soapy ludus.domain/jdoe:'P@ssw0rd'@dc.ludus.domain \ +--set 'CN=Victim,OU=Servers,DC=ludus,DC=domain' \ +msDs-AllowedToActOnBehalfOfOtherIdentity 'B:32:01....' +``` +`s4u2proxy`/`Rubeus /getticket`を組み合わせて、完全な**リソースベースの制約付き委任**チェーンを作成します。 + +## 検出と強化 + +### 詳細なADDSログ記録 + +ドメインコントローラーで、ADWS(およびLDAP)からの高コスト/非効率的な検索を明らかにするために、次のレジストリキーを有効にします: +```powershell +New-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Services\NTDS\Diagnostics' -Name '15 Field Engineering' -Value 5 -Type DWORD +New-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Services\NTDS\Parameters' -Name 'Expensive Search Results Threshold' -Value 1 -Type DWORD +New-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Services\NTDS\Parameters' -Name 'Search Time Threshold (msecs)' -Value 0 -Type DWORD +``` +イベントは**Directory-Service**の下に表示され、完全なLDAPフィルターが表示されます。クエリがADWS経由で到着した場合でも同様です。 + +### SACLカナリアオブジェクト + +1. ダミーオブジェクト(例:無効なユーザー`CanaryUser`)を作成します。 +2. _Everyone_ プリンシパルに対して**Audit** ACEを追加し、**ReadProperty**で監査します。 +3. 攻撃者が`(servicePrincipalName=*)`、`(objectClass=user)`などを実行するたびに、DCは**Event 4662**を発行し、実際のユーザーSIDを含みます。リクエストがプロキシされている場合やADWSから発信されている場合でも同様です。 + +Elasticの事前構築されたルールの例: +```kql +(event.code:4662 and not user.id:"S-1-5-18") and winlog.event_data.AccessMask:"0x10" +``` +## ツール概要 + +| 目的 | ツール | ノート | +|------|-------|-------| +| ADWS 列挙 | [SoaPy](https://github.com/logangoins/soapy) | Python, SOCKS, 読み書き | +| BloodHound 取り込み | [BOFHound](https://github.com/bohops/BOFHound) | SoaPy/ldapsearch ログを変換 | +| 証明書の妥協 | [Certipy](https://github.com/ly4k/Certipy) | 同じ SOCKS 経由でプロキシ可能 | + +## 参考文献 + +* [SpecterOps – SOAP(y) を使用することを確認してください – ADWS を使用したステルスな AD コレクションのためのオペレーターガイド](https://specterops.io/blog/2025/07/25/make-sure-to-use-soapy-an-operators-guide-to-stealthy-ad-collection-using-adws/) +* [SoaPy GitHub](https://github.com/logangoins/soapy) +* [BOFHound GitHub](https://github.com/bohops/BOFHound) +* [Microsoft – MC-NBFX, MC-NBFSE, MS-NNS, MC-NMF 仕様](https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-nbfx/) + +{{#include ../../banners/hacktricks-training.md}} diff --git a/src/windows-hardening/active-directory-methodology/bloodhound.md b/src/windows-hardening/active-directory-methodology/bloodhound.md index 7fc189a12..0d4aeba62 100644 --- a/src/windows-hardening/active-directory-methodology/bloodhound.md +++ b/src/windows-hardening/active-directory-methodology/bloodhound.md @@ -1,87 +1,78 @@ -# BloodHound & Other AD Enum Tools +# BloodHound & Other Active Directory Enumeration Tools {{#include ../../banners/hacktricks-training.md}} +{{#ref}} +adws-enumeration.md +{{#endref}} + +> NOTE: このページでは、Active Directoryの関係を**列挙**し、**視覚化**するための最も便利なユーティリティのいくつかをまとめています。 ステルスの**Active Directory Web Services (ADWS)** チャネルを介した収集については、上記のリファレンスを確認してください。 + +--- + ## AD Explorer -[AD Explorer](https://docs.microsoft.com/en-us/sysinternals/downloads/adexplorer) は Sysinternal Suite の一部です: +[AD Explorer](https://docs.microsoft.com/en-us/sysinternals/downloads/adexplorer) (Sysinternals) は、高度な**ADビューワーおよびエディター**で、以下を可能にします: -> 高度な Active Directory (AD) ビューアおよびエディタです。AD Explorer を使用すると、AD データベースを簡単にナビゲートし、お気に入りの場所を定義し、ダイアログボックスを開かずにオブジェクトのプロパティや属性を表示し、権限を編集し、オブジェクトのスキーマを表示し、保存して再実行できる高度な検索を実行できます。 +* ディレクトリツリーのGUIブラウジング +* オブジェクト属性およびセキュリティ記述子の編集 +* オフライン分析のためのスナップショット作成/比較 -### Snapshots +### Quick usage -AD Explorer は AD のスナップショットを作成できるため、オフラインで確認できます。\ -オフラインで脆弱性を発見したり、時間の経過に伴う AD DB の異なる状態を比較するために使用できます。 +1. ツールを起動し、任意のドメイン資格情報で `dc01.corp.local` に接続します。 +2. `File ➜ Create Snapshot` を介してオフラインスナップショットを作成します。 +3. `File ➜ Compare` を使用して2つのスナップショットを比較し、権限の変化を特定します。 -接続するためには、ユーザー名、パスワード、および方向が必要です(任意の AD ユーザーが必要です)。 - -AD のスナップショットを取得するには、`File` --> `Create Snapshot` に移動し、スナップショットの名前を入力します。 +--- ## ADRecon -[**ADRecon**](https://github.com/adrecon/ADRecon) は、AD 環境からさまざまなアーティファクトを抽出して統合するツールです。この情報は、分析を容易にし、ターゲット AD 環境の現在の状態の全体像を提供するためのメトリックを含む要約ビューを含む **特別にフォーマットされた** Microsoft Excel **レポート** で提示できます。 -```bash -# Run it -.\ADRecon.ps1 +[ADRecon](https://github.com/adrecon/ADRecon) は、ドメインから大量のアーティファクト(ACL、GPO、信頼関係、CAテンプレートなど)を抽出し、**Excelレポート**を生成します。 +```powershell +# On a Windows host in the domain +PS C:\> .\ADRecon.ps1 -OutputDir C:\Temp\ADRecon ``` -## BloodHound +--- -From [https://github.com/BloodHoundAD/BloodHound](https://github.com/BloodHoundAD/BloodHound) +## BloodHound (グラフ視覚化) -> BloodHoundは、[Linkurious](http://linkurio.us/)の上に構築された単一ページのJavascriptウェブアプリケーションで、[Electron](http://electron.atom.io/)でコンパイルされ、C#データコレクターによって供給される[Neo4j](https://neo4j.com/)データベースを持っています。 +[BloodHound](https://github.com/BloodHoundAD/BloodHound) は、グラフ理論 + Neo4j を使用して、オンプレミスの AD と Azure AD 内の隠れた特権関係を明らかにします。 -BloodHoundは、グラフ理論を使用して、Active DirectoryまたはAzure環境内の隠れた、しばしば意図しない関係を明らかにします。攻撃者はBloodHoundを使用して、迅速に特定することが不可能な非常に複雑な攻撃経路を簡単に特定できます。防御者はBloodHoundを使用して、同じ攻撃経路を特定し排除することができます。ブルーチームとレッドチームの両方が、Active DirectoryまたはAzure環境内の特権関係を深く理解するためにBloodHoundを簡単に使用できます。 - -したがって、[Bloodhound](https://github.com/BloodHoundAD/BloodHound)は、ドメインを自動的に列挙し、すべての情報を保存し、可能な特権昇格経路を見つけ、グラフを使用してすべての情報を表示する素晴らしいツールです。 - -BloodHoundは、**ingestors**と**visualisation application**の2つの主要な部分で構成されています。 - -**ingestors**は、**ドメインを列挙し、視覚化アプリケーションが理解できる形式で情報を抽出するために使用されます**。 - -**visualisation applicationはneo4jを使用して**、すべての情報がどのように関連しているかを示し、ドメイン内で特権を昇格させるさまざまな方法を示します。 - -### Installation - -BloodHound CEの作成後、プロジェクト全体がDockerを使用しやすく更新されました。始める最も簡単な方法は、事前に構成されたDocker Compose構成を使用することです。 - -1. Docker Composeをインストールします。これは[Docker Desktop](https://www.docker.com/products/docker-desktop/)のインストールに含まれているはずです。 -2. 実行します: +### デプロイメント (Docker CE) ```bash curl -L https://ghst.ly/getbhce | docker compose -f - up +# Web UI ➜ http://localhost:8080 (user: admin / password from logs) ``` -3. Docker Composeのターミナル出力でランダムに生成されたパスワードを見つけます。 -4. ブラウザで http://localhost:8080/ui/login に移動します。ユーザー名 **`admin`** と、docker composeのログにある **`ランダムに生成されたパスワード`** でログインします。 +### コレクター -その後、ランダムに生成されたパスワードを変更する必要があり、新しいインターフェースが準備されます。そこから直接イングエスターをダウンロードできます。 +* `SharpHound.exe` / `Invoke-BloodHound` – ネイティブまたはPowerShellバリアント +* `AzureHound` – Azure AD列挙 +* **SoaPy + BOFHound** – ADWSコレクション(リンクは上部を参照) -### SharpHound +#### 一般的なSharpHoundモード +```powershell +SharpHound.exe --CollectionMethods All # Full sweep (noisy) +SharpHound.exe --CollectionMethods Group,LocalAdmin,Session,Trusts,ACL +SharpHound.exe --Stealth --LDAP # Low noise LDAP only +``` +コレクターはJSONを生成し、BloodHound GUIを介して取り込まれます。 -いくつかのオプションがありますが、ドメインに参加しているPCからSharpHoundを実行し、現在のユーザーを使用してすべての情報を抽出したい場合は、次のようにできます: -``` -./SharpHound.exe --CollectionMethods All -Invoke-BloodHound -CollectionMethod All -``` -> **CollectionMethod** とループセッションについては、[こちら](https://support.bloodhoundenterprise.io/hc/en-us/articles/17481375424795-All-SharpHound-Community-Edition-Flags-Explained)で詳しく読むことができます。 - -異なる資格情報を使用してSharpHoundを実行したい場合は、CMD netonlyセッションを作成し、そこからSharpHoundを実行できます: -``` -runas /netonly /user:domain\user "powershell.exe -exec bypass" -``` -[**Bloodhoundについて詳しく学ぶには、ired.teamをご覧ください。**](https://ired.team/offensive-security-experiments/active-directory-kerberos-abuse/abusing-active-directory-with-bloodhound-on-kali-linux) +--- ## Group3r -[**Group3r**](https://github.com/Group3r/Group3r) は、**グループポリシー**に関連するActive Directoryの**脆弱性**を見つけるためのツールです。 \ -**任意のドメインユーザー**を使用して、ドメイン内のホストから**group3rを実行する**必要があります。 +[Group3r](https://github.com/Group3r/Group3r) は **Group Policy Objects** を列挙し、誤設定を強調表示します。 ```bash -group3r.exe -f -# -s sends results to stdin -# -f send results to file +# Execute inside the domain +Group3r.exe -f gpo.log # -s to stdout ``` +--- + ## PingCastle -[**PingCastle**](https://www.pingcastle.com/documentation/) **はAD環境のセキュリティ姿勢を評価**し、グラフ付きの素晴らしい**レポート**を提供します。 - -実行するには、バイナリ`PingCastle.exe`を実行すると、オプションのメニューを表示する**インタラクティブセッション**が開始されます。使用するデフォルトのオプションは**`healthcheck`**で、**ドメイン**の**概要**を確立し、**誤設定**や**脆弱性**を見つけます。 - +[PingCastle](https://www.pingcastle.com/documentation/) は、Active Directory の**ヘルスチェック**を実行し、リスクスコアを含む HTML レポートを生成します。 +```powershell +PingCastle.exe --healthcheck --server corp.local --user bob --password "P@ssw0rd!" +``` {{#include ../../banners/hacktricks-training.md}}