如何使用 YARA 进行高级恶意软件检测

最后更新: 01/12/2025

  • YARA 允许使用基于字符串、二进制模式和文件属性的灵活规则来描述恶意软件家族。
  • 精心设计的规则可以跨多个环境检测从勒索软件和 APT 到 webshel​​l 和零日漏洞利用等各种威胁。
  • 将 YARA 集成到备份、取证工作流程和企业工具中,可以增强防御能力,超越传统的防病毒软件。
  • YARA 社区和规则库使得情报共享和持续改进检测变得容易。

如何使用 YARA 进行高级恶意软件检测

¿如何使用YARA进行高级恶意软件检测? 当传统杀毒软件达到极限,攻击者能够突破所有可能的漏洞时,一种在事件响应实验室中变得不可或缺的工具就派上了用场: YARA,恶意软件猎杀的“瑞士军刀”它旨在利用文本和二进制模式描述恶意软件家族,其功能远远超出简单的哈希匹配。

在合适的人手中,YARA 不仅仅用于定位 不仅包括已知的恶意软件样本,还包括新的变种、零日漏洞,甚至是商业攻击工具。在本文中,我们将深入探讨如何使用 YARA 进行高级恶意软件检测,如何编写强大的规则,如何测试这些规则,如何将它们集成到 Veeam 等平台或您自己的分析工作流程中,以及专业社区遵循的最佳实践。

YARA是什么?为什么它在检测恶意软件方面如此强大?

YARA 代表“又一个递归缩写词”,它已成为威胁分析领域的实际标准,因为 它允许使用易读、清晰且高度灵活的规则来描述恶意软件家族。YARA 不依赖于静态的防病毒特征码,而是使用您自己定义的模式。

基本思路很简单:YARA 规则检查文件(或内存或数据流),并检查一系列条件是否得到满足。 基于文本字符串、十六进制序列、正则表达式或文件属性的条件如果满足条件,则表示“匹配成功”,您可以发出警报、阻止或进行更深入的分析。

这种方法允许安全团队 识别并分类各种类型的恶意软件:经典病毒、蠕虫、木马、勒索软件、WebShell、加密货币挖矿程序、恶意宏等等。它不局限于特定的文件扩展名或格式,因此它还可以检测带有 .pdf 扩展名的伪装可执行文件或包含 webshel​​l 的 HTML 文件。

此外,YARA 已集成到网络安全生态系统的许多关键服务和工具中: VirusTotal、Cuckoo 等沙箱、Veeam 等备份平台,或顶级厂商提供的威胁狩猎解决方案因此,掌握 YARA 几乎已成为高级分析师和研究人员的必备技能。

YARA在恶意软件检测中的高级应用案例

YARA 的优势之一在于它能够像手套一样适应多种安全场景,从安全运营中心 (SOC) 到恶意软件实验室。 同样的规则适用于一次性狩猎和持续监测。.

最直接的情况涉及创建 针对特定恶意软件或整个恶意软件家族的特定规则如果您的组织正遭受基于已知家族(例如远程访问木马或 APT 威胁)的攻击活动,您可以分析特征字符串和模式,并制定规则以快速识别新的相关样本。

另一个经典用途是作为焦点 YARA 基于签名这些规则旨在查找哈希值、非常特定的文本字符串、代码片段、注册表项,甚至是同一恶意软件多个变种中重复出现的特定字节序列。但是,请记住,如果您只搜索无关紧要的字符串,则可能会产生误报。

YARA在按以下方式筛选方面也表现出色: 文件类型或结构特征通过将字符串与文件大小、特定标头(例如,PE 可执行文件的 0x5A4D)或可疑函数导入等属性相结合,可以创建适用于 PE 可执行文件、办公文档、PDF 或几乎任何格式的规则。

在现代环境中,它的使用与以下方面相关: 威胁情报公共存储库、研究报告和 IOC 数据源会被转换为 YARA 规则,并集成到 SIEM、EDR、备份平台或沙箱中。这使得组织能够: 快速检测与已分析的攻击活动具有相似特征的新兴威胁。.

理解YARA规则的语法

YARA 的语法与 C 语言非常相似,但更简单、更专注。 每条规则都包含一个名称、一个可选的元数据部分、一个字符串部分,以及一个必不可少的条件部分。从现在开始,力量就取决于你如何将所有这些结合起来。

首先是 规则名称它必须紧跟在关键词之后。 排除 (o 规则 如果您用西班牙语编写文档,尽管文件中的关键词将是 排除必须是有效的标识符:不能包含空格、数字或下划线。最好遵循明确的约定,例如: 恶意软件家族变种 o APT_Actor_Tool这样,你就能一眼看出它要检测的是什么。

独家内容 - 点击这里  采取了哪些安全措施来保护 Alexa 用户的隐私?

接下来是该部分 字符串在这里,您可以定义要搜索的模式。您可以使用以下三种主要类型: 文本字符串、十六进制序列和正则表达式文本字符串非常适合用于人类可读的代码片段、URL、内部消息、路径名或PDB文件。十六进制数允许您捕获原始字节模式,这在代码混淆但保留某些常量序列时非常有用。

当您需要处理字符串中的细微变化时,例如更改域或稍微更改代码部分,正则表达式可以提供灵活性。 此外,字符串和正则表达式都允许使用转义字符来表示任意字节。这就为非常精确的混合模式打开了大门。

部分 流程条件 这是唯一必填项,它定义了何时认为规则“匹配”了一个文件。您可以在这里使用布尔运算和算术运算(和、或、非、+、-、*、/、任何、所有、包含等。)表达比简单的“如果出现此字符串”更精细的检测逻辑。

例如,您可以指定规则仅在文件小于特定大小、所有关键字符串都出现或至少存在几个字符串中的一个时才有效。 您还可以组合使用字符串长度、匹配项数量、文件中的特定偏移量或文件本身的大小等条件。在这里,创造力决定了通用规则和精准检测之间的区别。

最后,还有可选部分。 目标非常适合记录这段时期。通常会包括 作者、创建日期、描述、内部版本、报告或工单参考信息 一般来说,任何有助于保持存储库的组织性和易于其他分析师理解的信息。

YARA 高级规则的实际示例

为了更好地理解以上所有内容,了解一个简单的规则是如何构建的,以及当可执行文件、可疑的导入或重复的指令序列出现时,规则是如何变得更加复杂的,是很有帮助的。 我们先从玩具尺开始,然后逐渐增大尺子的尺寸。.

一条最简规则可以只包含一个字符串和一个强制执行的条件。例如,您可以搜索特定的文本字符串或代表恶意软件片段的字节序列。 在这种情况下,条件只需说明如果出现该字符串或模式,则满足该规则即可。无需进一步筛选。

然而,在现实世界中,这种方法却行不通,因为 简单的连锁反应往往会产生很多假阳性结果。因此,通常会将多个字符串(文本和十六进制)与附加限制结合起来:例如,文件大小不得超过一定限度,必须包含特定标头,或者只有找到每个已定义组中的至少一个字符串时才能激活。

PE 可执行文件分析中的一个典型例子是导入模块。 pe YARA 允许您查询二进制文件的内部属性:导入的函数、节、时间戳等。高级规则可能要求文件导入 CreateProcess的内核32.dll 以及一些来自 HTTP 函数 wininet.dll此外,还包含一个指示恶意行为的特定字符串。

这种逻辑非常适合用于定位 具有远程连接或数据窃取能力的木马程序即使文件名或路径在不同活动之间发生变化,也应关注底层行为:流程创建、HTTP 请求、加密、持久化等等。

另一种非常有效的技巧是观察…… 重复的指令序列 同一系列样本之间存在差异。即使攻击者对二进制文件进行打包或混淆,他们通常也会重用难以修改的代码部分。如果在静态分析后发现恒定的指令块,则可以制定一条规则。 十六进制字符串中的通配符 既能捕捉到这种模式,又能保持一定的容差。

借助这些“基于代码行为”的规则,这是可能的。 追踪整个恶意软件攻击活动,例如 PlugX/Korplug 或其他 APT 家族的攻击活动。你不仅要检测特定的哈希值,还要追踪攻击者的开发风格。

在实际攻击活动和零日威胁中使用 YARA

YARA 尤其在高级威胁和零日漏洞利用领域证明了自己的价值,因为传统的保护机制往往来得太晚。 一个著名的例子是利用 YARA 从极少的泄露情报中定位 Silverlight 中的漏洞。.

在这种情况下,从一家专门开发攻击性工具的公司窃取的电子邮件中,推断出了足够的模式,从而构建了一个针对特定漏洞的规则。 凭借这一条规则,研究人员得以在一大堆可疑文件中追踪到样本。找出漏洞并强制修复,以防止造成更严重的损害。

这类故事说明了YARA如何发挥作用 在文件海洋中撒网想象一下,你的企业网络就像一片充满各种“鱼”(文件)的海洋。你的规则就像拖网里的各个隔间:每个隔间都用来存放符合特定特征的“鱼”。

独家内容 - 点击这里  什么是隐藏的 Windows 分区?什么时候可以删除它们而不破坏系统?

拖拽结束后,你就拥有 按与特定攻击家族或群体相似度分组的样本例如:“类似于物种 X”、“类似于物种 Y”等等。其中一些样本对您来说可能是全新的(新的二进制文件、新的活动),但它们符合已知的模式,这可以加快您的分类和响应速度。

为了在此背景下最大限度地发挥 YARA 的作用,许多组织会结合使用以下方法: 高级培训、实践实验室和受控实验环境有一些高度专业化的课程专门讲授编写良好规则的艺术,这些课程通常以真实的网络间谍案例为基础,学生们通过真实的样本进行练习,并学习即使在不知道自己要找什么的情况下也要搜索“某些东西”。

将 YARA 集成到备份和恢复平台中

YARA 非常适合的一个领域,也是经常被忽视的领域,就是备份保护。 如果备份文件感染了恶意软件或勒索软件,恢复操作可能会重新启动整个攻击活动。这就是为什么一些制造商将YARA发动机直接集成到他们的解决方案中的原因。

下一代备份平台可以启动 YARA 基于规则的还原点分析会话目标有两个:一是找到事件发生前的最后一个“干净”点,二是检测隐藏在文件中的恶意内容,这些内容可能没有被其他检查触发。

在这些环境下,典型的流程包括选择“使用 YARA 尺子扫描恢复点“在配置分析作业期间,接下来需要指定规则文件的路径(通常带有 .yara 或 .yar 扩展名),该文件通常存储在特定于备份解决方案的配置文件夹中。”

在执行过程中,引擎会遍历副本中包含的对象,应用规则,并且 它会将所有匹配结果记录在特定的 YARA 分析日志中。管理员可以从控制台查看这些日志,查看统计信息,查看哪些文件触发了警报,甚至可以追踪每个匹配项对应的机器和具体日期。

这种整合还辅以其他机制,例如: 异常检测、备份大小监控、搜索特定入侵指标或分析可疑工具但对于针对特定勒索软件家族或攻击活动的规则,YARA 是优化搜索的最佳工具。

如何在不破坏网络的情况下测试和验证 YARA 规则

Android的恶意软件

一旦你开始编写自己的规则,下一个关键步骤就是彻底测试它们。 过于严格的规则可能会产生大量的误报,而过于宽松的规则则可能让真正的威胁漏网。因此,测试阶段与编写阶段同样重要。

好消息是,你无需搭建一个装满可用恶意软件的实验室,也无需感染半个网络就能做到这一点。现有的代码库和数据集已经提供了这些信息。 用于研究目的的已知和受控恶意软件样本您可以将这些示例下载到隔离环境中,并将其用作规则的测试平台。

通常的做法是先在本地命令行运行 YARA,对包含可疑文件的目录进行扫描。 如果你的规则在应该出现问题的地方都能正确执行,并且在干净的文件中几乎没有出错,那么你就走对了路。如果触发次数过多,就需要检查字符串、改进条件或引入其他限制(大小、导入、偏移量等)。

另一个关键点是确保你的规则不会影响性能。在扫描大型目录、完整备份或海量样本集时, 优化不佳的规则会减慢分析速度或消耗比预期更多的资源。因此,建议测量时间,简化复杂表达式,避免使用过于复杂的正则表达式。

通过实验室测试阶段后,您将能够 将规则推广到生产环境无论是在您的安全信息和事件管理 (SIEM) 系统、备份系统、邮件服务器,还是任何您想要集成的地方,都不要忘记保持持续的审查周期:随着营销活动的演变,您的规则需要定期调整。

YARA 的工具、程序和工作流程

识别无文件文件

除了官方二进制文件之外,许多专业人士还围绕 YARA 开发了小型程序和脚本,以方便其日常使用。 一种典型的方法是创建一个应用程序,用于 自行组装安全套件 它会自动读取文件夹中的所有规则,并将它们应用于分析目录。.

这类自制工具通常采用简单的目录结构:一个文件夹用于存放…… 从互联网下载的规则 (例如,“rulesyar”)以及另一个文件夹用于存放 可疑文件将被分析 (例如,“恶意软件”)。程序启动时,会检查这两个文件夹是否存在,在屏幕上列出规则,并准备执行。

当你按下类似这样的按钮时“开始检查然后,该应用程序使用所需的参数启动 YARA 可执行文件:扫描文件夹中的所有文件、递归分析子目录、输出统计信息、打印元数据等。任何匹配项都会显示在结果窗口中,指示哪个文件与哪个规则匹配。

独家内容 - 点击这里  如何修复在线抽奖活动

例如,该工作流程可以检测一批导出电子邮件中的问题。 恶意嵌入图像、危险附件或隐藏在看似无害的文件中的 Webshel​​l企业环境中的许多法证调查正是依赖于这种机制。

在调用 YARA 时,有哪些最有用的参数?以下选项尤为突出: -r 用于递归搜索,-S 用于显示统计信息,-m 用于提取元数据,-w 用于忽略警告通过组合这些标志,您可以根据具体情况调整行为:从对特定目录进行快速分析到对复杂文件夹结构进行完整扫描。

编写和维护 YARA 规则的最佳实践

为防止您的规则库变得难以管理,建议应用一系列最佳实践。 首先,要使用一致的模板和命名规则。这样任何分析师都能一目了然地了解每条规则的作用。

许多团队采用包含以下内容的标准格式: 包含元数据的标头、指示威胁类型、攻击者或平台的标签,以及对检测到的内容的清晰描述。这不仅对内部有帮助,而且当你与社区分享规则或为公共存储库做出贡献时,也会有所帮助。

另一条建议是,要始终记住: YARA 只是又一层防御而已。它并不能取代防病毒软件或EDR,而是作为其策略的补充。 保护您的 Windows 电脑理想情况下,YARA 应该符合更广泛的参考框架,例如 NIST 框架,该框架也涉及资产识别、保护、检测、响应和恢复。

从技术角度来看,值得花时间…… 避免误报这包括避免使用过于通用的字符串、组合多个条件以及使用运算符,例如: 所有的 o 任何 动动脑筋,充分利用文件的结构特性。恶意软件行为的逻辑越具体越好。

最后,保持自律 版本控制和定期审查 这一点至关重要。恶意软件家族不断演变,攻击指标也在不断变化,如今行之有效的规则可能不再适用,甚至过时。定期审查和完善规则集是网络安全这场猫鼠游戏中不可或缺的一部分。

YARA社区及可用资源

YARA 能取得如此成就的主要原因之一是其强大的社区。 来自世界各地的研究人员、安全公司和应急响应团队不断分享规则、示例和文档。创造一个非常丰富的生态系统。

主要参考点是 YARA 在 GitHub 上的官方代码库在那里您可以找到该工具的最新版本、源代码和文档链接。您还可以从那里跟踪项目进度、报告问题或贡献改进意见。

官方文档可在 ReadTheDocs 等平台上获取,其中包含: 完整的语法指南、可用模块、规则示例和使用参考它是利用最先进的功能(例如 PE 检查、ELF、内存规则或与其他工具的集成)的重要资源。

此外,还有YARA规则和签名的社区存储库,世界各地的分析师都可以在其中进行分析。 他们发布现成的合集或可以根据您的需求进行调整的合集。这些存储库通常包含针对特定恶意软件家族、漏洞利用工具包、恶意使用的渗透测试工具、Webshel​​l、加密货币挖矿程序等等的规则。

与此同时,许多制造商和研究机构提供 YARA提供从基础到高级的专项培训课程这些举措通常包括虚拟实验室和基于真实场景的实践练习。有些甚至免费提供给非营利组织或特别容易遭受定向攻击的机构。

整个生态系统意味着,只要稍加投入,你就可以从编写最初的基本规则开始…… 开发能够追踪复杂活动并检测前所未有的威胁的复杂系统通过将 YARA 与传统防病毒软件、安全备份和威胁情报相结合,可以大大增加在互联网上游荡的恶意行为者的作案难度。

综上所述,YARA 不仅仅是一个简单的命令行实用程序:它还是一个 关键件 在任何高级恶意软件检测策略中,一个能够适应分析师思维方式的灵活工具都至关重要。 通用语言 它将世界各地的实验室、安全运营中心和研究社区联系起来,使每一项新规则都能增加一层保护,以抵御日益复杂的攻击。

如何在 Windows 11 中检测危险的无文件恶意软件
相关文章:
如何在 Windows 11 中检测危险的无文件恶意软件