Regex Yara规则-正则表达式-匹配通配符

Regex Yara规则-正则表达式-匹配通配符,regex,yara,Regex,Yara,正则表达式对我来说一直是个黑匣子 我相信我需要使用一些正则表达式来编写以下yara规则。Yara规则使用正则表达式来匹配恶意软件中特定二进制文件的执行。了解这一点并不是回答这个问题的必要条件,只是因为他们使用正则表达式 我已经制定了一些基本规则,例如检测以下程序: C:\Program Files (x86)\Windows Kits\10\Debuggers\x64\cdb.exe C:\Program Files (x86)\Windows Kits\10\Debuggers

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

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

阅读,它似乎拥有自己的regex风格。仅支持基本构造:

  • 交替(
    |
  • 串联
  • 重复(
    *
    *?
    +
    +?
    {digit*,digit*}
    {digit*,digit*}
    {digit+}
  • 边界(
    \b
    \b
    ^
    $
  • 分组(
  • 字符类(
    \w
    \w
    \s
    \s
    \d
    \d
    […]
    [^…]
  • 十六进制转义(
    \xHH
  • 正常转义(
    \
    +任何特殊字符)
  • 其他任何东西都是文字或非法的
它还支持表达式结尾后的正则表达式标志
i
s
。(
/…/is

有关不同构造的说明,请参见。请记住,Yara只支持上面列出的那些


要回答此问题,要匹配
C:\Program Files
C:\Program Files\Microsoft Office
或任何子目录下的
Excel.exe
,可以使用以下命令:

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

cuckoo.filesystem.file_access(/^C:\\Program Files\\(Microsoft Office\\)?(.*\\)?Excel\.exe$/i)
cuckoo.filesystem.file_access(/^C:\\(.*\\)?dnx\.exe$/i)
要匹配
C:\
下任何目录中的所有三个二进制文件:

cuckoo.filesystem.file_access(/^C:\\(.*\\)?(Excel\.exe|dnx\.exe|appvlp\.exe)$/i)
读了这本书,它似乎有了自己的正则表达式的味道。仅支持基本构造:

  • 交替(
    |
  • 串联
  • 重复(
    *
    *?
    +
    +?
    {digit*,digit*}
    {digit*,digit*}
    {digit+}
  • 边界(
    \b
    \b
    ^
    $
  • 分组(
  • 字符类(
    \w
    \w
    \s
    \s
    \d
    \d
    […]
    [^…]
  • 十六进制转义(
    \xHH
  • 正常转义(
    \
    +任何特殊字符)
  • 其他任何东西都是文字或非法的
它还支持表达式结尾后的正则表达式标志
i
s
。(
/…/is

有关不同构造的说明,请参见。请记住,Yara只支持上面列出的那些


要回答此问题,要匹配
C:\Program Files
C:\Program Files\Microsoft Office
或任何子目录下的
Excel.exe
,可以使用以下命令:

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

cuckoo.filesystem.file_access(/^C:\\Program Files\\(Microsoft Office\\)?(.*\\)?Excel\.exe$/i)
cuckoo.filesystem.file_access(/^C:\\(.*\\)?dnx\.exe$/i)
要匹配
C:\
下任何目录中的所有三个二进制文件:

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

尝试将通配符'*'替换为:'.'-一个点和一个星。在我看来,它不像正则表达式,更像一个glob。您是否有相关文档的链接?请尝试将通配符“*”替换为“.*”——一个点和一个星。在我看来,它不像regex,更像glob。你有相关文档的链接吗?这非常有用,应该是一篇博客文章。工藤