Translated ['src/windows-hardening/active-directory-methodology/adws-enu

This commit is contained in:
Translator 2025-07-28 12:13:03 +00:00
parent 5e36421923
commit 50a5a569bc
3 changed files with 155 additions and 57 deletions

View File

@ -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)

View File

@ -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}}

View File

@ -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 <filepath-name.log>
# -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}}