Cobalt Strike を利用した Active Directory パスワードスプレー攻撃の実践

今回は、ペネトレーションテストツール Cobalt Strike を用いて、Active Directory 環境におけるパスワードスプレー攻撃を効率的に実行する方法を解説します。この手法は、組織内の脆弱なパスワードを洗い出すとともに、監視・検知体制の評価にも役立ちます。

1. 事前準備:Cobalt Strike とスクリプトの導入

Cobalt Strike のセットアップが未実施の場合は、公式ドキュメントに従って初期設定を完了しておいてください。

本手法では、Outflank が公開している Spray-AD スクリプトを使用します。このスクリプトは、Active Directory ユーザーアカウントに対して弱いパスワードを検査するための Aggressor スクリプトです。

以下のコマンドでリポジトリをクローンし、Cobalt Strike の Script Manager からインポートします。

git clone https://github.com/outflanknl/Spray-AD

Cobalt Strike のメニューから Script ManagerLoad でダウンロードした .cna ファイルを選択して読み込みます。

2. パスワードスプレー攻撃の実行

攻撃手順は以下の通りです。

  1. セッションの取得
    まず、ドメインに参加しているエンドポイントに対してビーコンを確立します。
  2. ビーコンの間隔を調整
    ビーコンとの通信間隔を短く設定(例:sleep 10)します。これにより、LDAP クエリの応答を待つ時間を短縮できます。
  3. パスワードスプレーの実行
    ビーコン上で以下のコマンドを入力します。引数には検査したいパスワード(例:P@ssw0rd)を指定します。
beacon> Spray-AD P@ssw0rd

実行後、スクリプトは LDAP 経由でドメインコントローラーに接続し、全ユーザーアカウントに対して指定されたパスワードを試行します。数秒で結果が返り、一致したユーザーアカウントの一覧が表示されます。

この攻撃中のネットワークトラフィックは、Kerberos AS-REQ パケットが主体となり、通常の認証通信と区別がつきにくい点が特徴です。

3. 防御策:イベントログを活用した検知

パスワードスプレー攻撃を検知するには、Kerberos 認証の失敗イベントを監視する必要があります。Windows のイベントID 4771(Kerberos 事前認証失敗)が鍵となります。特に、失敗コード 0x18 はパスワードが誤っていることを示します。

以下の対策を実施します。

  • Kerberos イベントログの有効化
    ドメインコントローラーで Kerberos 認証のログを記録するようにグループポリシーまたはレジストリを設定します。詳細は Microsoft のサポート記事を参照してください。
    https://docs.microsoft.com/ja-jp/troubleshoot/windows-server/identity/enable-kerberos-event-logging
  • アラートルールの設定
    SIEM やログ監視システムにて、短時間(例:1分間)に 50 件を超えるイベントID 4771(失敗コード 0x18)を検出した場合に警告を発するルールを追加します。

これにより、組織内の脆弱なパスワードを早期に発見できるだけでなく、攻撃の試行をリアルタイムで検知できる体制が整います。

タグ: Cobalt Strike Active Directory パスワードスプレー Kerberos イベントID 4771

5月15日 19:19 投稿