ADWSとアクティブディレクトリの列挙への隠された道筋
Detection stack
- AIDR
- Alert
- ETL
- Query
概要
この記事では、TCPポート9389を介したActive Directory Web Services (ADWS)プロトコルによるActive Directory列挙のステルス手法について説明しています。ポート389や636の標準LDAPではなくADWSに依存することで、攻撃者は多くの一般的なネットワーク検知やEDRアラートを回避できます。このアプローチは、調査活動を偽装するために正当な管理プロトコルとツールを悪用します。
調査
調査では、.NETメッセージフレーミング、NegotiateStream、NBFSEバイナリSOAPエンコーディングを含むADWSの技術層を検証します。これらのコンポーネントがどのようにネットワークトラフィックを隠し、クエリの出所を特定しにくくすることで運用セキュリティを向上させるかを説明します。著者はまた、この技法を実証し検証するための概念実証ツールであるADWSHoundを紹介します。
緩和策
推奨される緩和策には、TCPポート9389経由のトラフィックの監視、イベント1644でのディレクトリサービス診断ログの有効化、機密ディレクトリオブジェクトへのSACLを通じたアクセス監査の適用が含まれます。組織はまた、無許可の列挙を検出するためにカナリアオブジェクトの展開を検討すべきです。Operation IDによるディレクトリサービスイベントの相関は、疑わしい列挙活動の再構築にも役立ちます。
対応
この動作が検出された場合、対応者はポート9389への接続の起源を調査し、ADWSを介して通信する正当な理由がないプロセスを特定すべきです。ディレクトリクエリに使用されたアカウントは、環境全体のアクティブなセッションと相関して侵害されたシステムを特定します。イベント4662もレビューして、保護されたオブジェクトへの不正なアクセスの兆候を確認してください。
攻撃フロー
シミュレーション実行
前提条件: テレメトリとベースラインの事前チェックはクリアされている必要があります。
理由: このセクションは、検知ルールを起動するように設計された敵対的手法(TTP)の正確な実行を詳細に説明します。コマンドと説明は、特定されたTTPを直接反映し、検知ロジックによって期待される正確なテレメトリを生成することを目的としています。抽象的または関連しない例は、誤診につながります。
-
攻撃の説明&コマンド: 敵対者はワークステーションへの初期アクセスを得て、側方移動を促進するためにドメインユーザーを列挙しようとしています。基本的なシグネチャベースのツールによる検出を避けるため、攻撃者は公式なMicrosoft PowerShell Active Directoryモジュールを使用することを決定しました。彼らは
Get-ADUserを実行してドメイン内のすべてのユーザーの一覧を取得します。このアクションは、ディレクトリサービスでの診断ログが有効になっているため、LDAPクエリを処理するADWSを強制し、Windowsイベント1644に「Get-ADUser」という文字列を含めて、検知ルールをトリガーします。 -
回帰テストスクリプト:
# Active Directoryモジュールが利用可能であることを確認します if (!(Get-Module -ListAvailable ActiveDirectory)) { Write-Error "このスクリプトはRSAT Active Directoryモジュールを必要とします。" return } Write-Host "[+] シミュレーション開始: Get-ADUserによるLDAP列挙" -ForegroundColor Cyan # Get-AD*パターンを使用して単一ユーザーをクエリすることにより、検知をトリガーします # これはディレクトリサービスログにイベントID1644を生成することが期待されます try { Get-ADUser -Filter * -ResultSetSize 1 | Out-Null Write-Host "[+] シミュレーションコマンドは正常に実行されました。" -ForegroundColor Green Write-Host "[+] 'Get-AD*'を含むイベントID1644のディレクトリサービスログを確認" -ForegroundColor Yellow } catch { Write-Host "[-] コマンド実行エラー: $($_.Exception.Message)" -ForegroundColor Red } -
クリーンアップコマンド:
# ADデータベースには恒久的な変更が行われていません。 # レジストリの診断レベルが手動で上げられている場合、それを元に戻します: # Set-ItemProperty -Path "HKLM:SystemCurrentControlSetServicesNTDSDiagnostics" -Name "16 LDAP Interface Contained" -Value 0 Write-Host "[+] クリーンアップ完了。戻す状態変更はありません。" -ForegroundColor Cyan