传统的检测程序的方式是基于hash值来检测,每一个hash值对应一个恶意程序,众所周知程序修改一次hash值是不同的,因此在没有出规则之前是检测不到的,yara被称为恶意软件的瑞士军刀,它采用不同的方法检测新的威胁。

 

 

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的

 

 

posted on 2022-08-10 08:17  root-123  阅读(810)  评论(0编辑  收藏  举报