五步走,构建最适配业务的高效YARA规则体系
日期:2024年07月02日 阅:41
YARA 是一种为了帮助恶意软件研究者识别和分类恶意软件样本而开发的工具。它使用所谓的 “YARA 规则” 进行工作,这些规则可以帮助研究者快速识别特定的恶意软件家族,甚至是特定的恶意行为。YARA 广泛应用于安全领域,包括但不限于恶意软件分析、实时监控、数字取证和威胁狩猎。
通过编写精确的 YARA 规则,研究人员可以轻松地从大量数据中筛选出恶意软件样本,识别攻击活动,甚至自动化威胁响应流程。YARA 也常被集成到其他安全工具和平台中,提供实时的监测和警报功能。
YARA规则示例
使用规则
目前网上大部分的文章都是介绍如何使用YARA工具进行病毒检测,或者如何编写YARA规则,而本篇文章主要从运营的角度介绍如何收集、整理、管理YARA规则,如何利用好一些现有的公开资源,构建精简、高效的YARA规则库。
安全人员在YARA规则使用的过程中经常会有以下疑问:
我们就针对这些疑问,对我们在安全运营过程中,对YARA规则的使用、管理进行介绍。
在收集评估阶段,主要解决以下两个问题:哪里能够收集到一些现成的规则,这些规则的质量如何评估。
通过搜索引擎和github搜索,我们找到了很多YARA规则项目,同时找到了awesome-YARA项目:https://github.com/InQuest/awesome-yara,这是一个YARA资料的集合,里面的rules部分收集了网上大部分的YARA规则项目。
我们对里面的项目进行分析评估,主要从Star数量,规则数量,更新的频率等指标对项目的质量进行分析,我们可以基于Star数量、更新频率、质量及自身的需求对规则进行选择。
收集到一些质量较好的规则以后,我们需要对规则进行合并、分类,以提高规则的扫描效率,避免做一些无用功。
将多个项目的规则合并到一起,需要考虑规则重复的问题,重复的规则可能会导致执行报错,规则多做了一些重复的扫描工作,包含以下两种情况:
对重复的规则名有两种方案,方案一可以对一些规则加上命名空间,方案二需要找出重复的规则名,删除重复的规则。我们采用了方案二的解决方式,编写脚本对重复的规则进行删除,因为方案一虽然不产生报错,但是重复的规则还是会造成一些不必要的扫描、内存空间占用等问题。
这里我们通过提取规则的strings与condition部分,分别进行排序及相似度比较。对于相似度较高的规则,进行人工确认,删除目的或者意图相同的规则。
处理好规则合并问题后,可以对规则进行分类、分级进行更精细化的规则管理,再根据自身的需求,选择需要的规则类型。以下提供两种比较实用的分类方式:
按照规则的通用性分类:有些规则通用性较强,检测一些可疑行为,比如对敏感函数的调用、加壳特征、反调试、反虚拟机等,但是也会产生一定的误报率。而有些规则则是专门针对特定的病毒类型,准确率较高、误报率较低,但是通用性较差,可能病毒变种后就绕过检测了,另外这些规则的数量会很大,需要消耗更多的资源。此部分的分类则需要根据实际的使用场景去选择规则类型。比如一个普遍的场景,我们可以选择通用规则特征+流行病毒特征的组合,比如挖矿、勒索、DDoS等。
完成对规则的合并分类管理后,可以对规则的检测效果进行筛选,主要目的是通过测试数据筛选掉高误报的规则或者匹配率极低的规则。
如图所示,通过对系统文件的扫描数据分析,suspicious_DebuggerCheck_QueryInfo、suspicious_win_token、suspicious_ShellExecute、suspicious_CreateProcess、suspicious_keylogger等特征误报率较高,如果引用会导致大量系统规则命中规则,因此可以进行移除。
后续对规则进行线上运营的过程中主要需要对线上出现的高误报规则进行优化以及加入应急响应、安全运营过程中编写的新的YARA规则,不断根据实际场景完善检测规则。
以上是我们在YARA规则运营工作中的一些经验总结,从规则性能、资源占用、规则检测效果等方面进行分析,通过对规则的精细化管理,结合需求场景,筛选出一份精简、实用的YARA规则。
YARA规则官方文档:https://yara.readthedocs.io/en/v3.6.3/index.html
优秀的YARA项目:https://github.com/InQuest/awesome-yara
基于全球广泛分布的边缘节点,依托10余年安全运营和海量攻防数据,「网宿安全」构建从边缘到云的智能安全防护体系,提供DDoS防护、Web应用防护、爬虫管理、远程访问安全接入、安全SD-WAN、主机安全等全方位的安全产品及服务,覆盖云安全、企业安全和安全服务等领域,助力企业构筑基于零信任和安全访问服务边缘(SASE)模型的全新安全架构,护航网络安全,为数字时代保驾护航。 网宿科技(300017)成立于2000年,2009年于创业板首批上市,是全球领先的边缘计算及安全服务商,业务遍及全球70多个国家和地区。公司始终致力于提升用户的数字化体验,满足用户随时随地、安全、可靠的数据处理及交互需求。