"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 privateprivate,没有区别。 VT 在两个规则集中均未检测到语法错误。我以前从未遇到过这个问题,这就是为什么它让我感到困惑 - 一些私人规则被接受但其他人被忽略。

这是 VirusTotal(这是我唯一使用 YARA 规则的地方)本身的问题吗?还是我在编写规则时遗漏了什么?

我最终就此联系了 VT 支持,显然我错过了一件事。

由于规则是 private,它匹配的字符串在 VT 智能预览中不会突出显示,只有来自 DLFakeCompanyName 的字符串会突出显示。但是,如果手动检查匹配的文件,那么这两个规则实际上都得到了满足。