目录
概述
Yara是一款用于识别恶意软件及对其行为进行分类的安全利器。Yara会根据我们自己编写的yara规则,来对可疑软件进行一个模式匹配,若可疑软件中的一些特征与我们的yara规则匹配上了,则可以初步认定可疑软件为恶意软件。
项目地址:https://github.com/VirusTotal/yara
下载及安装
Linux:
apt-get install yara apt-get install python-yara /pip install yara
Windows:
https://www.dropbox.com/sh/umip8ndplytwzj1/AADdLRsrpJL1CM1vPVAxc5JZa?dl=0&lst=
pip install yara-python
问题解决
yara: error while loading shared libraries: /usr/lib/libyara.so: cannot open shared object file: No such file or directory
apt安装python-yara后,libyara.so放在了~/.local目录下,将libyara.so复制到/usr/lib目录下即可。 PS:输入命令grep libyara.so * -r寻找libyara.so的具体位置
测试
echo "rule dummy { condition: true }" > my_first_rule
yara my_first_rule my_first_rule
PS:yara命令第一个参数为rule文件,第二参数为待检测文件
输出 dummy my_first_rule,则运行成功
获取yara规则
工欲善其事必先利其器,要让Yara能精确地识别恶意软件并将其分类,你必须拥有一个强大的yara规则库,但我们还不懂怎么写这些yara规则,那该怎么办呢?别急,yara给我们提供了一个现成的yara规则库,在我们还没有自己的规则库前就先用着它吧。
项目地址:https://github.com/Yara-Rules/rules
下载yara规则:
git clone https://github.com/Yara-Rules/rules
规则分11大类:
- Antidebug_AntiVM:反调试/反沙箱类yara规则
- Crypto:加密类yara规则
- CVE_Rules:CVE漏洞利用类yara规则
- email:恶意邮件类yara规则
- Exploit-Kits:EK类yara规则
- Malicious_Documents:恶意文档类yara规则
- malware:恶意软件类yara规则
- Mobile_Malware:移动恶意软件类yara规则
- Packers:加壳类yara规则
- utils:通用类yara规则
- Webshells:Webshell类yara规则
获取恶意样本
我们在Hybrid上下载Petya样本
我下载的样本MD5为:af2379cc4d607a45ac44d62135fb7015
开始扫描
接下来我们就可以使用Yara对此样本进行静态扫描了,我使用加密类的规则对其进行扫描:
运行过程中有警告出现,我们等会再讨论。 我们现在看到Yara扫描出了三个特征:
1. RIPEMD160_Constants: 使用了RIPEMD160加密算法
2. SHA1_Constants:使用了SHA1的加密算法
3. BASE64_table:发现了base64表,Petya为了防止被识别,使用了bas64对自己先进行加密
Yara的结果输出大致就是这种格式(特征+样本路径) 我们现在回头看看出现的警告是什么意思:
原来是因为$c0使用了{ 0-9,a-f,A-F }的大范围匹配,导致Yara运行时间大大增长,故而输出了警告。扫描单个样本的时候差别不大,但扫描大量样本的时候就会消耗大量时间,所以我们编写yara规则的时候要多加谨慎。
OK,Yara简单的用法就介绍到这里,如果要更深入地学习,就戳这里吧:
https://yara.readthedocs.io/en/v3.7.0/