一位安全研究员介绍了如何构建一套自主AI智能体流水线,可在无需人工干预的情况下完成恶意软件的静态分析、逆向工程、情报丰富化及报告生成。
AI translation, not an official translation. Refer to the original for technical details.
Adapted from @fr0gger_# 恶意软件逆向工程不再是人类独有的问题! 我最近就AI时代恶意软件逆向工程与分析的现状发表了一场主题演讲。但我没有从幻灯片开始,而是从沉默开始。 我共享了我的屏幕,启动了我个人的威胁研究流水线,并提交了一个我从未分析过的未知恶意软件样本。然后我继续演讲,仿佛什么都没发生。 在我发言的同时,我的AI智能体团队在后台悄然运作。它们自主地执行静态分析、逆向工程、情报丰富化、关联溯源、YARA规则测试以及报告生成。 大约30分钟后,当我回到演示环节时,分析已经完成。下方截图展示了我的恶意软件分析看板和我的智能体团队。 本文介绍了我如何经过多年实验构建出这样一套系统,以及为何我相信恶意软件逆向工程正在成为一项过时的技能。 免责声明:本文所描述的系统和工具属于我个人研究的一部分,系独立开发完成,不代表我雇主的工作、观点或立场。 ## 这段旅程的起点 首先,介绍一些背景。我是Thomas Roccia,网名 @fr0gger_。我在安全行业工作了超过15年(确切地说是18年)。我的职业生涯始于IT支持,同时从年少时起便在业余时间自学黑客技术和逆向工程。 那个年代,学习黑客技术和逆向工程的资源极为有限。没有YouTube视频,没有在线课程,没有讲座,只有IRC、小型论坛、crackme挑战题以及早期的黑客社区。 想要获取知识,你必须靠自己争取。 我从小就习惯于通过搜索来得到想要的东西,因为不做自己的研究就开口求助是不被接受的。你懂的,就是那种RTFM文化。 几年后,我进入了渗透测试和红队领域的早期阶段,自己编写进攻性工具和脚本。 经过5年的积累并取得计算机科学硕士学位后,我加入了McAfee,在全球范围内从事事件响应工作,调查极为敏感环境中的高风险事件。 在走遍世界3年之后,我转入McAfee Labs,更专注于威胁情报和恶意软件逆向分析,并与执法机构展开合作。 我曾身处一些最重大事件的第一线,例如:NotPetya、Triton、Olympic Destroyer以及SolarWinds,不胜枚举。 2021年,我以恶意软件分析师的身份加入微软,隶属于Microsoft Defender团队。我的职责专注于安全研究、改进检测能力,以及追踪威胁行为者及其操作方式。 在我看来,一名优秀的CTI研究员必须理解该领域的方方面面:如何利用漏洞并进行横向溯源,如何编写自己的工具,如何响应事件并深入分析日志,如何对样本进行逆向并理解整个入侵事件的代码逻辑与操作手法。 逆向工程曾是工作中最艰难的部分:对混淆代码进行还原、识别数据结构、模式和技巧。我乐在其中,因为我喜欢将事物拆解开来,弄懂它们的运作原理。 这是我历经多年艰辛学到的东西。 ## AI在恶意软件分析中真正发挥作用的时刻 在演讲中,我介绍了过去四到五年来我所做的工作,核心是利用 AI 来完成那些我以前手动执行的任务。我很早就开始尝试大型语言模型(LLM)。 有趣的是:我第一次使用 GPT 是在 2018 年,借助的是 GPT-1。当时我用它来生成 YARA 规则,但那时的它远不如现在。经过一周的测试,我决定放弃,因为那时的技术还不够成熟。 我一直对 AI 持怀疑态度,但同时也始终对机器学习能实现什么充满兴趣。于是我学习了机器学习,并将其用于恶意软件相似性分析和恶意软件分类。我从未把机器学习或深度学习称为"AI"。事实上,多年来我刻意回避"AI"这个词,因为在我看来,它不过是营销炒作的代名词。 2022 年,当 ChatGPT 问世时,我看到了一些不同寻常的东西。和所有人一样,我先用它写了几个笑话和诗歌,随后问了自己一个问题:我怎样才能将它用于安全领域? 一周后,我创建了一个名为 IATelligence 的工具。 它非常简单:提取 PE 样本的 IAT,并自动将导入函数映射到 MITRE ATT&CK 矩阵。 这在今天听起来或许微不足道,但在当时却是一个真实存在的难题。这个工具在网络上迅速走红,因为它让人们第一次看到了 LLM 在恶意软件分析中的潜力。 而这仅仅是个开始。 ## Adding Memory and Context to Analysis 几个月后,我尝试将反汇编代码与 GPT 解释结合使用。我将其融入了我的工作流程,与 Capstone 和 Unicorn 配合,专门用于恶意软件分析和代码分析。 我还将 GPT 与 Frida 结合用于二进制插桩。有趣的是:我在 2023 年 2 月的同一个会议上展示了这项工作,而正是在那次会议上,我后来发表了这篇主题演讲。 此后,我开始尝试 RAG——先是嵌入恶意软件分析文档,后来又嵌入反汇编代码。 RAG,即检索增强生成,是一种向模型添加外部数据的方法,但它的价值不止于此。检索机制才是 RAG 真正令人感兴趣的地方。 检索过程允许你根据所提供的信息,检索出最相似或最相关的数据。 这在研究恶意软件时极为有用。例如,你可能希望识别与某种算法(如加密)、某种战术或技术(如持久化或规避),或某种模式(如 IOC)相关的特定片段。 ## When Analysis Became a System Instead of a Task 大约在 2023 年年中,我开始专门针对恶意软件分析和威胁情报尝试使用 Agent。 为此我创建了多个 Agent:一个连接到 Unprotect Project(我创建的用于恶意软件规避技术识别的开放数据库)的 Agent、一个具备解析功能的静态分析 Agent、用于 IOC 提取与富化的 Agent,以及使用 Capstone 专门用于逆向工程的 Agent。(https://unprotect.it/) 我还在 SANS CTI 峰会上展示了其中部分工作,介绍了我的 MSTICPy Agent。 在某个时刻,我决定将所有 Agent 合并为一个统一的系统。到 2023 年底,我已经构建出第一个用于恶意软件分析的多 Agent 系统,极大地加速了我的分析流程。 但当我开始谈论这件事时,得到的反应总是如出一辙:这行不通,永远不会奏效,它也无法取代逆向工程。彼时整个行业甚至还没有开始讨论 AI Agent。 尽管它还不完美,但我知道自己正走在正确的路上。 ## 共享智能体工具链的缺失拼图 2024年,我持续探索AI与智能体技术,通过采用最新模型并测试不同框架(AutoGen、CrewAI、LangChain、LlamaIndex)来完善我的恶意软件分析系统。 在此过程中,我面临的主要问题之一是如何在不同的AI系统之间复用工具。我最终构建了一套插件系统,但这是一种技术门槛较高的方案,若要使用它仍需自行编写工具。 2024年11月,Anthropic发布了MCP(模型上下文协议)。我立刻看到了它的价值所在:它能够实现AI工具的共享,让社区得以复用我已构建的工具。 MCP发布后数周,我为CTI创建了第一个MCP工具,随后又陆续开发了用于静态恶意软件分析的工具以及YARA规则生成工具。 有趣的是:MCP大约在四个月后的2025年3月才引发广泛关注,而彼时我已在自己的流水线中部署了多个MCP服务器。 ## 编程助手实为自主智能体 2025年是AI编程助手爆发之年:Claude Code、Codex、OpenCode等产品相继涌现。然而,许多人忽视了一个关键点——编程助手不仅仅是编程助手。 它们本质上是通用AI智能体。 没错,它们被设计用于编写代码,但同样能够执行代码。 我很快看到了将它们接入我的流水线的机会。我fork了Codex,并为恶意软件分析定制了一个专属版本,命名为MalCodex。与原版的区别在于,MalCodex专为恶意软件分析而生——它与我的逆向工具、CTI API以及虚拟机相连接。而MalCodex本身,也是用Codex编写的。 它为恶意软件分析而生,但从根本上与编程智能体具备相同的能力:可以访问我的虚拟机终端,并执行我在环境中配置的各类工具。 我所新增的,不过是围绕系统提示的设计工作,以及对我原本已在使用的恶意软件分析工具和脚本的接入配置。 效果出奇地好。 我可以对样本进行逆向工程、针对特定片段进行询问、验证输出结果、确认分析准确性,并生成报告——而无需再花费整整一周时间撰写。 ## 将提示词转化为能力 2025年稍晚些时候,智能体技能(agent skills)的概念被引入。 智能体技能是一种更简便的方式,用于为AI智能体加载工具或能力。与MCP相比,主要区别在于:技能在智能体需要时动态加载,从而节省上下文窗口空间;此外,MCP可远程访问,而技能需要下载到本地机器上运行。 智能体技能本质上是Markdown文件,即经过精心设计的提示词,用于引导大语言模型执行特定任务。 但技能远不止于Markdown文件——你可以附加脚本、资源和素材。 这一点至关重要,因为技能的真正价值正在于此。否则,你不过是在加载一段提示词而已。 举个例子:如果你仅用Markdown创建一个YARA规则生成技能,你不过是为大语言模型提供了生成规则的指导方针。然而,如果不对生成的规则进行验证或测试,大语言模型就有可能产出一条无法正常运行的规则。反之,若你附加了用于测试和编译规则的脚本,当生成的规则执行失败时,智能体便可借助内嵌脚本自动完成纠错。 顺便说一句,这项技能是真实存在的。我添加了自己的YARA验证工具,对来自 @cyb3rops 的原始版本进行了改进。 Agent技能之所以强大,是因为你只需一个精心设计的提示词加上几个脚本,就能为你的Agent添加新能力。技能经过专门调优和优化,专为Agent执行而设计。 ## 当AI独自完成分析时 说到这里,我想你可能已经意识到:完全自主的恶意软件逆向工程,现在已经触手可及。 下面让我来解释一下我演示的内容。 我在演讲开始时说了这样一句话: "大家好,我非常高兴来到这里。在开始演讲之前,我会共享我的屏幕,默默地做一件事。我希望大家认真观察我在做什么。" 随后我共享了屏幕,唤醒了我的Agent团队,并给了他们一个我从未分析过的未知样本。 然后我继续进行我的演讲,讲述了我的研究历程以及迄今为止所做的全部研究工作。 演讲结束时(大约30分钟后),我回到了演示环节。我那支专注于恶意软件分析的Agent团队,已经对一个我此前毫无了解的样本完成了完整的调查。 我的团队执行了整个分析流程:我过去手动进行的静态分析(用于提取二进制文件信息)、通过多个CTI工具进行的OSINT情报富化、以最关键函数为重点的完整逆向工程过程、对规避技术和持久化机制的检测、对网络连接的分析、通过特定artifact进行溯源以识别其他攻击活动或相关家族、IOC提取,以及创建完整的关系图——正如我在报告中惯常呈现的那样——以单一清晰的视图呈现样本的完整行为。 系统还生成并测试了YARA规则,将其上传至外部服务进行自动化狩猎,将活动映射至MITRE ATT\&CK框架,给出了处置建议,并将所有内容整合成一份以原始数据为支撑的详细报告。 (完整报告篇幅过长、内容过于详细,无法在此完整呈现。) 所有这一切,只用了大约30分钟。 30分钟。 我可能需要花整整一周时间逆向一个样本,再花一周时间撰写报告,还可能需要数天时间绘制关系图。 30分钟。 ## 我的多Agent恶意软件分析系统是如何运作的 我使用的系统,是我多年来积累的工具库、专为恶意软件分析打造的技能集、针对性能优化而选用的不同模型、一套为分布式上下文传递而设计的多Agent架构,以及一个 @openclaw 网关的综合体。 当我提交一个样本触发恶意软件分析任务板时,主控Agent会创建多个任务,并将工作分配给我搭建的其他专用Agent。 所有任务均由主控Agent明确定义并分配给专项Agent执行。任务之间存在依赖关系,部分任务必须等前置任务完成后才能启动。 当某项任务完成后,负责该任务的Agent会留下一条包含分析结论和观察结果的评论,这些内容随后将用于生成最终报告。 所有任务完成后,系统会自动生成包含全部细节的完整威胁报告。如有需要,我也可以逐一审查各项任务,对分析的特定部分进行验证。 需要明确的是,这套系统在两年前就已经可以实现了。 今天的不同之处在于,模型的可靠性已大幅提升。构建同样的系统,如今所需的工程投入与复杂度大为降低,围绕输出验证的设计工作也明显减少,整体架构与优化流程也更加简洁。 ## Can Autonomous Malware Analysis Be Trusted? 但让我们来谈谈结果本身,因为我已经能预见到有人会说:是的,但"存在幻觉,我们无法信任它,或者它可能会遗漏重要内容"。 在我的演示中,我将智能体团队配置为完全自主运行,无需我介入。然而,如果你查看我的威胁研究流水线,会发现其中有一个"审查"列。 如果我启用人工介入(由我本人操作),每项任务在标记为完成之前都会移至该列,供我进行审查。如果我认为结果不够充分或不够准确,可以留下带有观察意见的评论,智能体将根据我的反馈不断完善分析,直到我满意为止。 好吧,好吧,我仍然能感受到房间后排还有些持怀疑态度的人。如果恶意软件经过加壳或严重混淆,或者是非常罕见的类型,该怎么办?关于提示注入或LLM利用攻击呢?如果我的智能体失控了怎么办? 针对混淆或加壳,我的系统被设计为能够检测并绕过此类情况。如果遇到完全未知或无法解决的情况,这正是人工介入发挥价值的地方。但在绝大多数情况下,智能体都能独立找到解决方案。 对于特别棘手的情况——坦白说,这类情况并不常见——同样的处理方式依然适用。 该系统还被设计为可持续演进。你可以通过技能模块添加自己的工具和知识。 关于幻觉问题,首先,与两年前相比,模型产生幻觉的概率已大幅降低。其次,这正是理解AI系统工作原理变得至关重要的地方。 在没有可见性的情况下运行自主系统,就如同盲目飞行却寄希望于仍在正确航线上。事实并非如此。 你需要清晰地了解智能体的每一个动作:它们使用了哪些技能、调用了哪些工具、获取了哪些资源、执行了哪些提示、生成了哪些代码。 同时,你还需要防护栏。 @HackingLZ 举例提到了Claude中可能破坏流水线的魔法字符串,这是一个合理的担忧,因为恶意软件已经在利用此类规避手段。 我在自己的系统中使用Nova规则来检测此类行为。我可以对其进行标记并发出告警,以识别流水线在何处发生中断。 Nova具有高度的通用性和可定制性,还可用于检测提示注入尝试、绕过技术等更多行为。 到这个阶段,我希望你能看到我所看到的一切。 ## Is This the End of Malware Reverse Engineering? 是,也不是。 首先,如果没有对威胁行为者、恶意软件分析和逆向工程的深入理解,我不可能构建出这样一个可靠的系统。 其次,目前在大约10%的案例中,人工介入仍然是必要的。这种情况会持续多久?可能不会太久。 第三,如果没有一套清晰的系统来监控智能体、保障其安全并维持对其所有行为的可见性,你的系统将始终存在漏洞,无法被信任。我们在此讨论的内容,正是我在培训课程中所教授的核心内容。 我热爱逆向工程。 我用多年的努力和无数个不眠之夜磨砺出这项技能,它成就了我的职业生涯。 理解汇编代码的智识挑战令人深感充实。破解混淆机制、从内存中转储已解包的二进制文件,或揭露样本的真实行为,这种兴奋感令人难以言表。一层层剥开恶意代码,直至洞悉其意图,这个过程有一种深入骨髓的满足感。 然而,这项我历经逾15年磨砺而成的技能,如今正走向没落。即便尚未完全如此,也将在不久之后成为现实。 软件开发的成本若变得低廉,逆向工程亦然。 ## What Malware Analysts Should Do Now 那么,你现在该怎么做?这是你职业生涯的终点吗? 不是。 首先,你仍可以在未来数年内享受传统的恶意软件逆向分析工作。整个行业仍在追赶,而我所演示的系统,现实而言将在一至两年内广泛普及。(我尚未尝试将Codex用于恶意软件分析,但也许会更快。)OpenAI,如果你们正在阅读这篇文章,我很乐意获得一个预览机会 :) 但我们正处于一个过渡期。 如果你还没有开始,现在就应该着手学习这些技术。要快,比以往更快。我至今仍看到有人才刚刚了解什么是MCP或RAG。这个领域的发展正在加速,如果你等待太久,就会被远远甩在身后。 机遇如今在于编排能力、这些系统的架构设计,以及我们所讨论的安全与监控领域。 这是一个全新的领域,而我们正在奠定其安全基础。 ## Stop Waiting. Start Building. 当然,谈及这个话题,我不得不提到我的培训课程"Practical GenAI for CTI"。(https://securitybreak.io/training-genai) 本文所描述的一切,正是我们在培训中构建的系统类型。 在我的 @BlackHatEvents 培训中,其中一个核心实验专注于从零开始构建一个多智能体恶意软件分析系统。你将学习智能体如何协作、任务如何编排、分析流水线如何构建,以及如何围绕自主工作流添加监控与安全机制。 其目标是真正理解这些系统的运作方式,从而能够自主构建并加以调整。 如果你想跟上这个领域的发展方向,这门培训将为你提供从今天起就能付诸实践的工具与知识。 所以现在你面临一个选择:你可以等到这些系统成为行业标配,或者从今天起就开始构建它们。🤓 感谢阅读,我相信这篇文章将引发讨论。这正是它的目的所在。