VirusTotalの「ハンティング」機能を使用していくつかのルールセットを実行し、private
YARAルールを使用して誤検出を除外します。たとえば:「メイン」YARAルールは、同じルールセットのプライベートルールを満たしていないファイルと一致します
private rule isDex
{
meta:
description = "To filter out DEX files that fire many FPs"
strings:
$magicbytes = {64 65 78 0A}
condition:
$magicbytes at 0
}
私は別のルールでnot
文を使用して、このルールを参照してください。これは意図したとおりに動作し、私はもはや私が一致する文字列を含むDEXファイルに警告されません。
しかし、私がand
ステートメントを使用して参照する別のルールは無視されています。また、私はそのルールを使用して、別のルールセットを書いて、私は同じ結果を得る - 、global private
プライベートルールは無視され、私は$a
文字列にマッチするファイルに警告していますが、私は両方のオプションを試してみましたisClassified
ルール
global private rule isClassified
{
meta:
description = "to detect files with classification label"
strings:
$p1 = "internal only" ascii wide nocase fullword
$p2 = "confidential" ascii wide nocase fullword
$p3 = "private" ascii wide nocase fullword
$p4 = "secret" ascii wide nocase fullword
condition:
any of them
}
rule DLFakeCompanyName
{
meta:
date = "2017-02-20"
state = "edited 2x, testing"
//to do: check for datasize, file format, keywords
strings:
$a = "fakecompanyname" nocase ascii wide fullword
condition:
any of them
}
を満たしませんちょうどprivate
、違いはありません。 VTはどちらのルールセットでも構文エラーを検出しません。私はこれまでにこの問題に遭遇したことがなく、それが私を混乱させる理由です。いくつかのプライベートルールは受け入れられますが、他は無視されます。
これはVirusTotal(これは私がYARAルールを使用する唯一の場所)の問題ですか?あるいは、ルールを書いているうちに何かが見当たりませんか?