"Main" YARA 规则匹配似乎不满足来自同一规则集的私有规则的文件
"Main" YARA rule matches files that seem to not satisfy the private rule from the same ruleset
我 运行 几个使用 VirusTotal "hunting" 功能的规则集,我使用 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 智能预览中不会突出显示,只有来自 DLFakeCompanyName
的字符串会突出显示。但是,如果手动检查匹配的文件,那么这两个规则实际上都得到了满足。
我 运行 几个使用 VirusTotal "hunting" 功能的规则集,我使用 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 智能预览中不会突出显示,只有来自 DLFakeCompanyName
的字符串会突出显示。但是,如果手动检查匹配的文件,那么这两个规则实际上都得到了满足。