【论文阅读笔记】Black-box Adversarial Example Attack towards FCG Based Android Malware FCG对抗检测

文章地址:

https://www.usenix.org/system/files/sec23fall-prepub-2-li-heng.pdf

† 华中科技大学 香港理工大学 ‡ 绿盟科技集团有限公司

一句话概述:使用图神经网络/进化算法,生成对抗性样本AE,以躲避基于FCG的恶意软件检测

1 相关情况

一种针对基于FCG的恶意软件检测系统的新型黑盒AE攻击,称为BagAmmo

  • 缘由:

    • 基于 FCG 的恶意软件检测容易受到对抗性示例 (AE) [9, 40, 48, 50, 51, 62] 的影响,这些示例是通过对正常示例施加精心设计的对抗性扰动以引起错误分类而生成的。

    • 如何产生Android恶意软件来规避基于FCG的检测仍然是一个悬而未决的问题

      [扰动]  Bostani 等人 [6] 利用随机搜索在黑盒设置中查找 APK 文件的最佳扰动。Chen等人[10]提出了一种对Android APK文件施加最佳扰动的方法

    在实践中,构建规避恶意软件需要考虑以下尚未得到良好解决的现实问题。

    • 1) 恶意软件功能保留。恶意软件操纵应该能够在恶意软件功能保留的前提下误导其目标分类器。

    • 2)问题特征空间差距。由于特征空间中的特征向量不能直接受到干扰,因此攻击者必须修改问题空间中的恶意软件代码,并期望它们的修改在特征向量上带来所需的对抗性扰动。

    • 3)严格的黑匣子设置。对于对手来说,目标分类器是一个严格的黑匣子,其架构、参数和输出概率都是未知的。

    • 4)特征信息缺失。攻击者无法获得其目标分类器使用的特征,即FCG和通过图嵌入获得的特征向量(在图1的第二个框中表示)。

  • FCG方法:

    • BagAmmo 使用 try-catch 陷阱来插入函数调用以扰乱恶意软件的 FCG

    • BagAmmo采用生成对抗网络(GAN)的架构,并利用多群体协同进化算法(即Apoem)来生成所需的扰动

图:基于FCG的Android恶意软件检测通常包括三个步骤。首先,从Android软件包(APK)文件中提取FCG特征(例如,频繁子图)。其次,将FCG转换为特征向量,即图嵌入。第三,处理特征向量以进行恶意软件预测

2 主要贡献

  • 作者提出了一种新颖的黑匣子AE攻击BagAmmo,以保护基于FCG的Android恶意软件检测

    BagAmmo不需要关于特征空间的完整信息,因此它是一种具有很强泛化性的广谱攻击。

  • 作者从理论上分析了为什么Apoem可以减轻前经常困扰进化算法的成熟度问题

  • 作者对三种最先进的(SOTA)恶意软件检测方法MaMaDroid [41],APIGraph [67]和GCN [65]进行了广泛的实验,在三个特征粒度下使用五个分类器(例如,RF和DNN)。在作者的实验中,BagAmmo超越了SOTA攻击(即基于强化学习的方法SRL)。它在所有 32 个目标检测系统上的平均攻击成功率超过 99.9%。作者的实验也证实了BagAmmo的攻击效率和对概念漂移和数据不平衡的恢复能力。

3 相关研究

  • 早期的研究更多地关注语法功能,

    • 例如请求的权限[14,35,70],

    • 意图操作[18,44,64],

    • 组件间通信(ICC)[4,17]

    • API调用[3,47]。

  • 最近,语义特征[41,58,67](例如FCG)引起了越来越多的关注。

作为最常见的语义特征,FCG 通常基于 smali 文件构建

函数或由其函数名称(例如java.lang.StrictMath:max()),类名(例如java.lang.StrictMath),包名称(例如java.lang)或系列名称(例如java)表示的抽象函数可用于表示FCG中的节点。

因此,FCG中存在四个特征粒度,即功能级、类级、包级和族级,如图2所示。具有更精细粒度(例如,类级别)的特征通常具有更复杂的图结构,导致更重的计算开销并需要降维[41]。

  • 基于 FCG 的安卓恶意软件检测

    3种最先进的FCG检测方法

    • 马马德罗伊德。Mamadroid [41] 将封装级或系列级 FCG 视为其特征。更具体地说,它采用340个封装和11个系列。为了从FCG中提取特征向量,Mamadroid构建了一个马尔可夫链,该链具有包或族之间的转移概率。然后,提取的特征向量用于训练用于应用程序分类的分类器(例如,KNN 和 SVM)。

    • APIGraph.与Mamadroid不同,APIGraph [67]是一个通用框架,用于进一步增强基于图形的Android恶意软件检测方法的性能。它采用聚类算法(例如,K-means)根据其语义之间的相似性来聚合FCG的节点(即函数)。然后,它使用特定函数来表示每个群集中的所有函数。最后,APIGraph构建了一个粒度更粗糙的新FCG,其中每个节点表示一个函数集群,每个边缘表示两个集群之间的调用。实验表明,新的FCG可以带来更好的分类性能。

      GCN.图卷积网络 (GCN) 是一种强大的图嵌入方法,可用于检测恶意软件。

    • 在第 6 节中,作者将 GCN 应用于基于 FCG 的 Android 恶意软件检测。

      虽然这些方法取得了令人印象深刻的结果,但它们容易受到对抗性示例的影响。对抗性示例的存在归因于分类模型的决策边界不理想的问题[26,52]。此问题在Android恶意软件检测中变得更加严重,因为静态分析方法无法精确地对恶意软件行为进行建模。因此,现有的Android恶意软件检测系统并不真正安全[2]。

4 问题描述

图1描述了这项工作中考虑的基于FCG的Android恶意软件检测系统。

假设对手向该系统发起黑盒 AE 攻击以生成真正的规避恶意软件。

攻击步骤:

  • 攻击者首先从 APK 文件中获取 classes.dex 文件,并进一步将其反编译为一系列 smali 文件。

  • 如图 3 所示。攻击者根据其扰动操纵 smali 代码,并重建代码以获取新的 APK 文件。

  • 然后,攻击者使用生成的恶意软件样本查询检测系统,利用收到的二进制决策(即良性或恶意)来更新其扰动,然后重建新的恶意软件样本。

重复上述过程,直到获得真正的规避恶意软件。

攻击者只知道目标系统使用 FCG 功能进行恶意软件检测。但是,攻击者不知道目标系统使用的特征粒度和图形嵌入方法。此外,对手没有关于目标分类器的架构、参数和输出概率的信息。至于防御者,它可以使用静态分析和基于白名单的防御来抵御规避恶意软件。此外,一旦用户的查询数量异常大,防御者可能会发出警报。

4. 1 攻击公式

首先使用 s 和 m 分别指代恶意软件示例和操作。

然后,使用两个函数 MG(·) 和 MV (·) 分别表示图 1 中所示的代码到图映射和图到向量映射。

通过使用 m 操纵恶意软件样本 s,攻击者将输入图从 G = MG(s) 更改为 ̃G = MG(s + m),

其中 G 和 ̃G 分别表示原始输入 FCG 和受扰动的输入 FCG。

假设 L(·) 表示目标分类器预测的标签(即良性或恶意)。

上述公式, 指出了两个任务:

1)设计一种操作技术来修改恶意软件代码,同时保留恶意软件功能,

2)开发一种对抗性扰动生成算法来实现m。由于问题特征空间差距和严格黑盒设置的挑战,MG(·)和MV(·)实际上对对手来说是未知的。因此,很难一次性得出所需的对抗扰动。这促使作者开发一种进化算法(即Apoem),以逐渐找到所需的扰动。

此外,值得注意的是,在机器学习社区中已经提出了各种图形对抗攻击模型[5,12,40,48,57,62,71]。虽然这些方法为作者提供了灵感,但它们不能直接应用于作者的攻击,原因有两个。首先,图对抗攻击模型从特征空间发起攻击。但是,针对Android恶意软件检测的攻击无法直接访问功能空间,并且必须通过操纵问题空间中的恶意软件代码来间接影响功能空间。其次,攻击需要满足实际需求,这在现有的图形对抗攻击中是没有的。因此,恶意软件对抗性攻击设计需要专门的研究。

5 恶意软件操纵

尽管对恶意软件的操作直观上很简单,但挑战来自以下要求。

  • R1:功能一致性。恶意软件功能应在操作前后保持一致。

  • R2:全粒度影响。由于恶意软件检测的特征粒度(例如,系列级别和包级别)是未知的,因此恶意软件操纵应该能够影响所有粒度的功能[41]。

  • R3:对静态分析的弹性。恶意软件操纵不应受到静态分析检查[13,42]的阻碍,并且不能完全依赖死代码(即无法访问的指令块)。

  • R4:非平稳扰动。操作应该是非平稳的,不能局限于一组固定的操作(例如,预先确定的白名单[65]),以降低被识别的风险。

现有的操作方法总结如下:

  • 插入死代码:为了保持功能一致性,[10] 选择将死代码(例如,no-op 调用)插入到 smali 文件中。

    不幸的是,这些代码很容易被检测和过滤,违反了要求R3。例如,[15] 提出了一种基于加权敏感 API 调用的 Android 恶意软件家族分类方法,该方法可以抵抗无操作调用的影响。

  • 添加无价值调用:[10] 创建用户定义的类,并将无价值调用(即调用空函数)添加到其中。

    但是,这些调用可能容易受到静态分析的影响,并且无法攻击类粒度 FCG,从而违反了要求 R2 和 R3。例如,[64] 中提出的 Android 恶意软件检测方法不使用自定义函数作为功能。因此,此方法不受对手插入的无价值调用的影响。

  • 从白名单添加函数:为了更改FCG,[65]的作者添加了一个来自预定白名单的函数。

    但是,一旦捕获了对抗性示例,白名单就会被揭示,对抗性攻击可能会失败。

  • 不透明谓词:[45] 利用不透明谓词插入新的 API 以逃避恶意软件检测。具体来说,此方法构造模糊条件,其中结果在设计阶段始终是已知的,

    但真值很难或不可能通过静态分析确定。因此该方法可以有效地抵抗静态分析。然而,它可能会引入一些不需要的函数(例如,随机函数),从而对FCG施加意想不到的影响。

5.1 提出的方法

在这里,作者设计了一种新的恶意软件操纵方法来修改 smali 代码。

显然,根据要求 R1,作者无法从 FCG 中删除节点或边。因此,作者只考虑添加(或插入)节点或边。但是,不建议添加隔离节点(即未调用或不调用其他节点的函数),原因有两个。

  • 首先,静态分析很容易检测到隔离的节点(例如,一些执行冗余代码消除的程序分析技术会删除无法访问的代码[22])。

  • 其次,添加节点通常不会影响特征空间,因为许多恶意软件检测器利用边缘(而不是节点)进行分类。因此,作者在操作方法中选择添加边缘(即调用)。然后,问题的其余部分包括:如何创建候选边,如何从候选边中选择所需的边,以及如何插入选定的边。

    在本节中,作者只考虑第一个和第三个问题。第二个问题将在第 5 节中解决。

具体的:

  • (1) 如何创建候选边?

    到目前为止,如何对特征信息不完整(即特征粒度未知)的FCG施加全粒度影响(R2要求)尚未得到深入研究。为了解决这个问题,作者建议通过在调用方和被调用方之间添加函数调用,在任何类型的两个节点之间创建一个边缘。无论使用哪种特征粒度,此方法都会更改 FCG 然后问题就变成了如何确定每个候选边的调用方和被调用方。

    由于要求 R4,作者不能使用白名单来生成调用方和被叫方。

    相反,作者建议从恶意软件本身使用的功能生成它们。通过这种方式,作者可以确保为不同恶意软件创建的候选边缘是多样化的,从而满足要求 R4。

    现在作者研究在哪里放置添加的边缘。

    FCG 由非叶节点和叶节点组成,如图 4 所示。非叶节点是用户定义的函数,叶节点对应于Android标准函数(例如java/io/File;−> exists())或不调用其他函数的用户定义函数。

    在方法中,非叶节点(即用户定义的函数)被选择为调用方,因为它们很容易插入新的函数调用。

    叶节点被选为被调用方,因为调用不调用其他函数的函数不会触发意外调用。

    在这里,避免生成意外调用,因为它们可能会进一步对 FCG 造成干扰。

  • (2) 如何插入选定的边?

    作者假设已经选择了理想的边,并研究如何在 R1 和 R3 的要求下将相应的函数调用插入到 smali 文件中。

    作者提出的方法称为 try-catch 陷阱。

    • 它首先将一个 try-catch 块插入调用方,并将调用被调用方的语句放在其 try 块中。

    • 然后,它在此函数调用语句前面添加几个语句。这些语句用于触发预先选择的异常(例如,算术异常)。

    • 现在作者分析为什么这种方法有效。

      • 首先,它在 smali 文件中插入一个函数调用语句,从而通过添加新的边来更改 FCG。

      • 其次,函数调用语句永远不会执行,因此保留了恶意软件功能。为了说明这一点,图 5 给出了一个 try-catch 陷阱的示例。假设左侧框中的代码来自恶意软件样本。函数调用者EX()被选为作者的调用方。作者在这个函数中放置了一个 trycatch 块,并在执行 blue 语句后调用函数 callee()。通过这种方式,作者可以在 FCG 中添加一条新边,如图 5 所示。当 try-catch 块被执行时,将抛出 IndexOutOfBoundsException 的异常,并且将跳过函数调用的语句。

  • 总之,作者的方法可以被认为是不透明谓词的变体。它精心构造了静态分析过程中难以确定的混淆条件,因此具有抵抗静态分析的能力。

6 对抗性扰动生成

如何选择的问题候选边的理想边。为了回答这个问题,作者开发了一种新颖的GAN模型算法Apoem来找到所需的对抗扰动。

6.1 BagAmmo

遵循GAN的架构,BagAmmo采用了合作训练的生成器和鉴别器。

  • 生成器:发生器负责生成扰动,即添加到 FCG 中的新边。它是用对抗性的多种群协同进化算法(即Apoem)实现的。

  • 判别器:引入鉴别器以刺激生成器以改善其扰动。它通过GCN实现,充当替代网络[10]来模拟目标模型。

  • 训练:在每一轮模型训练中,生成器修改恶意软件的代码,并将重建的恶意软件发送到目标模型或替代模型以进行恶意软件检测。BagAmmo 在目标模型和具有可变概率 p 的替代模型之间进行选择。收到查询后,目标模型发回其回复,即二进制决策。通过查询-回复对,BagAmmo 训练替代模型并引导其生成器改善其生成的扰动。概率 p 随着轮数的增加而不断增长,以减少发送到目标模型的查询数。

6.2 对抗性多种群协同进化

生成器面临的主要挑战是真正的特征粒度是未知的。

在这种情况下,作者将陷入巨大的搜索空间,从而延长模型训练时间并需要更多的查询。

为了缓解这个问题,BagAmmo使用Apoem算法来推测真实的特征粒度。

Apoem遵循进化算法的一般框架,但它引入了多个种群之间的合作以加速收敛。随着演化,与真实特征粒度对应的种群逐渐从人群中脱颖而出。

在下文中,作者首先描述图 6 红色块中描述的 Apoem 的主要组件,然后讨论如何使用这些组件来生成所需的扰动。

(1)Population & Individual.人口与个人。总体表示在特定特征粒度下生成的 AE 的集合。例如,家族级总体由假设目标分类器使用家族级 FCG 作为其输入时生成的 AE 组成。Apoem采用多个种群,每个种群对应一个可能的特征粒度(即家庭,包和类)。群体中的每个个体都会产生一种扰动,可以施加在原始 FCG 上,即添加到 FCG 中的边集。

(2) Fitness & Selection.适配与选择。Apoem采用度量适应度来选择优秀的个体并消除劣等个体。该指标反映了AE的侵略性和隐形性。它的计算考虑了两个因素:威胁程度T和扰动量L。

(3)Immigration 融合。

(4)Crossover交叉。

(5)Mutation突变。

6.3 替代模型

Apoem只知道其目标模型的二元决策,因此很难准确评估个体。为了克服这一挑战,作者设计了一种新颖的替代模型来模拟目标模型,并为Apoem提供近似的类概率。

作者的替代模型的输入是根据生成器产生的扰动生成的函数级FCG。作者使用GCN(即图卷积网络)从替代模型中提取特征,如图6中的绿色块所示。GCN将卷积扩展到图数据,它们擅长利用结构信息和节点信息来完成与图相关的机器学习任务。但是,将 GCN 应用于作者的任务的主要障碍是缺少节点属性。也就是说,FCG 不为其节点提供属性信息。为了缓解这个问题,作者建议使用节点的度数和度数作为其特征。

现在作者简要说明如何使用 GCN 从输入中提取特征。GCN具有多个卷积层。每个图层使用传播规则聚合节点属性,然后由下一个图层处理聚合要素。因此,作者可以使用迭代计算获得一个特征向量来表示 FCG。

6.4 算法设计

(1)如何在Apoem中实现协同进化?

Apoem中的共同进化是双重的。一方面,生成器和判别器相互配合以改善产生的扰动。另一方面,多个人口通过移民合作进化。

(2)如何避免过早收敛?

当一些高速率个体的基因迅速主导种群时[32],就会发生过早的收敛,进化算法会收敛到局部最优。由于人口之间的合作,Apoem可以缓解过早的趋同。通过移民

它们共享其优良基因,并进一步促进其进化。同时,移民也有助于人们从当地的最佳陷阱中跳出来。作者的理论分析在附录10.2中给出。

(3) 何时终止作者的算法?

Apoem有三个停止标准。首先,所有后代都不能再在目标模型上引起错误分类。其次,扰动量在几个连续的轮次内不会减少。第三,达到最大回合数。

(4) 如何根据输出修改APK?

作者算法的输出是调用方-被调用方函数对。根据输出,作者使用第 4 节中提到的 try-catch 陷阱将被调用方函数插入调用方函数中,以实现对抗性扰动。实施细节可在附录 10.3 中找到。

7 实验

作者通过回答以下研究问题进行了广泛的实验来评估BagAmmo:

  • RQ1:有效性。BagAmmo是否成功攻击SOTA Android恶意软件检测方法?

  • RQ2:进化。Apoem中的多个种群如何进化?

  • RQ3:效率。替代模型是否有助于减少查询并提高攻击效率?

  • RQ4:开销。操纵开销和攻击成功率之间是否存在权衡?

  • RQ5:弹性。当存在概念漂移或数据不平衡时,BagAmmo 是否仍然有效?

  • RQ6:功能。作者的对抗性扰动是否会改变恶意软件的功能?

作者数据集包含 21399 个良性样本和 22975 个恶意样本,来自 Androzoo、Faldroid 数据集 [15] 和 Drebin 数据集 [3]。

从Androzoo收集的每个样本都由VirusTotal检测到[54]。仅当一个样本被四个以上的防病毒系统检测到为恶意时,作者才会将其标记为恶意软件。附录 10.4 中提供了作者数据集的详细信息。

此外,作者的实验采用两种配置来评估BagAmmo。根据第一个配置,作者使用 10 折交叉验证来训练目标模型。为了评估攻击方法,作者随机选择了 100 个恶意示例(未包含在目标模型的训练数据中),这些示例可以按目标模型正确分类,用于规避恶意软件生成。对于第二,作者根据 Android 应用程序出现的年份划分数据集,如第 6.5 节所述。新出现的恶意软件样本用于测试,而旧数据用于训练。

最后,作者还考虑了第6.5小节中的概念漂移和数据不平衡的情况。在概念漂移场景中,Androzoo 的 17685 个样本(8,017 个良性示例和 9,668 个恶意示例)按生产年份(2016 年至 2020 年)分组,用于训练目标模型。在数据不平衡的情况下,作者按照[2]中的实验设置,随机排列样本并将良恶意比设置为10:1。

目标模型。作者选择三种SOTA恶意软件检测方法(即MaMadroid [41],APIGraph [67]和GCN [65])作为作者的目标系统。在MaMadroid和APIGraph中,作者分别使用随机森林(RF)[7],AdaBoost(AB)[11],1-最近邻(1-NN)[19],3-最近邻(3-NN)和密集神经网络(DNN)作为目标分类器。与 [65] 类似,作者在基于 GCN 的方法中使用两层 DNN 作为目标分类器。

度量。作者使用攻击成功率(ASR),平均扰动比(APR)和交互回合数(IR)来评估BagAmmo。ASR 对应于成功生成的 AE(用 Nsuccess 表示)与用于生成 AE 的恶意示例数量(用 Ntotal 表示)的比率,即 ASR = Nsuccess/Ntotal。APR 是添加的边数(用 Eadd 表示)与总边数(用 Etotal 表示)的比率,即 APR = E 添加 /Etotal。IR 定义为攻击模型与目标模型之间的交互次数。

  • RQ1:有效性。BagAmmo是否成功攻击SOTA Android恶意软件检测方法?

    表 1 反映了 BagAmmo 在不同特征粒度下对 MaMaDroid、APIGraph 和 GCN 的攻击性能。首先,BagAmmo 在 32 个目标模型上实现了 99.9% 的平均 ASR,从而证实了 BagAmmo 的有效性。其次,当攻击家族粒度分类器时,BagAmmo 实现了最低的 APR 和 IR(即 0.071 和 10.936)。这表明,尽管家族粒度FCG通过降低输入复杂性来加速恶意软件检测,但它仍然通过减少搜索空间来提高BagAmmo的效率。

    图8比较了BagAmmo,SRL,SRL_N和RI在各种APR下的ASR。毫不奇怪,RI 在作者的实验中表现最差,因为它的搜索策略很差。SRL 的性能优于 SRL_N,因为 SRL 可以访问类概率,这比二元决策更有价值。值得注意的是,BagAmmo 的表现仍然优于 SRL(例如,当 APR 为 0.2 时,其 ASR 高出 4%),尽管BagAmmo 不能利用类概率。上述结果证实,在一定数量的扰动下,与其他方法相比,作者的方法生成了更好的附加边缘组合,这些边缘对检测器更具欺骗性。

  • RQ2:进化。Apoem中的多个种群如何进化?

  • RQ3:效率。替代模型是否有助于减少查询并提高攻击效率?

    作者进行了消融研究,以验证替代模型在减少查询和提高攻击效率方面的效果。

    为了进行比较,作者删除了替代模型,并仅使用目标模型指导多种群协同进化算法。这种方法称为BagAmmo-Without-S。

    然后作者使用BagAmmo和BagAmmo-Without-S来操作相同的APK文件,并比较它们的性能。

    结果与分析。替代模型的效果如图 12 所示,其中实线和虚线分别代表 BagAmmo 和 BagAmmo-Without-S。纵轴反映扰动比,横轴表示查询数。可以看出,在所有情况下,BagAmmo 总是具有更高的收敛速度。此外,在扰动比保持在某个阈值(例如,0.1)之前,BagAmmo总是需要更少的查询。请注意,两种方法在初始阶段之间的差异相对较小。这是因为替代模型在此阶段没有得到很好的训练。然而在替代模型经过充分训练并具有足够数据之后 执行效率更高,并显示出其优势。图13比较了BagAmmo和BagAmmo-Without S的IR。它的上半部分给出了基于家庭级FCG的MaMadroid的结果,而下半部分显示了基于封装级FCG的MaMadroid的结果。水平轴表示各种分类器(例如,AB、RF 和 1-NN)。作者可以从这个数字中得出两个结论。首先,包级分类器更难攻击。这是因为软件包级 FCG 包含的节点比家族级 FCG 多得多,从而导致 BagAmmo 的搜索空间更大。其次,使用替代模型几乎在所有情况下都可以减少查询次数,并有助于提高攻击效率。

  • RQ4:开销。操纵开销和攻击成功率之间是否存在权衡?

  • RQ5:弹性。当存在概念漂移或数据不平衡时,BagAmmo 是否仍然有效?

  • RQ6:功能。作者的对抗性扰动是否会改变恶意软件的功能?

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值