Deep Discovery Analyzerでは、バージョン4.1.0の公式な仕様に準拠するYARAルールファイルをサポートしています。YARAルールは、任意のテキストエディタを使用して作成可能なプレーンテキストファイルに保存されます。
YARAルールの記述の詳細については、次のサイトを参照してください。
https://yara.readthedocs.io/en/v4.1.0/writingrules.html
不正プログラムを検出するために仮想アナライザに追加するYARAルールファイルは、次の特定の要件を満たしている必要があります。
-
ファイル名が一意であること
-
ファイルコンテンツが空でないこと
次の例は単純なYARAルールを示しています。
rule NumberOne { meta: desc = "Sonala" weight = 10 strings: $a = {6A 40 68 00 30 00 00 6A 14 8D 91} $b = {8D 4D B0 2B C1 83 C0 27 99 6A 4E 59 F7 F9} $c = "UVODFRYSIHLNWPEJXQZAKCBGMT" condition: $a or $b or $c }
次の表に、YARAルールを構成する各要素とその使用方法を示します。
要素 |
使用方法 |
---|---|
rule |
YARAルールの名前です。一意である必要があり、スペースを含めることはできません。 |
meta: |
「メタ」セクションの開始位置を示します。メタセクション内の要素は検出に影響しません。 |
desc |
ルールについて説明するオプションの要素です。 |
weight |
ルールの条件が一致した場合にリスクレベルを判断するオプションの要素です。1~10で指定する必要があります。
注:
weightの値は、Deep Discovery Analyzerによって割り当てられるリスクレベルに対応しません。 |
strings: |
「文字列」セクションの開始位置を示します。文字列は、不正プログラムを検出するための主要な手段です。 |
$a / $b / $c |
不正プログラムの検出に使用する文字列です。$文字で開始し、1つ以上の英数字やアンダースコアが続きます。 |
condition: |
「条件」セクションの開始位置を示します。条件は、文字列をどのように使用して不正プログラムを検出するかを決定します。 |
$a or $b or $c |
条件はルールの論理を定義するブール演算式です。送信されたオブジェクトがルールを満たすかどうかを判断するための条件を示します。条件には、通常のブール演算子 (and、or、not) に加えて関係演算子 (>=、<=、<、>、==、!=) を指定できます。数式には算術演算子 (+、-、*、\、%) およびビット演算子 (&、|、<<、>>、~、^) を使用できます。 |