mcpField
A
analyzing-active-directory-acl-abuse

analyzing-active-directory-acl-abuse

github.com/mukul975セキュリティ35.2k549 回インストール8 週間前に更新
リポジトリ

analyzing-active-directory-acl-abuse について

Active Directory のセキュリティ調査向けスキルです。ldap3 でオブジェクトのセキュリティ記述子を調べ、非管理者主体に付与された危険な ACL 権限を特定し、攻撃経路と修復策を報告します。

主な機能

  1. 01LDAP による AD オブジェクトの検索
  2. 02セキュリティ記述子と ACE の解析
  3. 03危険な権限設定の検出
  4. 04非管理者主体の抽出
  5. 05攻撃経路と修復策のレポート

活用シーン

  1. 01Active Directory の ACL 悪用リスク調査
  2. 02重要オブジェクトの権限監査
  3. 03ACL の攻撃経路と修復策の文書化

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/mukul975/anthropic-cybersecurity-skills --skill analyzing-active-directory-acl-abuse

インストール後、Claude Code で/analyzing-active-directory-acl-abuseを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

LICENSE
references/
api-reference.md
scripts/
agent.py

詳細

Active Directory ACL の悪用の分析

概要

Active Directory のアクセス制御リスト(ACL)は、随意アクセス制御リスト(DACL)に含まれるアクセス制御エントリ(ACE)を通じて、AD オブジェクトに対する権限を定義します。ACE の設定を誤ると、特権のないユーザーに、Domain Admins グループ、ドメインコントローラー、GPO などの機密性の高いオブジェクトに対する GenericAll(フルコントロール)、WriteDACL(権限の変更)、WriteOwner(所有権の取得)、GenericWrite(属性の変更)などの危険な権限が付与されることがあります。

このスキルでは、Python の ldap3 ライブラリを使用してドメインコントローラーに接続し、nTSecurityDescriptor 属性を持つオブジェクトをクエリします。バイナリ形式のセキュリティ記述子を SDDL(セキュリティ記述子定義言語)形式に解析し、特権のないプリンシパルに危険な権限を付与する ACE を特定します。こうした設定ミスは、BloodHound などのツールで検出される ACL ベースの攻撃経路の基盤となります。

使用する場面

  • Active Directory ACL の悪用を分析する必要があるセキュリティインシデントを調査する場合
  • この分野の検知ルールや脅威ハンティング用クエリを作成する場合
  • SOC アナリストがこの種の分析に関する体系的な手順を必要とする場合
  • 関連する攻撃手法に対するセキュリティ監視のカバレッジを検証する場合

前提条件

  • ldap3 ライブラリをインストールした Python 3.9 以降(pip install ldap3)
  • AD オブジェクトへの読み取りアクセス権を持つドメインユーザーの認証情報
  • ポート 389(LDAP)または 636(LDAPS)でドメインコントローラーに接続できるネットワーク環境
  • Active Directory のセキュリティモデルと SDDL 形式に関する知識

手順

  1. ドメインコントローラーに接続する:ldap3 を使用して、NTLM またはシンプル認証で LDAP 接続を確立します。本番環境では、暗号化された接続に LDAPS(ポート 636)を使用します。

  2. 対象オブジェクトをクエリする:対象の OU またはドメイン全体を検索し、ユーザー、グループ、コンピューター、OU などのオブジェクトを取得します。nTSecurityDescriptor、distinguishedName、objectClass、sAMAccountName 属性を要求します。

  3. セキュリティ記述子を解析する:バイナリ形式の nTSecurityDescriptor を SDDL 文字列表現に変換します。DACL 内の各 ACE を解析し、トラスティ SID、アクセスマスク、ACE の種類(許可/拒否)を抽出します。

  4. SID をプリンシパルに解決する:ドメインに対する LDAP ルックアップを使い、セキュリティ識別子(SID)を人が読めるアカウント名に対応付けます。組み込みグループの既知の SID を特定します。

  5. 危険な権限を確認する:各 ACE のアクセスマスクを、危険な権限のビットマスクと照合します。対象には、GenericAll(0x10000000)、WriteDACL(0x00040000)、WriteOwner(0x00080000)、GenericWrite(0x40000000)、および特定の拡張権限に対する WriteProperty が含まれます。

  6. 非管理者のトラスティに絞り込む:想定される管理者トラスティ(Domain Admins、Enterprise Admins、SYSTEM、Administrators)を除外し、特権のないユーザーまたはグループが危険な権限を持つ ACE を警告対象にします。

  7. 攻撃経路をマッピングする:検出結果ごとに、想定される攻撃チェーンを記録します(例:ユーザーに対する GenericAll はパスワードのリセットを可能にし、グループに対する WriteDACL は自分自身をグループに追加することを可能にします)。

  8. 修復レポートを生成する:危険な ACE、影響を受けるオブジェクト、非管理者のトラスティ、推奨される修復手順を含む JSON レポートを出力します。

期待される出力

{
  "domain": "corp.example.com",
  "objects_scanned": 1247,
  "dangerous_aces_found": 8,
  "findings": [
    {
      "severity": "critical",
      "target_object": "CN=Domain Admins,CN=Users,DC=corp,DC=example,DC=com",
      "target_type": "group",
      "trustee": "CORP\\helpdesk-team",
      "permission": "GenericAll",
      "access_mask": "0x10000000",
      "ace_type": "ACCESS_ALLOWED",
      "attack_path": "GenericAll on Domain Admins group allows adding arbitrary members",
      "remediation": "Remove GenericAll ACE for helpdesk-team on Domain Admins"
    }
  ]
}

コメント