恶意软件 自动化规则提取工具 yargen 原理分析
yara是用来检测恶意软件的利器,yara规则由特征字符串、特征字节码等元素组成,只要恶意软件包含这些特征元素,就说明该文件是恶意的。但一个一个文件提特征是很耗人力的,所以业界就慢慢出现了一些出色的yara自动化提取工具,yarGen便是其中效果比较好的一个,下面,我们就通过分析该工具的源码,来了解这类工具的原理。
项目地址为:https://github.com/Neo23x0/yarGen
核心文件为yarGen.py,其他的文件大多为配置文件。
其中dbs文件夹存放着大量的db文件,这些都是白名单元素,用来过滤特征。包含了白导出函数名、白imphash、白字节码、白字符串。
源码一开始就会下载更新这些db文件,并加载,后面会用到。这是个耗时且耗内存的步骤。
加载完白名单库后,yarGen会初始化一个贝叶斯算法训练器,用于后面机器学习。至此,初始化结束,调用processSampleDir开始提取yara规则。
processSampleDir由3个核心函数组成:parse_sample_dir、sample_string_evaluation、generate_rules,作用分别为:提取样本特征、过滤特征、聚合特征生成yara规则。
第一个函数做了2个操作,从样本中提取字符串,和字节码。
extract_strings只提取6个字符以上的字符串,及包含16进制的字符串。
extract_opcodes只提取入口点所在节段的字节码,且提取后通过\x00进行截断,形成一组组字节码串。
提取完特征后,进入到sample_string_evaluation函数过滤特征,会筛选掉出现频率大于等于10且出现在白名单库里的字符串,这样剩下的就是可疑的字符串了。
做完简单的过滤后,开始进行高级的过滤,filter_string_set函数,这个步骤是最关键的。
首先,使用贝叶斯算法匹配出跟good. txt里的字符串相似的特征串,过滤掉。
good.txt里的就是些白字符串,看来机器学习也没想象中那么难,十多行python代码的事。
然后进入启发式过滤,若字符串中存在一些垃圾符号,则减去相应的恶意评分。
字符串中若带有一些可疑字符,则加上相应的恶意评分。
最后,筛选出评分较高的字符串,作为最终的特征串。
将每个样本的特征串取交集,就得到了超级特征,即匹配多个样本的yara规则。
最终生成的yara规则如下:
恶意软件 自动化规则提取工具 yargen 原理分析相关推荐
- 常用工具(原理分析)
kaldi常用工具(原理分析) 工具介绍使用:http://blog.csdn.net/zjm750617105/article/details/52540823 , 如果只想看怎么用那看前边那个li ...
- web压测工具http_load原理分析
一.前言 http_load是一款测试web服务器性能的开源工具,从下面的网址可以下载到最新版本的http_load: http://www.acme.com/software/http_load/ ...
- 跳一跳辅助工具的原理分析,和Java实现。(其实没那么复杂)
一.前言 (Java代码的实现是基于另外一篇博客,我精简了计算方法而成,参考博客地址http://blog.csdn.net/lihushiwoa/article/details/78942322) ...
- 配置核查工具实现原理分析
设备安全扫描与分析系统背景 http://192.168.7.160:16530/vm/task 配置核查工具重要性: 8月7日,美国又爆发一起工业关键基础设施数据泄露案--德州电气工程公司Power ...
- kaldi常用工具(原理分析)
工具介绍使用:http://blog.csdn.net/zjm750617105/article/details/52540823 , 如果只想看怎么用那看前边那个link就足够了,不需要再往下读了, ...
- 【黑科技】腾讯的 IOCanary 监控系统原理分析
前言 公司的一款app最近在上架厂商的过程中,被对方指出了IO读写过于频繁,然后不给上架: 但是IO读写的操作非常零散,而且很多第三方框架内都会有写入操作 所以就变得非常难以监控和修改,有没有一种非常 ...
- Cuckoo针对恶意软件自动化分析系统
Cuckoo是一款开源的自动化恶意软件分析系统,目前主要用于分析windows平台下的恶意软件,但其框架同时支持Linux和Mac OS. cuckoo能够自动化获取如下信息: (1).能够跟踪恶意 ...
- 文本提取IP并批量自动化情报查询工具——getIpInfo
文本提取IP并批量自动化情报查询工具--getIpInfo 一.getIpInfo 二.适用场景 三.基本用法: 1.将含有IP的文本放置根目录下的data.txt文件中: 2.python getI ...
- IT自动化运维工具优势与劣势分析-行云管家
随着自动化技术的进步,目前市面上出现了不少IT自动化运维工具.但很多人对于IT自动化运维工具优劣势不是很清楚,这里我们就来一起简单分析分析. IT自动化运维工具优势 1.提高IT运维工作人员工作效率, ...
最新文章
- 潜在语义分析(Latent Semantic Analysis)
- 非微信打开不显示页面
- 【Python CheckiO 题解】Fizz Buzz
- 7 行代码优雅地实现 Excel 文件导出功能?
- python提示对话框自动关闭_Python实现定时自动关闭的tkinter窗口方法
- 基于java教学管理系统设计(含源文件)
- 个人总结1[检查复选框选择个数:]
- 全新液体镜头专利曝光:华为P50系列拍照对焦速度堪比人眼
- python与财务数据挖掘_Python数据挖掘实战2:财政收入影响因素及预测
- 问答| 四轮驱动移动机器人(SSMR)简化模型的虚拟轮间距dLR具体是多少
- ik分词 java_Java实现使用IK Analyzer实现中文分词
- Atitit 最近十年来until2018软件开发领域的趋势 艾龙总结 attilax大盘点总结历史与趋势 1. Keyword sec title	2 2. 语言本身:	2 2.1. 工业标准	2
- linux性能监控命令dstat详解【杭州多测师_王sir】【杭州多测师】
- CISCO 6509 三层交换机配置
- 尤雨溪-写一个mini vue
- 推荐 7 个 yyds 的开源项目
- 淘宝用户行为分析(一):点击—加购—收藏—购买
- Cutting Sticks
- 部署Python的框架下的web app的详细教程
- Scala json转map,map转json