YARAの用途
ファイルとメモリのパターンマッチングを学びます。
「YARAの用途」はCoddyKit上の無料Cyber Security Academyレッスンです。 これはレッスン1/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはCyber Security Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Cyber Security Academyコースには全4レッスンが含まれています。
マルウェアのパターンマッチング
YARAは、パターンによってファイルやメモリを識別・分類するためのツールおよびルール言語です。アナリストは、マルウェア調査におけるパターンマッチングの万能ツールと呼んでいます。
YARA ルールはテキストまたはバイナリのパターンと論理条件を記述し、エンジンが対象をスキャンして一致を報告します。これにより、アナリストの調査結果を再利用可能な自動検知へ橋渡しできます。
ファイルとネットワークシグネチャ
YARA はネットワーク IDS を置き換えるのではなく、補完するものです。
- Snort/Suricataはネットワーク上のトラフィックを検査します。
- YARAは保存された状態またはメモリ上のコンテンツ、つまりディスク上のファイル、プロセスメモリ、メール添付ファイル、アーカイブの内容を検査します。
IDS は転送中のダウンロードを検知できますが、YARA は、監視対象のリンクを一度も通過していない場合でも、隔離されたサンプル、フォレンジックイメージ、実行中のプロセスから同じファミリーを検知できます。
マルウェアファミリーの分類
YARA の主要な用途の1つはファミリー分類です。マルウェアの作成者は、ビルド間でコード、文字列、暗号鍵、ミューテックスを再利用します。YARA ルールはこれらの共通する特徴を捉えるため、再コンパイルのたびにハッシュが変わっても、ファミリーのすべての亜種を1つのルールで一致させられます。
このため、YARA はハッシュベースの検知が機能しない場合にも有効です。1バイトの変更でハッシュは無効になりますが、適切に記述されたパターンルールは無効になりません。
メモリ上のハンティング
パックや難読化が施されたマルウェアは、ディスク上では実際のコードを隠しますが、実行するにはメモリに展開する必要があります。実行中のプロセスメモリやメモリダンプを YARA でスキャンすると、パックされたファイルでは見えない文字列や構造を明らかにできます。
インシデント対応者が YARA で RAM をスキャンするのはこのためです。ディスク上のサンプルが完全に難読化されていても、復号された設定、C2 アドレス、ペイロードはメモリ上に現れます。
YARA の実行場所
YARA はセキュリティスタック全体に統合できます。
- EDR エージェントは共有ルールセットでエンドポイントをスキャンします
- サンドボックス(Cuckoo、CAPE)は実行されたサンプルを分類します
- メールおよび Web ゲートウェイは添付ファイルとダウンロードをスキャンします
- 脅威インテリジェンスプラットフォームはサンプルリポジトリ全体をハンティングします
- フォレンジックツールはディスクイメージとメモリダンプをスキャンします
1つのルール形式を多くの適用ポイントで使えることが、検知エンジニアが重視する移植性の価値です。
レトロハンティング
VirusTotalのようなプラットフォームでは、過去のデータセットに対して YARA ルールを実行できます。この手法をレトロハンティングと呼びます。新たに発見したファミリー向けのルールを作成してレトロハンティングを行うと、過去のサンプル、関連する亜種、キャンペーンの経緯を明らかにできます。
これにより、1つのサンプルから、攻撃者のツールの使用履歴やインフラの再利用に関するインテリジェンスを得られます。
スキャンの実行
最も単純な使い方では、YARA CLI にルールファイルと対象を指定します。一致するたびに、ルール名と一致したファイルが出力されます。
# Scan a directory recursively
yara -r rules/apt_family.yar /samples/
# Scan a running process by PID
yara rules/cobaltstrike.yar 4821良いルールと悪いルール
YARA の強力さには規律が求められます。不適切に記述されたルールは、大規模な環境で問題を引き起こします。
- 広すぎる -> 誤検知がアナリストに殺到し、無害なファイルが隔離される可能性があります
- 具体的すぎる -> 1つのサンプルには一致しますが、ファミリーを見逃します
- 遅すぎる -> 重い正規表現や小さなアトムによって、環境全体のスキャンが遅くなります
目標は、信頼できる程度に具体的で、亜種を検知できる程度に汎用的で、どこでも実行できる程度に効率的なルールです。
変更されにくい指標の選択
作成者が低コストでは変更しにくい、または変更できない特徴に一致させてください。
- 独自の暗号化ルーチンと固有の定数
- 特徴的なコードスタブとアンパック処理
- ハードコードされたミューテックス名、ユーザーエージェント、PDB パス
- ファイル形式における構造上の異常
数千の無害なプログラムに共通する汎用的なライブラリ文字列やコンパイラーの生成物への一致は避けてください。これらはノイズを生み、容易に変更されるためです。
ルールセットの共有と標準化
YARA の移植性により、ルールは防御側で共有される共通の資産になります。公開および商用の精選されたコレクションを利用すれば、すべてのルールを最初から作成せずに済みます。
- YARA-Rulesコミュニティリポジトリとベンダーのリサーチブログ
- IR で広く使用されているFlorian Roth のsignature-base
- ファミリーや APT のルールを含む ISAC およびベンダーのフィード
サードパーティ製ルールを導入する前に検証してください。誤検知のリスクを確認し、名前空間を付けて衝突を避け、正常なファイルのデータセットに対してテストします。検証していない外部ルールは、環境内でノイズになる可能性があるためです。
YARA の限界
YARA は万能薬ではありません。
- 動作ではなくパターンに一致させるため、サンプルを実行しません
- ディスク上で強力なパックや暗号化が施されていると、メモリをスキャンするまで何も見えないことがあります
- ポリモーフィックコードやメタモーフィックコードは、静的な文字列による検知を回避できます
- 攻撃者がルールを入手すると、ルールを回避するように作り込めます
YARA は単独の防御策ではなく、動作検知、サンドボックス、ネットワーク監視と組み合わせた1つのレイヤーとして使用してください。
クイックチェック
目的に合ったツールを選択してください。
まとめ
YARA はファイルとメモリのパターンマッチングです。
- ネットワーク IDS を補完し、コンテンツを保存された状態またはメモリ上で識別・分類します
- 共通する特徴によってマルウェアファミリーを検知し、ハッシュの変更に耐性があります
- メモリスキャンによって、静的解析では見逃す展開済みコードを明らかにします
- EDR、サンドボックス、ゲートウェイ、フォレンジックツールで実行できます
- レトロハンティングによって、1つのサンプルをキャンペーンインテリジェンスに変えられます
- 優れたルールは具体的で、汎用的かつ効率的です。変更されにくい指標に一致させてください
- YARA は動作ではなくパターンに一致させるため、1つのレイヤーとして使用してください
次は、ルール構文そのものです。
よくある質問
「YARAの用途」レッスンは無料ですか?
はい。「YARAの用途」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Cyber Security Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Cyber Security Academyコースには全4レッスンが含まれています。
「YARAの用途」で何を学びますか?
ファイルとメモリのパターンマッチングを学びます。 ブラウザで直接実行するハンズオンコードでCyber Security Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Cyber Security Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのCyber Security Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/4です。
「YARAの用途」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このCyber Security Academyレッスンでコードを書いて実行できますか?
はい。すべてのCyber Security Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。