ATT&CKへのマッピングの自動化:脅威レポート ATT&CK マッパー(TRAM)ツール / Automating Mapping to ATT&CK: The Threat Report ATT&CK Mapper (TRAM) Tool(転載)

Automating Mapping to ATT&CK: The Threat Report ATT&CK Mapper (TRAM) Tool

ATT&CK マッピングを含むサイバー・スレット・インテリジェンス・レポートの発行数が増加していることは喜ばしいことであり、分析者がこれらのマッピングを簡単かつ迅速に作成できるようにしたいと考えています。ATT&CK のグループページやソフトウェアページに新しいレポートを追加するたびに、同様のプロセスを経ているので、ATT&CK マッピングの作成プロセスが難しいことは承知しています。アナリストが全266種類の技術に精通し、情報がどのようにマッピングされているかの機微を理解するには時間がかかります。我々自身のマッピングでは、毎日のように新しいレポートが発表されるため、追加したいレポートのバックログが尽きることがありません。私たちのチームの将来のアナリストの負担を軽減し、他のコミュニティを支援するために、私たちはこのプロセスを自動化する方法の開発に着手することにしました。

当社が開発したツール、Threat Report ATT&CK Mapper (TRAM)は、レポートを分析し、ATT&CK テクニックを抽出するための合理的なアプローチを提供することを目的としています。ATT&CKへのマッピングを自動化することで、分析者の疲労を軽減し、ATT&CKのカバー率を高め、脅威情報のマッピングの一貫性と精度を向上させることができると期待しています。TRAMのパブリックベータ版をATT&CKコミュニティに提供できることを嬉しく思います。

どうやってここまでたどり着いたのか?

レポーティングのテクニックを見つける方法を考え始めたとき、私たちは最も簡単そうな方法から始めました。曖昧な文字列検索です。私たちは、名前からテクニックを探すコマンドラインツールを作りました。すぐにわかったのは、この方法はうまくいく場合とまったくうまくいかない場合があるということでした。例えば、「Mshta」は非常に高い再現性を持っていましたが、「DLL Search Order Hijacking」は非常に低い再現性しかありませんでした。そこで私たちは、より高度な自然言語処理(NLP)プロセスをこの問題に適用することにしました。

以下は、私たちのNLPプロセスです。

  1. まず、トレーニング用のデータが必要です。基本的には、モデルにしたい各項目の正解を集めたアンサーキーが必要です。ここでは、テクニックごとにモデルを作りたいので、ATT&CKのサイトにある「Procedure Examples」をテクニックごとに使用しています。

  2. 次に、データを処理しやすい状態にする必要があります。これは、コンピュータが理解しやすいように、テキストをできるだけシンプルなバージョンにすることです。例えば、「masquerade」「masquerading」「masqueraded」はすべて同じ意味ですから、単語の時制ではなく、その意味に基づいてモデルを構築します。同様に、テキストをトークン化する必要があります。これは、テキストをトークンと呼ばれる小さな単位(多くは単語)に分割することです。このトークンによって、コンピュータはデータのパターンを理解することができます。例えば、文中の単語数を数えたり、2つの単語が隣り合って現れる頻度を数えたりすることができます。

  3. これで、それぞれの技術に応じたモデル(パターン)を構築することができるようになりました。現在はPythonのSci-kitライブラリを使用しています。ロジスティック回帰と呼ばれる手法を使用していますが、これは予測を行うのに適しており、ある文章にどのようなテクニックがあるかを予測します。また、この手法は、出力すべきもの(つまり、特定の技術)がわかっているので、教師付き学習と考えられます。

  4. 新しいデータでモデルを使用する前に、正しい答えがわかっているデータでモデルをテストする必要があります。そのために、ATT&CKにマッピングされているレポートを使って、モデルが十分な性能を発揮するかどうかを確認しました。

  5. モデルが期待通りのデータを見つけられることが確認できたら、今度はコンピュータが見たことのないデータ(例えば、ウェブサイトから出荷されたばかりのレポート)に対してモデルを使用することができます。

幸いなことに、Pythonのpickleファイルを使って、これらのモデルを「キャッシュ」形式で保存しています。つまり、このツールを使うたびにこのプロセスを繰り返す必要はないのです。私たちのNLPプロセスについてもっと知りたい方は、10月に行われたTRAMに関するBSides DCのプレゼンテーションをご覧ください。

TRAMはどのように使うのですか?

TRAMはローカルで動作するWebツールで、ユーザーはWebページのURLを送信することができます(PDFはまだありません)。TRAMがページを取得して解析することができれば、レポートの分析には1分近くかかることがありますが、これはフードの下で多くのことが行われているからです。

注:すぐに「レビューが必要」というカードが表示される場合は、一般的にWebサイトがスクレイピングの試みを好まなかったか、サイトの何かが解析できなかったことを意味します。この問題については現在調査中で、近日中に修正できると思います。


ニーズレビューの欄にカードが表示されたら、いよいよ分析を開始しましょう


TRAMのロジスティック回帰モデルは、テクニックを発見したと予測すると、関連するテキストをハイライトし、予測されたテクニックを右側のボックスに表示します。現在のデータセットは非常に限られているため、モデルの精度は100%ではありません。そのため、このツールではアナリストがテクニックの予測を確認し、「Accept」または「Reject」を行う必要があります。裏では、「Accept」ボタンがクリックされると、その文章と技術はデータベースの「True Positives」テーブルに入り、「Reject」がクリックされると、その文章は「False Positives」テーブルに入ります。これらのテーブルを使って、モデルを再構築することができます。より多くのデータがツールに入力され、アナリストがレビューし、モデルが再構築されることで、これらの予測はより正確になることが期待されます。


文章がハイライトされていてもいなくても、手動でテクニックを追加する必要がある場合は、その文章をクリックし、表示されるボックスで灰色の「Add Missing Technique」ボタンをクリックすることで、追加することができます。追加したいATT&CKのテクニックを入力し、表示されたらクリックします。文章がハイライトされていない場合は、ハイライトが表示されます。さらに、受け入れられた技術と拒否された技術のように、不足している技術が追加された場合は、「True Negatives」テーブルに入れられ、モデルを再構築する際に同様に考慮されます。

分析者がレポート全体を確認した後、ページの上部中央にある「Export PDF」ボタンをクリックすると、TRAMSの結果をPDFとしてエクスポートできるようになりました。エクスポートすると、レポートの生のテキスト版と、ATT&CKの手法とそれに対応する文章を表にしたものがPDFとして作成されます。一部の表の例を以下に示します。


TRAMの次のステップは何ですか?

現在のツールを共有し、ATT&CKへのマッピングを支援できることを嬉しく思っています。しかし、まだまだできることはたくさんあると思っています。TRAMは現在、機能的なプロトタイプであり、継続的に改良・開発されています。今後数ヶ月の間に、いくつかの機能を実装したいと考えています。これらの機能が追加されるたびに、新しい変更点を発表し、公開リポジトリを最新の状態に保つようにします。

次のステップとしては、以下のようなものがあります。

  • 追加のファイルタイプ(例:.doc、.pdf、.txt)を取り込む機能。
  • 出力形式の追加(例:CSV、JSON、STIX
  • 複数のユーザーを同時にサポートする機能
  • ダッシュボードと分析(例:レポートから見えるテクニックのトップ10、時系列でのテクニックの頻度、など

TRAMはどうやって入手できますか?

TRAMの完全なソースコードは、https://github.com/mitre-attack/tram にあります。READMEには、ツールを実行するための手順が記載されています。

ご自由にダウンロードしてお試しください。これはベータ版なので、バグや問題があることは承知しています。GitHub issue trackerを使って、これらの問題の追跡にご協力ください。