Yara 规则 - 正则表达式 - 匹配通配符
Yara Rule - Regex - Matching Wildcard
正则表达式对我来说一直是个黑盒子。
我相信我需要使用一些正则表达式来编写以下一些 yara 规则。 Yara 规则使用正则表达式来匹配恶意软件中特定二进制文件的执行。回答问题不需要了解这一点,只需他们使用正则表达式即可。
我已经掌握了一些基本规则,例如检测以下程序:
C:\Program Files (x86)\Windows Kits\Debuggers\x64\cdb.exe
C:\Program Files (x86)\Windows Kits\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 用户可以是任何特定用户,最好用通配符替换。
阅读 Yara source,它似乎推出了它自己的正则表达式风格。仅支持基本构造:
- 交替(
|
)
- 串联
- 重复(
*
、*?
、+
、+?
、?
、??
、{digit*,digit*}
、{digit*,digit*}?
, {digit+}
)
- 边界(
\b
、\B
、^
、$
)
- 分组(
(
、)
)
- 字符 类 (
.
, \w
, \W
, \s
, \S
, \d
, \D
, [...]
, [^...]
)
- 十六进制转义 (
\xHH
)
- 正常转义(
\
+ 任何特殊字符)
- 任何其他内容都是文字或非法的
它还支持表达式结束后的正则表达式标志 i
和 s
。 (/.../is
)
请参阅 Regular Expressions Quick Reference 了解不同结构的解释。请记住,Yara 仅支持上面列出的那些。
要回答这个问题,要匹配 C:\Program Files
或 C:\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 比较文件名的方式保持一致。
要在 C:\
下的任何位置匹配 dnx.exe
,您可以使用:
cuckoo.filesystem.file_access(/^C:\(.*\)?dnx\.exe$/i)
匹配C:\
下任何目录下的所有三个二进制文件:
cuckoo.filesystem.file_access(/^C:\(.*\)?(Excel\.exe|dnx\.exe|appvlp\.exe)$/i)
正则表达式对我来说一直是个黑盒子。
我相信我需要使用一些正则表达式来编写以下一些 yara 规则。 Yara 规则使用正则表达式来匹配恶意软件中特定二进制文件的执行。回答问题不需要了解这一点,只需他们使用正则表达式即可。
我已经掌握了一些基本规则,例如检测以下程序:
C:\Program Files (x86)\Windows Kits\Debuggers\x64\cdb.exe
C:\Program Files (x86)\Windows Kits\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 用户可以是任何特定用户,最好用通配符替换。
阅读 Yara source,它似乎推出了它自己的正则表达式风格。仅支持基本构造:
- 交替(
|
) - 串联
- 重复(
*
、*?
、+
、+?
、?
、??
、{digit*,digit*}
、{digit*,digit*}?
,{digit+}
) - 边界(
\b
、\B
、^
、$
) - 分组(
(
、)
) - 字符 类 (
.
,\w
,\W
,\s
,\S
,\d
,\D
,[...]
,[^...]
) - 十六进制转义 (
\xHH
) - 正常转义(
\
+ 任何特殊字符) - 任何其他内容都是文字或非法的
它还支持表达式结束后的正则表达式标志 i
和 s
。 (/.../is
)
请参阅 Regular Expressions Quick Reference 了解不同结构的解释。请记住,Yara 仅支持上面列出的那些。
要回答这个问题,要匹配 C:\Program Files
或 C:\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 比较文件名的方式保持一致。
要在 C:\
下的任何位置匹配 dnx.exe
,您可以使用:
cuckoo.filesystem.file_access(/^C:\(.*\)?dnx\.exe$/i)
匹配C:\
下任何目录下的所有三个二进制文件:
cuckoo.filesystem.file_access(/^C:\(.*\)?(Excel\.exe|dnx\.exe|appvlp\.exe)$/i)