编写yara规则,检测恶意软件(自定义yara规则)

Yara规则与C语言语法十分相像, 以下是一个简单的规则, 这个规则没有进行任何操作:

规则标识符

规则标识符是上面简单规则示例中跟在后的词, 比如单词”dummy”也可以是一个规则标识符, 标识符命名有如下要求:

  • 是由英文字母或数字组成的字符串
  • 可以使用下划线字符
  • 第一个字符不能是数字
  • 对大小写敏感
  • 不能超出128个字符长度

Yara关键字

下面这些词不能用作规则标识符, 因为这些单词在yara语言里有特定用处

all, and, any, ascii, at, condition, contains entrypoint, false, filesize, fullword, for, global, in import, include, int8, nt16, int32, int8be, int16be int32be, matches, meta, nocase, not, or, of private, rule, strings, them, true, uint8, uint16 uint32, int8be, uint16be, uint32be, wide

通常yara规则有两部分: 字符串定义条件

当发现有规则里定义的任意字符串, 规则就会生效. 如你所见, 你还可以在规则里添加注释.

十六进制字符串

通配符

十六进制字符串可以用通配符表示, 通配符符号用”表示

这个规则可以匹配下面的两个字符串

EF 44 01 D8 AA FB
EF 44 AA D8 AB FB

不定长通配符

不定长的字符串可以用下面这个方法表示

这个规则可以匹配下面的两个字符串

F4 23 01 02 03 04 62 B4
F4 23 AA BB CC DD EE FF 62 B4

当然无限长的字符串也是可以的.

这个规则可以匹配下面的两个字符串

F4 23 AA FF 62 B4
F4 23 AA AA AA AA AA…FF FF 62 B4

有条件的字符串

你可以创建一个字符串应对多种情况

这个规则可以匹配下面的两个字符串

BA 21 DA BC A5
BA 21 C6 A5

混合

当然, 你也可以将上面这几种方法结合起来.

这个规则可以匹配下面的三个字符串

BA 01 DA 01 02 03 04 A5
BA AA C6 A5
BA FF DA 01 02 A5

文本字符串

除开使用十六进制字符串, 我们也还可以使用文本字符串

你也可以像C语言那样使用如下的转义符:

” 双引号
\ 反斜杠
t 水平制表符
n 换行符
xdd 以十六进制表示的任何字节

修饰符

不区分大小写的字符串

Yara规则默认对大小写敏感

来源:这种宽字符串在许多二进制文件中都有出现. 如果字符串””FatTony””以2字节表示1字符的方式编码并在二进制文件中出现

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2022年7月22日
下一篇 2022年7月22日

相关推荐