Regex Yara规则-正则表达式-匹配通配符
正则表达式对我来说一直是个黑匣子 我相信我需要使用一些正则表达式来编写以下yara规则。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
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
- 点(
)需要转义(
)以匹配文字点,因为它被视为特殊字符\.
- 最后的
使模式不区分大小写,以与Windows比较文件名的方式保持一致/i
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
- 点(
)需要转义(
)以匹配文字点,因为它被视为特殊字符\.
- 最后的
使模式不区分大小写,以与Windows比较文件名的方式保持一致/i
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。你有相关文档的链接吗?这非常有用,应该是一篇博客文章。工藤