yara基于一套规则来检测恶意代码,它是通过从文件中提取字符串、方法和逻辑,来标记某一类恶意软件,yara非常简单,无需会编程,你只需要如法炮制,参考下现有的就能完成编写,如下是一简单实例用来检测文件中包含kali关键字的规则:
rule sample_rule
{
meta :
description = "this is a yara rule sample"
author = "kali"
strings:
$a = "kali" ascii nocase
$b = { 6b 61 6c 69 }
condition:
$a or $b
}
01
—
在kali中安装yara环境
└─$ sudo apt install yara
然后输入yara即安装成功。
┌──(kali㉿kali)-[~/Desktop]
└─$ yara
yara: wrong number of arguments
Usage: yara [OPTION]... [NAMESPACE:]RULES_FILE... FILE | DIR | PID
Try `--help` for more options
┌──(kali㉿kali)-[~/Desktop]
└─$
02
—
使用yara检测程序
上次我们生成了一个newcrackme.exe, 以这个文件为例,我们知道它会弹出crackme提示框,那么我们就以这个crackme字符串写一个yara规则。
┌──(kali㉿kali)-[~/Desktop]
└─$ cat test_rule.yar
rule test_rule
{
meta :
description = "test"
author = "kali"
strings:
$a = "crackme" ascii nocase
$b = { 63 72 61 63 6b 6d 65 }
condition:
$a or $b
}
固定格式三层不能变,检测变量a或者b,b变量是crackme的十六进制。
然后我们检测下kali桌面上的程序,如下所示,发现yara检测到了,这样一来,语法简单,难怪现在都流行这个,这用来检测文件确实是个好方法。
┌──(kali㉿kali)-[~/Desktop]
└─$ sudo yara test_rule.yar /home/kali/Desktop
test_rule /home/kali/Desktop/test_rule.yar
test_rule /home/kali/Desktop/newcrackme.exe
┌──(kali㉿kali)-[~/Desktop]
└─$
获取yara规则,目前呢有很多公开的yara规则可以使用,直接去github搜索yara rules,类别有很多现有的:
检测漏洞利用工具包的
检测恶意文件的
检测webshell的
检测APT的