SpearSpray は、Active Directory 環境向けに特化して設計された高度なパスワードスプレーツールです。LDAP を用いたユーザー列挙と、パターンベースのインテリジェントなパスワード生成を組み合わせ、Kerberos を経由した制御されたステルス性の高いパスワードスプレー攻撃を実行します。
機能
コア機能
- LDAP 連携: LDAP クエリを通じた Active Directory ユーザーの直接列挙
- カスタム LDAP クエリ: 特定のユーザーやグループのみにスプレー対象を絞り込むためのクエリ定義
- パターンベースのパスワード生成: ターゲットに合わせたパスワードリストを作成できる柔軟なテンプレートシステム
- ドメインポリシー認識: ドメインのパスワードポリシーを自動取得し、それを遵守
- アカウントロックアウト保護: ユーザーアカウントのロックアウトを回避するためのスマートフィルタリング
- PSO 検出: Password Settings Object を持つユーザーの特定と適切な処理
- Kerberos 認証: Kerberos 事前認証を利用した高速かつ効率的な認証テスト
- Neo4j 連携: 侵害したユーザーを Neo4j/BloodHound データベース上で自動的に「owned」としてマーキング
- リアルタイム結果: 攻撃中に「owned」とマークされたユーザーをライブで表示
- 攻撃サマリー: 統計情報や成功率を含む包括的な結果サマリー
セキュリティ & ステルス機能
- ジッター対応: 認証試行間の遅延を設定可能
- しきい値管理: ロックアウトしきい値に近いユーザーを自動的にフィルタリング
- マルチスレッド: パフォーマンス最適化のためのスレッド数設定
- レート制限: ドメインコントローラーへの過負荷を防ぐための 1 秒あたりリクエスト数の制御
- SSL/LDAPS 対応: 必要に応じた安全な LDAP 接続
高度なパターンシステム
- 動的変数: ユーザー固有データ(名前、最終パスワード変更日など)に対応
- カスタムセパレーター & サフィックス: 柔軟なパスワードパターンのカスタマイズ
- 追加引数: 企業固有の用語の統合
- インタラクティブなパターン選択: パターン選択のための動的メニューシステム
攻撃結果サマリー
SpearSpray は各攻撃の最後に包括的なサマリーを提供し、主要な統計と結果を読みやすい形式で表示します。
- 有効な認証情報: 有効で動作する認証情報を持つユーザー数
- 期限切れパスワード: 正しいが期限切れとなっているパスワードを持つユーザー数(依然として侵害状態)
- Owned としてマーク: Neo4j 連携が有効な場合に、正常にマークされたユーザー数
- 総試行回数: 攻撃中に実行された認証試行の総数
- 成功率: 総試行回数に対する認証成功の割合
このサマリーにより、セキュリティ担当者はパスワードスプレー評価の影響と有効性を迅速に把握できます。
パターンシステム
SpearSpray は高度なパターンシステムを用いて、各ユーザーに対して非常にターゲット化され、パーソナライズされたパスワードを生成します。汎用的なワードリストとは異なり、各パスワード試行は Active Directory から取得したユーザー固有の情報に基づいてカスタマイズされます。
主要な革新点: ユーザー固有の時系列データ
すべての時系列変数(年、月、季節)は、現在日時ではなく、各ユーザーの個別のパスワード変更日(pwdLastSet 属性)に基づいて計算されます。 つまり、あるユーザーが 2024 年 3 月にパスワードを変更していた場合、そのユーザー向けのパターンは 2024 年 3 月のデータを用いてパスワードを生成します。このパーソナライズされたアプローチは、各ユーザーのパスワード変更タイムラインに個別に適用されるため、成功の可能性を大幅に高めます。
利用可能な変数
| 変数 | 説明 | 例 |
|---|---|---|
{name} |
ユーザーの名(displayName から取得) | Eren |
{samaccountname} |
ユーザーの SAM アカウント名 | eren.yeager |
{year} |
pwdLastSet(または whenCreated)から取得した年 | 2024 |
{short_year} |
年の下 2 桁 | 24 |
{month_number} |
月番号(ゼロ埋め) | 03 |
{month_en} |
英語の月名 | March |
{month_es} |
スペイン語の月名 | Marzo |
{season_en} |
英語の季節名 | Spring |
{season_es} |
スペイン語の季節名 | Primavera |
{extra} |
-x 引数で指定された追加ワード |
CompanyName |
{separator} |
-sep 引数で指定されたカスタムセパレーター |
@ |
{suffix} |
-suf 引数で指定されたカスタムサフィックス |
! |
注: 時系列変数(月および季節)の変換マッピングは、spearspray/utils/constants.py に定義されています。