恶意软件检测与固件漏洞发现技术解析
恶意软件检测中的争议与理论需求
在恶意软件检测领域,对于硬件性能计数器(HPC)在检测中的应用存在争议。研究人员通过实验对比了传统机器学习(非HPC)和HPC方法在恶意软件检测上的准确性。实验数据集的样本分布参考了实际研究中发现的比例,其中会产生副作用的样本被标记为“Exploits”。
实验结果显示,在整体场景下,传统机器学习方法的准确率(93.4%)高于HPC方法(85.55%)。但当分离出“普通”样本和会产生副作用的样本进行评估时,典型机器学习系统的检测能力主要来自对“普通”样本的分类(98%),而HPC方法在分类会产生副作用的样本时表现更优(96%)。
这种争议的根源在于研究界对于恶意软件的定义缺乏共识。例如,软件是否对某些用户是恶意的而对其他用户不是;一个操作在某个软件中是恶意的,在另一个软件中是否合法;如果恶意软件的目标是系统架构而非其他应用或数据,它是否仍被视为恶意软件等问题都没有明确答案。
目前,研究人员使用的是操作性定义,但这可能会导致争议。例如,当Zhou等人批评HPC时,他们隐含地假设恶意软件是使用高级构造的“普通”样本,从而忽略了会故意产生副作用的样本。然而,这些样本的活动很难不被视为恶意,因为它们可能会通过产生副作用来提升权限并造成更大危害。
为了解决这些问题,我们需要一个恶意性理论来衡量恶意软件攻击和防御。这个理论不仅要定义什么是恶意软件,还要说明如何衡量恶意软件问题。一个好的恶意性理论应该帮助我们理解问题,并提供工具和方法来判断我们是否成功控制了恶意软件。
攻击空间与恶意性理论的构建
攻击空间是恶意性理论的关键概念,它指攻击者对受保护资源可能采取的行动范围。对于HPC,攻击空间在软件和硬件两个维度上定义。
在当前场景下,攻击空间是无界的,恶意软件和良性软件样本混合在一起。当应用HPC时,攻击空间在性能方向上部分受限,能将性能异常的样本定位为恶意软件,但仍有一些恶意和良性样本混合在有界空间中,因此还需要其他分类器(如典型机器学习分类器)进行完整的恶意软件检测。当应用这些分类器时,攻击空间在软件方向上也受到约束。
攻击空间概念与攻击表面概念类似,但有显著区别。攻击表面概念旨在限制易受攻击的对象数量,但不涉及可能攻击的性质;而攻击空间概念不涉及易受攻击的对象数量,而是限制对这些对象的攻击特征。它们是互补的方面,应结合评估。
评估一项技术是否有助于提高系统安全性的方法是验证其加入现有技术集后是否能减少攻击空间。实验表明,HPC与典型机器学习检测器结合时,检测率提高到97.9%,这是单个解决方案无法达到的。因此,HPC应被视为恶意软件检测管道的一部分,通过在特定维度(如架构)上建立边界来提高安全性。
实验结果对比
| 检测方法 | 整体准确率 | “普通”样本准确率 | 产生副作用样本准确率 |
|---|---|---|---|
| 传统机器学习(非HPC) | 93.4% | 98% | 6% |
| HPC | 85.55% | 85% | 96% |
| HPC + 典型机器学习 | 97.9% | - | - |
攻击空间变化流程图
graph LR
A[无界攻击空间] --> B[HPC应用 - 部分有界攻击空间]
B --> C[结合典型ML - 完全有界攻击空间]
固件漏洞发现的挑战与现有方法的不足
随着物联网设备的广泛部署,固件漏洞可能造成巨大损失。但现有固件模糊测试方法存在局限性,它们依赖程序异常信号,只能发现导致程序崩溃的内存损坏漏洞,并且会遗漏执行路径中未触发的漏洞。
固件漏洞发现面临诸多挑战:
1.
平台多样性
:固件广泛部署在各种平台上,底层操作系统不标准,使用不同的指令集,如ARM和MIPS。
2.
漏洞复杂性
:不同的交互(如网络消息、文件流和标准输入输出流)可能触发固件漏洞,逻辑漏洞(如信息泄露、命令注入和身份验证绕过漏洞)难以检测,因为它们不会导致程序异常行为。
3.
资源限制
:固件运行在资源有限的嵌入式环境中,一些现有的程序分析方法无法有效应用。
目前最先进的固件漏洞发现方法是FirmAFL,它结合了系统模式仿真和用户模式仿真,具有高兼容性和高吞吐量。但模糊测试有两个主要缺点:一是依赖程序异常信号,无法检测不会导致程序崩溃的逻辑漏洞;二是只能发现执行路径中输入满足漏洞条件时触发的漏洞,会遗漏未触发的漏洞。
基于程序状态异常判定的固件漏洞发现方法
为了解决上述问题,研究人员提出了Anatomist方法,这是第一个基于程序状态异常判定和全系统重放的增强型固件漏洞发现方法。它具有两个优势:一是能检测执行路径中未触发的漏洞;二是能识别内存损坏漏洞和逻辑漏洞。
Anatomist的工作流程如下:
1.
全系统记录与重放
:选择全系统确定性记录和重放来提取固件的运行时语义。记录固件的执行过程,保存快照和执行记录,然后重放整个系统执行过程。在重放过程中,自动标记网络消息输入并记录目标程序的执行路径。
2.
危险操作识别
:定义两种危险操作,分别对应内存损坏类溢出漏洞和逻辑类命令注入漏洞。在重放过程中,如果发现目标程序正在执行受标记输入影响的危险操作,提取相关信息,如影响操作的输入标记、操作的PC值等。
3.
单路径符号跟踪
:基于记录的目标软件执行路径进行单路径符号跟踪。部分符号化受危险操作影响的网络消息,当符号执行到达记录的危险操作时,提取相应符号输入的约束条件,并根据这些约束条件和记录的危险操作信息判断危险操作是否满足程序状态异常条件。
4.
漏洞定位
:如果确定程序状态异常,则定位漏洞代码。
Anatomist与FirmAFL的实验对比
研究人员在FirmAFL数据集上对比了Anatomist和FirmAFL的性能。实验结果表明,Anatomist平均提高了741.64%的漏洞发现效率,并且在3个固件中发现了3个0-day漏洞,包括2个内存损坏漏洞和1个逻辑漏洞。
Anatomist工作流程流程图
graph LR
A[全系统记录] --> B[全系统重放]
B --> C[危险操作识别]
C --> D[单路径符号跟踪]
D --> E[漏洞定位]
综上所述,恶意软件检测和固件漏洞发现是信息安全领域的重要问题。通过构建恶意性理论和采用基于程序状态异常判定的方法,我们可以更有效地应对这些挑战。在实际应用中,应结合多种技术,如HPC与机器学习的结合,以及Anatomist方法的应用,以提高系统的安全性。
恶意软件检测与固件漏洞发现技术解析
恶意软件检测技术的综合应用与优势体现
在恶意软件检测方面,将HPC与典型机器学习方法结合使用具有显著优势。下面我们详细分析这种综合应用的好处:
-
互补性增强检测能力
:传统机器学习方法在检测“普通”恶意软件样本时表现出色,而HPC方法在检测会产生副作用的样本上优势明显。两者结合可以覆盖更广泛的恶意软件类型,提高整体检测准确率。
-
限制攻击空间
:HPC在硬件和软件维度上对攻击空间进行部分约束,典型机器学习方法进一步在软件方向上约束攻击空间,使得攻击空间得到更有效的限制,从而提高系统安全性。
以下是不同检测方法的对比总结表格:
| 检测方法 | 优势 | 劣势 | 适用场景 |
| ---- | ---- | ---- | ---- |
| 传统机器学习(非HPC) | 对“普通”样本检测准确率高 | 对产生副作用的样本检测能力弱 | 主要检测常见恶意软件样本 |
| HPC | 对产生副作用的样本检测准确率高 | 整体准确率相对较低 | 检测会对系统架构产生影响的恶意软件 |
| HPC + 典型机器学习 | 综合检测能力强,能有效限制攻击空间 | 实现复杂度较高 | 全面检测各种类型恶意软件 |
恶意软件检测技术应用流程
为了更好地应用恶意软件检测技术,我们可以按照以下流程进行操作:
1.
数据收集与预处理
:收集恶意软件和良性软件样本,对样本进行标注和特征提取,构建数据集。
2.
模型训练
:分别使用传统机器学习方法和HPC方法对数据集进行训练,调整超参数以获得最佳模型。
3.
综合检测
:将待检测的样本同时输入到训练好的传统机器学习模型和HPC模型中,根据两个模型的输出结果进行综合判断。
4.
结果评估与优化
:评估检测结果的准确性和召回率,根据评估结果对模型进行优化和调整。
graph LR
A[数据收集与预处理] --> B[模型训练]
B --> C[综合检测]
C --> D[结果评估与优化]
D --> B
固件漏洞发现方法的深入剖析与实际效果
Anatomist方法作为一种增强型固件漏洞发现方法,在实际应用中展现出了良好的效果。下面我们深入剖析其工作原理和实际应用效果:
-
工作原理优势
:Anatomist基于程序状态异常判定和全系统重放,能够更准确地发现固件中的漏洞。通过全系统重放提取运行时语义,识别危险操作并进行单路径符号跟踪,能够检测到未触发的漏洞和逻辑漏洞。
-
实际效果验证
:在与FirmAFL的对比实验中,Anatomist平均提高了741.64%的漏洞发现效率,并且成功发现了3个0 - day漏洞。这表明Anatomist方法在固件漏洞发现方面具有显著的优势。
以下是Anatomist方法与FirmAFL方法的对比表格:
| 方法 | 检测漏洞类型 | 漏洞发现效率 | 能否检测未触发漏洞 |
| ---- | ---- | ---- | ---- |
| FirmAFL | 内存损坏漏洞 | 相对较低 | 否 |
| Anatomist | 内存损坏漏洞、逻辑漏洞 | 平均提高741.64% | 能 |
固件漏洞发现操作步骤
使用Anatomist方法进行固件漏洞发现可以按照以下步骤进行:
1.
全系统记录
:对固件的执行过程进行全系统记录,保存快照和执行记录。
2.
全系统重放
:重放全系统执行过程,自动标记网络消息输入并记录目标程序的执行路径。
3.
危险操作识别
:在重放过程中,识别受标记输入影响的危险操作,提取相关信息。
4.
单路径符号跟踪
:基于记录的执行路径进行单路径符号跟踪,部分符号化受危险操作影响的网络消息。
5.
漏洞定位
:根据符号约束条件和危险操作信息判断程序状态是否异常,若异常则定位漏洞代码。
graph LR
A[全系统记录] --> B[全系统重放]
B --> C[危险操作识别]
C --> D[单路径符号跟踪]
D --> E[漏洞定位]
综上所述,恶意软件检测和固件漏洞发现是保障系统安全的重要环节。通过综合应用不同的检测技术和采用先进的漏洞发现方法,我们可以更有效地识别和防范各种安全威胁。在实际应用中,应根据具体情况选择合适的技术和方法,并不断优化和改进,以提高系统的安全性和可靠性。
超级会员免费看
1051

被折叠的 条评论
为什么被折叠?



