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 原理分析相关推荐

  1. 常用工具(原理分析)

    kaldi常用工具(原理分析) 工具介绍使用:http://blog.csdn.net/zjm750617105/article/details/52540823 , 如果只想看怎么用那看前边那个li ...

  2. web压测工具http_load原理分析

    一.前言 http_load是一款测试web服务器性能的开源工具,从下面的网址可以下载到最新版本的http_load: http://www.acme.com/software/http_load/  ...

  3. 跳一跳辅助工具的原理分析,和Java实现。(其实没那么复杂)

    一.前言 (Java代码的实现是基于另外一篇博客,我精简了计算方法而成,参考博客地址http://blog.csdn.net/lihushiwoa/article/details/78942322) ...

  4. 配置核查工具实现原理分析

    设备安全扫描与分析系统背景 http://192.168.7.160:16530/vm/task 配置核查工具重要性: 8月7日,美国又爆发一起工业关键基础设施数据泄露案--德州电气工程公司Power ...

  5. kaldi常用工具(原理分析)

    工具介绍使用:http://blog.csdn.net/zjm750617105/article/details/52540823 , 如果只想看怎么用那看前边那个link就足够了,不需要再往下读了, ...

  6. 【黑科技】腾讯的 IOCanary 监控系统原理分析

    前言 公司的一款app最近在上架厂商的过程中,被对方指出了IO读写过于频繁,然后不给上架: 但是IO读写的操作非常零散,而且很多第三方框架内都会有写入操作 所以就变得非常难以监控和修改,有没有一种非常 ...

  7. Cuckoo针对恶意软件自动化分析系统

    ​Cuckoo是一款开源的自动化恶意软件分析系统,目前主要用于分析windows平台下的恶意软件,但其框架同时支持Linux和Mac OS. cuckoo能够自动化获取如下信息: (1).能够跟踪恶意 ...

  8. 文本提取IP并批量自动化情报查询工具——getIpInfo

    文本提取IP并批量自动化情报查询工具--getIpInfo 一.getIpInfo 二.适用场景 三.基本用法: 1.将含有IP的文本放置根目录下的data.txt文件中: 2.python getI ...

  9. IT自动化运维工具优势与劣势分析-行云管家

    随着自动化技术的进步,目前市面上出现了不少IT自动化运维工具.但很多人对于IT自动化运维工具优劣势不是很清楚,这里我们就来一起简单分析分析. IT自动化运维工具优势 1.提高IT运维工作人员工作效率, ...

最新文章

  1. 潜在语义分析(Latent Semantic Analysis)
  2. 非微信打开不显示页面
  3. 【Python CheckiO 题解】Fizz Buzz
  4. 7 行代码优雅地实现 Excel 文件导出功能?
  5. python提示对话框自动关闭_Python实现定时自动关闭的tkinter窗口方法
  6. 基于java教学管理系统设计(含源文件)
  7. 个人总结1[检查复选框选择个数:]
  8. 全新液体镜头专利曝光:华为P50系列拍照对焦速度堪比人眼
  9. python与财务数据挖掘_Python数据挖掘实战2:财政收入影响因素及预测
  10. 问答| 四轮驱动移动机器人(SSMR)简化模型的虚拟轮间距dLR具体是多少
  11. ik分词 java_Java实现使用IK Analyzer实现中文分词
  12. Atitit 最近十年来until2018软件开发领域的趋势 艾龙总结 attilax大盘点总结历史与趋势 1. Keyword sec title 2 2. 语言本身: 2 2.1. 工业标准 2
  13. linux性能监控命令dstat详解【杭州多测师_王sir】【杭州多测师】
  14. CISCO 6509 三层交换机配置
  15. 尤雨溪-写一个mini vue
  16. 推荐 7 个 yyds 的开源项目
  17. 淘宝用户行为分析(一):点击—加购—收藏—购买
  18. Cutting Sticks
  19. 部署Python的框架下的web app的详细教程
  20. Scala json转map,map转json

热门文章

  1. DataBinder
  2. guestbook.php注入,TinyGuestBook 'sign.php'多个SQL注入漏洞
  3. OpenShift — Overview
  4. etcd — 架构原理
  5. Github 工作流程
  6. Go 语言编程 — GC 垃圾回收
  7. IPv6 — 网际协议第 6 版
  8. Octavia health-manager 与 amphora 故障修复的实现与分析
  9. STM32程序进入HardFault_Handler
  10. 某全球零售客户:上马容器云 驾驭线上业务