🐡

DeTT&CT解説

に公開

前提知識

MITRE ATT&CKとは

TTPはサイバーセキュリティ分野でよく使われる用語で攻撃者の行動のパターンを体系化した概念であり、Tactics, Techniques, Proceduresを略した用語です。

  • Tactics(戦術): 攻撃者が達成したい目標や行動のカテゴリ。攻撃の「何をするか」に相当
  • Techniques(手法): 戦術を実現するための具体的な手法。
  • Procedures(手順): 特定の攻撃者やグループが、技術を用いて実際に攻撃を実行する具体的な手順。

MITRE ATT&CKはTTPを整理/体系化したフレームワークであり、MITRE ATT&CKを使うと攻撃者の行動パターンを理解することができます。

サイバーセキュリティにおける防御側は、攻撃者の行動パターンであるTTPを理解することで、攻撃の兆候(Indicators)や検知方法を整理することができます。

防御ギャップ

防御側は、具体的な攻撃に対して自身のシステムが防御できる状態になっているかを評価し、問題がある場合は攻撃と防御のギャップを埋める必要があります。このギャップのことを防御ギャップと言います。

防御ギャップとして、以下のギャップが考えられます。

  • 可視性/検出ギャップ: 攻撃を見える化・検知できるか
  • 防御(阻止)ギャップ: 攻撃を阻止できるか
  • 対応/回復ギャップ: 攻撃後の対応/復旧
  • 運用/管理ギャップ: 運用ミス/設定ミスによる盲点

監視/検出能力の評価

自システムが攻撃に対して十分な監視/検出能力を持っているかを評価し、弱い部分や対応に漏れのある部分を洗い出す際、具体的にはどのようにすれば進めれば良いのでしょうか。

  1. 特定の攻撃を想定する
  2. 特定の攻撃が発生する状況を限定する
  3. 特定の攻撃を検出するために必要となる情報(データ)を明確にする
  4. 特定の攻撃が実際に検出できるようになっているかを確認する

1. 特定の攻撃を想定する

攻撃に対しての情報はATT&CKに含まれているので、特定の攻撃はATT&CKを参照することで取得できます。
ここでは、T1059.0006(Command and Scripting Interpreter: Python)というサブテクニックを想定することにします。
https://attack.mitre.org/techniques/T1059/006/

2. 特定の攻撃が発生する状況を限定する

T1059.0006が発生する状況を限定します。状況によって攻撃による影響や対処方法、許容できるリスクの条件などが異なってきます。

状況の例としては、Enterprise環境の話なのか、Windows OSのクライアント端末なのか、
Linux OSのサーバ端末なのかといったことが想定されます。

3. 特定の攻撃を検出するために必要となる情報(データ)を明確にする

ATT&CK上にはT1059.0006のサブテクニックには、検出のために必要なデータソース(より細かい粒度ではデータコンポーネント)が列挙されています。

  • Command Execution(DS0017)
  • Process Creation(DS0009)

データソースが利用可能な状態になっているかは重要であり、コマンド実行とプロセス生成についてのデータを取得できない環境やシステムでは、T1059.0006のサブテクニックは検出できません。

また、データソースの名称からもわかるとおりデータソースは攻撃を検出するために必要な汎用的なデータ情報として表現されています。

T1059.0006(Command and Scripting Interpreter: Python)の攻撃を検出するために、具体的にどのコマンド実行が取れる必要があるのか、具体的にどのプロセス生成情報を取れる必要があるのかは、具体的に考慮しなければなりません。

上記をまとめると、特定の攻撃を検出するためには以下が必要であると言うことができます。

  • データソース: 特定の攻撃を検出するために必要な情報の種類が利用可能か
  • 可視性: 特定の攻撃を見える状態にするための情報が含まれているか

4. 特定の攻撃が実際に検出できるようになっているかを確認する

特定の攻撃が見える状態になっていても、実際にその攻撃が検出できるかどうかは別の要素が関わってきます。攻撃として特定するためのルールがあり、そのルールを使って監視/検知するように運用されている必要があります。

  • 検出: 特定の攻撃が実際に攻撃として検出できるようになっているか

ATT&CKフレームワークには含まれていない情報

監視/検出能力の評価についてATT&CKを利用することはできますが、ATT&CKフレームワークには含まれていない以下の情報を用意し、管理/整理する必要があります。

  • データソース: 特定の攻撃を検出するために必要な情報の種類が、ログやSIEM上で利用可能になっているか
  • 可視性: 情報の中に、特定の攻撃を具体的に検出するための情報が含まれているか
  • 検出: 特定の攻撃が実際に攻撃として検出できるようになっているか

MITRE ATT&CKフレームワーク単体では、自社のログ、検知ルール、監視体制といった防御側の視点を体系的に管理する仕組みがありませんし、それらの情報とATT&CKをどう対応づけるかについての決め事もありません。

DeTT&CTとは

DeTT&CT(Detection Tactic Techniques & Coverage Tool)は組織のセキュリティ可視性/検出能力を整理/評価するためのフレームワークです。
「自社の防御がどこまで有効か」を可視化する枠組みと言えます。

DeTT&CTはATT&CKに組み込まれていない以下の機能を、フレームワークとして提供します。

  • ATT&CKの脅威マップを「検出能力マップ」に変換する
  • 防御カバレッジのギャップ分析を可能にし、優先的に強化すべき領域を明確化できる
  • YAMLベースで継続的に更新・共有・自動化できる

MITRE ATT&CKのみを使う場合は、MITRE ATT&CKフレームワーク外の部分は自前で1つずつ検討実装していく必要がありますが、DeTT&CTを利用することにより組織のセキュリティ可視性/検出能力の整理/評価を、 フレームワークとして 利用することができるようになります。

DeTT&CTが管理するもの

DeTT&CTは、大きく2つの情報を管理します。

  1. データソース管理
  2. テクニック管理

データソース管理ファイルにデータソース群を、テクニック管理ファイルにテクニック群をYAML形式で格納します。

データソース管理ファイル

データソース管理ファイルには、複数のデータソース情報が格納されます。

データソース情報には以下のような情報が含まれます。

  • DeTT&CTにエントリを登録した日付
  • データソースをセキュリティデータレイクに接続したときのデータ
  • データがどの製品に保存されているか
  • データソースが適用されるシステムの種類
  • データソースをデータ分析に使用できるかを示すフラグ
  • コメント
  • データ品質
  • 任意のキーと値のペア

データ品質スコア

データ品質スコアとは、データの品質について以下の5つの観点でつけた点数のことです。

データ品質の観点:

No. 観点 説明 スコア付けの際の質問事項
1 デバイスの完全性 必要なデータがすべてのデバイスで利用可能かどうかを示します ハンティング調査を行う際に必要な全てのデバイス/ユーザをカバーできますか? 古いバージョンのWindowsを実行しているエンドポイントについて、イベントデータが見つかりません
2 データフィールドの完全性 データに必要な情報/フィールドがどの程度含まれているか、またそれらのフィールドにデータがどの程度含まれているかを示します イベントの必須データフィールドがすべて存在し、調査を実行するためのデータが含まれていますか? プロキシログはありますが、イベントには「Host」ヘッダが含まれていません
3 適時性 データがいつ利用可能か、またイベントが発生した実際の時間に対するデータのタイムスタンプの正確さを示します データは必要なときにすぐ利用できますか? データないのタイムスタンプは、レコードが作成または取り込まれた時刻を表していますか? すべてのエンドポイントから必要なデータをセキュリティデータレイクに取り込むまで、1から2日の遅延が発生します。 タイムスタンプはイベントの発生時刻ではなく、セキュリティデータレイクへの取り込み時刻を表しています
4 一貫性 データフィールドの名前とタイプの標準化について説明します イベントを他のデータソースと相関させることはできますか? 特定のフィールドに標準の命名規則を使用して、すべてのデータソースに対してクエリを実行できますか? このデータソース内のフィールド名は、他のデータソースのフィールド名と一致していません
5 保持 希望するデータ保持期間と比較して、データが保存される期間を示します データはどのくらいの期間利用できますか? データをどのくらいの期間保存しますか? データは30日間保存されますが、理想的には1年間保存したいと考えています

それぞれの観点について次の指標でスコアをつけます。

データ品質スコア:

スコア デバイスの完全性 データフィールドの完全性 適時性 一貫性 保持
0 - なし 不明/文書化されていない/該当しない 不明/文書化されていない/該当しない 不明/文書化されていない/該当しない 不明/文書化されていない/該当しない 不明/文書化されていない/該当しない
1 - 悪い データソースはデバイスの1~25%から利用可能です 必須フィールドは1~25%の範囲で使用できます データが利用可能になるまでに長い時間がかかります。データないのタイムスタンプは、実際のイベント発生時刻と大きく異なります フィールドの1~50%の名前とタイプが標準化されています データの保持期間は希望時間の1~25%以内です
2 - 普通 データソースはデバイスの26~50%で利用可能です 必須フィールドは26~50%で3利用可能です データの保持期間は希望時間の26~50%以内です
3 - 良い データソースはデバイスの51%~75%から利用できます 必須フィールドは51か~75%で利用可能です データが利用可能になるまでには少し時間がかかりますが、許容範囲内です。 データのタイムスタンプは、実際のイベント発生時刻と若干ずれがあります フィールドの51%~99%の名前とタイプが標準化されています データの保持期間は希望時間の51~75%以内です
4 - とても良い データソースはデバイスの76%~99%で利用可能です 必須フィールドは76~99%利用可能です データの保持期間は希望期間の76~99% 以内です
5 - 優秀 データソースは100%のデバイスで利用できます 必須フィールドは100%利用可能です データはすぐにご利用いただけます。 データないのタイムスタンプは100%正確です フィールドの名前とタイプは100%標準化されています データは、希望する保存期間の100%保存されます

データ品質が低い場合は、攻撃の検出にそのデータを使用する際に制限がかかったり、データの信頼性に懸念があり、改善の余地があることを意味します。

データソース管理ファイルのアウトプット

データソース管理ファイルに登録されている情報は、以下の目的で使われます。

  1. 管理目的: データソースの状況を管理する(DeTT&CTエディタでの操作、あるいはxlsxとして出力)
  2. データソース網羅率の可視化: 各テクニックに紐付くデータソースの網羅率を算出し可視化する
  3. テクニック管理ファイルの生成

1. 管理目的

データソース管理ファイルは、YAMLで構成されています。そのままYAMLを編集しても良いのですが、DeTT&CTでは専用のエディタをWeb UIとして用意しています。


DeTT&CT Editor

データソース管理ファイルの内容をxlsx形式で出力することもできます。


データソース管理ファイルのxlsx出力1


データソース管理ファイルのxlsx出力2

データ品質スコアは、データソース網羅率の可視化やテクニック管理ファイルの生成には使用されず、データソースの管理目的にのみ使われます。

2. データソース網羅率の可視化

データソース管理ファイルを使って、データソース網羅率の可視化を行うことができます。

T1059.0006(Command and Scripting Interpreter: Python)には以下の2つのデータソース(データコンポーネント)が結びつけられています。

  • Command Execution(DS0017)
  • Process Creation(DS0009)

https://attack.mitre.org/techniques/T1059/006/

データソース網羅率とは、特定の攻撃に対して結びつけられているデータソースのうち、利用可能な状態になっている割合のことを意味します。

データソース網羅率が高いと、特定の攻撃をより的確に検出できる可能性が高まります。
逆にデータソース網羅率が低いと、特定の攻撃の検出に取りこぼしが発生したり必要な情報が十分取得できない可能性があると考えられます。

データソース網羅率は、0~100%の間で算出されます。データソース管理ファイル内の、各データソースについて利用可能なフラグがついているかどうかを算出の情報源としています。


DeTT&CT

3. テクニック管理ファイルの生成

データソース管理ファイルを基にして、テクニック管理ファイルを生成することができます。


DeTT&CT

テクニック管理ファイルには、ATT&CKテクニックを1つずつ登録していき、そのテクニックについての可視性および検出についてスコアを設定していくことになります。

何もないところから作成するにはATT&CKのテクニックは数が多いため、データソース管理ファイルを基にしてテクニック管理ファイルの大枠を生成する方法をとることで効率化できます。

デフォルトではデータソース管理ファイルのデータソース網羅率を計算し、網羅率が0よりも大きいテクニックがテクニック管理ファイルに登録されます。全テクニックを登録対象とすることも可能です(--yaml-all-techniquesオプション使用時)。

データソース管理ファイルを基にして作られたテクニック管理ファイルは、大まかな可視性スコアが割り振られているためテクニック毎の大まかな可視性を可視化することができます。

テクニック管理ファイル


DeTT&CT

テクニック管理ファイルには、テクニックごとに可視性と検出スコアを含めた以下の内容を記録します。

  • 可視性が適用されるシステムのタイプ(Windowsエンドポイント、Linuxサーバーなど)
  • コメント
  • 可視性スコア
  • 独自のキーと値のペア

可視性スコア

DeTT&CTでは可視性に関する5つのスコアが示されています。

https://github.com/rabobank-cdc/DeTTECT/wiki/Visibility-scoring

可視性スコア:

スコア スコア名 説明
0 None 完全に可視性が無い状態。攻撃の痕跡をまったく確認できない
1 Minimal 部分的にしか見えない: テクニックの実行手順の一部を確認できるだけの、十分なデータソースが存在し、データ品質もある程度担保されている状態
2 Medium 主要な痕跡がカバーできている: Minimalより多くの手順の側面が見える状態。必要なデータソースと品質があるが、まだ十分ではない
3 Good 既知のほぼ全てが見えている: テクニックの既知のほぼすべての側面を確認できるに足る十分かデータ(ソースと品質)が存在している状態
4 Excellent 完全に網羅している: テクニックのすべての既知の側面を確認できるすべての必要なデータソースとデータ品質が揃っている状態

必要なデータソースが揃っているか、その中身が十分かでスコアを決めます。

判断例:

  • PowerShellのみプロセス生成イベント(4688)が収集されているが、コマンドライン引数は記録されていない
    • 実行事実はわかるが詳細が不明
    • スコア1(Minimal)
  • 4688イベントに加え、コマンドライン引数とスクリプトブロックログが収集されている
    • 攻撃の痕跡を多面的に把握可能
    • スコア3(Good)

可視性を可視化すると、次のように見えます。

検出スコア

DeTT&CTでは、検出のための7つのスコアが示されています。

https://github.com/rabobank-cdc/DeTTECT/wiki/Detection-scoring

検出スコア:

スコア スコア名 説明
-1 None 検出が全く行われていない状態
0 Forensics/context 検出はないが、フォレンジック用途やコンテキスト把握のためにログが記録されている状態
1 Basic 基本的なシグネチャでテクニックの一部のみを検出。検出の対象範囲が狭く、見逃し(False Negative)が覆い可能性。誤検知(False Positive)が多い場合もある。リアルタイム性は保証されないことがある。
2 Fair 単純なシグネチャに加え、相関ルールを用いて検出範囲を広げている状態。「Basic」よりは見逃しが減るが、依然として誤検知や見逃しが存在。リアルタイムとは限らない
3 Good より高度な分析を用いてテクニックの多くを検出可能。回避や難読化には部分的弱いが、リアルタイムでの検知が可能。誤検知はあっても識別しやすく、除外可能な場合が多い
4 Very good ほとんどの側面をリアルタイムで検出可能であり、非常に高い検出力。回避手法にも強い。誤検知は少なく、あっても認識除去が可能。見逃しも少ない
5 Excellent 「Very good」と同等の検出力に加え、全ての既知の側面をカバーしている状態。見逃しの可能性はさらに低い

側面別検出スコア(Detection Scores by Aspects):

スコア スコア名 検出の度合い タイミング テクニック全体のカバー度 回避の可能性 False Negative False Positive
-1 None 全くなし - 全くなし - - -
0 Forensic/context 全くなし 即時とは限らない 検出対象無し - - -
1 Basic(Signature based) 基本的なシグネチャ 即時とは限らない ごく一部の側面のみ 回避・難読化の可能性あり 多い 多い可能性
2 Fair(Correlation rules) 相関ルールなどを利用 即時とは限らない Basicより多くの側面をカバー 回避可能性あり 多い可能性 存在する可能性
3 Good 複雑な分析を活用 リアルタイム 既知の多くの側面をカバー 回避可能性あり 存在 識別しやすく、除去可能な誤検知あり
4 Very good 複雑な分析を活用 リアルタイム ほぼすべての側面をカバー 回避は難しい 少ない 識別しやすく、除去可能な誤検知あり
5 Excellent 複雑な分析を活用 リアルタイム 全ての既知の側面をカバー 回避は難しい 非常に少ない 識別しやすく、除去可能な誤検知あり

検出スコアと側面別検出スコアの使い分け

検出スコアは総合点と考えれば良いです。経営層や全体像を俯瞰する場面で利用します。
この技術に対する検出力は「高い/中程度/低い」と一目で判断したいようなケースで使います。

側面別検出スコアは、セキュリティ運用や検知ルール改善の現場で利用します。
誤検知は少ないけれどカバレッジが狭いから追加ルールを作ろうといった改善点の洗い出しに使えます。

用語について

https://github.com/rabobank-cdc/DeTTECT/wiki/How-to-use-the-framework

データソース

データソースとは、システム、セキュリティアプライアンス、ネットワークデバイスなどによって生成される生のログまたはイベントのことを指します。ATT&CKには30種類以上のデータソースがあり、それらはさらに90種類以上のデータコンポーネントに分割されています。

これらのデータソースは、データソース管理ファイル内で管理され、各データソースについてデータ品質のスコアリングが可能です。

可視性

DeTT&CTでは、可視性はATT&CKテクニックの痕跡を確認するのに十分は品質のデータソースが十分にあるかどうかを示すために使用されます。
可視性はインシデント対応、ハンティング調査の実行、検知の構築に不可欠です。

DeTT&CTでは、ATT&CKテクニックごとに可視性の範囲をスコアリングできます。

可視性スコアはテクニック管理ファイルで管理されます。

検出

適切なデータソースと十分な品質を備え、データ分析に利用できる状態であれば、その可視性を活用してATT&CKテクニックに対する新たな検出を作成できます。
検出は多くの場合アラートをトリガーするためブルーチームがフォローアップします。

検出のスコアリングと管理は、テクニック管理ファイルで行われます。

適用対象/システムの種類(applicable_to)

テクニック管理およびデータソース管理ファイルの両方で、検出、可視性、データソーススコアが適用されるシステムのタイプ(Windowsエンドポイント、Linuxサーバーなど)を指定することができます。

関連記事

MITRE ATT&CK関連記事一覧
https://zenn.dev/sesamum/articles/fba079cadba113

Discussion