直接从本地笔记复制过来,反正没人看,不修改了
SynDroid:一种基于CTGAN-SVM的自适应增强Android恶意软件分类方法
SynDroid: An adaptive enhanced Android malware classification method based on CTGAN-SVM
zotero文献库链接
zotero-pdf链接
摘要:
目前Android手机的市场占有率最高,带来了Android应用程序编程的繁荣,同时也带来了恶意软件(malware)问题。传统的机器学习和深度学习方法广泛应用于Android恶意软件检测和分类,两者都需要大量的应用样本来训练分类器。然而,由于真实环境中恶意软件类别的分布差异巨大,收集到的样本总是不平衡的。对于具有高维度特征、类别不平衡比超过100:1的Android恶意软件样本,传统方法变得无力。为了填补这一空白,我们提出了一种名为 SynDroid 的 Android 恶意软件分类模型。 SynDroid的核心步骤使用CTGANSVM生成合格的高维样本,并自适应地丢弃不良结果。此外,我们提出 KS-CIR 测试来帮助模型确定最需要增强的数据类别。这项新提出的测试可以测量样本质量和数量方面的数据。最后采用随机森林作为分类器完成分类任务。 SynDroid 的性能在 CCCS-CIC-AndMal2020 上评估准确度、精确度、召回率和 F1 分数。纵向和横向比较实验均采用传统过采样方法、成本敏感学习和其他复杂方法进行。结果表明,与相同数据集上的方法相比,该方法的准确率提高了 12%,并缓解了数据不平衡问题。
1.简介
[!NOTE]-
据统计,2022年第一季度,基于Android操作系统的手机占整个智能手机市场的70.79%(Smartphone market, 2022)。最高的市场份额带来了Android应用程序编程的繁荣,同时也带来了Android恶意软件(malware)问题。由于现代人大部分经济活动都是通过手机进行的,黑客可以嵌入恶意软件来窃取用户的敏感信息,例如银行交易记录、个人密码、身份证号码、社交关系等。例如(Goldoson,2023),一种名为“Goldoson”的新 Android 恶意软件已通过 60 个下载量超过 1 亿次的合法应用程序渗透到 Google Play。它可以非法收集敏感数据并注入广告功能,但受害者在其设备上看不到这些活动的任何迹象。开发Android恶意软件检测和分类技术来解决这些问题至关重要。在过去的十年中,研究人员尝试利用大量机器学习 (ML) 算法来防御恶意软件。例如,阿弗等人。 (2013) 进行彻底的分析,提取在 API 级别捕获的恶意软件行为的相关特征。然后他们使用 K-Nearest-Neighbors 算法作为分类器并得到最好的结果。阿尔普等人。 (2014) 提出了 Drebin,这是一种使用 SVM 检测 Android 恶意软件的轻量级方法。 Drebin 非常有效,可以直接在智能手机上识别恶意应用程序。费雷杜尼等人。 (2016) 提出了 ANASTASIA,这是一个使用 XGboost 通过大量静态分析来检测 Android 恶意软件的系统。这些方法通常分析 Android 权限和 API 调用的特征,以区分应用程序是否为恶意软件(Aafer 等人,2013 年;Wu 等人,2021 年)。近年来,随着深度学习的发展趋势,研究人员应用深度神经网络来检测恶意软件,并取得了可喜的成果。例如,冯等人。 (2019) 提出 MobiDroid,利用 CNN 作为检测器,在 Android 设备上提供实时安全、快速响应的环境。为了弄清楚不同深度神经网络的潜在检测精度提升,R. Feng 等人。不仅将提取的特征应用于 CNN 模型,还提出了递归神经网络模型(例如 LSTM 和 GRU (Feng et al., 2020, 2021))。所有这些方法都面临着同样的问题,即Android恶意软件类别的分布差异巨大(Android恶意软件,2021),因此收集的数据集总是不平衡的。
生成对抗网络 (GAN)(Goodfellow 等人,2014)模型在计算机视图研究中被大量使用。尽管GAN模型具有高维度特征或大不平衡率,这些都是Android恶意软件的典型特征,但它仍然可以合成合格的样本。因此,现在研究人员将该技术用于恶意软件检测和分类,旨在增加少数数据的多样性。伦吉斯等人。 (2021)直接使用GAN以表格形式生成Android恶意软件样本,以扩展训练数据集。金等人。 (2018)使用GAN生成假Android样本。虚假数据具有一些新功能,因此检测器可以从中学习并发现一些零日恶意软件。陈等人。 (2021)使用GAN生成图像表达中的恶意软件样本,然后将数据拟合到CNN模型中并获得更好的准确性。
综上所述,GAN模型可以有效改善不平衡的数据集,增强检测或分类结果。然而,常见的情况是,即使经过大量迭代,GAN 模型可能仍然不收敛甚至崩溃(Chen,2021)。研究人员应手动检查生成的数据并及时调整 GAN 模型。但表格数据的检查困难且耗时,无法像图像数据那样一眼就能区分和丢弃。此外,还有许多处理不平衡问题的传统方法。成本敏感学习(Zhou and Liu,2006)根据成本矩阵调整学习权重,旨在让模型更加关注少数类别。过采样等数据级方法(Chawla et al., 2002; He et al., 2008; Hui et al., 2005; Last et al., 2017)直接改变数据分布以增加少数数据量。这些方法仅仅关注少数类和多数类之间的数量差距,但忽略了样本的质量差距。有些恶意软件非常独特,尽管所占比例很小,但模型可以轻松地将它们与其他恶意软件区分开来。有些恶意软件虽然占比较大,但由于功能不突出,仍需加强。因此,分类结果不仅取决于样本的数量,还取决于样本的质量。
为了填补上述空白,提出了一种名为 SynDroid 的 Android 恶意软件分类框架(使用 CTGAN-SVM 来合成 Android 恶意软件)。我们发现 SVM 在训练 GAN 模型时可以真正取代人工检查。它能够及时感知生成数据的偏差并正确反馈给GAN模型。然后对GAN的参数进行调优,生成的数据就会更加合格。我们还提出了一种名为 KS-CIR 测试的新颖评估方法来衡量样品的质量和数量。我们在 CCCS-CIC-AndMal2020 上对 SynDroid 进行了实验,这是一个庞大但不平衡的数据集,由 14 个系列的 20 万多个 Android 恶意软件组成。经过一系列纵向和横向实验,我们发现SynDroid获得了最佳性能。综上所述,本文的贡献如下:
• 数据增强前的一种新的评估方法:提出了一种全新的评估方法,称为KS-CIR 测试。我们结合柯尔莫哥洛夫-斯米尔诺夫检验和类别不平衡比来衡量样本的质量和数量,从而确定是否需要增加少数类别。它比成本敏感学习或仅关注数量差距的传统过采样方法表现更好。
• 使用CTGAN-SVM自适应缓解不平衡问题:我们实现CTGAN(Lei和Veeramachaneni,2018)来合成Android恶意软件样本,样本比传统的过采样方法更合格。此外,我们的方法可以自动丢弃不好的结果并正确调整模型的参数。 SVM 取代了研究人员必须手动检查结果的角色,并且过程更加省力。
• 所提出方法的充分验证:在CCCS-CIC-AndMal2020上进行了纵向和横向对比实验。与其他方法相比,AdnSyn 在准确度、召回率、精度和 F1 分数方面具有更好的性能。本文的其余部分安排如下。背景和相关工作部分介绍背景知识和以前的相关工作。建议的方法部分描述了 SynDroid 模型和 KS-CIR 测试的详细信息。实验结果和讨论在实验和讨论部分给出。结论和未来的工作在结论和未来的工作部分。致谢部分表示对本文的支持。
2.背景及相关工作
2.1. Android恶意软件分析
根据恶意软件样本处理方式的不同,恶意软件分析方法可分为静态分析和动态分析。
2.1.1.静态分析
静态分析的目的是在不执行或安装样本的情况下提取特征。由于其特殊性,如果样本来自已知的恶意软件家族,该检测器可以在短时间内获得良好的检测结果。但当样本使用混淆技术或来自全新的恶意软件类别时,此方法效果不佳。在Android恶意软件检测环境中,静态分析通常提取代码信息、API调用或权限作为样本的典型特征。
为了分析代码信息,Chen 等人。 (2015)提出了一种名为TiniDroid的二进制分类恶意软件检测系统,使用Apktool将APK文件反编译为Smali代码,与Dalvik字节码相比,Smali代码是一种更可解释的代码形式。然后系统计算Smali代码的n-gram,并使用n-gram结果作为分类的基础。刘等人。 (2021)受到来自同一家族的恶意软件总是共享相似代码这一事实的启发,并提出了 NSDroid。 NSDroid 根据应用程序的函数调用图检测恶意软件。
为了分析 API 调用和权限,Suarez-Tangil 等人。 (2017) 提出了 DroidSieve。 DroidSieve 提取静态特征,包括代码中发生的 API 调用、请求权限和其他应用程序组件。在对这些特征进行全面检查后,将数据输入到包括SVM、Extra Trees和XGBoost在内的多个分类模型中,检测率达到99.44%。乔等人。 (2016) 提出了一种恶意软件检测方法来自动提取 API 调用和权限。作者将*.dex字节码反编译为java代码并创建API调用列表,发现这比检查AndroidManifest.xml文件来获取权限更准确。吴等人。 (2012) 提出 DroidMat 不仅关注 API 调用本身,还关注 API 调用的服务和活动。获取额外信息的原因是,即使是相同的 API 调用,根据它们排列在不同的组件中,也可能有不同的意图。
2.1.2.动态分析
动态分析需要运行样本,得到它们的真实行为及其对运行环境的影响。即使我们事先不了解恶意软件,它也能表现良好,但会消耗更多时间并在威胁即将发生时检测到威胁。动态分析监视特定行为,包括系统调用、其他系统级行为和用户空间级行为。
为了监视系统调用,Xiao 等人。 (2018)利用长短期记忆模型作为分类器,并考虑给定调用的整个序列。在他们的方法中,系统调用被视为一个独立的“单词”,因此整个系统调用序列被视为一个自然语言句子。坎福拉等人。 (2015)还提出了一种基于系统调用的检测方法。该方法可以从大量的系统调用中选择重要的检测结果,发现恶意软件往往具有一些共同的行为,并且相同的行为可以以语义相同的方式进行编码。
除了系统调用之外,还有其他系统级信息可以对恶意软件进行签名。冯等人。 (2018)提出EnDroid,提取动态行为特征,包括网络操作、密码操作、文件操作、电话呼叫、短信、接收器操作、接收器启动、*.dex文件加载、信息泄漏和系统调用。这十个特征被转换成特征向量,分类器根据这些向量检测良性和恶意样本,检测准确率达到97%。
用户空间级别的信息是指API调用而不是系统级别的调用。为了利用此类信息,Xie 等人。 (2018) 提出 RepassDroid 结合语义和句法分析来检测恶意软件。 RepassDroid的特征提取模块将API调用视为语义函数,将必要权限视为句法函数,将其形成特征向量,然后将向量放入分类器模块中,准确率达到97.7%。
2.2. CTGAN
生成对抗网络起源于 Goodfellow 等人。 (2014),其架构包括两个独立的神经网络:生成器和鉴别器,如图1所示。生成器顾名思义,就是从噪声数据中生成假数据,鉴别器学习后判断假数据。真实数据。不断的迭代训练过程最终使得生成的数据与真实数据完全相似。 CTGAN(Lei 和 Veeramachaneni,2018)特别建议用于生成表格形式的数据。由于表中数据的多样性,包括数字、分类、时间、文本和跨表引用,CTGAN 变得复杂。因此,CTGAN 以可逆的方式对数据进行预处理,如下所示:
• 数值变量的模式特定标准化。 CTGAN 使用高斯混合模型 (GMM) 对数值变量的值进行聚类,通过简单地将数值特征标准化为 [-1,1] 或仅使用 tanh 激活来生成特征来克服不良结果。
• 分类变量的平滑。 CTGAN 将分类变量转换为 one-hot-encoding 表示,并向二元变量添加噪声,然后直接使用 softmax 生成概率分布。
CTGAN以长短期记忆(LSTM)网络作为生成器,并在判别器中使用多层感知器(MLP)。特别是,为了更有效地预热模型,CTGAN 通过将离散变量的 KL 散度和连续变量的聚类向量添加到损失函数中来联合优化它们。添加KL散度项也可以使模型更加稳定。
2.3.恶意软件检测中的数据增强
数据科学中使用的数据增强旨在通过对现有数据进行轻微修改或根据现有数据创建全新的数据来增加数据量。它可以在训练时扩展、平衡数据集并减少过度拟合(数据增强,2023)。传统上,它接近于过采样方法(Chawla et al., 2002; He et al., 2008; Hui et al., 2005; Last et al., 2017),通常用于处理图像数据。应用于恶意软件的数据增强是一项很有前途的研究,可以从两个角度来看。
对于攻击者来说,他们尝试使用数据增强技术来创建对抗性恶意软件样本以绕过检测器(也称为对抗性学习)(Rosenberg et al., 2021)。例如,Hu和Tan(2017)使用GAN创建恶意软件样本来执行黑盒攻击,将检测率降低到几乎为零,并使针对对抗样本的基于再训练的防御方法难以发挥作用。陈等人。 (2019)采用逐步修改样本特征的策略来找到良性样本和恶意样本之间的决定性差距。这样,攻击者就可以改变样本的关键特征来误导 CNN 分类器。
对于防御者来说,目标是使用数据增强技术生成更多恶意软件样本,以改进其检测模型。例如,金等人。 (2018)使用GAN从随机分布生成假数据,它与真实数据相似,并包含一些修改后的特征。虚假数据可以被假定为新颖的恶意软件,因此检测器可以从中学习并发现一些零日恶意软件。王等人。 (2020)使用对抗性样本来增强其 GCNN 模型的鲁棒性,提出基于系统调用序列增强方法来挖掘预测序列。陈等人。 (2018)旨在通过将程序转换为向量表达式,然后将样本的二元特征空间转换为连续概率来找到检测器的分类边界。瓦桑等人。 (2020)传统上使用旋转角度、偏移、缩放等图像放大方法来改变代码图像。陈等人。 (2021)使用GAN对恶意软件样本进行增强,将其处理成图像表达,然后将数据拟合到CNN模型中,发现数据增强后检测结果得到改善。伦吉斯等人。 (2021)直接使用GAN生成表格表达的恶意软件样本来扩展训练数据集,但没有评估合成数据的质量,也没有测试检测结果。
3. 提出的方法
我们提出了一种名为SynDroid的恶意软件分类框架来合成部分较少或不具有突出特征的样本,SynDroid的架构如图2所示。
SynDroid 包含三个主要步骤。第一步是使用一种名为 KS-CIR 测试的新方法来检查不平衡数据集。 KS-CIR 测试会考虑样本的质量和数量,找出需要增强的类别。第二步是根据KS-CIR测试结果应用CTGAN-SVM合成某些类别的恶意软件样本。第三步是将高质量生成的样本添加到数据集中,并使用随机森林完成恶意软件分类任务。该架构的细节将在接下来的小节中讨论。
3.1. SynDroid的第1步
在恶意软件分类任务中,如果样本不足(数量问题)或没有突出的特征(质量问题),分类器将表现不佳。因此,SynDroid的第一步是KS-CIR测试,兼顾数量和质量,旨在找出数据集中哪些类需要增强。
高质量的样本意味着样本足够独特,分类器可以轻松地将它们与其他样本区分开来。因此,这里的KS-CIR测试中的Kolmogorov-Smirnov测试就是为了衡量样本的唯一性。双样本 K-S 检验是比较两个样本的最有用和最通用的非参数方法之一,因为它对两个样本的经验累积分布函数的位置和形状的差异很敏感。它实际上回答了“这两组样本从相同(但未知)的概率分布中抽取的概率是多少?”的问题(Kolmogorov-Smirnov test,2023)。对于一组数据 [ x 1 , x 2 , x 3 , . . . , x n ] [x_1, x_2, x_3,...,x_n] [x1,x2,x3,...,xn],经验分布函数定义为等式: (1)
F n ( x ) = 1 n ∑ i = 1 n 1 [ − ∞ , x ] ( X i ) ( 1 ) F_n(x)=\frac{1}{n}\sum_{i=1}^n1_{[-\infty,x]}\left(X_i\right)\ \ \ \ \ \ \ (1) Fn(x)=n1i=1∑n1[−∞,x](Xi) (1)
其中 1 [ − ∞ , x ] ( X i ) 1_{[-\infty,x]}\left(X_i\right) 1[−∞,x](Xi) 是指示函数,如果 X i < x X_i<x Xi<x 等于 1,否则等于 0。两个给定经验分布函数 F 1 , n ( x ) , F 2 , m ( x ) F_{1,n}(x),F_{2,m}(x) F1,n(x),F2,m(x) 的 K–S 统计量在等式(2)中定义。
D
n
,
m
=
s
u
p
x
∣
F
1
,
n
(
x
)
−
F
2
,
m
(
x
)
∣
(
2
)
D_{n,m}=sup_x\left|F_{1,n}(x)-F_{2,m}(x)\right|\ \ \ \ \ \ \ (2)
Dn,m=supx∣F1,n(x)−F2,m(x)∣ (2)
其中
s
u
p
x
sup_x
supx 是距离集合的上界。直观上,Kolmogorov-Smirnov 统计量取两个经验分布函数
F
1
,
n
(
x
)
,
F
2
,
m
(
x
)
F_{1,n}(x),F_{2,m}(x)
F1,n(x),F2,m(x) 之间的最大绝对差(见图 3)。
如图5所示,A类由 N N N个样本组成,B类由 M M M个样本组成,均具有n个特征 [ F 1 , F 2 , F 3 , . . . , F n ] [F_1,F_2,F_3,...,F_n] [F1,F2,F3,...,Fn], F i F_{i} Fi 的Kolmogorov-Smirnov统计量D计算为等式。 (2)。在计算每个特征的 Kolmogorov-Smirnov 统计量 D 后,我们将 D 的平均值作为 A 类和 B 类之间的 K-S 分数 S,如式(3)所示。
S = ∑ i = 1 n D F i / n ( 3 ) S=\sum_{i=1}^nD_{F_i}/n\ \ \ \ \ (3) S=i=1∑nDFi/n (3)
其中 n 是特征的数量。 K-S测试的目的是衡量每个数据类的唯一性。一旦我们使用方程式 (3),我们比较两个类之间的差异。但K-S测试不能仅仅停留在二级水平。我们必须进一步将K-S分数应用到每个班级级别。然后我们计算数据集中每对类的 K-S 分数 S,详细信息在算法 1 中给出。
K S i = 1 − ∑ j = 1 , j ≠ i c S i , j c − 1 ( 4 ) KS_i=1-\frac{\sum_{j=1,j\neq i}^cS_{i,j}}{c-1}\ \ \ \ \ (4) KSi=1−c−1∑j=1,j=icSi,j (4)
其中 c 是数据集中的类数。 K S i KS_i KSi 最终衡量 i 类的唯一性,并将从最大(最不唯一)到最小(最唯一)排序。
C I R = M / m i CIR=M/m_i CIR=M/mi
其中M是多数类样本的数量, m i m_i mi是少数类样本的数量。 CIR 将在每个类别中计算,并从大到小排序。
现在我们根据分数和 CIR 分别得到两个由类名称组成的有序列表,然后我们需要从两个列表中选择替代类。 K-S列表的选择规则如式(2)所示。 (6)
A = { i ∣ K S i > K S a v e } ( 6 ) A=\begin{Bmatrix}i|KS_i>KS_{ave}\end{Bmatrix}\ \ \ \ \ \ (6) A={i∣KSi>KSave} (6)
其中 K S i KS_i KSi 是用式(1)计算的第 i 类的 K-S 检验结果。 (4) K S a v e KS_{ave} KSave是所有K-S测试结果的平均值。如果一个班级的 KS 分数低于平均水平,则被认为不突出,需要提高。 CIR列表的选择规则如式(7)所示。
B = { i ∣ C I R i > C I R a v e } ( 7 ) B=\begin{Bmatrix}i|CIR_i>CIR_{ave}\end{Bmatrix}\ \ \ \ \ \ (7) B={i∣CIRi>CIRave} (7)
其中 C I R i CIR_i CIRi 是用等式(5)计算的第 i 类的 CIR。 在本文中,我们确定 CIR 高于平均水平的恶意软件类别是需要增强的少数类别。
最后,如图4所示,我们将两个集合的交集作为KS-CIR测试的结果。包含的类是需要增强的类。计算最终 KS-CIR 测试结果的整个步骤在算法 2 中给出。
3.2. SynDroid的步骤2
SynDroid的第二步是合成样本并检查合成样本的质量。经过KS-CIR测试后,增强类就确定了,这些样本即将发送到CTGAN。
生成样本的数量是一个超参数。在传统的过采样方法中,少数类的数量简单地与多数类的数量相等。但对于具有数百个特征的 Android 恶意软件样本数据集,类不平衡比率从 10 到 100 不等,这种简单的处理效果并不好。因此,在本文中,我们定义了方程式(8)中的基线量。
N = M C I R a v e ( 8 ) N=\frac{M}{CIR_{ave}}\ \ \ \ \ \ (8) N=CIRaveM (8)
其中M是多数类样本的数量,CIRave是CIR的平均值。我们还使用传统的基线量和过采样方法,实验结果将在第 4 节中给出,并表明我们的方法表现更好。
GAN模型通常用于生成图像数据。在恶意软件分类场景中,将样本转换为图像形式可能是一个新颖的想法(Jian et al., 2021),但这会失去检测结果的可解释性(我们无法分辨恶意软件图像中像素的实际含义),并且将样本转换为图像形式也需要花费大量时间。因此在大多数情况下,应用样本都会被处理成特征向量,因此我们选择Tabular GAN,一种可以直接生成表格形式数据的GAN模型。
GAN 存在一个常见问题,即即使经过大量迭代,模型仍可能生成低质量的数据。当GAN的损失函数达到阈值,判别器无法正确区分生成数据和真实数据时,就会发生这种情况。所以我们有必要手动检查生成的数据,并适时调整模型内部的参数,以避免出现不好的结果。但是,当生成的数据量很大时,情况就会变得复杂,并且表格数据与图像数据不同,无法仅凭一眼就将其区分为不良结果。
因此,在 GAN 模型之外设置一个监督者而不是手动检查会更高效。 SVM 是一种简单但有效的模型,广泛用于二元分类。 SVM的特点可以满足我们的需求,即CTGAN-SVM组合模型不是很复杂,并且可以自适应地生成合格的数据。如图2所示,SVM实际上起到了判断的作用,保证了这个自适应过程。如果SVM的辨别率低于阈值TH,则可以认为合成样本具有高质量,因此可以采用它们。否则,我们放弃它们并调整模型内部的参数,然后重新启动它。经过测试,TH确定为5%,得到了良好的结果。步骤2的细节如算法3所示。第4节将给出一个以SVM为指导的自适应处理的例子。
3.3. SynDroid的步骤3
SynDroid的第三步使用随机森林分类器完成Android恶意软件分类任务,分类器接收原始恶意软件样本和合成样本。随机森林是一种集成学习方法,其结果由RF内部最多的树分类器决定。自 1995 年首次提出以来,它被广泛应用于分类和回归任务(Ho,1995)。 Android 恶意软件分类本质上是一个是或否的问题,这对于具有分支结构的树模型来说非常合适,这就是为什么我们选择随机森林作为我们方法的分类器,尽管它不是很新颖。我们还将 RF 与其他分类器进行比较,以验证我们的方法的优势,横向和纵向实验将在第 4 节中给出。结果表明,尽管随机森林不如近提出的深度学习模型先进,但它与我们的方法相比表现更好SynDroid 方法。
4 实验与讨论
4.1.实验装置
数据集:CCCS-CIC-AndMal-2020(Keyes et al., 2021;Rahali et al., 2020)是一个大数据集,包含 14 个类别的超过 20 万个 Android 恶意软件,由加拿大网络安全研究所 (CIC) 合作收集与加拿大网络安全中心 (CCCS) 合作。所有样本均经过AndroidManifest.xml文件预留工程处理,提取的特征包括:
- 活动
- 广播接收者和提供者
- 元数据
- 应用程序请求的权限
- 系统功能(例如摄像头和互联网)
此外,我们应用基尼指数(基尼杂质)来选择特征。基尼指数可以计算每个特征对分类结果的贡献。它被定义为
G i n i ( p ) = ∑ k = 1 K p k ( 1 − p k ) ( 9 ) Gini(p)=\sum_{k=1}^Kp_k\left(1-p_k\right) \ \ \ \ \ (9) Gini(p)=k=1∑Kpk(1−pk) (9)
其中有 K 个类别。样本属于类别 k 的概率为 p k p_k pk。如果根据特征A的不同取值将数据集D划分为子集 D 1 , D 2 , . . . , D m D_1,D_2,...,D_m D1,D2,...,Dm,则特征A的基尼指数定义为
G i n i ( D ; A ) = ∑ i = 1 m ∣ D i ∣ ∣ D ∣ G i n i ( D i ) ( 10 ) Gini\left(D;A\right)=\sum_{i=1}^{m}\frac{\left|D_{i}\right|}{\left|D\right|}Gini\left(D_{i}\right)\ \ \ \ \ (10) Gini(D;A)=i=1∑m∣D∣∣Di∣Gini(Di) (10)
计算出每个特征的基尼指数后,我们按照排序选取其中的220个。所有特征均为整数格式,包括0-1值和连续值两种数据。 0-1 值表示恶意软件是否执行某项活动(例如申请权限)。连续值表示执行相同活动的恶意软件数量(例如调用摄像头的次数)。无论是离散的 0-1 值还是连续值都可以用方程很好地计算。 (1) 和等式。 (2)。因此,K-S检验可以在CCCS-CIC-AndMal2022中正确使用。我们选取 12 个家庭(除零日和无类别标签外)进行实验,然后将数据按照 7:3 的比例分割进行训练和测试。详细信息如表 1 所示。
参数:该方法的自适应过程如下。我们首先将CTGAN的参数设置为batch size=50,epochs=100。根据方程。 (8),我们确定基线量为1469。在训练过程中,发现SVM的判别率超过5%。因此,CTGAN的参数调整为batch size=70, 60, 40, 30, 20, 10,epochs也从120调整为20。最后,当batch size=20,epochs=50时,区分度最低率达到 0.47(低于 5%)。因此,认为生成的数据是合格的,参数是固定的。部分程序如表 6 和表 7 所示。
对比实验:为了评估所提方法的有效性,我们设计了两种实验:纵向对比实验和横向对比实验。
纵向实验改变了该方法的结构,以验证所提出结构的有效性。具体来说,我们保留 SynDroid 的步骤 1 和 2,只是测试不同的基本分类器以找到最好的分类器。然后,我们删除 SynDroid 的生成器,转而使用名为类权重的参数,该参数通常在 Scikit-learn 包中数据集不平衡时应用。它被定义为
c l a s s w e i g h t = n s a m p l e s n c l a s s e s × i s a m p l e s ( 11 ) class weight=\frac{n_samples}{n_classes\times i_samples}\ \ \ \ \ \ (11) classweight=nclasses×isamplesnsamples (11)
其中n_samples是所有样本的数量,n_classes是数据集中的类的种类,i_samples是某个类i的样本数量。成本敏感学习会计算每个类别的权重来构建成本矩阵。它根据矩阵调整每个类别的训练权重。相反,我们只是调整 KS-CIR 测试选择的某些类别(不是每个)训练权重来评估 KS-CIR 测试的有效性。之后,我们删除了SynDroid的步骤1和2,而是应用SMOTE、ADASYN、BorderlineSMOTE和KmeansSMOTE与GAN模型进行比较来增强数据集,采用上一步中找到的最佳分类器进行分类。
此外,为了验证SVM是否可以代替人工检查来帮助GAN模型的自适应过程,生成了不同批量大小和时期的数据组。 SVM会区分每组生成的数据并得到一个比率。然后我们随机选择真实数据和生成数据的两个特征并计算统计特性。我们的目的是看看SVM的率和手动计算的统计结果之间的关系:较低的辨别率是否代表生成的数据具有较高的相似性。
水平实验将所提出的方法与其他复杂模型进行了比较,包括 XGBoost(Chen 和 Guestrin,2016)、带有注意力的 BiLSTM 和 DiDroid(Rahali 等人,2020)。 XGboost是一个使用梯度提升决策树算法的强分类器,广泛应用于机器学习竞赛中。 BiLSTM 是一种用于处理序列数据的循环神经网络。它同时考虑前输入和后输入(LSTM 仅从左到右传递)。 BiLSTM 使用注意力机制进行训练,用于强调特征,结果会更加准确,并广泛用于分类任务(Shen et al., 2022)。 DiDroid是与CCCS-CIC-AndMal-2020相关联提出的方法,因此将SynDroid与其进行比较是合适的。
评估指标:评估指标包括准确率、精确率、召回率和 F1 分数。它们的定义如下:
A c c u r a c y = T P + T N T P + T N + F P + F N ( 12 ) P r e c i s i o n = T P T P + F P ( 13 ) P r e c i s i o n = T P T P + F N ( 14 ) F 1 = 2 × P r e c i s s i o n × R e c a l l P r e c i s s i o n + R e c a l l ( 15 ) \begin{aligned}&Accuracy=\frac{TP+TN}{TP+TN+FP+FN}\ \ \ \ \ \ (12) \\ &Precision=\frac{TP}{TP+FP}\ \ \ \ \ \ (13) \\ &Precision=\frac{TP}{TP+FN}\ \ \ \ \ \ (14) \\ &F1=\frac{2\times Precission\times Recall}{Precission+Recall}\ \ \ \ \ \ (15)\end{aligned} Accuracy=TP+TN+FP+FNTP+TN (12)Precision=TP+FPTP (13)Precision=TP+FNTP (14)F1=Precission+Recall2×Precission×Recall (15)
其中 TP、TN、FP 和 FN 都是在多分类任务中定义的,意味着计算时一类与其他类的比较。
4.2. K-S CIR测试
我们对 12 个 Android 恶意软件类别应用 K-S CIR 测试,结果如表 2 所示。根据等式 (6) 和等式 (7),我们得到两个 K-S 分数和 CIR 高于平均水平的类别列表。 K-S 分数的列表 1 包括广告软件、文件感染者、PUA、勒索软件、风险软件、银行家、短信和间谍。 CIR 列表 2 包括 Backdoor、File Infector、PUA、Scareware 和 Banker。两个列表的交集是File Infector、PUA和Banker,根据式(1)计算的基线量。 (8)is1469。生成 File Infector、PUA 和 Banker 样本后,CIR 平均值从 46.65 下降到 32.91。
可见,KS-CIR测试并不仅仅选择数量较少的类别。例如,Backdoor和Scareware的CIR都在60以上,但从K-S评分来看,它们具有突出的特征,这意味着它们虽然属于少数,但很容易与其他类别区分开来。
4.3.性能对比
4.3.1.纵向实验
纵向实验结果如下。在表 3 中,我们测试了不同的底部分类器,包括 K 最近邻 (KNN)、多层感知器 (MLP)、决策树 (DT) 和随机森林 (RF)。可以看出,使用SynDroid增强少数数据后,每个分类器都获得了更好的性能。具有 RF 的 SynDroid 在所有指标上均获得最佳性能,因此分类器已确定。
然后,我们用等式计算每个班级的权重。 (11)结果如表4所示。基于RF,我们使用成本敏感学习来调整每个类别的训练权重,与仅使用KS-CIR测试来调整File Infector、PUA的训练权重进行比较和银行家。结果如表5所示。我们可以看到,成本敏感型学习获得了最好的召回率,但 KS-CIR 测试在准确度、精确度和 F1-score 方面击败了成本敏感型学习。这个结果表明,我们的 KS-CIR 测试可以有效地选择最需要增强的类别,而不仅仅是根据样本数量。
之后,KS-CIR 测试和 CTGAN 被删除。相反,我们使用传统的过采样方法来增强数据集。表 8 中的结果表明,带 RF 的 SMOTE 和 BorderlineSMOTE 在所有指标上的表现甚至比 SynDroid-DT 更差。 ADASYN-XGB 获得了最佳精度,但准确性、精度和 F1 分数却输给了 KmeansSMOTE 和 SynDroid。 KmeansSMOTE 是最好的传统过采样方法,但 SynDroid 在准确率上领先 1%,在召回率上领先 0.5%,在精度上领先 5%,在 F1 分数上领先 3%。
另外,我们生成了5组FileInfector的数据并应用SVM来区分它们。首先,我们选择epoch为50,调整不同的batch size,结果如表6所示。batch size为20时判别率最低。然后,我们选择batch size为20,调整不同的epoch,结果示于表7。批量大小为 20、纪元为 50 的生成数据也获得最低的辨别率。之后,我们随机选择数据的两个特征来计算统计特征并绘制箱线图,如图5所示。很明显,与其他数据相比,批量大小为20、时期为50的数据分布与真实数据最相似。
批量大小为20并调整不同的epoch,结果如表7所示。批量大小为 20、纪元为 50 的生成数据也获得最低的辨别率。之后,我们随机选择数据的两个特征来计算统计特征并绘制箱线图,如图5所示。很明显,与其他数据相比,批量大小为20、时期为50的数据分布与真实数据最相似。
4.3.2.水平实验
在水平实验中,我们将我们的方法与 XGBoost、带有注意力机制的 BiLSTM 和 DiDroid 进行了比较。归一化混淆矩阵如图 6,7,8,9 所示,最终结果如表9所示。从表 9 中我们可以得出结论,DiDroid 获得最佳召回率,SynDroid 获得最佳准确率、精确度和 F1 分数。此外,树分类器(XGBoost 和 SynDroid)的性能优于神经网络分类器(BiLSTM 和 DiDroid)。从图中可以看出,少数类别(风险软件和广告软件)总是获得最佳分类结果(超过 90%)。但数量上的优势并不一定会带来更好的结果,所有四种方法在勒索软件(4379 个样本)上的表现都比木马(9537 个样本)更好,这就是为什么我们应该注重质量和数量来平衡数据集的原因(见图 6, 7, 8, 9)。
4.4.讨论
在纵向实验中,表3显示,使用SynDroid后,所有模型的表现都比之前更好。验证了SynDroid的有效性。表 5 的结果表明,成本敏感的召回率最高,SynDroid 的准确率、精度和 F1 分数最高。原因是成本学习最关注少数群体,大量样本被错误分类为少数群体。相应的,他们在准确度、精确度、F1分数上都会损失很多。 KS-CIR 测试在准确性、精确度和 F1 分数方面赢得了成本敏感型学习的事实表明 KS-CIR 可以真正确定某些最需要关注的类别,而不仅仅是数量差距。因此,调整这些类别的训练权重比每个类别的训练权重都要好。结果还表明,在处理具有较高 CIR 的数据集时,仅调整训练权重是不够的,应重点关注数据级技术。
比较表 3 和表 8,我们可以发现,尽管 RF 是一种更先进的算法,但 SMOTE 和 BorderlineSMOTE 与 RF 在所有指标上的表现都比带有 DT 的 SynDroid 差。原因之一是我们的样本有230个特征(选择后),这些传统方法无法生成如此高维度的合格样本。另一个原因是这些方法仅仅关注少数和多数之间的数量差距,因此它们必须生成从100级到10K级数量的样本,这是非常困难的。 ADASYN-RF 比 SynDroid 获得更好的精度,但在 Recall 和 F1-score 上损失很多。 KmeansSMOTE-RF 比其他过采样方法表现更好,因为它是一种较新的算法,我们发现它只是复制相同的样本来平衡数据集。因此,它只会改变样本数量,但模型根本不会了解有关少数群体的更多信息。
表 6-7 中的结果表明,批量大小为 20、历元为 50 的生成数据的 SVM 判别力最低。我们可以清楚地看到,在图 5 中,批量大小为 20、历元为 50 的数据具有最接近真实数据的统计特征。因此,可以得出结论,SVM确实可以代替人工检查来帮助GAN模型的自适应处理:速率越低通常意味着生成的数据质量越好。我们可以以SVM的判别率为指导来适当调整GAN模型,而不是通过计算每组数据的统计特征来衡量生成的数据好坏。在GAN之外使用SVM消耗时间更少并且有效。
在水平实验中,我们可以看到所有这些方法都得到了令人满意的结果,但SynDroid表现更好。基于树算法的分类器(XGBoost和SynDroid)比基于神经网络的分类器(Didroid和带有Attention机制的BiLSTM)获得更好的结果,因为Android恶意软件分类任务本质上是一个是或否的问题,这非常适合树模型分支结构。像CNN、BiLSTM这样的神经网络都受到损失函数的控制,这会将是或否问题转变为复杂的成本问题,甚至会得到更糟糕的结果。我们还可以发现,所有这些方法都可以对大多数(广告软件、风险软件)进行分类,准确率超过 95%,优于数量较少的方法。然而,数量上的优势并不一定会带来更好的结果,例如分类器在 FileInfector 上的表现优于 PUA 和 Dropper。
5 结论和未来工作
在本文中,我们提出了 SynDroid,这是一种使用 GAN 来扩充数据集的 Android 恶意软件分类方法。为了确定数据集中的哪些类需要增强,我们提出了 KS-CIR 测试,结合 K-S 测试和类不平衡比,同时考虑样本的质量和数量。通过 KS-CIR 测试和 CTGAN,我们扩充了数据集并在 CCCSCIC-AndMal2020 上获得了良好的性能。
然而,SynDroid 仍然存在局限性。 SynDroid在一定程度上缓解了数据集的不平衡问题,但并不能彻底解决问题。它使用GAN来增强数据以获得更好的分类结果,但消耗更多时间。尽管使用SVM抛弃了不好的结果,但GAN模型本身的问题并没有得到解决。未来,我们将改进该方法并在更多数据集上进行实验,使其能够广泛应用于Android恶意软件检测。此外,K-S 检验只能测量某些类别的数据。我们仍然缺乏衡量整个数据集质量的指标。未来,我们希望提出一种结合分类结果改进和数据集统计特性(错误率、空值数量、暗数据量、信息量等)的方法。在该方法的指导下,恶意软件的数据增强可以更加科学化、数学化。