2017-09-28 56 views
0

我使用VirusTotal“hunting”功能运行多个规则集,并使用private YARA规则过滤掉误报。例如:“Main”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规则的唯一地方)本身吗?或者我在编写规则时错过了什么?

回答

0

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

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