情报运营 | VirusTotal Hunting 笔记 - 自动生成YARA规则、通过YARA规则实时打捞VT样本
VirusTotal
VT是一个提供可疑文件分析服务的网站,它与传统杀毒软件的不同之处是它通过多种反病毒引擎扫描文件。所上传的文件会被多种反病毒引擎对进行扫描检测,可以通过结果信息进行参考,判断文件是否被病毒, 蠕虫, 木马, 以及各类恶意软件感染等等。
VirusTotal Hunting
VT Hunting是一项利用VirusTotal数据集的YARA功能服务。通过编写基于文本或二进制模式的恶意样本YARA规则,将其上传到VirusTotal进行实时跟踪。一旦命中规则就可以收到推送通知,即可针对样本进行响应处置。
网址:https://www.virustotal.com/gui/hunting-overview
什么是YARA规则
参考文章:YARA特征规则介绍与编写
YARA规则运营
丰富的YARA规则库能够提高反病毒工程师对恶意样本识别和分类效率。除了在日常人工分析样本的时候,针对样本特征编写YARA规则外。我们还可以通过以下几种方式获取YARA规则进行参考:
- YARA官方网站发布的公开预置的规则库:https://github.com/Yara-Rules/rules
- ClamAV特征码转换yara规则:ClamAV_to_yara.py
- 抓取YARA-Generator上公开规则
- 使用YARA-Generator自动生成新的YARA规则
- 对分析报告中公开的YARA规则进行审核收录
根据样本自动生成YARA规则 - yarGen
yarGen是一个自动化提取YARA规则的工具,可以提取strings和opcodes特征,其原理是先解析出样本集中的共同的字符串,然后经过白名单库的过滤,最后通过启发式、机器学习等方式筛选出最优的yara规则。项目地址:https://github.com/Neo23x0/yarGen。
使用方法:
Python yargen.py -m [样本目录]
通过YARA规则实时打捞VT样本
操作步骤:
- Hunting
- Livehunt rulesets
- New Livehunt ruleset
- YARA规则 (设置每日通知限制条数、通知邮箱)
比如:《WIRTE组织以“药品信息”为饵,再对中东地区展开攻击》中的“国籍规定.xls”这个恶意文档样本,文章中提及其宏代码中检测了:“AVG”、“Avast”和“360TotalSecurity”三种杀软,这个点就可以作为YARA规则编写的其中一个参考因素。
另外一个参考因素就是恶意文档样本宏代码执行后的下一阶段,攻击使用 VBScript、PowerShell、VBA 作为后门的编写语言,也就是说YARA规则中可以尝试添加这三种脚本语言的执行命令作为规则的一部分。
“stgeorgebankers[.]com"这个C2同样可以加入到规则中,但主要还是看上传的规则用途。因为考虑到后续打捞恶意文档样本的C2未必是这一个,所以下面的规则中没有将其加入其中。并且根据Office文件头的特征,追加了指定偏移处的检测。
rule yara_MacroOffice_ecaaab9e2fc089eefb6accae9750ac60
{strings:$a = "AVG"$b = "Avast"$c = "360TotalSecurity"$d = "powershell.exe"$e = "VBScript"$f = "VBA"$g = {D0 CF 11 E0}condition:(($a and $b and $c and ($g in (0..5))) and $d) or (($a and $b and $c and ($g in (0..5))) and $e) or (($a and $b and $c and ($g in (0..5))) and $f)
}
结合“vt模块”编写YARA规则
vt模块是专门为Livehunt创建的,主要包括扫描目标文件的其他信息。
import "vt"rule infected_pe {condition:vt.metadata.analysis_stats.malicious > 1 and vt.metadata.file_type == vt.FileType.PE_EXE
}
import "vt"rule new_file_from_china {condition:vt.metadata.new_file and vt.metadata.submitter.country == "CN"
}
import "vt"rule zbot {condition:for any engine, signature in vt.metadata.signatures : (signature contains "zbot")
}
部分实例:
Field | 类型 | 描述 | 例子 |
---|---|---|---|
vt.metadata.analysis_stats.malicious | integer | 防病毒引擎将文件检测为恶意的数量。 | vt.metadata.analysis_stats.malicious <10 |
vt.metadata.analysis_stats.undetected | integer | 未检测到文件的防病毒引擎的数量。 | vt.metadata.analysis_stats.undetected> 20 |
vt.metadata.analysis_stats.failure | integer | 扫描文件失败的防病毒引擎数。 | vt.metadata.analysis_stats.failure> 0 |
vt.metadata.analysis_stats.type_unsupported | integer | 不支持文件类型的防病毒引擎的数量。 | vt.metadata.analysis_stats.type_unsupported> 0 |
vt.metadata.first_submission_date | integer | 第一次将文件提交到VirusTotal的日期(以UNIX时间戳记)。 | vt.metadata.first_submission_date <1582934400 // 2020-02-29 |
vt.metadata.file_name | string | 提交给VirusTotal的文件名。如果正在重新分析文件,则为空。 | vt.metadata.file_name contains “foobar” |
vt.metadata.file_size | integer | 文件大小(以字节为单位)。 | vt.metadata.file_size> 100KB |
vt.metadata.file_type | integer | 文件类型表中列出的一种类型。 | vt.metadata.file_type == vt.FileType.PE_DLL |
vt.metadata.file_type_tags | array of strings | 与文件类型关联的标签,如文件类型表中所列 | for any tag in vt.metadata.file_type_tags : ( tag == “pedll”) |
vt.metadata.main_icon.raw_md5 | string | 与文件关联的图标的MD5。 | vt.metadata.main_icon.raw_md5 ==“md5” |
vt.metadata.signatures | dictionary | 杀软名称 & 病毒名称 | for any engine, signature in vt.metadata.signatures : ( engine == “Kaspersky” and signature contains “”) |
更多实例,参考YARA-rules-for-Livehunt:
https://support.virustotal.com/hc/en-us/articles/360007088057-Writing-YARA-rules-for-Livehunt
总结
yarGen能够基于样本自动生成YARA规则,但其规则的生成存在一定程度的误报可能。部分高级威胁事件中的样本对规则的精准度要求较高,不太适用于使用yarGen进行规则生成。VirusTotal Hunting搭配高精准度的YARA规则,能够提升对威胁的感知能力,从而将其转化为情报数据。
情报运营 | VirusTotal Hunting 笔记 - 自动生成YARA规则、通过YARA规则实时打捞VT样本相关推荐
- 自动生成web服务器日志解析规则
2019独角兽企业重金招聘Python工程师标准>>> 当前web服务器的多样化使得访问日志的数据清洗变得越来越复杂,企业需要投入专业的数据清洗人员编写数据清洗规则(解析规则或者解析 ...
- IDEA工作笔记-自动生成POJO或JPA的实体类
今天要要搞一个小后端,发现有些表有100多个域.就想着有没有自动生产的工具! 后面百度了下,发现有,在此记录下. 首先是要连接数据库: 右上角有Database 选择+号添加一个数据库: 然后进去后输 ...
- IDEA使用笔记(八)——自动生成 serialVersionUID 的设置
Ihttps://www.cnblogs.com/godtrue/p/7674487.html https://www.cnblogs.com/godtrue/p/7674487.html DEA使用 ...
- JDBC学习笔记(6)——获取自动生成的主键值处理Blob数据库事务处理
获取数据库自动生成的主键 [孤立的技术是没有价值的],我们这里只是为了了解具体的实现步骤:我们在插入数据的时候,经常会需要获取我们插入的这一行数据对应的主键值. 具体的代码实现: 1 /** 2 * ...
- IFTTT Evernote 自动生成笔记
为什么80%的码农都做不了架构师?>>> 当我们看到某个博客博文不错,想自动更新到笔记下,以便方便离线随时查看,也不至于等要看的时候却忘记了网址.这个可以通过IFTTT+Everno ...
- Polyworks脚本开发学习笔记(二二)-调取视角用脚本自动生成报告
Polyworks脚本开发学习笔记(二二)-调取视角用脚本自动生成报告 Polyworks中,3D场景的视图可用标准视角及等轴侧视角.项目视角等方式调用,也可以用txt格式保存下来调用,如果以脚本的形 ...
- Android 个人学习笔记- 导入android项目,无法自动生成R文件的解决方法
2019独角兽企业重金招聘Python工程师标准>>> 从网上下载源码导进eclipse后,发现该有的jar包都有以后,就是无法在gen目录下生成R文件. 假如你也遇到这样的问题,你 ...
- 分布式文档系统-document id的手动指定与自动生成两种方式解析(来自学习笔记:龙果学院ES课程)
1.手动指定document id (1)根据应用情况来说,是否满足手动指定document id的前提: 一般来说,是从某些其他的系统中,导入一些数据到es时,会采取这种方式,就是使用系统中已有数据 ...
- Java笔记-通过注解和插件自动生成get/set和toString方法,使代码结构清晰
目录 演示过程 需要的依赖 演示过程 如下注解: 有了这个注解就可以删除类的get/set和toString方法 去掉了后,还是可以使用get和set和toString方法: 关于性能方面,在打包生成 ...
最新文章
- 微软旷视人脸识别100%失灵!北京十一学校校友新研究「隐身衣」,帮你保护照片隐私数据...
- 我的世界服务器反作弊不起作用,我的世界服务器反作弊怎么搞 | 手游网游页游攻略大全...
- 如何保证战略落地_战略如何规划落地?值得借鉴
- PostgreSQL日期函数备忘
- Python学习(五)列表的简单操作
- 你知道吗…我不知道…你知道吗
- Java中常用的6种排序算法详细分解
- 【Spring第四篇】DI注入以及c、p命名空间
- Silverlight像素着色器编写简明指南 附送文字描边效果
- expert php and mysql_Expert PHP and Mysql
- 持久层框架:Mybatis快速入门
- 阿里人工智能实验室AIoT总架构,15 年工龄的资深技术专家职场历程自述
- linux、ubuntu如何查看网速
- 重磅!腾讯优图20篇论文入选CVPR 2021
- Boyd 凸优化课后习题 求共轭函数
- c语言中val是什么函数,val(val是什么意思)
- 基于STM32的ESP8266使用教程(二)
- Netty 实现一对一客户端聊天(由服务器转发)
- 现实黑镜:将死去好友复活为AI
- mysql高级-4-深入InnoDB
热门文章
- mse python_MSE与MAE的区别与选择
- 站长们如何优化自已的新网站
- Zend引擎探索 之 PHP中前置递增不返回左值
- mysql md 123456_mysql/mysql.md · sdbxpjzq/docs - Gitee.com
- 设计模式 外观模式 一键电影模式
- JavaScript学习笔记|数据类型——Object类型、for in循环
- PAT甲级刷题笔记(4)
- java系统开发注意事项
- 解决方案:indexer -c sphinx.conf --all FATAL: out of memory (unable to allocat
- 计算机教师格言座右铭,教师格言座右铭100句