【问题标题】:Yara Rule - Regex - Matching WildcardYara 规则 - 正则表达式 - 匹配通配符
【发布时间】:2019-10-18 23:50:57
【问题描述】:

Regex 对我来说一直是个黑盒子。

我相信我需要使用一些正则表达式来编写以下一些 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 用户可以是任何特定用户,最好用通配符替换。

【问题讨论】:

标签: regex yara


【解决方案1】:

阅读Yara source,它似乎推出了它自己的正则表达式。仅支持基本构造:

  • 交替 (|)
  • 串联
  • 重复(**?++????{digit*,digit*}{digit*,digit*}?{digit+}
  • 边界(\b\B^$
  • 分组(()
  • 字符类(.\w\W\s\S\d\D[...][^...]
  • 十六进制转义 (\xHH)
  • 正常转义(\ + 任何特殊字符)
  • 其他任何东西都是文字或非法的

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

请参阅Regular Expressions Quick Reference 了解不同构造的说明。请记住,Yara 仅支持上面列出的那些。


要回答这个问题,要匹配C:\Program FilesC:\Program Files\Microsoft 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)

【讨论】:

  • 这非常有用,应该是一篇博文。荣誉,做得好,谢谢。你真的已经超越了这里。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-30
  • 2015-02-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多