五步走,构建最适配业务的高效YARA规则体系
2024-7-2 16:34:46 Author: www.aqniu.com(查看原文) 阅读量:20 收藏

五步走,构建最适配业务的高效YARA规则体系

日期:2024年07月02日 阅:41

YARA 是一种为了帮助恶意软件研究者识别和分类恶意软件样本而开发的工具。它使用所谓的 “YARA 规则” 进行工作,这些规则可以帮助研究者快速识别特定的恶意软件家族,甚至是特定的恶意行为。YARA 广泛应用于安全领域,包括但不限于恶意软件分析、实时监控、数字取证和威胁狩猎。

通过编写精确的 YARA 规则,研究人员可以轻松地从大量数据中筛选出恶意软件样本,识别攻击活动,甚至自动化威胁响应流程。YARA 也常被集成到其他安全工具和平台中,提供实时的监测和警报功能。

YARA规则示例

使用规则

  • meta:包含规则的元信息,如描述、作者、日期等。
  • strings:定义了要查找的字符串;$a 是一个同时以宽字符和 ASCII 格式查找的文本字符串,$b 是一个要查找的二进制串,$c 是一个正则表达式。
  • condition:定义了判断规则匹配的逻辑条件,在这个例子中,所有定义的字符串 $a、$b、$c 都必须匹配。

目前网上大部分的文章都是介绍如何使用YARA工具进行病毒检测,或者如何编写YARA规则,而本篇文章主要从运营的角度介绍如何收集、整理、管理YARA规则,如何利用好一些现有的公开资源,构建精简、高效的YARA规则库。

安全人员在YARA规则使用的过程中经常会有以下疑问:

  • 人工编写规则需要较大的工作量,哪里能够收集到一些已有的规则?
  • 这些规则的质量如何?会不会有一些规则已经很久远不再适用了?
  • 如果规则数量太多,会不会影响主机性能,扫描时对业务造成影响?
  • 规则的准确率如何,是否会产生较高的误报率?
  • 规则的通用性如何,是否会有些规则只匹配单一文件,导致规则几乎不生效?

我们就针对这些疑问,对我们在安全运营过程中,对YARA规则的使用、管理进行介绍。

2.1 收集评估

在收集评估阶段,主要解决以下两个问题:哪里能够收集到一些现成的规则,这些规则的质量如何评估。

通过搜索引擎和github搜索,我们找到了很多YARA规则项目,同时找到了awesome-YARA项目:https://github.com/InQuest/awesome-yara,这是一个YARA资料的集合,里面的rules部分收集了网上大部分的YARA规则项目。

我们对里面的项目进行分析评估,主要从Star数量,规则数量,更新的频率等指标对项目的质量进行分析,我们可以基于Star数量、更新频率、质量及自身的需求对规则进行选择。

3.1 合并

收集到一些质量较好的规则以后,我们需要对规则进行合并、分类,以提高规则的扫描效率,避免做一些无用功。

将多个项目的规则合并到一起,需要考虑规则重复的问题,重复的规则可能会导致执行报错,规则多做了一些重复的扫描工作,包含以下两种情况:

  1. 规则名重复,导致执行YARA扫描报错

对重复的规则名有两种方案,方案一可以对一些规则加上命名空间,方案二需要找出重复的规则名,删除重复的规则。我们采用了方案二的解决方式,编写脚本对重复的规则进行删除,因为方案一虽然不产生报错,但是重复的规则还是会造成一些不必要的扫描、内存空间占用等问题。

  1. 规则名不完全相同,但是规则内容相同,导致规则冗余,降低扫描效率。

这里我们通过提取规则的strings与condition部分,分别进行排序及相似度比较。对于相似度较高的规则,进行人工确认,删除目的或者意图相同的规则。

3.2 分类

处理好规则合并问题后,可以对规则进行分类、分级进行更精细化的规则管理,再根据自身的需求,选择需要的规则类型。以下提供两种比较实用的分类方式:

  1. 按照操作系统分类:Linux实际不会运行Windows程序,Windows也不会运行Linux的程序。因此如果不需要支持跨平台的扫描,可以按系统进行分类,各个系统只需要使用对应的规则即可,从而提升性能,减少不必要的运算。对于部分通用性规则,比如对一些域名、协议的检测,单独设立通用类型,附加到各个操作系统的规则下。

按照规则的通用性分类:有些规则通用性较强,检测一些可疑行为,比如对敏感函数的调用、加壳特征、反调试、反虚拟机等,但是也会产生一定的误报率。而有些规则则是专门针对特定的病毒类型,准确率较高、误报率较低,但是通用性较差,可能病毒变种后就绕过检测了,另外这些规则的数量会很大,需要消耗更多的资源。此部分的分类则需要根据实际的使用场景去选择规则类型。比如一个普遍的场景,我们可以选择通用规则特征+流行病毒特征的组合,比如挖矿、勒索、DDoS等。

3.3 筛选

完成对规则的合并分类管理后,可以对规则的检测效果进行筛选,主要目的是通过测试数据筛选掉高误报的规则或者匹配率极低的规则。

  1. 通过对干净的操作系统进行扫描,如果有规则匹配次数较多,则说明规则通用性太强,虽然病毒经常调用,但是系统文件也经常调用,不具备很好的区分度。

如图所示,通过对系统文件的扫描数据分析,suspicious_DebuggerCheck_QueryInfo、suspicious_win_token、suspicious_ShellExecute、suspicious_CreateProcess、suspicious_keylogger等特征误报率较高,如果引用会导致大量系统规则命中规则,因此可以进行移除。

  1. 有条件的情况下,可以对常用软件进行扫描,筛选误报较高的规则,但是需要注意一些知名软件会有一些流氓行为,许多杀软会判定成广告软件、流氓软件的特征。最好先使用杀软对样本先进行一轮清洗,剔除杀软会报毒的样本。
  2. 如果有足够的病毒样本,可以对病毒样本进
  3. 行扫描,对扫描结果进行分析,对规则的匹配率进行排行,需要优化性能的场景下,可以删除掉一些低匹配率的规则。

3.4 运营

后续对规则进行线上运营的过程中主要需要对线上出现的高误报规则进行优化以及加入应急响应、安全运营过程中编写的新的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多个国家和地区。公司始终致力于提升用户的数字化体验,满足用户随时随地、安全、可靠的数据处理及交互需求。


文章来源: https://www.aqniu.com/vendor/105419.html
如有侵权请联系:admin#unsafe.sh