微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

恶意软件 自动化规则提取工具 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

 

 

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐