セキュリティとマルウェア検出を改善するためのYARAルールの書き方

YARAはウイルス対策ソフトウェアに取って代わるものではありませんが、問題をより効率的に検出し、より多くのカスタマイズを可能にするのに役立ちます。セキュリティとインシデント対応を改善するためのYARAルールの書き方を学びましょう。
“href =” https://www.techrepublic.com/a/hub/i/r/2020/12/18/ ba522146-343e-4d46-NS506-ffc6033c4b04/ resize /770x / 7f7bb23a1f2020e781NS8887ecafc158a / istock-1291376919。jpg “target =” _ blank “> 画像:iStock / vadimrysev
YARAに関する最初の記事では、ツールの種類と使用できるコンテキストを定義しました。ネットワークまたはエンドポイントでのマルウェアの検出、インシデントの対応と監視の支援、ファイルの分類、さらには機密データの漏洩の検出です。また、インストール方法も示しました。それでは、ルールを最大限に活用するためのルールを作成しましょう。
見る: Google Chrome:知っておく必要のあるセキュリティとUIのヒント(TechRepublic Premium)
空のテンプレートを使用して開始します
YARAルールはテキストファイルであり、非常に基本的でありながら強力な構文に従います。
YARAルールには常に3つの部分が含まれます:
- メタ部分:この部分には、処理されないが、それが何であるかをユーザーが理解するのに役立つ一般的または特定の情報が含まれています。
- 文字列の部分:この部分には、ファイル内で検索する必要のあるすべての文字列が含まれています。
- 条件部分:これパートは、マッチングの条件を定義します。 1つまたは複数の文字列に一致する場合もありますが、この記事の後半で説明するように、より複雑になる場合もあります。
私の経験から、新しいルールの作成を開始するために常に使用する空のテンプレートを作成することを強くお勧めします。このように、いくつかの変数の内容を入力し、必要な条件を追加する必要があります。
rule samplerule
{
メタ:
author = "Cedric Pernet"
version = "0.1"
date = "2021/05/12 "
reference = "任意の有用なリファレンス"
文字列:
調子:
}
このテンプレートを使用すると、メタデータとルール名をすばやく編集できます(この例ではsampleruleという名前です) 。メタデータは、ユーザーがそこに配置したいものなら何でもかまいません。私の場合、私は常にバージョン番号、日付、マルウェアハッシュである可能性のある参照、または検出したいものを記載したブログレポート、および作成者フィールドを使用します。
メタデータが書き込まれたので、最初のルールの書き込みを開始しましょう。
最初のルール
YARAルールは文字列要素と条件の組み合わせです。文字列は、テキスト文字列、16進文字列、または正規表現にすることができます。
条件は、他のプログラミング言語と同様にブール式です。最もよく知られているのはAND、OR、NOTです。関係演算子、算術演算子、およびビット演算子も使用できます。
最初のルールは次のとおりです:
rule netcat_detection
{
メタ:
著者= "Cedric Pernet"version = "0.1"date = "2020/05/12 "reference = "netcatは、オンラインで無料で利用できる無料のツールです"文字列:$ str1 = "gethostpoop fuxored" //これはnetcatツールに非常に固有です$ str2 = "nc -l -p port[options]"調子:$ str1または$ str2}では、netcat_detectionというタイトルのこのルールについて説明しましょう。
通常のメタデータの後、文字列分割には2つの変数str1とstr2が含まれます。もちろん、これらの変数には任意の名前を付けることができます。また、コメントを追加する方法を説明するために、最初の変数の最後に1つのコメントが含まれています。
条件部分には、次の条件が含まれています。str1またはstr2のいずれかに一致する必要があります。
これはもっと快適な方法で書かれている可能性があります:
調子:any of($ strこれは、さまざまな変数があり、それらのいずれかと一致させたいだけです。
最初のルールの実行
次に、rule1.yarという名前のファイルとして保存したルールを実行してみましょう。いくつかの異なるファイルを含むフォルダーに対して実行したいと思います。そのうちの2つはです。 - と 64-netcatソフトウェアのビットバージョン(図A)。テスト用のシステムはUbuntuLinuxディストリビューションですが、YaraはLinux、Mac、またはWindowsオペレーティングシステムに簡単にインストールできるため、問題ありません。
図A
 特定のソフトウェアを検出するためにフォルダでYARAルールを実行します。 "href =" https://www.techrepublic.com/a/hub/i/r/2021/12/06/593d0fdf- 1026-41da-9e2b-9bf1d35bc3c3 / resize /770NS/1645dde481NS8844NS63b4db91c5edd0c5 / figa.jpg "target =" _ blank ">
特定のソフトウェアを検出するためにフォルダでYARAルールを実行します。
予想どおり、YARAが実行され、ルールに一致するすべてのファイルの名前が返されます。
もちろん、1つのファイルに必要な数のYARAルールを入れることができるので、多くの異なるルールファイルを使用するよりも快適です。
-sオプションを指定してYARAを実行すると、それらのファイルに一致する正確な文字列が表示されます(図B):
図B
 一致する文字列を表示するために-sオプションを指定してYARAを実行します。 "href =" https://www.techrepublic.com/a/hub/i/r/2021/12/06/8725bd8a-9424-4dd3-bf2f-c2d3c9722812/ resize /770x / 6bf274e8fb262NS465 cf846fe9c8a07c6 / figb.jpg "target =" _ blank ">
一致する文字列を表示するために-sオプションを指定してYARAを実行します。
ちなみに、企業ネットワークのどこかでnetcatのようなツールを見つけることは、実際に調査する価値があるかもしれません。その基本的なツールは、コンピューターが接続してデータを交換できるため、平均的なユーザーコンピューターでは見つけられないはずです。特定のポートで、攻撃者によって使用される可能性があります。もちろん、IT担当者やレッドチームのスタッフが使用する可能性もあるため、企業ネットワークのマシンで検出された理由を特定するための調査が行われました。
より複雑な文字列
システム内のファイルを見つけるには、基本的な文字列を一致させるだけで十分です。ただし、文字列はシステムごとにエンコードが異なる場合や、攻撃者によってわずかにトリガーされた場合があります。たとえば、わずかな変更の1つは、ランダムな大文字と小文字を使用して文字列の大文字と小文字を変更することです。幸いなことに、YARAはこれを簡単に処理できます。
次のYARA文字列部分では、どのような場合でも文字列が一致します:
文字列:$ str1 = "thisisit" nocase条件$ str1は、使用されるすべてのケースと一致するようになります: "ThisIsIt"、 "THISISIT"、 "thisisit"、 "ThIsIsiT"など
文字列が1文字あたり2バイトを使用してエンコードされている場合、 "ワイド」修飾子を使用できます。もちろん、別の修飾子と組み合わせることができます:
文字列:$ str1 = "thisisit" nocase wideASCII形式とワイド形式の両方で文字列を検索するには、修飾子「ascii」はワイドと組み合わせて使用できます。
文字列:$ str1 = "thisisit" ascii wide16進文字列
16進文字列は簡単に使用できます:
文字列:$ str1 = { 7572656C 6E20}$ str2 = {7572656C ?? 20}$ str3 = {7572[2-4]656C}ここに3つの異なる16進変数があります。 1つ目は、16進文字列の正確なシーケンスを検索します。 2つ目は、2つの?で表されるワイルドカードを使用します。文字であり、任意の16進値で文字列を検索します。スタンド。
見る: パスワード違反:ポップカルチャーとパスワードが混在しない理由(無料のPDF)(TechRepublic)
3番目の文字列は最初の2つを検索しますバイト、次に2〜4文字のジャンプ、最後の2バイト。これは、一部のシーケンスが異なるファイルで異なるが、2つの既知のバイト間で予測可能な数のランダムバイトを示す場合に非常に便利です。
正規表現
正規表現は、他のプログラミング言語と同様に、さまざまな方法で記述できる特定のコンテンツを検出するのに非常に役立ちます。 YARAでは、スラッシュ(/)文字で開始および終了する文字列を使用して定義されます。
意味のある例を見てみましょう。
マルウェアバイナリでは、開発者はデバッグ情報、特に有名なPDB文字列を残しました。
読み取り:
D: worksheet Malware_v42 Release malw.pdb
これで、このマルウェアに一致するルールですが、バージョン番号が変更された場合に備えて、すべての異なるバージョンが使用されます。また、開発者が別のドライブに「D」ドライブを置くこともできるため、ルールから「D」ドライブを除外することにしました。
正規表現を考え出します(図C):
図C
  PDB文字列と結果に基づいて、マルウェアのすべてのバージョンを照合するルール。 "href =" https://www.techrepublic.com/a/hub/i/r/2021/12/06/NS63NS8001-0d15-4581-985NS-85ce1b1f5e89/ resize /770x / a57NS81NS18ca8d0b0e7144aef831cb895/ figc.jpg "target =" _ blank ">
PDB文字列とその結果に基づいて、マルウェアのすべてのバージョンを照合するルール。
デモンストレーションの目的で、それぞれバージョン番号が異なる3つの異なるPDB文字列を含むnewmalwareversion.exeという名前のファイルを作成しました。私たちのルールはそれらすべてに一致します。
は、C言語のようにエスケープする必要がある特殊文字であるため、文字列の文字が2倍になっていることに注意してください。
より複雑な条件
条件は、単一または複数の文字列を照合するよりも賢くなります。条件を使用して、文字列をカウントしたり、文字列を検索するオフセットを指定したり、ファイルサイズを一致させたり、ループを使用したりすることができます。
説明のためにコメントしたいくつかの例を次に示します:
調子:2 of($ str // strという名前のいくつかの文字列のうち2つに一致し、その後に数字が続きます($ str1または$ str2)および($ text1または$ text2)//ブール演算子の例#a == 4および#b> 6 //文字列aは正確に4回検出される必要があり、文字列bは厳密に6回以上検出される必要があります$ str at100//文字列strは、ファイル内のオフセットに配置する必要があります$ str in(500.. filesize)//文字列strはオフセットの間に配置する必要があります500およびファイルの終わり。ファイルサイズ>500KB //より大きいファイルのみKBビッグは検討済み結論
この記事では、YARAの最も基本的な機能について説明します。もちろん、それは一種のプログラミング言語であるため、すべてを文書化することはできませんでした。 YARAが提供するファイルのマッチングの可能性は無限大です。アナリストがYARAに慣れれば感じるほど、YARAの感触をつかみ、より効率的なルールを作成するためのスキルを向上させることができます。
言語は非常に簡単に記述および使用できるため、実際に何を検出したいかを知ることが重要です。誰もが自分のコンピューターやサーバー上の悪意のあるコンテンツを照合できるようにするために、セキュリティ研究者が研究論文やブログ投稿の付録にYARAルールを公開するのを見るのはここ数年でますます一般的になっています。 YARAルールでは、悪意はないが注意深く監視する必要のあるコンテンツを照合することもできます。たとえば、内部ドキュメントのように、YARAをデータ損失検出ツールや悪意のあるコンテンツ検出器にレンダリングします。ツールによって提供されるすべての可能性を確認するには、YARAのドキュメントを参照することを躊躇しないでください。
開示:私はトレンドマイクロで働いていますが、この記事で表現されている見解は私のものです。
Cybersecurity Insider Newsletter
最新のサイバーセキュリティニュース、ソリューション、およびベストプラクティスに遅れないようにすることで、組織のITセキュリティ防御を強化します。火曜日と木曜日に配信
今日サインアップする
- も参照してくださいサイバーセキュリティ:従業員を非難しないでください。ソリューションの一部のように感じさせてください(TechRepublic)
- IBMのDigital Health Pass(TechRepublic)の背後にあるセキュリティとプライバシー
- サイバーセキュリティプロになる方法:チートシート(TechRepublic)
- NISTサイバーセキュリティフレームワーク:チートシート専門家向け(無料PDF)(TechRepublic)
- モバイルVPNアプリとは何ですか?なぜそれらを使用する必要があるのですか(TechRepublic Premium)
- サイバーセキュリティとサイバー戦争:必読の記事をもっと読む(TechRepublic on Flipboard)