《二进制安全新风向:AI大语言模型协助未知威胁检测与逆向分析》
-
作者:火绒安全
-
发布时间:2025-12-19
-
阅读量:381
【一】 引言
二进制安全的未来,注定是人与AI的协同进化。当攻击方开始尝试利用AI生成变种,防御方绝不能停留在手工时代。火绒安全正致力于将前沿人工智能深度融入安全分析的毛细血管,从根本上重塑攻防平衡。面对这座由混淆代码筑起的高墙,我们选择了一条更艰难但正确的路——将符号执行的路径探索能力与大模型的代码理解天赋相结合。
恶意软件的猫鼠游戏
在当前的网络环境中,恶意软件和病毒变种不断涌现,为安全研究与病毒分析工作带来了严峻的挑战。这些恶意软件为对抗分析,会运用包括数据加密与压缩、代码变异、虚拟化等多种保护策略,以隐匿自身的真实意图。
不存在的"万能钥匙"
那么,人类能不能开发一个通用工具来破解所有恶意软件呢?答案是否定的。就像物理学中不存在永动机一样,在二进制分析领域同样也不可能存在完美的"分析机"。
此现象背后具备坚实的数学理论依据。1953年,计算机科学家亨利·戈登·莱斯提出了莱斯定理。该定理证实:针对图灵机(或与之等价的程序)的任何非平凡语义性质,均不存在通用的判定算法。
具体来说,我们无法设计出一个通用算法来判定任意程序是否具有某个有意义的语义特性——比如"是否会陷入死循环"、"是否访问特定内存"、"这段代码的功能是什么"等问题。几乎每个计算机专业的学生都接触过“停机问题”,这属于算理论的根本限制,而非技术水平的问题。
自动化分析的持续探索
尽管存在理论层面的限制,但这并不表明恶意软件的自动化分析不可行。安全研究人员始终致力于探索如何最大程度地提升自动化分析的能力。在过去的研究中,我们开发了模式匹配、语义分析、符号执行、沙箱分析等多种技术手段。这些方法的共同目标是尽可能多地探索程序中不同的执行路径,还原程序的真实行为序列。
最棘手的问题
然而,一个核心问题始终困扰着恶意代码分析领域:如何进入那些需要特定输入才能触发的代码路径?
恶意软件常用的反调试、反沙箱技术,本质上都是在检测外部环境是否符合其预期。根据结构化程序理论,顺序、条件、循环构成了程序控制流的基础。分析程序的过程,实际上就是在探索各个条件分支背后的执行逻辑——我们需要为程序提供不同的输入,观察它产生的输出,进而依据这些输出行为所呈现的恶意特征来判定程序的性质。
在过去,安全人员主要依靠经验来人工识别程序所需的输入条件,然后构造相应的数据。无论是反反调试还是反反虚拟机,本质上都是分析人员先识别出程序的期望输入,再设法满足这些条件,使程序能够继续执行,从而暴露更多的行为特征。
火绒的虚拟沙盒技术
我们的"虚拟沙盒"技术能够构建高仿真度的虚拟系统环境,让恶意软件认为自身运行在真实的用户系统中,其各种环境检测都能获得符合预期的反馈。通过这种方式,我们能在有限时间内还原尽可能多的病毒核心特征,实现高效的威胁识别和查杀。
这项技术使火绒反病毒引擎在实现精准查杀和全面防御的同时,也保证了用户的良好使用体验。
大模型带来的新可能
人工智能技术的进步为我们提供了全新的解决思路。代码从本质上来说属于一种形式化的语言,故而语言大模型在代码理解与处理方面呈现出独特的优势。由AI辅助的正向开发已得到广泛应用,在逆向分析领域,人工智能同样能够发挥重要作用。正向开发着重于代码创造,而逆向分析则聚焦于代码理解,这正是大模型所擅长的领域。
接下来的内容
在之前的技术文章中,我们分享了代码追踪工具和技术的应用实践。本文将继续深入探讨代码追踪技术并重点介绍代码追踪技术与大语言模型的结合如何加速逆向分析流程,并梳理当前大模型在逆向工程领域的几个前沿应用方向。
让我们共同探寻传统安全技术与前沿人工智能技术的融合路径,审视技术创新如何助力我们更为高效地应对日趋复杂的安全挑战。
本文将从近期一款比较有代表性的银狐病毒变种样本开始展开。该样本伪装为翻译软件安装包,通过加密、加壳等多种手段隐藏多阶段载荷;部分代码通过代码混淆、控制流平坦化的方式防止分析;并连续释放多个驱动程序实现杀毒软件对抗,进程、连接隐藏等目的。
针对该样本,友商已出具较为详尽的分析报告。本文主要通过对其分析的过程引出将要介绍的最新分析技术。
SHA1: 3A0A98CA25A7BDF8E98BCCFBA2E018E04078AEB8
【二】 静态分析
该样本是由INNO SETUP打包的安装包程序,通过火绒引擎我们可以将其完整解包,提取出其包含的所有内容。

引擎解包INNO SETUP
样本运行后会释放"funzip.exe"用于解压携带病毒的加密压缩包,压缩包中包括原本的软件压缩包和病毒本体"men.exe"文件。
其中病毒本体"men.exe"使用了UPX加壳,火绒引擎支持直接解包UPX。
接下来可以将该样本输入大模型进行分析,具体来说,我们首先从程序所有可能的入口点(TLS回调、真实入口点、导出函数等)处对程序基于算法生成调用关系图,然后对所有函数进行大模型分析,生成包含函数作用的名称和介绍。
无论函数之间的调用关系有多错综复杂,我们都可以使用大模型的能力去伪存真,得到程序的真实目的。

程序函数调用大模型分析关系图
首先,将分析得到的所有信息输出为文字表格,更适合语言大模型处理。

分析信息导出表格
将得到的分析结果经过算法去重和摘要后输入大模型,得到信息:

大模型分析结果图
此时,在无人工介入的情况下,我们已经成功通过大模型技术从静态分析的角度对样本进行了准确分析和分类。
【三】 符号执行
1. 样本类型判别
符号执行的概念最早由James C. King在1976年发表的论文《Symbolic Execution and Program Testing》(符号执行与程序测试)中正式提出。该方法的核心要义在于,运用符号值取代程序的具体输入值,以此模拟程序的执行过程,进而系统性地探寻程序的多条可能执行路径。
具体来说,符号执行引擎会维护一个符号状态和路径约束集合。当程序遇到条件分支时,引擎会同时探索不同的分支方向,并为每个分支添加相应的路径约束。通过约束求解器(如Z3、STP等)求解这些约束条件,我们可以生成触发特定执行路径的具体输入值。这种技术在漏洞挖掘、自动化测试用例生成以及恶意代码行为分析等领域都有广泛应用。
然而,符号执行也面临路径爆炸问题——程序的可能执行路径数量随着分支数量呈指数级增长。为此,研究者们发展出了混合执行(Concolic Execution)等优化技术,通过结合具体执行和符号执行来缓解这一问题。
火绒安全实验室始终关注终端安全的前沿领域,今天绒绒就带大家看看火绒工程师通过符号执行的方式如何分析该样本中被高度混淆的载荷"NVIDIA.exe"。

程序IDA分析结果
首先我们对样本进行符号执行分析,从而得到样本的逻辑执行流图。

符号执行分析程序图

符号执行分析结果图
在逻辑执行流图中,我们可以观察到错综复杂的信息,其中最关键的信息为:API调用记录,实际执行未覆盖的分支,程序执行的关键节点。

符号执行图片说明
通过将符号执行得到的数据输入大模型分析,可以得到对该样本的判别信息。

大模型分析结果图
2. 大模型辅助逆向
① 局部控制流分析
于逆向分析过程中,针对局部代码开展精细化分析亦为难点所在。借助符号执行技术,我们不仅能够对程序实施指令级别的追踪,还能够提取出我们所关注的关键代码,并结合大模型能力开展辅助分析。
直接将追踪代码输入大模型分析的方式已经在业界中较为常见,我们开创性的将高信息密度的程序流图输入多模态大模型中,取得了十分理想的代码分析效果。

大模型分析程序流图
② 类时间旅行调试
同时,我们通过内部开发的基于模拟执行原理的调试器,可以对程序进行类时间旅行调试,在选择任意路径上的节点后,调试器会自动执行到程序位于该节点时的状态。

调试到分支处
【四】 虚拟化保护壳分析
1. 代码符号化流图
基于虚拟化的代码保护技术是逆向分析领域公认的难题之一。当程序被虚拟化壳保护后,会产生以下显著特征:代码体积呈几何级数膨胀,原始的汇编指令集被转换为VM虚拟机专有的指令集。这种转换机制使得传统的静态分析和动态调试方法面临巨大挑战,分析难度呈指数级上升。
然而,通过将符号执行技术与大语言模型相结合,我们可以构建一套高效的分析框架,显著提升对虚拟化保护代码的理解能力。这种创新方法能够帮助逆向工程师快速穿透虚拟化保护层,还原程序的核心逻辑。
下面,我们将通过一个具体的C++ 程序示例,演示如何运用这一方法来分析经VMP虚拟化保护的程序:

将要被保护的C++ 程序源码
该程序模拟了实际逆向工程中常见的密码验证场景。程序接收用户输入的密码数据,并将其与内置的预设密码进行比对:若匹配成功则验证通过,否则验证失败。

VMP虚拟化保护前后的执行流图变化
该程序被保护前的符号执行流图如下:

虚拟化保护前的执行流图
该程序被保护后的符号执行流图如下:

虚拟化保护后的执行流图
通过对虚拟化保护程序进行控制流分析,我们可以从生成的控制流图中观察到一个典型特征:被混淆后的程序呈现出明显的双枢纽结构。其中一个枢纽节点即为虚拟机的指令分发核心(VMHandler),它负责解释并分发虚拟化后的指令序列,是整个虚拟机执行引擎的调度中心。
2. Handler大模型自动分析
从识别出的VMHandler中提取特定执行路径的代码后,可以将这些代码片段输入大语言模型进行自动化分析。通过语义理解和模式识别,模型能够推断出该路径可能对应的虚拟指令类型、功能作用以及合理的符号命名,从而显著提升逆向分析的效率。

大模型分析VMHandler结果
通过自动化提取VMHandler的执行逻辑并将其输入大语言模型进行分析,能够显著提升逆向工程师理解虚拟机指令集的效率。这种方法不仅加速了手工分析流程,还可以实现对虚拟化保护程序的半自动化语义还原,即使在指令集未完全明确的情况下,也能快速理解程序行为。

大模型分析多个VMHandler结果
【五】 指导执行
但是符号执行解决的只是是否进入特定执行路径的问题,针对那些需要特定输入的路径,比如必须输入"password"才能执行的,且后续还会用输入内容进行相关运算的路径,该如何解决呢?
我们发现了一种具有创新性的“指导执行”方法,该方法借助大模型在每条分支路径上识别当前程序所处的状况,以及判断进入下一步更为适宜的状态。
在这种执行模式下,大模型成为了我们的虚拟沙盒自动化分析程序时的"领路人",帮助沙盒走向只有满足特定条件才能进入的路径。

大模型指导执行
【六】 深度学习:符号执行数据集
尽管上述内容较为广泛地运用了大模型技术,但鉴于每日均有大量新的恶意样本产生这一事实,业内专家始终在探寻更为精准的启发式判别恶意样本的方法。基于深度学习的恶意样本判别速度相较于大模型更快,能力也更具专业性。火绒安全软件中的高级启发式扫描功能目前所采用的便是深度学习技术。
目前针对二进制恶意文件公开的深度学习数据集主要聚焦于采集PE结构信息(如区段表、导入表、导出表等),API调用序列,沙箱执行分析报告等。
我们计划尝试使用符号执行的方式自动探索二进制文件执行路径,将符号执行获得的路径信息、约束条件、状态转换等深度特征纳入训练数据集,有望显著提升深度学习模型对二进制样本的分类准确率和泛化能力,为恶意软件检测技术开辟新的发展路径。

数据集对比图
【七】 大模型挖掘BYOVD
BYOVD(Bring Your Own Vulnerable Driver)是一种典型的对抗性技术。其核心手段是攻击者主动将存在漏洞的合法驱动程序引入目标系统,并利用该驱动的缺陷执行恶意操作。这些驱动通常来源于两类高风险途径:自身存在漏洞但具备有效签名的正常驱动和通过泄露等非法渠道获取合法签名证书的恶意驱动。
由于这些驱动携带有效的数字签名,它们往往能够借助安全机制对“合法签名”的固有信任,绕过常规安全检测,形成显著的安全盲区。当前,大量驱动程序缺乏及时的安全更新与漏洞修复,进一步放大了BYOVD攻击的威胁,使其成为一种持续存在且难以防御的高风险攻击方式。
这种攻击方式的危险性在于:如果攻击者获得内核级权限,就能够完全控制系统、禁用安全机制、窃取敏感数据,甚至持久化驻留在系统中而不被检测。
因此如何通过自动化分析的手段判断驱动是否存在权限提升漏洞也成为了现在的技术焦点,例如本文中提到的相关银狐样本,就是利用了多种不同的内核级驱动,从不同角度对用户的计算机发起攻击。
在近年实际攻击中,攻击者常混杂利用多个来自不同厂商的已签名或签名泄露的驱动程序,以此提升攻击的合法性与隐蔽性,增加了检测与溯源的难度。
通过大模型技术,我们可以自动化挖掘驱动程序中存在的漏洞类型,例如针对被利用的Ping32内核驱动,我们可以将其IRP_CONTROL函数通过大模型进行分析。

大模型分析结果图
将分析详细结果输入大模型后,大模型可对该样本进行自动化审计。

大模型分析结果图
【八】 结语
从莱斯定理揭示的理论边界,到符号执行技术的工程突破,再到大模型带来的智能化分析能力——二进制安全分析领域的每一次技术跃迁,都在突破前人认为不可能的极限。虽然我们无法创造出"万能钥匙",但我们可以不断锻造更锋利的"手术刀"。
从本文介绍的技术实践可以看出,应用AI的二进制安全分析已经不再是科幻概念,而是正在发生的现实。符号执行指导的智能化路径探索、多模态大模型的代码理解能力、深度学习数据集的持续优化——这些技术的组合应用,正在重新定义恶意软件分析的效率边界。
未来,火绒安全将继续秉承这一技术路线,将我们的虚拟沙盒、符号执行与前沿的AI能力进行更深入的融合。我们坚信,这条传统安全技术与前沿AI技术融合的道路,将能够为用户构建起更智能、更主动的防御体系,以进化的技术应对不断演变的威胁。
HASH:
