雅拉规则 - 正则表达式 - 匹配通配符



正则表达式对我来说一直是一个黑匣子。

我相信我需要使用一些正则表达式来编写以下一些 yara 规则。Yara 规则使用正则表达式来匹配恶意软件中特定二进制文件的执行。了解这一点对于回答这个问题不是必需的,只需他们使用正则表达式即可。

我有一些基本规则,例如检测以下程序:

C:Program Files (x86)Windows Kits10Debuggersx64cdb.exe
C:Program Files (x86)Windows Kits10Debuggersx86cdb.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\ Office 开头并以 excel 结尾的模式匹配的任何文件Microsoft.exe

像下面这样?

cuckoo.filesystem.file_access(/C:\*\Excel.exe/) or

还需要检测的是dnx.exe,也许这样的东西会起作用:

cuckoo.filesystem.file_access(/C:\*\dnx.exe/) or

还需要检测以下内容:

C:Program FilesMicrosoft Officerootclientappvlp.exe

其中 root 用户可以是任何特定用户,理想情况下会替换为通配符。

阅读 Yara 源代码,它似乎滚动了它自己的正则表达式风味。仅支持基本构造:

  • 交替 (|(
  • 串联
  • 重复 (**?++????{digit*,digit*}{digit*,digit*}?{digit+}(
  • 边界 (bB^$(
  • 分组 (()(
  • 字符类 (.wWsSdD[...][^...](
  • 十六进制逃逸 (xHH(
  • 正常转义(+任何特殊字符(
  • 其他任何东西都是字面或非法

它还支持表达式结束后is的正则表达式标志。(/.../is(

请参阅正则表达式快速参考,了解不同结构的说明。请记住,雅苒仅支持上面列出的那些。


要回答这个问题,为了匹配C:Program FilesC:Program FilesMicrosoft Office或任何子目录下的Excel.exe,您可以使用以下内容:

cuckoo.filesystem.file_access(/^C:\Program Files\(Microsoft Office\)?(.*\)?Excel.exe$/i)
  • ^$用于将模式锚定到目标字符串的开头和结尾。如果模式不匹配,您可以尝试删除它们。
  • (Microsoft Office\)?是多余的,因为(.*\)?会匹配C:Program Files下的任何子目录。我把它包括在内以匹配问题。
  • (.*\)?匹配任何以反斜杠((结尾的内容,包括更多的反斜杠。我将其设置为可选,以允许直接在C:Program Files下的文件匹配。
  • 点(.(需要转义(.(以匹配文字点,因为它被认为是一个特殊字符。
  • 末尾的/i使模式不区分大小写,以与 Windows 比较文件名的方式保持一致。

要匹配dnx.exeC:下的任何位置,您可以使用以下内容:

cuckoo.filesystem.file_access(/^C:\(.*\)?dnx.exe$/i)

要匹配C:下任何目录中的所有三个二进制文件,请执行以下操作:

cuckoo.filesystem.file_access(/^C:\(.*\)?(Excel.exe|dnx.exe|appvlp.exe)$/i)

相关内容

  • 没有找到相关文章

最新更新