mcpField
M
mapping-attack-techniques

mapping-attack-techniques

github.com/trilwuセキュリティ17752 回インストール12 週間前に更新
リポジトリ

mapping-attack-techniques について

MITRE ATT&CK のテクニック、タクティクス、脅威インテリジェンスを関連スキルに結び付け、パープルチーム演習とカバレッジ評価を案内するセキュリティスキルです。セキュリティアナリストやレッド・ブルーチーム向けで、ATT&CK を手法ではなく、具体的な手順へのルーターとして扱います。

主な機能

  1. 01テクニック ID、名称、タクティクスによるスキル検索
  2. 02脅威インテリジェンスの TTP をスキルに対応付け
  3. 03パープルチーム演習の一連の手順を案内
  4. 04テスト済み、未テスト、テレメトリーなしを区別
  5. 05テクニックインデックスの利用

活用シーン

  1. 01攻撃者エミュレーション計画を作業に変換
  2. 02ATT&CK カバレッジの計画や報告
  3. 03演習、検知の検証、ギャップの追跡
  4. 04テクニック ID から該当する手順を特定

インストール

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

$npx skills add https://github.com/trilwu/secskills --skill mapping-attack-techniques

インストール後、Claude Code で/mapping-attack-techniquesを入力して読み込まれたか確認します。

詳細

ATT&CK テクニックのマッピング

ATT&CK は共通の語彙であり、方法論ではありません。その価値は、攻撃、防御、対応の各分野で同じ振る舞いに同じ名前を付けられることにあります。そのため、このスキルはテクニックのカタログではなく、ルーターとして機能します。テクニックを実際の手順を持つスキルに対応付け、両者をつなぐループを実行します。

使用する場面

  • リクエストにテクニック ID(T1003.001)、テクニック名 (「Kerberoasting」)、または戦術(「ラテラルムーブメントのカバレッジが必要」)が含まれている
  • 脅威インテリジェンスレポートや攻撃者エミュレーション計画を作業に落とし込む
  • マトリックスに対するカバレッジを計画、報告する
  • パープルチーム演習を実施する:エミュレート、検知、検証、ギャップの解消
  • リクエストが攻撃と防御にまたがる場合に、どのスキルを使うか選ぶ

使用しない場面

  • 平易な言葉でのリクエスト(「このホストから認証情報をダンプして」)— このようなリクエストにはドメインスキルが直接反応するため、ここを経由しても余計な手順が増えるだけです
  • コードレベルの脆弱性に関する作業 — ATT&CK はソースコードの欠陥をモデル化していません。代わりに CWE と ASVS を使う auditing-code-for-vulnerabilities を使用してください
  • AI/LLM システム — securing-ai-systems を使用してください。そちらのフレームワークは MITRE ATLAS であり、ATT&CK Enterprise ではありません
  • モバイルのターゲット — testing-mobile-applications を使用してください。Mobile マトリックスには独自の ID があり、Enterprise の ID とは対応していません

インデックス

secskills-core/ttp-index.json は、テクニックと、それをカバーするスキルを対応付けています。検索結果を確認するには、直接読み取ってください。

# Which skill covers this technique?
python3 -c "
import json;d=json.load(open('secskills-core/ttp-index.json'))
print([r for r in d['techniques'] if r['id']=='T1003.001'])"

# Everything under one tactic
python3 -c "
import json;d=json.load(open('secskills-core/ttp-index.json'))
[print(r['id'], r['name'], '→', ', '.join(r['skills']))
 for r in d['techniques'] if 'TA0008' in r['tactics']]"

# Search by name when you have words, not an ID
rg -i 'kerberoast|pass the hash' secskills-core/ttp-index.json

各スキルには、対象テクニックを列挙した生成済みの ## ATT&CK Coverage セクションもあります。このセクションとインデックスは、scripts/sync_attack.py によって同期されています。インデックスが信頼できる情報源です。

インデックスが意図的に行わないことは3つあります。 すべてのテクニックをカバーしているとは主張しません。_unmapped ブロックには、異なるフレームワークを使うスキルと、そのフレームワークが記載されています。すべてのテクニックに当てはまるため、検知やハンティングを各行で繰り返すことはありません。また、手作業でキュレーションされているため、ATT&CK の新バージョンのリリースに伴ってテクニック ID が変わることがあります。レポートに ID を記載する前に、attack.mitre.org で再確認してください。

リクエストの解決

Technique ID or name  → look up in the index → load the named skill
Tactic               → list the tactic's techniques → ask which procedure
Intel report         → extract TTPs (not IOCs) → map each → prioritize by
                       what your environment actually exposes
Group / APT name     → pull the group's technique list from ATT&CK → intersect
                       with your attack surface → hunt the intersection

テクニックは手順ではありません。 T1055(プロセスインジェクション)には、実質的に異なる実装が十数種類あり、ある実装向けの検知では、ほかの実装をまったく検知できないことがあります。テクニック ID だけのリクエストが届いた場合、次に尋ねるべきなのは「どの手順か」です。具体的な API の呼び出し順、ツール、またはコマンドのバリエーションを確認します。手順を指定せずに「T1055 をカバーしています」と答えるのは、ATT&CK が誤解を招く形で使われる最も一般的な例です。

パープルチームのループ

共通の語彙は、このためにあります。各ステップでは異なるスキルに引き継ぎ、テクニック ID によって、それぞれが同じ事柄について話し続けられます。

1. Select    → pick a technique by threat relevance, not matrix tidiness
2. Emulate   → run the procedure (offensive skill, or Atomic Red Team)
3. Observe   → did telemetry capture it? which data source, which fields?
4. Detect    → write the rule against the behaviour  → engineering-detections
5. Validate  → re-run the emulation; confirm the alert fires and is triageable
6. Hunt      → search historically for prior instances → hunting-threats
7. Record    → tested / untested / no-telemetry, per technique

実際の発見につながるのはステップ3です。テレメトリがまったくない状態でテクニックが実行された場合、それは可視性のギャップです。これはルールの不足より優先されます。収集していないデータに対する検知は作成できないためです。

テクニックは関連性に基づいて選んでください。自分の業界を標的にする攻撃者が実際に使うもの、自社の最重要資産に到達する経路として使われるもの、すでにギャップがあると疑われる箇所を考慮します。マトリックスを左から右へ順に進めても、実際には起きていない事象を均等にカバーするだけです。

カバレッジのレポート

単一の割合ではなく、テクニックごとに次の3つの状態で報告してください。

状態意味
テスト済みエミュレート済みで、フリート全体にテレメトリが存在することを確認し、ルールが発動し、トリアージ手順がある
未テストルールはあるものの、エミュレーションに対して一度も検証されていない
テレメトリなしデータソースが収集されていない、またはすべてのプラットフォームで収集されていない

未テストのルールから作成した緑色の ATT&CK Navigator レイヤーは、セキュリティプログラムにおける最もよくある自己欺瞞です。レイヤーを生成する場合は、3つの状態をそれぞれ異なる色で表し、各色の意味を凡例に記載してください。

# Navigator layer from the index (coverage claimed, not coverage tested)
python3 -c "
import json;d=json.load(open('secskills-core/ttp-index.json'))
print(json.dumps({'name':'SecSkills skill coverage','versions':{'layer':'4.5'},
 'domain':'enterprise-attack',
 'description':'Skills that cover each technique. Claimed, not validated.',
 'techniques':[{'techniqueID':r['id'],'comment':', '.join(r['skills']),'score':1}
   for r in d['techniques']]}))" > coverage-layer.json

生成したレイヤーには、すべて 主張された カバレッジとラベルを付けてください。テスト済み のカバレッジにするには、上記のループをテクニックごとに実施する必要があります。

退けるべき合理化

  • 「その手法には対応しています。」 どの手順を、どのように検証し、どのテレメトリを使い、どのプラットフォームで対応していますか?
  • 「マトリックス全体を網羅しましょう。」 均等に網羅するのは、リソースの誤配分です。実際に攻撃に使われているものを優先してください。
  • 「手法 ID がルールのタグにあるので、対応付け済みです。」 タグ付けはテストではありません。
  • 「ATT&CK に ID がないので、対象外です。」 マトリックスは観測された振る舞いのモデルであり、境界ではありません。コードレベルのバグ、AI システムへの攻撃、Web3 のエクスプロイトには Enterprise ID がなくても、依然として重要です。代わりにどのフレームワークを使ったかを明記してください。
  • 「インテリジェンスレポートにこれらの IOC が載っているので、それをハントしましょう。」 ハントするのは TTP です。公開レポートにあるハッシュや IP は、すでに使えなくなっています。
  • 「エミュレーションを実施してもアラートが出なかったので、ルールが壊れています。」 まずテレメトリを確認してください。通常、データ自体が収集されていません。

外部ソースを読む

公開アドバイザリ、仕様書、ベンダーレポートを Markdown として取得します。

curl -sL "https://defuddle.md/<url>"      # scheme in the path is optional

ページの定型部分を取り除き、文章主体のページではトークン数を約 78% 削減します。また、要約ではなく全文を返すため、grep で検索でき、検索結果が見つからない場合も信頼できます。

この方法に向かないものが 3 つあります。JSON と API レスポンスは、可読性抽出によって構造化データが崩れるため、そのまま取得してください。認証が必要なページや JavaScript で描画されるページは、匿名で取得するため、直接取得してください。そして、攻撃者のインフラ(フィッシングリンク、C2、マルウェアのホスティング先)、クライアント所有のホスト、またはエンゲージメント URLを、絶対にこの方法で経由させないでください。リクエストがマシンから第三者へ送信され、稼働中の攻撃者インフラの場合は、運用者に気付かれることにもなります。

抽出ツールをブロックし、ページではなくエラーの文字列を返すサイトもあります。たとえば freedesktop.org からは、{"error":"Failed to fetch: 418 I'm a teapot"} が返されることがあります。これは取得が拒否されたということであり、ソースにその内容が存在しないと記されているわけではありません。結論を出す前に、URL を直接再取得してください。

参考資料

  • engineering-detections — 手法に対するルールの作成と検証
  • hunting-threats — 環境内で手法の過去の痕跡を検索すること
  • responding-to-incidents — 観測された攻撃者の活動を手法に対応付けること
  • secskills-core/ttp-index.json — このスキルが読み込む、手法とスキルのインデックス
  • MITRE ATT&CK、ATT&CK Navigator、Atomic Red Team、CALDERA、MITRE ATLAS(AI)

コメント