Windowsイベント4769を用いたKerberoasting検出手法
一般的なヒューリスティック(経験則)に基づくKerberoasting検出手法
従来のヒューリスティックに基づくKerberoasting検出手法では、以下のようなルールが使われることが一般的です:
✅ リクエスト数に基づく検出:
攻撃が実行されると、攻撃者はしばしばドメイン内のすべてのサービスプリンシパル名(SPN)に対してTGSチケットを要求します。これにより、1つのアカウントからTGSリクエストの急増が見られます。
✅ 暗号化方式の分析:
Kerberoasting攻撃を行う攻撃者は、要求するチケットの暗号方式をAESから、より脆弱なRC4やDESといった方式にダウングレードしようとすることがよくあります。これにより、ハッシュをクラックし、プレーンテキストのパスワードを容易に入手できるようになります。
こうした静的ルールは一定の検出力を持つものの、以下のような大きな限界があります:
- 誤検知(false positive)の発生率が高い
- 正当なユーザー行動や時間経過による変動に対応できない
- 組織ごとのドメイン構成やサービスの違いによって効果にバラつきがある
統計的手法および機械学習によるKerberoasting検出
Kerberoastingを検出するための他のアプローチとして、以下のような手法が挙げられます:
✅ 正解データ付きの学習(教師あり、Supervised)/一部だけ正解が付いたデータを使う学習(半教師あり、Semi-supervised)
この手法では、過去に発生したKerberoasting攻撃の正解ラベル付きデータ(通常は少なくとも数百件程度が必要)を用意し、それらを入力シグナル(特徴量)の集合とともに与え、分類アルゴリズムに学習させます。どのアルゴリズムを使うかは多数の選択肢が存在します。
✅ 正解がない中でパターンや逸脱を探る学習(教師なし、Unsupervised)
こちらはあらかじめ正解ラベルを必要とせず、データ内のパターンやクラスタ(群)を見つけたり、通常の振る舞いからの逸脱(異常)を数値的に捉えたりする方法です。
✅ 統計モデリング
この手法では、ラベル・シグナル、またはその両方に基づいて、データの確率分布を推定します。
私たちは、Kerberoastingのラベル付きデータをあらかじめ保有していなかったこと、また今回の目的がイベントID 4769の中に現れる未知の・異常な振る舞いを検出することであったため、教師あり/半教師あり学習は本件には適しませんでした。
そこで私たちはこの問題を、異常検知(anomaly detection)として捉え、既存のヒューリスティック手法から一歩進んで、自動的かつ適応的に件数のベースラインとしきい値を設定する方法へと発展させることにしました。
こうして候補手法を整理した後、次に重要な意思決定として、対象のデータセットの統計的特性を正確に反映できるモデリング手法を選定することに取り組みました。
従来の文献では、Kerberoastingの検出における一般的な教師なし学習アルゴリズムの精度について論じられているものもありますが、そうした既製(off-the-shelf)の機械学習手法は、私たちが直面していた以下の4つの制約には対応できませんでした。
-
説明可能性(Explainability):
出力結果が、認識可能で正規化された、かつ追跡や説明が容易な指標に基づいて解釈できること。 -
不確実性の反映(Uncertainty):
サンプルサイズや推定値の信頼度を反映できること。単なる二値のアラート判定ではないこと。 -
スケーラビリティ(Scalability):
モデルのパラメータ更新ごとに必要となるクラウド計算資源やデータストレージ量を最小限に抑えられること。 -
非定常性への対応(Nonstationarity):
時間の経過による傾向変化やその他のデータ変化に適応し、それらの変化を異常値の定義に取り入れられる能力。
最終的に私たちは、上記の制約に対応しつつ精度要件を両立させるために、統計モデルに軸足を置き、そのためのロジックを設計しました。次のセクションでは、私たちのモデルの概要を紹介します。