恶意软件 自动化规则提取工具 yargen 原理分析

yara是用来检测恶意软件的利器,yara规则由特征字符串、特征字节码等元素组成,只要恶意软件包含这些特征元素,就说明该文件是恶意的。但一个一个文件提特征是很耗人力的,所以业界就慢慢出现了一些出色的yara自动提取工具,yarGen便是其中效果比较好的一个,下面,我们就通过分析该工具的源码,来了解这类工具的原理。

项目地址为:https://github.com/Neo23x0/yarGen

1

核心文件为yarGen.py,其他的文件大多为配置文件

2文件夹存放着大量的db文件,这些都是白名单元素,用来过滤特征。包含了白导出函数名、白imphash、白字节码、白字符串。

3文件,并加载,后面会用到。这是个耗时且耗内存的步骤。

4一个贝叶斯算法训练器,用于后面机器学习。至此,初始化结束,调用processSampleDir开始提取yara规则。

5函数组成:parse_sample_dir、sample_string_evaluation、generate_rules,作用分别为:提取样本特征、过滤特征、聚合特征生成yara规则。

6

一个函数做了2个操作,从样本中提取字符串,和字节码。

7

extract_strings只提取6个字符以上的字符串,及包含16进制的字符串。

8

extract_opcodes只提取入口点所在节段的字节码,且提取后通过\x00进行截断,形成一组组字节码串。

9提取完特征后,进入到sample_string_evaluation函数过滤特征,会筛选掉出现频率大于等于10且出现在白名单库里的字符串,这样剩下的就是可疑的字符串了。

10

做完简单的过滤后,开始进行高级的过滤,filter_string_set函数,这个步骤是最关键的。

11

首先,使用贝叶斯算法匹配出跟good. txt里的字符串相似的特征串,过滤掉。

12

good.txt里的就是些白字符串,看来机器学习也没想象中那么难,十多行python代码的事。

13垃圾符号,则减去相应的恶意评分。

14

字符串中若带有一些可疑字符,则加上相应的恶意评分。

15

最后,筛选出评分较高的字符串,作为最终的特征串。

16

将每个样本的特征串取交集,就得到了超级特征,即匹配多个样本的yara规则。

17

最终生成的yara规则如下:

18


19

 

 

相关文章

功能概要:(目前已实现功能)公共展示部分:1.网站首页展示...
大体上把Python中的数据类型分为如下几类: Number(数字) ...
开发之前第一步,就是构造整个的项目结构。这就好比作一幅画...
源码编译方式安装Apache首先下载Apache源码压缩包,地址为ht...
前面说完了此项目的创建及数据模型设计的过程。如果未看过,...
python中常用的写爬虫的库有urllib2、requests,对于大多数比...