【前沿探索】|大模型在二进制安全领域中的应用
https://img-blog.csdnimg.cn/img_convert/14bd1fafea5292e30156f78ee4164c2c.jpeg引言
随着“软件定义万物”的时代到来,软件在我们生活中扮演着不可或缺的脚色。然而,不严酷的软件设计、开发人员的本事限制,以及编程语言本身的不安全性,都大概导致软件出现缓冲区溢出、整型溢出、格式化字符串攻击等缺陷。这些漏洞不但严峻威胁系统安全,还常被不法分子利用,从而进行勒索敲诈,威胁社会秩序的稳定。因此,软件安全分析成为了研究人员的热点关注领域。
软件安全分析通常包括源代码级别和二进制级别两个方面。源代码级别分析由于能直观准确地访问程序全貌,而被认为更为有效。然而,大多数商业软件并非开源,使得终端用户通常只能打仗到编译后的二进制代码。这不但增加了跨语言分析的难度,也揭示了源代码级分析的局限性。别的,很多遗留软件只以二进制形式存在,没有源代码支持,这更强调了基于二进制的安全分析的必要性和广泛性。
目前,二进制代码分析面临的主要挑衅包括:二进制可执行程序的可读性差,以及编译过程中大概丢失的布局和范例信息,这都增加了分析的复杂度。别的,程序中的直接和间接跳转构建了执行流程的极大挑衅。不同架构的调用约定也增加了恢复程序调用流的复杂性。同时,为了增强安全性,开发者大概采取内存地址随机化、代码加密和混淆等步伐,这些都进一步增加了分析二进制代码的难度。
在这种背景下,大模型技术作为人工智能领域的重大进展,展现了其在二进制安全领域的独特上风。借助巨大的参数目和海量数据训练,这些模型能够显著提速二进制文件的分析过程,实现从二进制到高级编程语言的直接转换、无源码的自动漏洞检测与修复、恶意样本的自动分析归因,以及对二进制软件成分的分析以预防供应链安全风险。大模型的应用不但提高了任务执行的效率,还低落了人力和资本投入,推动了二进制安全领域的研究与应用,使之变得更为高效和创新。
本文调研和测试了截至2024年5月的全部二进制相关大模型研究方案,探究了利用大模型技术辅助二进制分析的计谋、实行方案以及成果分析。这项研究旨在分享该领域的应用成熟度,并与各位专家交流,推动进一步的产物化成熟落地。
二进制安全领域的应用场景
1. 代码理解与自动化辅助
在逆向工程和漏洞挖掘的领域中,将二进制文件转换回高级编程语言(如C/C++)是一项关键的任务。这一过程通常被称为反编译,其目标是尽大概准确地还原出二进制文件的源代码,以便进行更深入的分析和理解。有效且高质量的反编译是实现高效、准确分析的核心要素。
目标:
根本还原二进制文件,达到由二进制文件到c/c++的转换。
https://img-blog.csdnimg.cn/img_convert/d9cb61dfe7f1b06e2cd85da31e6d80fa.png
图2.1 LLM4Decompile 分析流程
方案一:
LLM4Decompile 是一款开创性的开源大型语言模型,专注于反编译工作。这是目前唯一一个能直接基于反汇编进行分析并输出相应的 C 代码的模型,以其极高的准确性和抗干扰性著称。在将汇编语言转换为 C 语言的本事上,LLM4Decompile 已经能与 GPT-4 相媲美。然而,该模型的主要缺点是可靠性不高,目前只能用于测试简朴的演示示例。别的,它过于依赖训练样本,要达到高可用性,对样本的质量和数目要求极高。在现实应用场景中,它还不能结合数据段进行综合分析。
以下代码为测试用例:
https://img-blog.csdnimg.cn/direct/3d03814e710c4d53bb90b641136f1cd7.png
https://img-blog.csdnimg.cn/img_convert/c45dff7d4261fbf3a6b1d1d849ddef7d.png
图2.2 LLM4Decompile对测试用例反汇编
可以观察到,在原始的汇编代码中并没有包含"Hello, world!"这样的字符串。这是由于大模型自行进行了匹配和增补,导致的这一现象,主要是因为数据量较少且无法结合数据段进行处理。至于忽略数据内容的题目,我们临时不予讨论。
另外,我使用了 Dijkstra 算法的反汇编,其代码总量约为 420 行,但无法正常输出相应的伪 C 代码。在对其他较长的汇编代码进行测试时,也面临着同样的题目,即无法正常输出,而且不支持对 Windows API 的解析。
方案二:
通过使用第三方组件(如 Ghidra、IDA、retDec)进行初步的反编译生成伪 C 代码,并借助大模型进行可读性优化,这种方法被证实具有良好的稳定性。别的,后期模型的预训练资本相对较低。目前,如清华大学的 MLM 和腾讯云的 BSCA 等机构已接纳此办理方案进行代码转换。然而,只管此类办理方案具有肯定的依赖性于第三方组件,它在处理一些反静态分析工具时仍表现出先天的缺陷。
https://img-blog.csdnimg.cn/img_convert/eb6007822ec6041c11bbbb513e62c341.png
图2.3 腾讯BSCA交互模式基于Ghidra反编译
2. 二进制漏洞检测中的应用
目标:
[*] 深入分析二进制文件: 纵然在没有源代码的情况下,也能进行深入的分析,精准地捕捉复杂的漏洞特征。
[*] 跨平台顺应性: 确保在多样化的操作系统和硬件架构中实现同一且高标准的检测流程。
[*] 连续自我学习与动态优化:通过不断学习最新的漏洞知识和修复计谋,动态优化检测算法,提供了深度和广度兼备的智能化二进制安全防护办理方案。
https://img-blog.csdnimg.cn/img_convert/923ad90cc6e7125bd0ee445965078c61.png
图2.4 清华大学MLM使用步骤
方案一:
基于较高准确率的反编译代码,通过大模型进行分析处理,此类方法属于分析辅助工具,必要人工共同进行分析。目前,如清华大学的 MLM、mrphrazer/reverser_ai 和 WPeChatGPT 都接纳这种手段进行分析。这种方式的可靠性较高,是一种广泛使用的良好辅助手段,其中 WPeChatGPT 是一个在 GitHub 上的开源项目。
WPeChatGPT 通过直接调用 ChatGPT 4.0 接口,传输伪 C 代码进行分析。得益于 ChatGPT 4.0 的强大功能,其可用性和准确性较高。然而,由于国内网络环境的限制,其稳定性不敷且费用较高。
https://img-blog.csdnimg.cn/img_convert/d7ad5bd3b8857006537e1babe0941020.png
图2.5 WPeCharGPT使用漏洞分析功能
方案二:
传统的模糊测试面临三大挑衅:与目标系统和语言的紧密耦合、 缺乏对语言种类的支持、以及生资本事的限制。通过引入LLM作为输入生成和变异引擎,以及自动提示技术和其可以理解复杂协议和格式,有效应对了这些挑衅,而且大幅度提高了方案实行的效率。
模糊测试技术与LLMs的交织应用同样是目前二进制安全领域的热门研究方向,因其传统的模糊测试方式与LLMs有极其偶合的互补性,致使这对组合有巨大的应用代价,目前市面上已经有FuzzGpt、Fuzz4All的相关内容供以参考,由于篇幅限制未来会用另外的文章来重点论述大模型下模糊测试相关的落地实践。
https://img-blog.csdnimg.cn/img_convert/ebeeaf8bdfcdb308868759b04908eeb7.png
图2.6 FuzzGPT概述
3. 恶意代码智能识别
目标:
通过文件静态识别,分析二进制恶意样本的举动和归属类别眷属。
方案一:
目前公开的恶意代码识别主要基于历史上大量病毒样本的反编译。通过对这些数据进行预训练,并共同大模型进行恶意样本的反编译和分析,从而实现恶意代码的识别和归因。虽然市场上尚无产物公开展示这一功能,但在对小范围(约3400个恶意PE文件)样本进行测试中,揭示了一些关键难点:
[*] 混淆和加壳:恶意样本为了规避杀毒软件的检测,常接纳混淆、加壳和抗分析等手段。这些手段使得直接对样本进行反编译时常出现编译失败的情况。
[*] 复杂的调用链:大量APT(高级连续性威胁)构造接纳白名单机制、黑名单机制加多级loader的方式加载恶意代码。所设计的调用链复杂,必要人工干预和处理分析,才能进一步进行归因。
https://img-blog.csdnimg.cn/img_convert/60aaefd02a62e76b84ce85aeb7c2ed98.png
图2.7 小范围测试PE样本3554个
4. 二进制软件成分分析
当代企业中,开源组件的使用比例已超过90%。颠末长时间的研究,软件组成分析(SCA)技术已相对成熟。在这90%的开源使用中,大部分为完整的开源组件或代码,这些可以被SCA工具轻松检测出来。然而,还有一小部分由开源代码片段组成,传统的依赖分析(Dependency Check)并不适用于这种代码片段层级的检测。别的,一些商业化组件并未开源,这些代码根本上与开源无关,对这些代码进行检测的难度较大。
目标:
在无源环境下对二进制软件成分进行分析,确定其开源组件的小版本,并识别未开源的第三方组件。
方案一:
二进制下的SCA技术已相对成熟,并具有很高的应用代价。然而,现有的SCA工具无法识别出各小版本的代码差异,从而定位历史存在的漏洞。这一挑衅可以通过对大模型进行预训练,利用大量的开源数据来办理。比方,腾讯的SCA技术在开源版本的识别上已达到较好的精确度。
https://img-blog.csdnimg.cn/img_convert/a6eee6a95bd7e477ab2f3e0bba9f7ff5.png
图2.8 腾讯SCA
安全大脑与SecGPT在二进制安全中的实践
1. 安全大脑与SecGPT简介
云起AI安全大脑是专为企业级大模型系统设计的全方位办理方案,旨在提供智能体管理和模型管理的一体化平台。该平台为企业级用户提供便捷、安全的智能体管理和模型管理服务,帮助用户构建高效、稳定的AI系统。
SecGPT 是全球首个网络安全开源大模型,可用作基座安全模型,适用于代码分析、流量分析、溯源分析等多种应用。这使得 SecGPT 在处理网络安全题目时,具有广泛的适用性和强大的分析本事。
2. 技术路线
通过对 SecGPT 模型进行进一步的微调和训练,我们在此基础上利用云起AI安全大脑重新输入垂直数据进行二次投喂。这一过程旨在对模型场景进行进一步的原子化处理,使得"可读性优化、缺陷查找、漏洞查找、功能分析、恶意代码检测"等功能能够被分离并形成独有的安全体系。这样的技术计谋将大幅度提高系统的专业性、可靠性和复用性。
3. 实行与本事评估
在整个二进制安全领域,无论是进行成分分析还是恶意样本分析,关键的环节之一就是大模型对伪 C 代码的识别本事以及优化代码的可靠性和稳定性。这种本事确保了分析的准确性,使得从二进制文件到高级编程语言的转换更为精确,同时提升了对潜在安全威胁的识别和相应速率。
3.1 基于智能体下IDA插件实践
[*] 以下为IDA原生反编译代码:
https://img-blog.csdnimg.cn/direct/f0c7a3ecc6154da59452afe12143b785.png
https://img-blog.csdnimg.cn/direct/116316a586fd4f9ea4e103fadffaefca.png
[*] 基于SecGPT对伪C代码进行优化重写以后的效果:
https://img-blog.csdnimg.cn/direct/ca5b199a5ded4548b125404897cc817e.png
https://img-blog.csdnimg.cn/direct/c7f0bf4a5e71479184b953ca10ba7f95.png
[*] 以下为ChatGPT4 优化之后的伪C代码:
https://img-blog.csdnimg.cn/direct/f9cee5b57b734d9d9b377450faf9dbca.png
https://img-blog.csdnimg.cn/direct/33b19860005a46978e1fd4a91c826080.png
从以上代码比力可以看出,SecGPT 和 ChatGPT4 在对代码可读性优化方面的表现相差不大。两者在提高代码的可读性和进行变量重命名等方面都表现出色,能够显著帮助用户分析伪 C 代码。这阐明只管两个模型大概有不同的训练侧重点和优化目标,它们都足以支持复杂的代码分析任务,对于必要从二进制文件中提取和优化代码的用户来说,这是一个极大的助力。
接下来,我们将通过同时使用 SecGPT 和 ChatGPT4.0 对代码进行优化和解析。别的,为确保评估的公正性和客观性,我们将接纳 ChatGPT4.0-1106-Preview 版本来进行中立的准确度评判。这种方法将允许我们比力两个模型在代码优化和解析方面的性能,并确保评估效果的可靠性和有效性。
https://img-blog.csdnimg.cn/img_convert/3eec70e772523f2649a7a7fe92d2b556.jpeg
图3.1(a) 基SecGPT的IDA插件
https://img-blog.csdnimg.cn/img_convert/d981a89156e4ef50f445cbe64d9a390f.jpeg
图3.1(b) 基SecGPT的IDA插件
3.2 基于chatGPT 4的对比评估
在对3554个恶意样本进行研究时,使用了Ghidra的无头模式进行反编译,成功抽取了1137个不同的函数。接下来,我们将利用 ChatGPT4-1106-Preview 版本来评估这些函数的代码优化和代码分析的相似度与 ChatGPT 的表现。
通过这种方法,我们可以详细了解不同版本的 ChatGPT 在处理雷同代码优化任务时的效果差异。这不但有助于验证模型的性能,还可以揭示大概的改进方向,以便更准确地处理和优化恶意代码。这一步骤对于理解和提高模型在现实应用中的实用性和准确性至关告急。
https://img-blog.csdnimg.cn/img_convert/432785a923586d360ca67652f87b5ee0.png
图3.2 函数抽取样本
在进行大规模模型性能评估时,使用脚本批量对话来获取可信度返回值是一种高效的测试计谋。这种方法可以自动化地测试和比力不同模型对特定输入的相应。通过分析这些相应的可信度分数,我们能够客观地评估模型的表现。
https://img-blog.csdnimg.cn/img_convert/f2c4d47cf2e56cd9cbc3b4e3431c0ce6.jpeg
图3.3 可靠性测试示例
https://img-blog.csdnimg.cn/img_convert/9e7b851793edd1411958dfba4e370c60.png
图3.4 与ChatGPT4可靠性测试过程
在进行ChatGPT4-1106-Preview的评估测试中,我们分析了1137个测试示例。效果表现有34个现实无效数据,其中可信度最低的为34.72。低于80的可信度有61个示例,80至90之间的有63个,而高于90的有979个,均匀可信度为95.21。同时,结合人工抽检,我们初步确认该模型在二进制伪C代码的可视化优化和代码分析识别方面表现出较高的稳定性和可用性。
以上效果仅为在安全大脑+SecGPT优化环境下的基础测试。只管测试中仍存在很多不敷,如测试数目偏低且没有进行系统化的对照参照,但基于长时间的逆向分析过程中的使用履历,我们认为该模型在二进制安全实践中仍具有肯定的可用性。
https://img-blog.csdnimg.cn/img_convert/162013b3354dbd858ae89a4a213b341b.png
图3.5 可信度区间样本数目统计
关键挑衅与思考
虽然大模型在处理汇编/伪代码方面已有肯定基础,并通过进一步训练安全和漏洞相关资料以达到较好的辅助分析效果,但在现实应用场景中,全部市面上办理方案均未实现完全脱离人工的抱负状态。以下是对该领域当前题目的关键挑衅及其思考,盼望这有助于推动未来的发展方向和计谋。
关键挑衅
[*] 高级混淆和加密技术: 当代恶意软件和某些商业软件广泛使用混淆、加密和加壳技术,防止分析和逆向工程。这些高级技术增加了大模型分析工作的复杂性,要求模型能够识别和解构这些技术。
[*] 顺应性和智能性的需求: 随着攻击技术的连续进化,大模型必要快速顺应新威胁并有效应对。这要求技术连续进步而且模型需连续学习和更新。
[*] 动态与静态分析的结合: 目前大多数模型依赖静态分析,分析不运行的代码。结合动态分析,即分析程序运行时举动,可以提供更深入的程序操作洞察,是提高分析效果的关键。
思考与办理计谋
[*] 增强模型对混淆技术的理解本事:通过增加与混淆和加密技术相关的训练数据或开发专门针对这些技术的模型组件,以提高大模型的表现。
[*] 连续学习和模型更新: 创建机制使模型可以连续学习最新的威胁谍报和攻击技术,可通过在线学习或定期更新训练数据集实现。
[*] 多模态分析方法: 结合静态和动态分析技术,开发多模态分析系统,充实利用两者上风。
通过实行这些计谋,可以更有效地利用大模型技术应对二进制安全分析中的挑衅,提高模型的全自动化分析本事,同时应对更加复杂的安全威胁。
https://img-blog.csdnimg.cn/img_convert/7abcb842f791d87949b1617db3e4f7e0.jpeg
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页:
[1]