我使用virustotal"狩猎"功能运行了几个规则集,我使用 private
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
语句的另一个规则被忽略。我还使用该规则编写了另一个规则集,并且得到了相同的结果 - 私有规则被忽略,我对与$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
}
我尝试了这两个选项,即global private
和仅private
,没有区别。VT在两个规则集中都没有检测到没有语法错误。我以前从未遇到过这个问题,这就是为什么它使我感到困惑 - 一些私人规则被接受,而其他私人规则被忽略了。
这是Virustotal的问题(这是我使用Yara规则的唯一地方)本身吗?还是我在编写规则时错过了一些东西?
我最终就此与VT支持联系,显然我错过了一件事。
由于该规则是private
,因此在VT Intelligence Preview中没有突出显示其匹配的字符串,仅突出显示了DLFakeCompanyName
的字符串。但是,如果手动检查匹配的文件,则实际上已满足这两个规则。