Cyber Security Academy · レッスン

スキャンのスケールと自動化

環境全体でYARAを実行します。

レッスン 4/413 ステップ

「スキャンのスケールと自動化」はCoddyKit上の無料Cyber Security Academyレッスンです。 これはレッスン4/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはCyber Security Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Cyber Security Academyコースには全4レッスンが含まれています。

1台のホストから環境全体へ

ノートパソコンで機能するルールは、数千台のエンドポイント、メールフロー、サンプルフィード全体でも、性能を大きく損なわずに確実に実行できなければなりません。YARAのスケーリングは、配布、性能、フィードバックに関わるエンジニアリング上の課題です。

このレッスンでは、性能チューニング、ルール管理、自動化パイプライン、一度きりのツールではなく継続的な検知基盤としてYARAを運用する方法を扱います。

性能の基本

YARAは各文字列に対してアトム(短いバイト部分文字列)を構築し、まずアトムをスキャンしてから、候補に対して完全な条件だけを評価します。エンジンが良質なアトムを生成できないルールは低速になります。

  • 約4バイト未満の文字列ではアトムが弱くなり、スキャンが遅くなります
  • アンカーされていない正規表現や過剰なワイルドカードはコストが高くなります
  • オフセットとfilesizeでアンカーすると、早い段階で処理対象を絞り込めます

低速なルールをプロファイリングし、環境全体にデプロイする前に問題のあるルールを書き直してください。

# Report per-rule scan timing to find slow rules
yara --print-stats -r rules.yar /samples/
yara -a 10 -r rules.yar /samples/   # warn on rules slower than 10s

低速なパターンの回避

よくある性能上の問題と対策は次のとおりです。

  • 短すぎる文字列やすべてがワイルドカードの文字列を、より長く特徴的なものに置き換えます
  • 高コストなルールの前に、安価な前提条件(マジックバイトやfilesize)を置きます
  • 正規表現より固定バイトを優先し、正規表現は厳密にアンカーします
  • globalルールを使い、関係のないファイル形式を完全にスキップします

1つの悪いルールが環境全体のスキャン時間を支配することもあるため、性能をレビュー基準として扱ってください。

global rule OnlyPE { condition: uint16(0) == 0x5A4D }

ルールのコンパイル

スキャンのたびにルールテキストを解析すると、時間を浪費します。ルールを一度コンパイルしてバイナリブロブにし、それをすべての環境で読み込んでください。

コンパイル済みルールは高速に読み込め、すべてのエンドポイントで検証済みのまったく同じロジックを実行できます。ルールが変更されるたびにパイプラインの一部として再コンパイルし、コンパイル済みアーティファクトを配布してください。

yarac -r detections/ ruleset.yarac   # compile
yara -C ruleset.yarac /target/        # scan with compiled rules

大規模環境でのルール管理

Sigmaと同じように、YARAルールをコードとして扱ってください。レビュー、テスト、CIとともにバージョン管理システムへ保存します。

  • ルールは1ファイルにつき1つとし、ファミリーやソースごとに整理します
  • CIで構文のリンティング、性能チェック、コーパスに対するテストを行います
  • yaraLintなどのリンターでよくある間違いを検出します
  • ルールにタグを付け、名前空間を設定して、複数のフィード間での名前の衝突を避けます

これにより、管理されていないルール、競合するルール、重複したルールが何千も存在する混乱を防げます。

EDRによるエンドポイントのスキャン

ほとんどの企業ではEDRを通じてYARAを実行しています。EDRはエージェントにルールセットを配布し、オンデマンドまたはスケジュールに従ってディスクやメモリをスキャンできます。これにより、すべてのホストにスタンドアロンのYARAをデプロイする必要がなくなります。

EDRがYARAをサポートしていない場合は、エージェントフレームワークやオーケストレーションツールでコンパイル済みのルールセットを配布し、結果を中央で収集できます。いずれの場合も、スキャンは一元管理され、ホストごとに手動で行うものではありません。

大規模なメモリスキャン

パックされたマルウェアはメモリ上でのみ姿を現すため、ディスクスキャンだけでなく、環境全体でメモリスキャンをスケジュールします。EDRエージェントは、定期的に、または不審なイベントに応じてプロセスメモリをスキャンできます。

メモリスキャンはディスクスキャンより負荷が高いため、頻度と対象範囲のバランスを取ります。重要度の高いホストでは継続的に、それ以外ではイベントを契機に実行し、パフォーマンスへの影響を抑えます。

パイプライン統合

ファイルが環境に入る箇所にYARAを組み込み、スキャンを自動化します。

  • メール/Webゲートウェイでは、添付ファイルとダウンロードをインラインでスキャンします
  • サンドボックス(CAPE、Cuckoo)では、ドロップされたアーティファクトや展開後のアーティファクトに対してYARAを実行します
  • ファイル取り込みパイプラインでは、アップロードされたファイルを保存前にスキャンします
  • マルウェアリポジトリ向けCIでは、新しいサンプルを自動的に分類します

各マッチ結果をSIEM/SOARに送り、相関分析と対応に利用します。

# Example: scan every new file dropped into an intake bucket
yara -C ruleset.yarac "$NEW_FILE" && route_to_soar "$NEW_FILE"

レトロハンティングとインテリジェンスループ

内部だけでなく、外部にも対象を広げます。価値の高いルールを脅威インテリジェンスプラットフォームに投入し、過去のサンプル全体をレトロハンティングして、関連する亜種やキャンペーンの履歴を明らかにします。

学んだことをルールセットに反映します。レトロハンティング中に見つかった新しい亜種によってルールが洗練され、そのルールが次の波を検知します。この閉ループにより、YARAは継続的に改善される生きた検知基盤になります。

マッチの処理と対応

ログを1行残すだけで何も見つけないスキャンは無駄です。マッチ結果を対応フローに接続します。

  • 構造化された出力(ルール名、ファイル、ホスト、ハッシュ)をSIEMに送信します
  • SOARプレイブックを起動し、ホストを隔離し、サンプルを収集し、脅威インテリジェンスで情報を補強します
  • 自動隔離は、確信度が高く、十分にテストされたルールに限定します
  • 確信度の低い検知は、トリアージのためにアナリストへ回します

対応の確信度をルールの成熟度に連動させ、IPSルールで用いる「まずアラート、次にブロック」という運用規律にならいます。

yara -C ruleset.yarac --print-meta "$F" \
  | jq -R . | send_to_siem

測定と保守

ルールセットを、メトリクスに基づくプログラムとして運用します。

  • ルールごとのヒット率と誤検知率
  • 環境全体におけるルールごとのスキャンコスト
  • マルウェアファミリおよびATT&CK手法別のカバレッジ

古くなったルールを廃止し、ノイズの多いルールを修正し、正常なソフトウェアに対して定期的に再テストします。ソフトウェアとマルウェアの進化に伴ってルールは劣化するため、保守は継続的に行うものであり、省略できません。

クイックチェック

展開にあたって、規模に応じた判断を実践します。

まとめ

YARAを大規模運用するには、次の点を押さえます。

  • アトムを理解し、短すぎる文字列、すべてワイルドカードのパターン、アンカーのない正規表現を避けます
  • オフセットとファイルサイズでアンカーし、globalの前提条件で絞り込みます
  • ルールをコンパイル(yarac)し、バイナリブロブを配布します
  • ルールをコードとして管理し、バージョン管理、CI、リンティング、名前空間を利用します
  • EDR経由でエンドポイントをスキャンし、ディスクだけでなくメモリスキャンもスケジュールします
  • YARAをゲートウェイ、サンドボックス、ファイル取り込みパイプラインに統合し、SIEM/SOARに連携します
  • レトロハンティングを利用し、発見事項をルールに反映します
  • ヒット率、誤検知率、スキャンコストを測定し、継続的に保守します

YARAによるマルウェア検知コースを完了しました。

無料で開始

AI チューターと学ぶ Cyber Security Academy — 無料

ブラウザでリアルコードを書いて実行し、24/7 の AI チューターから瞬時にサポートを受け、ウェブまたはアプリで続きから学習できます。

コース
76
レッスン
303

よくある質問

「スキャンのスケールと自動化」レッスンは無料ですか?

はい。「スキャンのスケールと自動化」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Cyber Security Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Cyber Security Academyコースには全4レッスンが含まれています。

「スキャンのスケールと自動化」で何を学びますか?

環境全体でYARAを実行します。 ブラウザで直接実行するハンズオンコードでCyber Security Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

Cyber Security Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのCyber Security Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン4/4です。

「スキャンのスケールと自動化」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このCyber Security Academyレッスンでコードを書いて実行できますか?

はい。すべてのCyber Security Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. YARAの用途
  2. YARAルールの構文
  3. 文字列と16進数によるハンティング
  4. スキャンのスケールと自動化
← Cyber Security Academyに戻る