YARAを使った高度なマルウェア検出方法

最終更新: 01/12/2025

  • YARA を使用すると、文字列、バイナリ パターン、ファイル プロパティに基づく柔軟なルールを使用してマルウェア ファミリを記述できます。
  • 適切に設計されたルールにより、複数の環境にわたるランサムウェアや APT から Web シェルやゼロデイ攻撃まで、あらゆるものを検出できます。
  • YARA をバックアップ、フォレンジック ワークフロー、企業ツールに統合すると、従来のウイルス対策ソフトウェアを超える防御力が強化されます。
  • YARA コミュニティとルール リポジトリにより、インテリジェンスの共有が容易になり、検出を継続的に改善できます。

YARAを使った高度なマルウェア検出方法

¿高度なマルウェア検出に YARA を使用するにはどうすればよいでしょうか? 従来のウイルス対策プログラムが限界に達し、攻撃者があらゆる隙間をすり抜けようとすると、インシデント対応ラボに欠かせないツールが登場します。 YARA、マルウェアハンティングの「スイスナイフ」テキストとバイナリのパターンを使用して悪意のあるソフトウェアのファミリを記述するように設計されており、単純なハッシュ マッチングをはるかに超えた処理が可能になります。

YARAは、適切な人が使用すれば、単に位置を特定するだけでなく、 既知のマルウェアサンプルだけでなく、新しい亜種、ゼロデイ攻撃、さらには商用の攻撃ツールもこの記事では、YARA を使用して高度なマルウェア検出を行う方法、堅牢なルールを作成する方法、そのルールをテストする方法、ルールを Veeam などのプラットフォームや独自の分析ワークフローに統合する方法、専門家コミュニティが従うベスト プラクティスについて、詳細かつ実践的に説明します。

YARA とは何ですか? YARA がマルウェア検出に非常に強力なのはなぜですか?

YARAは「Yet Another Recursive Acronym」の略で、脅威分析の事実上の標準となっています。 読みやすく、明確で、柔軟性の高いルールを使用してマルウェア ファミリを記述できます。YARA は、静的なウイルス対策シグネチャのみに頼るのではなく、ユーザーが独自に定義したパターンで動作します。

基本的な考え方はシンプルです。YARA ルールはファイル (またはメモリ、データ ストリーム) を調べ、一連の条件が満たされているかどうかを確認します。 テキスト文字列、16進数シーケンス、正規表現、またはファイルプロパティに基づく条件条件が満たされると「一致」となり、アラートを発したり、ブロックしたり、より詳細な分析を実行したりできます。

このアプローチにより、セキュリティチームは あらゆる種類のマルウェアを識別して分類します: 古典的なウイルス、ワーム、トロイの木馬、ランサムウェア、Web シェル、暗号通貨マイナー、悪意のあるマクロなど特定のファイル拡張子や形式に限定されないため、.pdf 拡張子を持つ偽装された実行ファイルや、Web シェルを含む HTML ファイルも検出します。

さらに、YARA はすでにサイバーセキュリティ エコシステムの多くの主要なサービスやツールに統合されています。 VirusTotal、Cuckooのようなサンドボックス、Veeamのようなバックアッププラットフォーム、またはトップメーカーの脅威ハンティングソリューションしたがって、YARA を習得することは、上級のアナリストや研究者にとってほぼ必須となっています。

マルウェア検出におけるYARAの高度な使用例

YARA の強みの 1 つは、SOC からマルウェア ラボに至るまで、さまざまなセキュリティ シナリオに完璧に適応できることです。 一回限りの狩猟と継続的な監視の両方に同じルールが適用されます。.

最も直接的なケースは、 特定のマルウェアまたはファミリー全体に対する特定のルール組織が既知のファミリー (リモート アクセス トロイの木馬や APT 脅威など) に基づくキャンペーンの攻撃を受けている場合は、特徴的な文字列とパターンをプロファイルし、新しい関連サンプルを迅速に識別するルールを作成できます。

もう一つの典型的な用途は、 署名に基づくYARAこれらのルールは、ハッシュ、非常に特殊なテキスト文字列、コードスニペット、レジストリキー、さらには同じマルウェアの複数の亜種で繰り返される特定のバイトシーケンスを見つけるように設計されています。ただし、単純な文字列のみを検索すると、誤検知が発生するリスクがあることにご注意ください。

YARAはフィルタリングに関しても優れています ファイルの種類または構造上の特徴ファイル サイズ、特定のヘッダー (例: PE 実行ファイルの場合は 0x5A4D)、疑わしい関数のインポートなどのプロパティと文字列を組み合わせることで、PE 実行ファイル、オフィス ドキュメント、PDF、または事実上すべての形式に適用されるルールを作成できます。

現代の環境では、その使用は 知性公開リポジトリ、調査レポート、IOCフィードはYARAルールに変換され、SIEM、EDR、バックアッププラットフォーム、サンドボックスに統合されます。これにより、組織は すでに分析済みのキャンペーンと特徴を共有する新たな脅威を迅速に検出する.

YARAルールの構文を理解する

YARA の構文は C の構文と非常に似ていますが、よりシンプルで焦点が絞られています。 各ルールは、名前、オプションのメタデータ セクション、文字列セクション、および必須の条件セクションで構成されます。ここからは、これらすべてをいかに組み合わせるかが重要になります。

最初は ルール名キーワードの直後に置かなければなりません ルール (o 定規 スペイン語で文書を作成する場合、ファイル内のキーワードは ルール有効な識別子である必要があります。スペース、数字、アンダースコアは使用できません。明確な規則に従うことをお勧めします。例えば、 マルウェアファミリーの亜種 o APT_アクター_ツールこれにより、何を検出しようとしているのかを一目で識別できます。

限定コンテンツ - ここをクリックしてください  携帯電話が介入されているかどうかを確認する方法

次のセクション ストリング検索したいパターンを定義します。ここでは主に3つのタイプを使用できます。 テキスト文字列、16進数シーケンス、正規表現テキスト文字列は、人間が読めるコードスニペット、URL、内部メッセージ、パス名、PDBなどに最適です。16進数を使用すると、生のバイトパターンをキャプチャできるため、コードが難読化されているものの、特定の定数シーケンスが保持されている場合に非常に便利です。

正規表現は、ドメインの変更やコードのわずかな変更など、文字列内の小さなバリエーションをカバーする必要がある場合に柔軟性を提供します。 さらに、文字列と正規表現の両方で、任意のバイトを表すためのエスケープが可能です。これにより、非常に正確なハイブリッド パターンが可能になります。

セクション 条件 これは唯一の必須のルールであり、ルールがファイルに「一致」すると判断されるタイミングを定義します。ここではブール演算と算術演算(and、or、not、+、-、*、/、any、all、contains など。) を使用すると、単純な「この文字列が出現した場合」よりも細かい検出ロジックを表現できます。

たとえば、ファイルが特定のサイズより小さい場合、すべての重要な文字列が表示される場合、または複数の文字列のうち少なくとも 1 つが存在する場合にのみルールが有効になるように指定できます。 文字列の長さ、一致数、ファイル内の特定のオフセット、ファイル自体のサイズなどの条件を組み合わせることもできます。ここでの創造性が、一般的なルールと精密な検出の違いを生み出します。

最後にオプションセクションがあります メタ期間を記録するのに最適です。 作成者、作成日、説明、内部バージョン、レポートまたはチケットへの参照 また、一般的には、リポジトリを整理し、他のアナリストが理解しやすい状態に保つのに役立つ情報も含まれます。

高度なYARAルールの実践例

上記のすべてを理解するには、単純なルールがどのように構成されているか、また実行可能ファイル、疑わしいインポート、反復的な命令シーケンスが関係するとどのように複雑になるかを理解することが有効です。 まずはおもちゃの定規から始めて、徐々にサイズを大きくしていきましょう。.

最小限のルールには、文字列と、それを必須とする条件のみを含めることができます。例えば、特定のテキスト文字列や、マルウェアフラグメントを表すバイトシーケンスを検索できます。 その場合、条件は、その文字列またはパターンが出現した場合にルールが満たされることを単に述べることになります。、追加のフィルターなし。

しかし、現実世界ではこれでは不十分だ。なぜなら 単純なチェーンは多くの誤検知を引き起こすことが多いそのため、複数の文字列 (テキストと 16 進数) を追加の制限と組み合わせて使用​​するのが一般的です。制限には、ファイルが特定のサイズを超えないこと、特定のヘッダーが含まれていること、定義された各グループから少なくとも 1 つの文字列が見つかった場合にのみアクティブ化されることなどがあります。

PE実行ファイル解析の典型的な例としては、モジュールのインポートが挙げられる。 pe YARAから、バイナリの内部プロパティ(インポートされた関数、セクション、タイムスタンプなど)を照会できます。高度なルールでは、ファイルをインポートする必要がある場合もあります。 CreateProcess から カーネル32.dll そしてHTTP関数 WININET.DLL悪意のある動作を示す特定の文字列が含まれていることに加え、

このタイプのロジックは、 リモート接続または情報流出機能を備えたトロイの木馬ファイル名やパスがキャンペーンごとに変更されている場合でも、重要なのは、プロセスの作成、HTTPリクエスト、暗号化、永続性など、基盤となる動作に注目することです。

もう一つの非常に効果的なテクニックは、 繰り返される命令のシーケンス 同じファミリーのサンプル間では、攻撃者がバイナリをパッケージ化したり難読化したりしたとしても、変更が困難なコード部分を再利用することがよくあります。静的解析の結果、一定の命令ブロックが見つかった場合は、次のようなルールを策定できます。 16進文字列のワイルドカード 一定の許容範囲を維持しながらそのパターンを捉えます。

これらの「コード動作ベース」のルールにより、 PlugX/Korplugやその他のAPTファミリーのようなマルウェアキャンペーン全体を追跡する特定のハッシュを検出するだけでなく、攻撃者のいわば開発スタイルを追及します。

実際の攻撃とゼロデイ脅威におけるYARAの使用

YARA は、従来の保護メカニズムが間に合わない高度な脅威やゼロデイ攻撃の分野で特にその価値を証明してきました。 よく知られている例としては、YARA を使用して、漏洩した最小限の情報から Silverlight のエクスプロイトを特定するというものがあります。.

このケースでは、攻撃ツールの開発を専門とする企業から盗まれた電子メールから、特定のエクスプロイト向けのルールを構築するのに十分なパターンが推測されました。 そのたった一つのルールによって、研究者たちは疑わしいファイルの海からサンプルを追跡することができた。エクスプロイトを特定し、強制的にパッチを適用することで、より深刻な被害を防止します。

これらの物語はYARAがどのように機能するかを示している。 ファイルの海に浮かぶ漁網企業ネットワークを、あらゆる種類の「魚」(ファイル)でいっぱいの海だと想像してみてください。ルールは、トロール網の区画のようなものです。それぞれの区画には、特定の特性に合う魚が入っています。

限定コンテンツ - ここをクリックしてください  Snort を構成するには、どの方法を使用する必要がありますか?

ドラッグを終えると、 特定の家族や攻撃者グループとの類似性によってグループ化されたサンプル:「種 X に類似」、「種 Y に類似」など。これらのサンプルの一部はまったく新しいもの(新しいバイナリ、新しいキャンペーン)である可能性がありますが、既知のパターンに適合するため、分類と対応が迅速化されます。

この文脈でYARAを最大限に活用するために、多くの組織は 高度なトレーニング、実践的な実験室、管理された実験環境適切なルールを作成する技術に特化した、高度に専門化されたコースがあり、多くの場合、実際のサイバースパイ活動の事例に基づいており、学生は本物のサンプルを使用して練習し、探しているものが正確にわからなくても「何か」を検索する方法を学びます。

YARAをバックアップおよびリカバリプラットフォームに統合する

YARA が完璧に適合し、かつあまり注目されない領域の 1 つが、バックアップの保護です。 バックアップがマルウェアやランサムウェアに感染している場合、復元によってキャンペーン全体が再開される可能性があります。そのため、一部のメーカーはYARAエンジンを自社のソリューションに直接組み込んでいます。

次世代バックアッププラットフォームが起動可能 復元ポイントでのYARAルールベースの分析セッション目標は 2 つあります。インシデント発生前の最後の「クリーン」ポイントを見つけることと、他のチェックではトリガーされなかった可能性のあるファイルに隠された悪意のあるコンテンツを検出することです。

これらの環境では、典型的なプロセスは「YARAルーラーで復元ポイントをスキャンする分析ジョブの設定中に、ルール ファイルへのパスが指定されます (通常は拡張子が .yara または .yar)。このルール ファイルは通常、バックアップ ソリューション固有の設定フォルダーに保存されます。

実行中、エンジンはコピーに含まれるオブジェクトを反復処理し、ルールを適用し、 すべての一致を特定の YARA 分析ログに記録します。管理者はコンソールからこれらのログを表示し、統計を確認し、アラートをトリガーしたファイルを確認し、さらに各一致がどのマシンと特定の日付に対応しているかを追跡することもできます。

この統合は、次のような他のメカニズムによって補完される。 異常検出、バックアップサイズの監視、特定のIOCの検索、疑わしいツールの分析しかし、特定のランサムウェア ファミリーまたはキャンペーンに合わせたルールに関しては、YARA は検索を絞り込むための最適なツールです。

ネットワークを壊さずにYARAルールをテストおよび検証する方法

Androidのマルウェア

独自のルールを書き始めたら、次の重要なステップは、それらを徹底的にテストすることです。 過度に積極的なルールは大量の誤検知を生み出す可能性があり、逆に過度に緩いルールは実際の脅威を見逃してしまう可能性があります。そのため、テスト段階は執筆段階と同じくらい重要です。

幸いなことに、実際に動作するマルウェアを満載したラボを構築したり、ネットワークの半分を感染させたりする必要はありません。この情報を提供するリポジトリとデータセットはすでに存在します。 研究目的で既知および管理されたマルウェアサンプルこれらのサンプルを分離された環境にダウンロードし、ルールのテストベッドとして使用できます。

通常のアプローチは、疑わしいファイルを含むディレクトリに対して、コマンドラインから YARA をローカルで実行することから始まります。 ルールが適切な場所で一致し、クリーンなファイルでほとんど問題が発生しない場合は、正しい方向に進んでいます。トリガーが多すぎる場合は、文字列を確認し、条件を調整するか、追加の制限 (サイズ、インポート、オフセットなど) を導入する必要があります。

もう一つの重要なポイントは、ルールがパフォーマンスを損なわないようにすることです。大きなディレクトリ、フルバックアップ、あるいは膨大なサンプルコレクションをスキャンする場合、 ルールが適切に最適化されていないと、分析の速度が低下したり、必要以上にリソースが消費されたりする可能性があります。したがって、タイミングを測定し、複雑な表現を簡素化し、過度に重い正規表現を避けることをお勧めします。

実験室でのテスト段階を経ると、 ルールを本番環境にプロモートするSIEM、バックアップシステム、メールサーバーなど、統合したい場所であればどこでも構いません。また、継続的なレビューサイクルを維持することも忘れないでください。キャンペーンの展開に伴い、ルールも定期的に調整する必要があります。

YARAのツール、プログラム、ワークフロー

ファイルレスファイルを識別する

公式バイナリ以外にも、多くの専門家がYARAの日常的な使用を容易にするために、YARAをベースにした小さなプログラムやスクリプトを開発しています。 典型的なアプローチは、アプリケーションを作成することです。 独自のセキュリティキットを組み立てる フォルダ内のすべてのルールを自動的に読み取り、分析ディレクトリに適用します.

こうした自家製ツールは、通常、単純なディレクトリ構造で動作します。 インターネットからダウンロードしたルール (例えば「rulesyar」)と、 分析対象となる疑わしいファイル (例:「マルウェア」)。プログラムが起動すると、両方のフォルダが存在することを確認し、画面にルールを一覧表示して実行の準備をします。

スタートチェック次に、アプリケーションは、フォルダー内のすべてのファイルのスキャン、サブディレクトリの再帰分析、統計の出力、メタデータの印刷など、必要なパラメータを使用して YARA 実行可能ファイルを起動します。一致があれば結果ウィンドウに表示され、どのファイルがどのルールに一致したかが示されます。

限定コンテンツ - ここをクリックしてください  私に対して黒魔術の呪文を破る方法は?

このワークフローを使用すると、たとえば、エクスポートされた電子メールのバッチ内の問題を検出できます。 悪意のある埋め込み画像、危険な添付ファイル、または一見無害なファイルに隠されたウェブシェル企業環境における多くのフォレンジック調査はまさにこの種のメカニズムに依存しています。

YARA を呼び出すときに最も役立つパラメータとしては、次のようなオプションが目立ちます。 -r は再帰的に検索し、-S は統計情報を表示し、-m はメタデータを抽出し、-w は警告を無視します。これらのフラグを組み合わせることで、特定のディレクトリでの簡単な分析から複雑なフォルダ構造の完全なスキャンまで、ケースに合わせて動作を調整できます。

YARAルールの作成と維持に関するベストプラクティス

ルール リポジトリが管理不能な混乱状態にならないようにするには、一連のベスト プラクティスを適用することをお勧めします。 1つ目は、一貫したテンプレートと命名規則を使用することですどのアナリストでも、各ルールが何をするものかを一目で理解できるようになります。

多くのチームは、次のような標準フォーマットを採用しています。 メタデータ、脅威の種類、アクター、プラットフォームを示すタグ、検出されたものの明確な説明を含むヘッダーこれは、社内だけでなく、コミュニティとルールを共有したり、パブリック リポジトリに貢献したりするときにも役立ちます。

もう一つの推奨事項は、常に次のことを覚えておくことです。 YARAは単なる防御のもう一つの層ですウイルス対策ソフトウェアやEDRに代わるものではなく、むしろそれらを補完する戦略です。 Windows PCを保護する理想的には、YARA は、資産の識別、保護、検出、対応、回復にも対応する NIST フレームワークなどのより広範な参照フレームワークに適合する必要があります。

技術的な観点から言えば、時間を割く価値があるのは 誤検知を避けるこれには、過度に一般的な文字列を避け、複数の条件を組み合わせ、次のような演算子を使用することが含まれます。 すべての o のいずれか 頭を働かせて、ファイルの構造特性を活用しましょう。マルウェアの挙動を取り巻くロジックが具体的であればあるほど、効果的です。

最後に、規律を維持する バージョン管理と定期的なレビュー これは非常に重要です。マルウェアファミリーは進化し、指標も変化し、現在有効なルールが機能しなくなったり、時代遅れになったりする可能性があります。ルールセットを定期的に見直し、改良することは、サイバーセキュリティにおけるいたちごっこの一部です。

YARAコミュニティと利用可能なリソース

YARA がここまで成長できた主な理由の 1 つは、そのコミュニティの強さです。 世界中の研究者、セキュリティ企業、対応チームが、ルール、例、ドキュメントを継続的に共有しています。非常に豊かなエコシステムを生み出します。

主な参照点は YARAのGitHub公式リポジトリそこにはツールの最新バージョン、ソースコード、ドキュメントへのリンクが掲載されています。プロジェクトの進捗状況を確認したり、問題を報告したり、必要に応じて改善に貢献したりすることもできます。

ReadTheDocsなどのプラットフォームで入手可能な公式ドキュメントでは、 完全な構文ガイド、利用可能なモジュール、ルールの例、使用方法のリファレンスこれは、PE 検査、ELF、メモリ ルール、他のツールとの統合などの最先端の機能を活用するために不可欠なリソースです。

さらに、YARAのルールとシグネチャのコミュニティリポジトリがあり、世界中のアナリストが すぐに使用できるコレクション、またはニーズに合わせて調整できるコレクションを公開します。これらのリポジトリには通常、特定のマルウェア ファミリ、エクスプロイト キット、悪意を持って使用された侵入テスト ツール、Web シェル、暗号通貨マイナーなどに関するルールが含まれています。

同時に、多くのメーカーや研究グループが YARAでは基礎レベルから上級コースまで、専門的なトレーニングを提供していますこれらの取り組みには、現実世界のシナリオに基づいた仮想ラボや実践演習が含まれることが多く、中には標的型攻撃に対して特に脆弱な非営利団体や組織に無料で提供されるものもあります。

このエコシステム全体は、少しの努力で最初の基本ルールを書くことから 複雑なキャンペーンを追跡し、前例のない脅威を検出できる高度なスイートを開発するさらに、YARA を従来のウイルス対策、安全なバックアップ、脅威インテリジェンスと組み合わせることで、インターネットを徘徊する悪意のある行為者にとって事態は大幅に困難になります。

以上のことから、YARAは単なるコマンドラインユーティリティ以上のものであることは明らかです。それは キーピース 高度なマルウェア検出戦略において、アナリストや専門家としての考え方に適応する柔軟なツールは、 共通語 世界中の研究所、SOC、研究コミュニティを結び付け、新しいルールごとに、ますます巧妙化するキャンペーンに対する保護の層を追加できます。

Windows 11で危険なファイルレスマルウェアを検出する方法
関連記事
Windows 11で危険なファイルレスマルウェアを検出する方法