正则表达式对我来说一直是一个黑匣子。
我认为我需要使用一些正则表达式来编写以下一些yara规则。 Yara规则使用正则表达式来匹配恶意软件中特定二进制文件的执行。知道这一点对于回答这个问题不是必需的,只需使用正则表达式即可。
我掌握了一些基本规则,例如检测以下程序:
C:\Program Files (x86)\Windows Kits\10\Debuggers\x64\cdb.exe
C:\Program Files (x86)\Windows Kits\10\Debuggers\x86\cdb.exe
遵循以下规则
cuckoo.filesystem.file_access(/C\:\\Program\ Files\ \(x86\)\\Windows\ Kits\\10\\Debuggers\\x64\\cdb.exe/) or
cuckoo.filesystem.file_access(/C\:\\Program\ Files\ \(x86\)\\Windows\ Kits\\10\\Debuggers\\x86\\cdb.exe/) or
但是,如果我尝试检测以下二进制文件的执行,则该文件是与C:\ Program Files \或C:\ Program Files \ Microsoft Office开头并以excel.exe结尾的模式匹配的任何文件
类似以下内容?
cuckoo.filesystem.file_access(/C\:\\*\\Excel.exe/) or
需要检测的是dnx.exe,也许这样可以工作:
cuckoo.filesystem.file_access(/C\:\\*\\dnx.exe/) or
还需要检测以下内容:
C:\Program Files\Microsoft Office\root\client\appvlp.exe
root用户可以是任何特定用户,理想情况下可以用通配符代替。
答案 0 :(得分:1)
阅读Yara source似乎证明了它本身是正则表达式的味道。仅支持基本构造:
$('form').on('submit',function(event){
event.preventDefault();
var form = event.currentTarget;
$.ajax(
{
url : $(form).attr('action'),
type: 'post',
data: $(form).serialize()
}
).done(
function(html) {
$( ".form-message" ).append( html );
}
);
});
)|
,*
,*?
,+
,+?
,?
,??
,{{1 }},{digit*,digit*}
){digit*,digit*}?
,{digit+}
,\b
,\B
)^
,$
)(
,)
,.
,\w
,\W
,\s
,\S
,{{ 1}},\d
)\D
)[...]
+任何特殊字符)在表达式结束后,它还支持正则表达式标志[^...]
和\xHH
。 (\
)
有关不同结构的说明,请参见Regular Expressions Quick Reference。请记住,Yara仅支持上面列出的那些。
要回答此问题,以匹配i
或s
下的/.../is
或任何子目录,可以使用以下方法:
Excel.exe
C:\Program Files
和C:\Program Files\Microsoft Office
在那里将模式锚定到目标字符串的开始和结束。如果模式不匹配,可以尝试删除它们。cuckoo.filesystem.file_access(/^C:\\Program Files\\(Microsoft Office\\)?(.*\\)?Excel\.exe$/i)
是多余的,因为^
将匹配$
下的任何子目录。我包括了它以匹配问题。(Microsoft Office\\)?
匹配以反斜杠((.*\\)?
)结尾的任何内容,包括更多的反斜杠。我将其设为可选,以允许直接位于C:\Program Files
下的文件匹配。(.*\\)?
)必须转义(\
)才能匹配文字点,因为它被认为是特殊字符。C:\Program Files
使模式不区分大小写,以与Windows比较文件名的方式保持一致。要匹配.
下任何地方的\.
,您可以使用以下方法:
/i
要匹配dnx.exe
下任何目录中的所有三个二进制文件:
C:\