新しいOCTIダッシュボード:STIXモデル対応の初のグラフダッシュボードエンジン
主要業績評価指標(KPI)、トレンドのモデル化、サイバー脅威インテリジェンス知識およびプラットフォームに保存されているオペレーショナルデータのグラフィカル表現に取り組み始めたとき、ほとんどの人は、Kibana、OpenSearch dashboards、Grafanaなど、技術スタックに既に存在するものを組み込む方が簡単だと考えていました。しかし実際には、既存のシステムのいずれも、ナレッジグラフを経由するクエリを生成することができず、OpenCTIコミュニティが長い間待ち望んでいたユースケースをサポートできません。

OpenCTI 5.5ブランチでは、まったく新しいダッシュボードエンジンを導入しましたが、この初版は、STIXモデルに精通していない(あるいはエキスパートでも😊)アナリストやステークホルダーにとっては理解しにくい場合があります。ウィジェット作成のユーザーエクスペリエンスは次のリリースで強化される予定ですが、基礎となるロジックは同じまま維持されます。この記事では、その仕組みを説明し、最も基本的なものから最も複雑なものまで、いくつかの質問に答えることでこの実装の威力を実証することを目的としています。
新しいウィジェット作成ワークフロー
まず、新しいウィジェットを作成する際のワークフローは次のようになります:

ダッシュボードウィジェット作成のワークフロー
選択内容によって、ウィジェットの設定や表示するデータセットの数が変わる場合があります。新しいエンジンでは、利用可能な可視化タイプの数が大幅に増えました:

利用可能な可視化タイプ
パースペクティブ選択では、ナレッジグラフを考慮する
可視化タイプを選択した後、通常、表示するデータには「エンティティ」または「ナレッジグラフ」の2つのパースペクティブが利用可能です。どちらのパースペクティブを使用すべきかを選択するには、次の質問に答えるだけです:「表示するデータセットを計算するために、何らかのリレーションシップを経由する必要があるか、ないか?」
言い換えれば、ラベル、作成者、マーキング定義などのフィルタを使用してエンティティのサブセットを表示したい場合は、「エンティティ」パースペクティブだけで十分ですが、被害状況(targets)、帰属(attributed-to)、使用(uses)、またはその他のリレーションシップを考慮する必要がある場合は、パースペクティブは「ナレッジグラフ」になります。

パースペクティブの選択
エンティティリストや時系列の表示:縦棒グラフ、折れ線グラフ、タイムライン、数値など
最初のユースケース例は非常にシンプルで、エンティティのサブセット(別名パースペクティブ「エンティティ」)を使用して、数値、リスト、またはチャート(時系列)を表示することです。可視化タイプによって、単一のデータセットを選択できる場合と、複数のデータサブセットを選択できる場合があります。
たとえば、選択した可視化タイプが「リスト」、「数値」、または「タイムライン」の場合、データのサブセットは1つだけ選択できます:

TLP:AMBERのレポートのリストまたは数
可視化タイプ「縦棒グラフ」または「折れ線グラフ」を選択した場合、複数のサブセット(複数の棒、複数の線など)を表示することが可能です:

複数のデータサブセットを含む折れ線グラフまたは棒グラフ
最新の例では、デフォルトパラメータを使用すると、生成されるチャートは次のようになります:

複数のデータサブセットを含む縦棒グラフ
ウィジェット設定の最後のステップでは、表示パラメータを調整することができます。間隔(日、週、月など)、凡例、チャートを積み上げるかどうか、各ナレッジサブセットの時系列計算に使用する「時間」フィールド(created、created_at、updated、updated_atなど)などです。

たとえば、間隔「月」と「積み上げグラフ」を使用すると:

「エンティティ」パースペクティブと、リスト、数値、時系列で利用可能な可視化タイプを使用すると、次のような質問に答えることができます:
- 毎週TLP:REDのインディケータまたはレポートが何件取り込まれているか?
- プラットフォーム内の特定のラベルを持つ脆弱性の現在の数は?
- 特定のラベルを持つ最新のキャンペーンは何か(タイムライン形式)?
- 過去12ヶ月間に特定のセクターを含むレポートが何件取り込まれたか?
エンティティ分布の表示:横棒グラフ、円グラフなど
レーダー、円グラフ、ドーナツグラフなど、データ分布につながる可視化を選択する場合、タイプ、作成者、マーキングなど、集計の計算に使用するフィールドを選択する必要があります。

集計フィールドの選択
たとえば、「横棒グラフ」タイプの可視化を選択し、次のようなシンプルな設定を行った後:

すべてのレポートを表示
「created-by.internal_id」フィールド(別名「レポートの作成者」)を選択すると:

作成者別の分布
結果は次のようになります:

作成者別のレポート分布
「エンティティ」パースペクティブと、分布および集計に利用可能な可視化タイプを使用すると、次のような質問に答えることができます:
- 特定のラベルを持つレポートの作成者の分布は?
- 過去3ヶ月間のプラットフォーム内のトップ10インディケータタイプは?
- 特定のマーキング定義を持つトップマルウェアタイプは?
しかし、「エンティティ」だけをグラフ化または表示することは、特定のセクター、国、脅威のタイプなどに関連するトレンドなど、活動に基づいてデータセットを計算できるようにする場合には限界があります。そのため、ほとんどの場合、アナリストやステークホルダーは、次のような質問をカバーするためにグラフを経由する必要があります:
- 特定の期間に報告されたランサムウェアファミリのトップは何か、そして影響を受けた地域/セクター/国は?
- MITRE ATT&CKマトリックスを使用して、攻撃者が使用するトップX個の初期アクセス手法は?
- 特定の期間に報告されたトップ10の脅威アクタータイプは?
- 特定の期間に報告されたインシデントで最も一般的なマルウェアファミリと、関連する地域/セクター/国は?
ナレッジグラフのリストまたは時系列の表示:縦棒グラフ、折れ線グラフ、タイムライン、数値など
ナレッジグラフを経由する必要がある場合、これは通常、リレーションシップをカウントしたい、あるいはさらに良いことに、リレーションシップフィルタに基づいて分布を計算したいということを意味します。ここでいくつかの例を見てみましょう。
最初の例はシンプルで、Europe地域へのすべての「targets」リレーションシップのヒートマップを作成したいと考えています。リレーションシップの性質と方向(スコープされたエンティティがソースかターゲットかを知るため)を考慮する必要があります。

被害状況のSTIX表現
フィルタリングの観点では、これは次のことを意味します:

ヨーロッパをターゲットとするすべての脅威をフィルタリング
ヒートマップの結果は次のように表示されます:

過去6ヶ月間のヨーロッパへのターゲット
可視化タイプ「ヒートマップ」は複数のデータセットをサポートしているため、Americasのターゲットに拡張することが可能です:

ヨーロッパとアメリカのターゲットデータ選択
結果は次のようになります:

過去6ヶ月間のヨーロッパとアメリカへのターゲット
別の例として、特定の脅威に対するインディケータの数を時系列で表示したい場合を考えてみましょう。ここでは、Turla、APT28、APT41、Kimsukiに関連するインディケータの数を表示するために、縦棒グラフを選択します。念のため、インディケータと脅威の間のリレーションシップは、「インディケータ」→indicates→「脅威」の形式です。

特定の脅威に関連するインディケータのデータ選択
すると、可視化の結果は次のようになります:

特定の脅威に対するインディケータの経時的推移
しかし、この時点で、ほとんどのアナリストは、定義された脅威のリストに対してではなく、動的なリストに対してグラフを表示したいと考えるでしょう。これは、「ターゲットエンティティ」がいくつかのフィルタで定義され、特定のエンティティではないことを意味します。そのため、OpenCTI 5.5では、リレーションシップをリスト化/カウントする際に「動的ソース」または「動的ターゲット」と呼ばれる新しい概念を導入しました。
たとえば、特定のラベル「ransomware」を持つすべてのマルウェアのインディケータをグラフ化したいとします。

リレーションシップのターゲットの動的計算
ダッシュボード設定では、これはリレーションシップの「ターゲット」をフィルタリングできることを意味します:

ラベル「ransomware」を持つマルウェアへのインディケータ
エリアグラフでの結果:

ラベル「ransomware」を持つマルウェアへのインディケータのトレンド
リレーションシップの動的ソース/ターゲットと、リレーションシップ自体に利用可能なすべてのフィルタを組み合わせることは、時系列、リスト、数値のデータセット可視化のほぼすべてのタイプを可能にする非常に強力な機能です。
「ナレッジグラフ」パースペクティブと、リスト、数値、時系列に利用可能な可視化タイプを使用すると、次のような質問に答えることができます:
- 過去12ヶ月間に特定の脅威または脅威のサブセットに関連するインディケータが何件取り込まれたか?
- 毎月ランサムウェアインシデント(インシデントがタイプransomwareのマルウェアをusesしている)が何件発生したか?
- 脅威アクターのサブセットにターゲットとされた最新の脆弱性は何か?(タイムライン形式)
ナレッジグラフ分布の表示:横棒グラフ、円グラフなど
最後になりましたが、すべての分布および集計可視化タイプは、ナレッジグラフパースペクティブで利用可能です。別の例として、アメリカ合衆国をターゲットとするトップ10のマルウェアを表示してみましょう。まず、横棒グラフなどの分布可視化を選択し、次にフィルタを調整します:

米国をターゲットとするトップマルウェアを表示するためのフィルタ
次に、リレーションシップ分布のパラメータで、エンティティのタイプまたはエンティティ自体(別名「名前/値」)のどちらを表示するかを選択できます。この場合、米国をターゲットとするすべてのマルウェアの実際の名前が必要です。また、リレーションシップは「マルウェア→targets→米国」であるため、マルウェアがリレーションシップのソースであるため、「ソースを表示」をチェックする必要があります。

エンティティ(別名マルウェア)、リレーションシップ「targets」のソースを表示
これにより、以下のグラフが生成されます:

米国をターゲットとするトップマルウェア
このユースケースをフォローアップし、ここで利用可能なすべてのオプションを理解するために、フィルタ「ターゲットエンティティ=米国」を削除してみましょう。つまり、基本的にソースエンティティタイプが「マルウェア」のリレーションシップの分布を表示したい、つまり特定のターゲット国やセクターなしでトップマルウェアをグラフ化したいということです:

「target」リレーションシップの数に基づくトップマルウェア
これにより、被害者に関係なくトップマルウェアが表示されます:

グローバルトップマルウェア
しかし、同じパラメータで「ソースを表示」パラメータを切り替えて「ターゲット」(「ソース」ではなく)を表示するとどうなるでしょうか?

トップ被害者(ソースではなくターゲットを表示)
マルウェアにターゲットとされたトップ「被害者」(セクター、国、地域など)が表示されます:

マルウェアにターゲットとされたトップ被害者
特定のマルウェアやintrusion setにスコープを設定して、たとえばEmotetやPlay ransomwareにターゲットとされたトップ被害者を取得することも可能です。情報として、動的ソースと動的ターゲットもここで利用可能ですので、次のようなユースケースに対応できます:
- 特定のラベルを持つintrusion setsにターゲットとされたトップセクターは?
- タイプ「ransomware」のマルウェアのインディケータタイプ(STIX、YARAルール、SNORTルール、Suricataルールなど)の分布は?
- インディケータまたはターゲティングに基づいて、過去3ヶ月間でロシアに帰属する最も活発な脅威は?
最後に、横棒グラフなどの一部の可視化タイプは、集計内での内訳をサポートしています。これは、OpenCTIがユーザーに、棒内のエンティティに基づいてデータのサブセットを再計算することを許可することを意味します。以下は、ターゲットとされたトップ国とマルウェアタイプ別の内訳の例です:

マルウェアにターゲットとされたトップ国を表示し、次にタイプ別に内訳を表示するためのデータセット
次に、分布の2番目の次元に適切なフィールドを選択します:

「ターゲット」(別名国)を表示し、次に棒でタイプ別に内訳を表示
結果は次のようになります:

マルウェアにターゲットとされたトップ国とマルウェアタイプ分布
内訳機能は、棒で返されたエンティティに基づく再計算として説明でき、必要に応じてリレーションシップを経由する複雑なクエリになる可能性があります。正確に言えば、「Emotet」が棒で返された場合、サブクエリのソースまたはターゲットとして直接使用されます。

集計のためのサブクエリ
プラットフォームでは、「エンティティ」または「リレーションシップ」(別名ナレッジグラフ)のパースペクティブでサブクエリを実行するかどうかを選択できます。

エンティティまたはリレーションシップの再フィルタリングを使用した内訳
この記事を終了し、内訳機能をよりよく理解するために、別の例を見てみましょう:トップセクターを集計し、次にintrusion setsの動機別に内訳を表示します。

Intrusion Setsにターゲットとされたトップセクター、次にintrusion setの動機別に内訳を表示
次のパラメータで、「Primary Motivation」を表示します:

Intrusion Setsの主要動機別の内訳を含むトップセクターを表示
結果は次のようになります:

動機別の内訳を含むintrusion setsにターゲットとされたトップセクター
まとめ
前述のとおり、ウィジェット設定のユーザーエクスペリエンスは、次のリリースで強化される予定です。また、この記事は新しいダッシュボードエンジンの一部のみをカバーしています(タイムライン、リスト、TTPのレーダーなどはカバーしていません)が、プラットフォーム内のデータに関するKPIやトレンドに関して、ほとんどの組織のニーズに応えるのに十分な能力を持っています。
まだ質問があり、特定のユースケースを達成するための正確な方法をリクエストしたい場合は、遠慮なくFiligranコミュニティに参加して質問してください!
続きを読む
関連トピックとインサイトをご覧ください

