首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Yara规则- Regex -匹配通配符

Yara规则- Regex -匹配通配符
EN

Stack Overflow用户
提问于 2019-10-18 23:50:57
回答 1查看 4.5K关注 0票数 0

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

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

我已经制定了一些基本规则,例如检测以下程序:

代码语言:javascript
复制
    C:\Program Files (x86)\Windows Kits\10\Debuggers\x64\cdb.exe
    C:\Program Files (x86)\Windows Kits\10\Debuggers\x86\cdb.exe

有以下规则

代码语言:javascript
复制
    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 \或C:\Program \Microsoft并以excel.exe结尾的模式的文件。

像下面这样的东西?

代码语言:javascript
复制
    cuckoo.filesystem.file_access(/C\:\\*\\Excel.exe/) or

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

代码语言:javascript
复制
    cuckoo.filesystem.file_access(/C\:\\*\\dnx.exe/) or

还需要检测以下内容:

代码语言:javascript
复制
    C:\Program Files\Microsoft Office\root\client\appvlp.exe

其中根用户可能是任何特定用户,理想情况下将被通配符替换。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-10-21 10:04:15

阅读Yara源,它似乎有了自己的regex风格。只支持基本结构:

  • 交替(|)
  • 串连
  • 重复(**?++????{digit*,digit*}{digit*,digit*}?{digit+})
  • 边界(\b\B^$)
  • 分组(())
  • 字符类(.\w\W\s\S\d\D[...][^...])
  • 六角变速箱(\xHH)
  • 普通转义(\ +任何特殊字符)
  • 任何其他东西都是字面上的或非法的。

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

有关不同结构的说明,请参见正则表达式快速引用。记住,只有上面列出的是由Yara支持的。

要回答这个问题,要匹配Excel.exeC:\Program FilesC:\Program Files\Microsoft Office或任何子目录下,可以使用以下命令:

代码语言:javascript
复制
cuckoo.filesystem.file_access(/^C:\\Program Files\\(Microsoft Office\\)?(.*\\)?Excel\.exe$/i)
  • ^$在那里将模式锚定在目标字符串的开始和结束处。如果模式不匹配,可以尝试删除它们。
  • (Microsoft Office\\)?是多余的,因为(.*\\)?将匹配C:\Program Files下的任何子目录。我把它包括进来是为了配合这个问题。
  • (.*\\)?匹配以反斜杠(\)结尾的任何内容,包括更多的反斜杠。我让它是可选的,允许直接在C:\Program Files下的文件匹配。
  • 点(.)需要转义(\.)来匹配一个文字点,因为它被认为是一个特殊字符。
  • 最后的/i使模式大小写变得不敏感,以与Windows比较文件名的方式对齐。

要匹配dnx.exeC:\下的任何位置,您可以使用以下命令:

代码语言:javascript
复制
cuckoo.filesystem.file_access(/^C:\\(.*\\)?dnx\.exe$/i)

匹配C:\下任意目录中的所有三个二进制文件

代码语言:javascript
复制
cuckoo.filesystem.file_access(/^C:\\(.*\\)?(Excel\.exe|dnx\.exe|appvlp\.exe)$/i)
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58459359

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档