最新消息:

谷歌利用生成式AI实现自动化恶意软件逆向工程分析

置顶文章 admin 497浏览 0评论

|编者案语

这篇文章探讨了生成式人工智能技术在自动化恶意软件分析领域取得的重大进展。传统的静态分析、动态分析和机器学习方法在应对日益复杂的恶意软件时存在局限性。而先进的生成式人工智能模型展现了作为恶意软件分析助手的巨大潜力,尤其是在逆向工程领域。

文章重点介绍了一款名为 Gemini 1.5 Pro 的工具,它能够处理多达100万个 token,实现了对完整的反编译和反汇编代码进行全面分析。通过案例研究,包括分析臭名昭著的 WannaCry 勒索软件、未知恶意软件和零日漏洞,展示了该工具在精准分析和检测恶意软件方面的卓越能力。

从助手到分析师:Gemini 1.5 Pro在恶意软件分析中的威力

恶意软件的爆炸式增长继续挑战传统的手动分析方法,凸显了改进自动化和创新方法的迫切需求。生成式人工智能(Generative AI,简称 Gen AI)模型在恶意软件分析的某些方面已变得不可或缺,然而,它们在处理大型复杂恶意软件样本方面的效力有限。Gemini 1.5 Pro 的推出,能够处理高达100万个 token,标志着一个重大突破。这一进展不仅赋予了人工智能作为强大助手自动化恶意软件分析工作流程的能力,而且显著提升了代码分析自动化的规模。通过大幅增加处理能力,Gemini 1.5 Pro为网络安全开辟了一种更加适应性强、更加稳健的方法,帮助分析师更加高效、更加有效地管理不对称的威胁量级。

自动化恶意软件分析的传统技术

自动化恶意软件分析的基础是静态分析和动态分析技术的结合,两者在剖析和理解恶意软件行为方面都扮演着关键角色。静态分析涉及在不执行恶意软件的情况下检查其代码,提供对其代码结构和未经混淆逻辑的洞察。另一方面,动态分析涉及在受控环境中观察恶意软件的执行情况,以监控其行为,而不考虑混淆问题。这些技术被用来全面了解恶意软件。

与这些技术并行,人工智能(AI)和机器学习(Machine Learning,简称ML)越来越多地被用于根据行为模式、特征码和异常情况对恶意软件进行分类和聚类。这些方法从有监督学习(训练模型使用带标签的数据集)到无监督学习(在没有预定义标签的情况下识别模式以对相似恶意软件进行分组)。

尽管技术不断进步,但恶意软件日益增加的复杂性和数量带来了巨大挑战。虽然机器学习增强了对恶意软件变种的检测,但对全新威胁仍然不够充分。这种检测差距使高级攻击得以穿透网络安全防御,危害系统保护。

作为恶意软件分析助手的生成式人工智能

在2023年 RSA 大会上发布的 Code Insight,是利用生成式人工智能进行恶意软件分析的一大进步。作为 Google VirusTotal 平台的一项新功能,它专门分析代码片段并用自然语言生成报告,有效地模仿了恶意软件分析师的方法。Code Insight 最初支持 PowerShell 脚本,后来扩展到其他脚本语言和文件格式,包括 Batch、Shell、VBScript 和 Office 文档。

Code Insight 通过处理代码并生成总结报告,帮助分析师理解代码的行为,识别攻击技术。这包括发现隐藏功能、恶意意图以及可能被传统检测方法忽略的潜在攻击向量。

然而,由于大型语言模型(Large Language Models,简称LLMs)固有的局限性和输入 token 数量有限,Code Insight 能够处理的文件大小受到限制。尽管不断改进以提高最大文件大小限制并支持更多格式,但分析二进制文件和可执行文件仍然是一个重大挑战。当这些文件被反汇编或反编译时,其代码大小通常超出了当时可用的大型语言模型的处理能力。因此,生成式人工智能模型主要作为人类分析师的助手,能够分析二进制文件中的特定代码片段,而不是处理整个代码,因为整个代码对于这些模型来说通常过于庞大。

逆向工程:恶意软件分析的人性一面

逆向工程可以说是网络安全专业人士可用的最先进的恶意软件分析技术。这个过程涉及对恶意软件的二进制文件进行反汇编,并对代码进行细致入微的检查。通过逆向工程,分析师可以发现恶意软件的确切功能,了解其执行流程。然而,这种方法也存在挑战。它需要大量时间、深厚的专业知识以及分析思维来解释每个指令、数据结构和函数调用,从而重构恶意软件的逻辑并发现其秘密。

此外,扩大逆向工程工作规模也是一个重大挑战。这一领域专业人才的稀缺加剧了大规模开展这些分析的难度。鉴于逆向工程的复杂性和耗时性,网络安全界一直在寻求方法来增强这一过程,使其更加高效、更易于操作。

Gemini 1.5 Pro:恶意软件分析的可扩展逆向工程

处理高达100万个 token 的提示的能力,使恶意软件分析,特别是逆向工程领域,实现了质的飞跃。这一进展最终将生成式人工智能的力量带到了二进制文件和可执行文件的分析中,这项任务此前由于其复杂性而留给了高技能的人类分析师。

Gemini 1.5 Pro 是如何实现这一点的?

增强的容量:凭借扩大的 token 限制,Gemini 1.5 Pro 可以一次性完整分析某些反汇编或反编译后的可执行文件,无需将代码分解为更小的片段。这一点至关重要,因为分割代码可能导致上下文丢失以及程序不同部分之间的重要关联。在只分析小片段时,很难理解恶意软件的整体功能和行为,可能错过对其目的和操作的关键见解。通过一次性分析整个代码,Gemini 1.5 Pro 全面理解恶意软件,从而进行更准确、更全面的分析。

代码解释:Gemini 1.5 Pro 可以解释代码的意图和目的,而不仅仅是识别模式或相似性。这归功于它在大量代码数据集上的训练,涵盖了各种架构的汇编语言、高级语言(如C语言)以及反编译器生成的伪代码。这个广泛的知识库,再加上它对操作系统、网络和网络安全原理的理解,使 Gemini 1.5 Pro 能够有效地模仿恶意软件分析师的推理和判断。因此,即使对于从未见过的威胁,它也能预测恶意软件的行为并提供宝贵的见解。有关更多信息,请参阅本文后面的零日案例研究部分。

详细分析:Gemini 1.5 Pro 可以用人类可读的语言生成总结报告,使分析过程更加易于理解和高效。这远远超出了传统机器学习算法在分类和聚类方面通常提供的简单判定。Gemini 1.5 Pro 的报告可以包括有关恶意软件功能、行为和潜在攻击向量的详细信息,以及可用于提供其他安全系统并改善威胁检测和防范能力的危害指标(Indicators of Compromise,简称IOCs)。

让我们探讨一个实际案例研究,以检验 Gemini 1.5 Pro 在分析具有代表性的恶意软件样本的反编译代码方面的表现。我们使用 Hex-Rays 反编译器自动处理了两个 WannaCry 二进制文件,没有添加任何注释或额外上下文。这种方法产生了两个 C 代码文件,一个是 268 KB,另一个是 231 KB,合计超过 280,000 个 token 供大型语言模型处理。

在使用其他类似的生成式人工智能工具进行测试时,我们面临着必须将代码分割成块的问题。这种分割通常会影响分析的全面性,导致结果模糊不清、缺乏针对性。这些局限性凸显了在复杂代码基础上使用此类工具的挑战。

然而,Gemini 1.5 Pro 标志着对这些限制的重大突破。它在一次传递中处理整个反编译代码,只需34秒即可完成分析。Gemini 1.5 Pro 提供的初始总结非常准确,展示了它无缝、有效处理大型复杂数据集的能力:

发出与勒索软件相关的恶意判定

识别一些文件作为 IOC(c.wnry 和 tasksche.exe)

确认使用算法生成 IP 地址,并执行网络扫描,在445/SMB 端口上查找目标,以传播到其他计算机

识别 URL/域名(WannaCry 的”终止开关”)以及相关的注册表项和互斥体

 

虽然看起来 Gemini 1.5 Pro 对 WannaCry 的报告是基于对这种特定恶意软件的预先训练知识,但事实并非如此。分析来自模型独立解释代码的能力。在接下来的例子中,Gemini 1.5 Pro 分析不熟悉的恶意软件样本,展示其广泛的能力,这一点将变得更加清晰。

代码上的大型语言模型:反汇编与反编译

在前面展示 WannaCry 分析的例子中,在将代码提供给大型语言模型之前有一个关键步骤:反编译。这个过程将二进制代码转换为更高级别的表示形式(如C语言),完全自动化,反映了恶意软件分析师在手动剖析恶意软件时采取的初始步骤。但是反汇编代码和反编译代码有什么区别?它如何影响大型语言模型分析?

反汇编:这个过程将二进制代码转换为特定于处理器架构的低级汇编语言。虽然是人类可读的,但汇编代码仍然相当复杂,需要大量专业知识才能理解。它也比原始源代码更长、更重复。

反编译:这个过程试图从二进制文件重建原始源代码。虽然并不总是完美,但与反汇编代码相比,反编译可以显著提高可读性和简洁性。它通过识别高级结构(如函数、循环和变量)来实现这一点,使代码更易于分析师理解。

考虑到这些因素,在使用大型语言模型进行二进制分析时,反编译在效率和可扩展性方面提供了几个优势。反编译产生的更短、更结构化的输出更容易符合大型语言模型的处理限制,从而能够更有效地分析大型或复杂的二进制文件。事实上,反编译器产生的输出比反汇编器产生的输出简洁5到10倍。

反汇编对于执行准确的反编译是必要的,在某些需要详细的低级分析的场景中仍然是一个宝贵的工具。考虑到反编译输出的结构化和高级特性,在某些情况下,反汇编提供了反编译无法比拟的洞察力。

幸运的是,Gemini 1.5 Pro 展示了在处理高级语言和各种架构的汇编方面具有同等能力。因此,我们用于自动化二进制分析的实现可以利用这两种策略,或根据每种情况的具体情况采用混合方法。这种灵活性使我们能够根据所讨论的二进制文件的性质,量身定制分析方法,以优化效率、洞察力深度以及分析的具体目标,无论是剖析程序的逻辑和流程,还是深入研究其低级操作的复杂细节。

接下来,我们将研究一个直接使用反汇编进行分析的案例。这一次,我们处理的是一个更新的未知二进制文件;事实上,提交给 VirusTotal 的可执行文件被70个反病毒引擎中的4个标记为恶意,而且只是一般意义上的标记,没有提供任何关于恶意软件家族的详细信息,这些信息可以为其行为提供进一步的线索。

用 HexRays/IDA Pro 自动预处理后,306.50 KB 的可执行二进制文件产生了一个 1.5 MB 的汇编文件,Gemini 1.5 Pro可以在一次传递中处理,多亏了提示中的大型 token 窗口,只需46秒。这种能力允许分析整个汇编输出,对二进制文件的操作提供详细见解。

这个未知二进制文件的案例展示了 Gemini 1.5 Pro 非凡的能力。尽管在 VirusTotal 上70个反恶意软件引擎中只有4个使用通用特征码将该文件标记为恶意软件,但 Gemini 1.5 Pro 还是将其识别为恶意软件,并详细解释了其判定原因。该文件很可能是一个游戏作弊软件,旨在将游戏修改动态链接库(DLL)注入侠盗猎车手(Grand Theft Auto)游戏进程。”恶意”的定义可能取决于视角:游戏开发者或其专注于反作弊措施的安全团队认为是恶意的,但对某些玩家来说可能是理想的。然而,这种自动化的首轮分析不仅令人印象深刻,而且揭示了二进制文件的性质和意图。

揭示未知:零日检测案例研究

任何恶意软件分析工具的真正考验在于识别传统方法无法检测到的前所未见的威胁,主动保护系统免受零日攻击。在这里,我们研究了一个案例,其中一个可执行文件未被 VirusTotal 上的任何反病毒软件或沙箱检测到。

这个 833 KB 的文件 medui.exe 被反编译为 189,080 个 token,随后由 Gemini 1.5 Pro 在仅仅 27 秒内一次性处理,生成完整的恶意软件分析报告。

这项分析揭示了可疑功能,导致 Gemini 1.5 Pro 发出恶意判定。根据其观察结果,它得出结论,这种恶意软件的主要目标是通过劫持比特币交易并通过禁用安全软件来逃避检测,从而窃取加密货币。

这展示了 Gemini 的能力已经超越了简单的模式匹配或机器学习分类,利用其对代码行为的深刻理解来识别恶意意图,即使是在以前从未见过的威胁中也是如此。这是恶意软件分析领域的重大进展,因为它使我们能够主动检测和应对传统方法可能错过的新出现的威胁。

从助手到分析师

Gemini 1.5 Pro 带来了令人印象深刻的能力,能够分析大量反编译和反汇编代码。它有可能通过提高效率、准确性和应对不断增长的威胁数量的能力,显著改变我们对抗恶意软件的方法。

然而,重要的是要记住,这仅仅是一个开始。虽然 Gemini 1.5 Pro 代表了向前迈出的重要一步,但生成式人工智能领域仍处于起步阶段。要实现真正强大和可靠的自动化恶意软件分析,还需要应对几个挑战:

混淆和打包:恶意软件作者不断开发新技术来混淆其代码并逃避检测。为了应对这一点,不仅需要不断改进生成式人工智能模型,还需要增强分析前对二进制文件的预处理。采用利用各种预处理工具的动态方法可以更有效地解包和反混淆恶意软件。这个准备步骤对于使生成式人工智能模型能够准确分析底层代码至关重要,确保它们跟上不断发展的混淆技术,并在检测和理解复杂恶意软件威胁方面保持有效。

二进制文件大小增加:现代软件的复杂性反映在其二进制文件大小的增长上。这一趋势带来了重大挑战,因为大多数生成式人工智能模型受到更低的 token 窗口限制。相比之下,Gemini 1.5 Pro 通过支持高达100万个 token 而脱颖而出,目前这是该领域已知的最高容量。尽管如此,即使有这种非凡的能力,Gemini 1.5 Pro 在处理特别大的二进制文件时可能会遇到限制。这凸显了人工智能技术需要持续进步,以适应分析不断增大的文件,确保软件复杂性继续增加时全面有效的恶意软件分析。

不断发展的攻击技术:随着攻击者不断创新,制定新方法来绕过安全措施,生成式人工智能模型面临的挑战不仅仅是简单的适应性。这些模型不仅必须学习和识别新的威胁,而且还必须与研究人员和开发人员的努力共同发展。需要设计新方法来自动化威胁数据的预处理,这将丰富提供给人工智能模型的上下文。例如,将静态和动态分析工具(如沙箱报告)的额外数据与反编译和反汇编代码相结合,可以显著增强模型的理解和检测能力。

自动化恶意软件分析规模化的旅程仍在继续,但 Gemini 1.5 Pro 标志着一个重要的里程碑。在马拉加谷歌安全工程中心(GSEC Malaga),我们继续研究和开发在人工智能领域有效应用这些模型的方法,突破网络安全领域的可能性界限,为更安全的数字未来做出贡献。

恶意软件详情

下表包含本文讨论的恶意软件样本的详细信息。

Filename SHA-256 Hash Size First Seen File Type
lhdfrgui.exe (WannaCry dropper) 24d004a104d4d54034dbcffc2a4b19a
11f39008a575aa614ea04703480b1022c
3.55 MB (3723264 bytes) 2017-05-12 Win32 EXE
tasksche.exe (WannaCry cryptor) ed01ebfbc9eb5bbea545af4d01bf5f10
71661840480439c6e5babe8e080e41aa
3.35 MB (3514368 bytes) 2017-05-12 Win32 EXE
EXEC.exe 1917ec456c371778a32bdd74e113b0
7f33208740327c3cfef268898cbe4efbfe
306.50 KB (313856 bytes) 2022-04-18 Win32 EXE
medui.exe 719b44d93ab39b4fe6113825349add
fe5bd411b4d25081916561f9c403599e50
833.50 KB (853504 bytes) 2024-03-27 Win32 EXE

提示词

以下是文章中所有例子使用的确切提示词。唯一的例外是使用”disassembled”(反汇编)而不是”decompiled”(反编译)的例子,因为如前所述,我们使用的是反汇编代码而不是反编译代码,以表明 Gemini 1.5 Pro 可以解释两者。

通过彻底检查这个反编译的可执行代码,扮演一名恶意软件分析师的角色。有条不紊地分解每一步,着重理解底层逻辑和目标。你的任务是撰写一份详细的总结,概括代码的行为,精确定位任何恶意功能。首先给出判定(良性或恶意),然后列出活动清单,包括 URL、创建的文件、注册表条目、互斥锁、网络活动等 IOC 清单(如果有的话)。
Act as a malware analyst by thoroughly examining this decompiled executable code. Methodically break down each step, focusing keenly on understanding the underlying logic and objective. Your task is to craft a detailed summary that encapsulates the code's behavior, pinpointing any malicious functionality. Start with a verdict (Benign or Malicious), then a list of activities including a list of IOCs if any URLs, created files, registry entries, mutex, network activity, etc.

+[attached decompiled.c.txt sample file]

转自:

https://mp.weixin.qq.com/s/QPFU2qhsK8p3_tj7BlFkbA

https://cloud.google.com/blog/topics/threat-intelligence/gemini-for-malware-analysis

 

转载请注明:jinglingshu的博客 » 谷歌利用生成式AI实现自动化恶意软件逆向工程分析

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址