セキュリティチームの97%は、自組織のエクスポージャーが実際に悪用可能かどうかを判断できていません。あなたのチームは大丈夫ですか?レポートを読む
Filigran
脅威インテリジェンス

STIX 2.1 Indicatorパターニングと検知開発

8 分で読めます
STIX 2.1 Indicator Patterning and Detection Development

サイバー脅威インテリジェンス(CTI)は、プロアクティブなサイバーセキュリティにおいて重要な役割を果たします。組織が甚大な被害が発生する前に、新たな脅威を特定、検知、対応することを可能にします。脅威インテリジェンスを表現・共有するための最も強力な標準の1つが、Structured Threat Information eXpression (STIX)です。

STIX 2.1は、パターンベースの検知ルールを使用して悪意のある動作を記述する、柔軟なIndicatorフレームワークを導入しています。本ブログ記事では、効果的なSTIXパターンの構築方法、実際の検知シナリオへのマッピング方法、そしてサイバーセキュリティワークフローでの活用方法について説明します。

この記事は、David GreenwoodによるDogesecの優れた記事に触発されたもので、STIX Indicatorパターンとその検知エンジニアリングへの応用に関する基礎的な概要を提供しています。その基盤の上に、本記事では追加のコンテキスト、実践的な例、運用環境への統合ガイダンスを通じて議論を拡張することを目指しています。


STIX Indicatorとは何か?

STIX 2.1において、Indicatorは潜在的な悪意のある活動を検知するためのパターンを定義するオブジェクトです。各Indicatorには、実際の検知ルールを保持するpatternプロパティが含まれています。このパターンは、ファイルハッシュ、IPアドレス、ドメイン名、レジストリキーなど、さまざまな悪意のある動作を記述できます。

pattern_typeプロパティは、使用されているパターンのタイプを指定します。一般的なpattern_typeの値には以下が含まれます:

  • stix: STIXパターン言語(以下で詳しく説明)
  • sigma: SIEM用のSigma検知ルール
  • snort: ネットワーク侵入検知用のSnortルール
  • yara: ファイル分析用のYARAルール

STIXパターン言語の概要

filigran blog stix language overview 0425 recreation

STIXパターンの一般的な構造、DogesecのDavid Greenwoodの記事から再作成

STIXパターン言語は、IPアドレス、ドメイン名、ファイルハッシュなどのオブザーバブルを記述するための構造化された方法を提供します。基本的なSTIXパターンは以下のフォーマットに従います:

Copied!

1[object-path:property='value']

比較式

比較式は、サイバーオブザーバブルオブジェクトの特定のプロパティが指定された値と一致するかどうかを評価します。例えば以下のようなものがあります:
1. 特定のIPアドレスを検知する場合:

Copied!

1[ipv4-addr:value = '68.183.68.83']

2. 既知のSHA-256ハッシュを持つファイルを検知する場合:

Copied!

1[file:hashes.'SHA-256' = '52c329f593760c616c906c34cd122f7ecd48128a139e547b976349904b209863']
filigran blog operator in stix patern 0425 recreation

STIXパターン内の演算子、DogesecのDavid Greenwoodの記事から再作成

STIXパターンの演算子

以下のような論理演算子を使用して、複数の比較式を組み合わせることができます:

  • AND: 両方の条件が真である必要があります。
  • OR: 少なくとも1つの条件が真である必要があります。
  • FOLLOWEDBY: あるイベントが別のイベントの後に発生する必要があります。
  • REPEATS: イベントが特定の回数発生する必要があります。
  • WITHIN: イベントが指定された時間枠内に発生する必要があります。

複数の式を組み合わせた例:

Copied!

1[ipv4-addr:value = '68.183.68.83'] AND [file:hashes.'SHA-256' = '52c329f593760c616c906c34cd122f7ecd48128a139e547b976349904b209863']

優先順位と括弧

パターンを記述する際、演算子の優先順位は重要な考慮事項です。
以下のパターンを考えてみましょう:

Copied!

1[ipv4-addr:value='68.183.68.83/32'] FOLLOWEDBY ([ipv4-addr:value='176.113.115.149/32'] REPEATS 5 TIMES)

ここでは、最初の観測式でipv4-addr:value68.183.68.83/32と等しいことが一致する必要があり、その後、ipv4-addr:value176.113.115.149/32と等しい観測式が5回発生します。
次に以下のパターンを考えてみましょう(ほぼ同じですが、括弧に注意してください):

Copied!

1([ipv4-addr:value='68.183.68.83/32'] FOLLOWEDBY [ipv4-addr:value='176.113.115.149/32']) REPEATS 5 TIMES

最初の観測式でipv4-addr:value68.183.68.83/32と等しいことが一致する必要があり、その後2番目の観測式でipv4-addr:value176.113.115.149/32と等しいことが一致する必要があります。このパターンが5回見られることで一致となります。

実際のシナリオ向けのSTIXパターン作成

シナリオ1: SSH接続失敗の試行

特定のIPアドレスからの繰り返しSSH接続失敗の試行を検知したいとします。サンプルログは以下のようになります:

Copied!

12024-01-14 09:07:25:647 type=USER_LOGIN msg=audit user pid=2314 uid=0 username=admin addr=176.113.115.149 res=failed

これを検知するための対応するSTIXパターンは以下のようになります:

Copied!

1[ipv4-addr:value = '176.113.115.149'] FOLLOWEDBY [user-account:account_login = 'admin'] WITHIN 1 MINUTE

シナリオ2: ファイルハッシュによるマルウェア検知

既知のSHA-256ハッシュを使用してマルウェアを検知するには、次のようなシンプルなパターンを使用します:

Copied!

これは単一のハッシュを識別するだけですが、実際には単一のファイル/脅威を表す複数のハッシュタイプが存在する可能性があります。

Copied!

1[file:hashes.'SHA-256' = '52c329f593760c616c906c34cd122f7ecd48128a139e547b976349904b209863' AND file:hashes.MD5 = 'c10327ebe3830b4ec35fbecc2eb3af52']

STIXパターン開発のためのツール

STIXパターンを効果的に記述、検証、使用するために、いくつかのツールが役立ちます:

1. STIX 2 Pattern Validator

このツールを使用して、パターンがSTIX 2.1仕様に従って構文的に正しいことを確認します。

Copied!

1pip install stix2-patterns
2validate-patterns
3Enter a pattern to validate: [file:hashes.md5 = 'c10327ebe3830b4ec35fbecc2eb3af52']
4PASS: [file:hashes.md5 = 'c10327ebe3830b4ec35fbecc2eb3af52']

2. STIX Shifter

STIX ShifterはSTIXパターンをSIEMやEDR(Splunk、Elastic、QRadarなど)互換のクエリに変換する強力なツールです。
STIXパターンをSplunkクエリに変換する例:

Copied!

1stix-shifter translate splunk query "{}" "[url:value = '<http://malicious.com>']"

出力は以下のようになります:

Copied!

1{
2 "queries": [
3 "search url='<http://malicious.com>'"
4 ]
5}

STIX形式での検知の表現

STIXパターンを使用して悪意のある活動を検知したら、検知結果をObserved Data SDOSighting SROとしてSTIX形式で表現できます。以下は例です:

Copied!

1{
2 "type": "observed-data",
3 "id": "observed-data--699546f4-6d73-4a35-a961-181a34fa3b14",
4 "created": "2025-01-14T12:00:00Z",
5 "first_observed": "2025-01-14T09:00:00Z",
6 "last_observed": "2025-01-14T09:01:00Z",
7 "number_observed": 2,
8 "object_refs": [
9 "ipv4-addr--dc63603e-e634-5357-b239-d4b562bc5445",
10 "user-account--dd686e37-6889-53bd-8ae1-b1a503452613"
11 ]
12}

STIXパターニングのベストプラクティス

ベストプラクティス | 説明

正規化されたログフィールドを使用 | 正確なパターンマッチングのため、異なるデータソース間でログフィールドが一貫していることを確認します

パターンを頻繁に検証 | STIX 2 Pattern Validatorなどのツールを使用して、開発の早期段階でエラーをキャッチします

エッジケースに対応 | ログ形式やタイムゾーンのバリエーションを考慮したパターンを設計します

STIX Indicatorパターンが重要な理由

STIXの技術的な詳細は最初は抽象的に思えるかもしれませんが、STIX Indicatorパターンを採用することは、組織のサイバーセキュリティの効果性に直接的かつ重要な影響を与えます。脅威の記述と共有の方法を標準化することで、STIXは単純なパターンマッチングをはるかに超える実用的な利点を提供します:

利点 | 説明

コラボレーションの強化 | 脅威インテリジェンスの共通言語により、チームやパートナー組織が誤解なく検知ルールとオブザーバブルを迅速に交換できます

検知と対応の合理化 | STIXは複数の独自ルールセットの代わりに単一の信頼できる情報源を提供し、ワークフローを簡素化しエラーリスクを削減します

運用効率 | 標準化された検知ルールは形式変換のオーバーヘッドを削減し、セキュリティエコシステム全体で一貫性のある信頼できる脅威検知を保証します

将来への備え | 活発なコミュニティと進化する標準に支えられたSTIXは、新たな脅威と技術に適応し、堅牢な防御を維持します

標準フレームワークを採用しないことの落とし穴

サイバー脅威インテリジェンスを構築するための標準化されたアプローチを実装しないと、組織はいくつかのリスクにさらされる可能性があります:

課題 | 影響

断片化されたインテリジェンス | 異なるチームが脅威データを一貫性なく解釈し、コミュニケーションと協調的な防御努力を妨げます

複雑性の増加 | 複数の異なるルールセットはオーバーヘッドを増やし、検知を遅らせ、セキュリティギャップを生み出します

誤解のリスクの増加 | さまざまな形式により脅威の誤解のリスクが増加し、対応の遅れや誤検知につながります

非効率なリソース使用 | 脅威データの変換に費やされる余分な時間と労力が、プロアクティブなセキュリティからリソースを転用します

まとめ

STIX 2.1 Indicatorパターンは、脅威インテリジェンスを表現・共有するための強力な方法です。STIX ShifterSTIX 2 Pattern Validatorなどのツールを使用することで、組織は検知開発を自動化し、サイバーセキュリティ態勢を強化できます。

検知のために独自のSTIXパターンを作成してみて、より複雑なユースケースのためにtxt2stixやcve2stixなどのツールを探索してください。良いパターニングを!

続きを読む

関連トピックとインサイトをご覧ください