情报运营 | 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样本

操作步骤:

  1. Hunting
  2. Livehunt rulesets
  3. New Livehunt ruleset
  4. 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.maliciousinteger防病毒引擎将文件检测为恶意的数量。vt.metadata.analysis_stats.malicious <10
vt.metadata.analysis_stats.undetectedinteger未检测到文件的防病毒引擎的数量。vt.metadata.analysis_stats.undetected> 20
vt.metadata.analysis_stats.failureinteger扫描文件失败的防病毒引擎数。vt.metadata.analysis_stats.failure> 0
vt.metadata.analysis_stats.type_unsupportedinteger不支持文件类型的防病毒引擎的数量。vt.metadata.analysis_stats.type_unsupported> 0
vt.metadata.first_submission_dateinteger第一次将文件提交到VirusTotal的日期(以UNIX时间戳记)。vt.metadata.first_submission_date <1582934400 // 2020-02-29
vt.metadata.file_namestring提交给VirusTotal的文件名。如果正在重新分析文件,则为空。vt.metadata.file_name contains “foobar”
vt.metadata.file_sizeinteger文件大小(以字节为单位)。vt.metadata.file_size> 100KB
vt.metadata.file_typeinteger文件类型表中列出的一种类型。vt.metadata.file_type == vt.FileType.PE_DLL
vt.metadata.file_type_tagsarray of strings与文件类型关联的标签,如文件类型表中所列for any tag in vt.metadata.file_type_tags : ( tag == “pedll”)
vt.metadata.main_icon.raw_md5string与文件关联的图标的MD5。vt.metadata.main_icon.raw_md5 ==“md5”
vt.metadata.signaturesdictionary杀软名称 & 病毒名称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规则,能够提升对威胁的感知能力,从而将其转化为情报数据。

  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值