[论文翻译] LTAChecker:利用注意力时态网络基于 Dalvik 操作码序列的轻量级安卓恶意软件检测
LTAChecker: Lightweight Android Malware Detection Based on Dalvik Opcode Sequences using Attention Temporal Networks
摘要:
Android 应用程序已成为黑客攻击的主要目标。安卓恶意软件检测是一项关键技术,对保障网络安全和阻止异常情况至关重要。然而,传统的静态分析难以分析新的恶意应用程序,而动态分析则需要更多的系统资源。我们提出了一种基于注意力时态网络的新型轻量级安卓恶意软件深度学习检测框架。本研究深入研究了安卓恶意软件的 Dalvik 操作码序列,采用 N-gram 算法分割序列并提取上下文信息特征。然后,利用 LSTM 和 TCN 算法捕捉长期依赖关系和局部特征,从而全面理解 Dalvik 操作码序列中的时间信息。特别是,TCN 可促进跨时间尺度的特征提取,从而实现对 Dalvik 操作码序列中不同时间尺度的异常模式的检测。此外,我们还引入了多头关注机制和强化学习,以引导模型关注恶意软件序列中的行为线索。最后,大量实验结果表明,我们提出的方法和模型具有更高的检测准确性和鲁棒性,平均准确率达到 98.69%,超过了随机森林和伪标签深度神经网络等传统机器学习方法。
1.引言
随着移动应用程序的普及,安卓平台已成为数百万用户和应用程序开发人员的首选。与此同时,安卓恶意软件的威胁也在不断上升。根据《2023年上半年中国手机安全报告》[1],移动终端新截获恶意软件样本1700万个,较2022年上半年(1080万个)增长57.4%。这些恶意应用程序可能会造成用户隐私泄露和远程控制等严重威胁。目前,智能手机操作系统主要由安卓系统和iOS系统占据,其中安卓系统占据了75.3%的市场份额。因此,安卓恶意软件检测已成为确保移动应用安全的重要组成部分。
近年来,机器学习(ML)技术被广泛应用于恶意软件的检测,因为它们不依赖于特定的规则,自动化程度和鲁棒性更高。传统的安卓恶意软件检测方法一般可分为两种:1) 静态分析,包括简单的应用程序指纹识别,从反编译的 Android Manifest 文件中提取静态功能,如 API 请求、权限和意图[2]。然后利用机器学习来确定应用程序是否是恶意的[3][4]。另外,还可利用检测文件中已知的恶意代码特征来识别潜在威胁[5]。2) 动态分析,旨在通过捕获应用程序运行时特征来检测恶意行为,通常涉及动态污点分析,可以分析复杂的动态行为,而无需访问应用程序源代码,实时监控应用程序是否存在潜在的有害活动。运行时 API 调用特征 [6] 和流量模式 [7] 是动态检测解决方案的有效组成部分。在对现有的数据和基于机器学习(ML)的恶意软件检测解决方案进行深入研究后,我们认识到了各种挑战和问题:1) 传统的静态代码分析方法在获取软件源代码方面存在困难,在特征提取方面也缺乏粒度。2) 动态分析虽然能够捕捉到更多真实的行为意图信息,但需要耗费大量时间并产生大量冗余信息。上述任何一个方面的缺陷都可能导致解决方案不完善和存在盲点。
为了克服传统静态分析的局限性,避免动态分析对资源的高要求,本研究提出了一种名为 LTAChecker 的轻量级恶意软件检测框架。我们在应用程序的静态信息层考虑了 Dalvik 操作码序列。该模型能够绕过应用程序源代码,直接从 smali 文件中提取汇编代码,从而实现更精确的应用程序行为检测和特征提取。此外,基于 Dalvik 操作码序列的特征不仅依赖于静态信息,还强调了应用程序的实际运行时行为。这种方法可以揭示动态生成的恶意行为,或规避绕过传统静态分析的恶意软件,从而提供更好的适应性和灵活性。事实上,我们的研究表明,采用更复杂的特征并不一定能显著提高检测精度[8] [9]。
接下来,我们利用 N-gram 算法对获得的 Dalvik 操作码序列进行分区。在实验中,我们将参数 N 设为 5,因为这样可以取得平衡。如果 N 太小,可能无法充分捕捉时序关系。反之,如果 N 太大,数据维度将显著增加,导致冗余特征增多,并可能降低检测精度。此外,我们还采用遗传算法(GA)对分割后的特征数据进行特征选择,过滤掉判别能力较弱的特征。
作为 LTAChecker 检测框架的核心部分,我们提出了一种用于安卓恶意软件检测的新型轻量级时态注意(LTA)模型。与传统的卷积网络(如 CNN)相比,LSTM-TCN 模型在理解和提取嵌入在操作码序列中的时间特征方面具有更强的能力,使其能够捕捉长期依赖性和局部特征。因此,它可以全面解释 Dalvik 操作码序列中的时间信息。此外,TCN 还能跨时间尺度提取特征,从而在不同时间尺度上检测 Dalvik 操作码序列中的异常模式。为了进一步提高检测精度,我们将多头关注机制与强化学习相结合,使模型在训练过程中更加关注恶意软件序列中的行为线索。
所提出的 LTA 模型结合了长短期记忆(LSTM)和时序卷积网络(TCN),可全面学习指令操作码序列中的时序关系。这使得该模型既能捕捉长期依赖关系,又能捕捉局部特征。该模型的检测准确率达到 98.13%。此外,为了提高检测精度,还引入了强化学习的多头注意机制。该机制将模型的注意力引向操作码序列中与恶意行为相关的部分。加入注意力机制后,LTA 模型的检测精度提高到 98.69%。
如图 1 所示,整个流程已在实际场景中实施。
工作流程主要包括三个方面:
1) 特征提取:提交应用程序后,使用 APKTool 对其进行反编译。反编译失败的应用程序将在 MobSF 平台上进行分析和反编译,以获得 smali 文件。随后,采用 N-gram 算法对 smali 文件进行分割,得到操作码序列数据集。
2) 遗传算法特征选择:利用 SVM 算法在处理高维特征数据时的鲁棒性,选择 SVM 算法作为遗传算法的拟合函数。这有助于选择对恶意软件检测和分类有重大贡献的特征集。
3) LTA 检测分类模型:首先,对特征优化后的数据进行预处理,如添加时间步长,使其结构适当,以便输入 LSTM-TCN 模型。然后,独立利用 LSTM 和 TCN 学习操作码序列数据中的时序特征。此外,还引入了多头关注机制,以提高模型的学习效率。
最终,该模型被用于安卓恶意软件的检测和分类。
在安卓软件的选择方面,我们在 CIC-InvesAndMal2019 数据集中选择了 1,400 个良性安卓应用软件[10],在 RmvDroid 数据集中选择了 1,266 个恶意安卓应用软件[11]。所有选中的安卓软件都已通过 VirusTotal 进行了标记和验证。我们从全部数据集中随机抽取 20% 作为测试数据。LTA 模型检测和分类结果的最终误报率仅为 1.31%。同时,我们从 MalRadar 数据集 [12] 和 Androzoo [13] 中选取数据,构建了一个包含 2,100 个软件的混合数据集,并通过实验验证了 LTA 模型的有效性。我们已在 https://five81.github.io/LTA-AD/ 上发布了 LTAChecker 的代码和数据集。
本文的贡献可归纳如下:
1) 本文采用静态分析方法,考虑 Android 软件的底层操作代码序列,关注序列中包含的上下文和时序信息,提出 LTAChecker 检测框架。使用 N-gram 算法对操作码序列进行划分,并应用遗传算法进行特征优化。
2) 本文提出了一种名为 LTA 的轻量级时间注意力网络,利用 LSTM-TCN 模型学习操作码序列中的时间信息和不同时间尺度上的特征,以捕捉长期依赖性和局部特征。3) 在 LTA 模型中引入了多头注意力机制,以加强模型学习,提高模型在整个训练过程中关注恶意软件操作码序列中蕴含的恶意行为线索的能力。
II.相关工作
当前研究面临的挑战在于如何准确描述应用程序的功能。从 APK 提取的传统恶意软件特征通常是离散的,如应用程序权限,而不是连续的。即使对恶意软件应用程序的特征表示稍作改动,也会破坏其特征描述的准确性 [14]。一种潜在的解决方案是从 Android Manifest 文件中提取特征进行研究 [15] [16]。然而,由于多种原因,这种方法在生成可执行对抗示例(AE)方面的可行性值得怀疑。首先,在 Android 清单中包含程序、意图等并不能保证包含恶意有效载荷的原始应用程序的可执行性[17]。其次,在清单文件中添加未使用的功能可以通过预处理技术消除[18]。最后,先进的安卓恶意软件检测器[19]采用了一种以 Dalvik 字节码代替清单文件为特征的方法,这种方法主要依赖于安卓应用程序的语义表示[20]。
静态分析。一些研究利用 APP 的静态特征从 APK 文件中提取不同的分析信息。Ou 等人研究了自动提取权限请求和敏感 API,构建相应的特征向量,然后建立深度信念网络(DBN)学习模型,有效解决了重新打包的恶意软件检测准确率低的问题[21]。Li 等人研究了提取函数调用图作为静态特征,然后使用卷积神经网络(CNN)检测 Android 恶意软件[22]。Yue等人提出了一种基于SDNE图注意网络的检测方法,该方法选取API调用图来表示软件的结构信息,发现软件可能存在的异常行为,在检测Android恶意软件方面取得了较高的检测精度[23]。
Shi 等人研究了提取 API 调用、服务和敏感权限作为特征,并提出了一种基于深林的恶意软件行为检测方法。该方法使用 Relief F 算法进行特征降维,根据软件行为将样本分为三类。然而,其检测精度仅为 91.2%,效果并不理想[24]。Zou 等人研究了应用函数调用图中敏感 API 与中心节点的接近度提取高效语义特征,构建了 IntDroid 系统来检测恶意软件,降低了传统图分析的高成本,并取得了较高的检测精度,检测率为 96.72%[25]。Zhang 等人提出了一种基于字节码特征的 TCN Android 恶意软件检测模型,该模型结合 DEX 文件和 XML 文件生成图像数据,有效解决了传统 CNN 单纯基于 DEX 文件的字节码图像识别方法,结果 F1 得分为 95.44% [26]。
动态分析。Arash 等人将 Android 应用程序的通信流量作为动态特征进行研究,使用真实智能手机作为捕获通信流量的平台,并使用机器学习算法检测 Android 恶意软件。然而,仅将流量作为特征进行检测会导致特征噪声过大。检测效果并不理想,平均检测准确率为 92%[28]。Gong 等人基于 APP Overlay 特征开展了市场级大规模恶意软件检测研究。他们选取了APP动态运行时的56个关键Overlay特征进行表征,并利用随机森林(RF)方法进行分类检测。这项新颖的工作在时间消耗和检测准确性方面都取得了值得称道的成果[34]。M 等人提出了基于网络的 MLDroid Android 恶意软件检测框架,该框架通过对应用程序进行动态分析获取权限和 API 调用,然后通过大量特征工程选择特征子集,最后集成 YMLP 和决策树等四种机器学习算法进行检测和分类,检测率最高达到 98.8%[29]。Gong 等人研究了市场层面的大规模安卓恶意软件检测,并提出了 APIChecker 检测框架,该框架通过动态提取的 API 调用对 APP 进行特征描述。他们采用新颖的词向量编码方法进行编码,最后使用射频分类器进行分类检测。其检测效果在大规模安卓软件检测中达到了 98.9% 的检测准确率和 98.1% 的 F1 分数[30]。
混合特征分析。一些研究从静态和动态两方面提取混合特征。例如,Ali 等人提取了意图、权限和服务、敏感 API 调用等静态特征和绑定调用、系统调用、网络通信流量等动态特征作为混合特征,采用半监督伪标签深度神经网络(PLDNN)模型对恶意软件进行检测和分类,5 次分类准确率达到 96.7%,实现了较高的分类准确率,有效降低了标记恶意软件的人力成本[31]。
机器学习检测方法。在安卓恶意软件检测领域,已经有多种用于安卓恶意软件检测的 ML 方法。传统方法包括使用机器学习算法,如 Naive Bayes、Random Forest 和 K-NN [29] [30] [35] [36] [37] [38]。深度学习方法可以深入挖掘特征之间的关系,一些研究将神经网络应用于恶意软件检测[39]。例如,Wang 等人研究了构建用于恶意软件分类的多模态深度神经网络(MDNN),该网络可预测未知文件和恶意软件类型的恶意程度,对 0-Day 恶意软件有较好的检测能力[32]。Isaac等研究了意图、权限和API调用关系共同生成图数据来表征软件,使用GNN图神经网络分类器进行分类,并使用基于GAN的生成式对抗网络来增强分类器,研究了对抗式防御图神经网络Android恶意软件检测方法,实验结果F1得分98.89%[40]。
与我们的工作比较。尽管目前的研究中有大量检测安卓恶意软件的方法(如表一所列),但我们的检测方法仍与目前的研究有所不同。首先,本文采用静态分析方法,避免了动态分析对资源消耗要求大、传统静态分析对特征选择不够精细的缺点。针对安卓恶意软件的Dalvik操作码序列底层,采用N-gram算法对序列进行分割,获取上下文信息特征,并利用GA对这些特征进行优化。其次,本文提出了一种新型 LTA 深度学习检测和分类模型。ISEDroid检测框架仅使用机器学习算法进行分类,并未充分挖掘指令序列中包含的恶意软件可能的行为信息[27]。最近的研究表明,基于从安卓应用程序中提取的 API 和 smali 代码构建敏感的 FCG。通过采用图剪枝技术和图学习方法进行分类,这些研究取得了显著的检测准确率,达到 98.37%[33],这凸显了利用 smali 文件中包含的信息进行恶意软件检测的有效性。不过,这种方法的计算复杂度较高,而且过度依赖 API 列表。本文介绍的 LTA 模型的显著特点在于它采用了一种混合方法,结合了 LSTM 和 TCN,以全面捕捉指令操作码序列中的时间关系。这使得该模型既能捕捉长期依赖特征,又能捕捉局部特征,从而使检测准确率达到 98.13%。此外,多头关注机制的加入增强了模型关注恶意软件行为相关片段的能力。引入这种关注机制后,LTA 模型的检测准确率提高到 98.69%。
III.测量和分析
A.Dalvik 操作码序列
Dalvik 指令是专门为安卓操作系统中的 Dalvik 虚拟机(DVM)设计的一组指令。它们用于执行 Android 应用程序的字节码。这些指令包括各种用于执行不同操作的指令。例如:1)move:该指令将一个值从一个寄存器复制到另一个寄存器。2) const:将常量加载到寄存器中。3)goto:该指令有助于无条件跳转。执行一个操作通常需要执行多条指令。与良性软件相比,恶意软件往往表现出特定的指令序列模式,并显示出不寻常的指令频率或类型。此外,为了逃避检测,恶意软件通常会加入无关代码来混淆源文件,从而使分析人员的审查过程复杂化。然而,指令序列前后文之间的关系和模式,以及长期序列内的关系和模式,为检测恶意软件提供了宝贵的启示[41] [42]。指令上下文之间的联系描述了它们的代码块或功能之间的交互,从而有助于检测与特定恶意软件功能相关的特征指令模式。序列关系对识别某些恶意行为或程序执行路径特别有用。此外,考虑到良性软件和恶意软件在大小上的差异可能会导致某些指令出现的频率不同,本文根据应用程序中存在的操作码指令序列进行了统计分析,以减轻不同软件大小对检测效果的影响。
B.特征分析
APKTool [43] 是一款方便可靠的逆向工程工具,在解析 smali 代码方面性能卓越。我们采用自动方法反编译成批的 APK 样本,提取 smali 汇编文件。对于 APKTool 无法反编译的样本,我们利用 MobSF [44] 框架提取 smali 文件。该框架利用其成熟的移动安全研究经验,有效地解决了这一瓶颈问题。汇编文件中的每个基本 Dalvik 指令操作都由一个操作码表示,每个操作码都表示与软件执行过程相对应的执行行为方法。鉴于恶意软件的执行行为往往涉及敏感操作,在底层实现层面实现这种行为通常需要多次指令执行。在本研究中,我们选择过滤掉无关的 Dalvik 指令,只保留七个核心指令集:M、R、G、I、T、P 和 V,以提取和构建操作码序列,如图 2 所示。
N-gram 是自然语言处理领域的一个概念,表示由字符、单词或符号等 N 个项目组成的连续序列。这里,N 表示连续操作码指令的数量。具体来说,我们对七个操作码进行了综合排列和组合。根据文件中的方法在 smali 文件中被标记为 0 或 1,生成 csv 格式的数据文件。图 3 展示了将 smali 格式的汇编文件划分为 5 个程序段的过程。
N-gram 算法中的参数 N 值对实验结果和特征维度的形成起着至关重要的作用。为了验证这一点,我们进行了严格的实验。本文特别侧重于研究操作码指令序列的时序特征。必须强调的是,太短的指令序列可能无法充分捕捉恶意软件的行为特征。在研究中,我们将 N=3 设置为基线,并利用逻辑回归分类器进行实验。随着 N 值的增加,N-gram 算法生成的数据特征维度呈指数增长,精度也随之提高。然而,当 N=5 时,分类精度达到 0.956,随后出现下降。考虑到维度增强和检测精度之间的平衡,我们选择 N=5 作为 N-gram 算法的参数。实验结果如图 4 所示。
C.特征选择
本文首先对数据集进行预处理,去除重复和空值,以解决数据冗余和数据清洁问题。数据集的特征向量中有相当多的维度值为 0,导致分类区分度较低。作为一种传统优化算法,遗传算法能有效处理高维特征空间和大规模数据集。通过与其他优化方法的实验结果比较,我们打算利用遗传算法[45]来压缩特征空间,过滤掉无用的特征,并筛选出具有更强判别能力的特征。
GA 是一种受生物进化启发的优化算法。它用于解决搜索和优化问题,旨在找到最佳解决方案或最佳解决方案的近似值。遗传算法根据自然选择和遗传重组的原理运行,模仿生物进化的过程。
在遗传算法中,有三种基本的遗传操作:选择、交叉和变异。选择是指根据个体的适应度值选择父个体,通常会优先选择适应度较高的个体。这一过程模拟了生物进化中对最合适个体的自然选择。选择过程的数学表达式如下:
其中,Pi 是个体 i 被选中的概率,fi 是个体 i 的适应度值,N 是种群中个体的数量。在选择遗传算法的适应度函数时,我们根据数据集的高维特性选择了 SVM 算法。SVM 算法通过最大区间超平面对数据进行分类,在处理高维数据时具有绝对优势。根据迭代次数或预定值确定 GA 的终止条件。通过实验发现,当迭代次数达到 10 次时,拟合函数 SVM 的精度达到最佳水平且不再变化,所选特征组合达到最优组。实验结果如图 5 所示。
此外,本文还比较了四种特征优化方法的效果:GA-SVM、GA-RF、XBoost [46] 和 ExtraTrees [47] 四种特征优化方法对实验结果的影响。具体来说,在选出首选特征后,将 40% 的数据输入逻辑回归分类器,以比较分类结果。结果表明,GA-SVM 特征选择的性能最佳,如表 II 所示。
IV.LTA 模型设计
A.LTA模型总体结构
我们为学习保留的特征设计了一个轻量级 LTA 模型,主要由三个部分组成:LSTM、TCN 和多头注意力。本文采用 LSTM 神经网络来学习安卓软件操作码序列的时序特征,以及这些序列中上下文之间的长期依赖关系。TCN 模型的特点是因果卷积和扩张卷积操作,因此与传统 CNN 相比,它拥有更大的感受野。此外,残差模块的引入进一步优化了它在过拟合和梯度消失等问题上的表现。TCN 模型用于捕捉安卓软件操作码序列中不同时间尺度的异常特征。此外,LTA 模型在 LSTM-TCN 架构中集成了多头关注层,使模型在学习过程中能够更加关注与恶意行为相关的操作码序列。如图 6 所示,这一改进提高了检测精度和模型泛化能力。
B.长短期记忆网络(LSTM)
作为一种传统的递归神经网络,递归神经网络(RNN)具有短时记忆能力。然而,由于 RNN 隐藏单元中只有一个函数,因此在处理长时间序列的数据时会出现梯度消失和梯度爆炸等问题。为了解决 Android 指令操作码序列中的长距离依赖性问题,并增强模型处理长时间序列数据的能力,我们采用了 LSTM 神经网络。LSTM 架构在存储单元单元内集成了遗忘门、输入门和输出门等机制。这些门共同调节信息的遗忘和保留,有效缓解了 RNN 中与梯度消失和梯度爆炸相关的问题。LSTM 神经网络中的单细胞结构如图 7 所示。
图中,ht-1 表示上一时间步的隐藏状态,xt 是当前时刻的输入,Ct-1 表示上一时间步的单元状态。ft 对应遗忘门,它根据 ht-1 和xt 决定要丢弃的信息 Ct-1。其计算公式如下
式中,σ 表示 sigmoid 激活函数,Wf 表示与遗忘门相关的权重,bf 表示遗忘门的偏置。
Ct-1 被丢弃和更新后,当前时间步长的单元状态 Ct 将通过下面的公式计算出来:
在公式中,ot 代表输出门,它根据 ht-1 和 xt 确定要从 Ct 输出的信息,以生成当前时间步的隐藏状态 ht。计算 ot 和 ht 的公式如下:
式中,Wo 和 bo 表示与输出门 ot 相关的权重和偏置。
在 LTA 模型中,LSTM 层接收来自输入层的输入,其中输入层的数据代表应用时间步预处理后的时间序列数据。此外,还引入了一个dropout层进行正则化处理,以防止模型过度拟合。LSTM 层输出 64 维时间序列输出。
C.时序卷积神经网络(TCN)
TCN 神经网络由三个关键部分组成:因果卷积、扩张卷积和残差模块。本文利用了 TCN 网络的独特特性,尤其是不同于传统 CNN 的扩张卷积。其目的是学习嵌入在安卓软件指令操作码序列中不同时间尺度的信息。TCN 网络通过控制感受野的大小来管理卷积核的学习范围,如图 8 所示。第一层的扩展因子 d = 1 表示对每个点进行采样,而中间层的扩展因子 2 表示间隔采样。一般来说,层数越多,扩展因子越大。
其数学表达式为
在公式中x = {x1, x2, ..., xt} 是输入值,表示卷积核的大小;∗ 是卷积算子;d 表示扩展因子。
此外,TCN 中的残差模块还能解决过拟合和梯度消失等问题。鉴于 TCN 的接受域依赖于网络深度、滤波器大小和扩展因子等因素,确保深度网络的稳定运行至关重要。因此,我们加入了残差模块。ReLU(整流线性单元)函数引入了非线性,而权重归一化和空间剔除有助于加速模型收敛并增强其泛化能力。这些组件如图 9 所示。
在 LTA 模型中,TCN 层也接收输入层的输入,并产生 64 维时序输出。在 TCN 层之后,还引入了用于正则化的 dropout 层,以防止模型过度拟合。
D.多头注意强化学习
Transformer 模型中的多头注意力机制是一种特殊的自我注意力机制。本文将多头注意力机制引入 LSTM-TCN 模型,使该模型在学习过程中更加关注安卓恶意软件的行为信息。其单头注意力值的数学公式如下:
在公式中,三个矩阵 Q、K 和 V 的维度均为 dk,分别代表查询、键和值。缩放因子 dk 与序列的输入维度相对应,用来调整 hi 的值,缓解反向传播过程中梯度消失的问题。多个单头注意力机制并行连接后,通过线性层映射得到多头注意力机制。计算公式如下
式中:⊕ 表示向量之间的连接操作;W0 表示权重矩阵;n 表示头的总数,本文中 n 的值为 2。
多头注意力层被纳入 LTA 模型,以加强强化学习。该注意力层采用 LSTM 层和 TCN 层的输出,捕捉序列中不同位置的相关性以及与安卓恶意软件相关的潜在行为信息。它输出 64 维的时序输出,旨在提高模型的检测精度和泛化能力。最后,在 LTA 模型中,LSTM 层和 TCN 层的输出以及注意力层的输出通过全连接层组合起来作为输出层的输入。然后,模型通过在训练过程中优化模型参数,使损失函数 zi 最小化。这种集成方法利用了 LSTM、TCN 和注意力机制的各自优势,提高了模型在检测安卓恶意软件方面的性能。
V.实验评估
A.数据集和实验环境
数据集。我们的应用程序 Android 程序数据集包括 CIC-InvesAndMal2019 数据集和 RmvDroid 数据集中的共计 2,666 个软件。
CIC-InvesAndMal2019 数据集由 CIC 研究机构于 2019 年发布,包括从病毒总服务、传染病安全博客和 AMD 等多个平台获取的安卓 APK。该数据集共包含 5,065 个良性软件样本,我们从中随机抽取了 1,400 个样本用于本研究。
RmvDroid 数据集也于 2019 年发布,由 56 个恶意软件系列组成,共有 9 133 个恶意样本。这些样本主要来自 Google Play 上被删除的应用程序,时间跨度从 2014 年到 2018 年。为确保样本更具代表性和平衡性,我们将样本分为四种常见的恶意软件类型:广告软件、勒索软件、恐吓软件和短信恶意软件。平衡样本数量后,我们随机选择了 1,266 个恶意样本。
此外,我们还在各种数据集上进行了实验。MalRadar 数据集于 2022 年发布,包含 4,534 个安卓恶意软件样本。我们从该数据集中选取了 1000 个 APK 作为恶意实例,这些 APK 包含 10 个家族样本。为确保平衡,我们在数据集中添加了来自 Androzoo 的良性样本。具体来说,我们下载了 1,100 个良性 APK 样本,其 VTScan 时间戳来自 2023 年。通过反复实验,我们验证了本文提出的 LTAChecker 的有效性。
在实践中,我们将软件包名称相同但 MD5 哈希代码不同的 APK 视为不同的应用程序。本文所选软件已通过 VirusTotal 的审核和标记,然后为每个 APK 提供恶意标签,0 代表良性软件,1 代表恶意软件。
实验室环境。LTAChecker 框架主要由三个部分组成:反编译 APK 文件、预处理数据集特征选择以及使用 LTA 模型学习特征和分类。如图 1 所示,该工作流程的几个步骤相互独立,可以并行执行。这种并行化有助于提高框架分析的效率。此外,对于 LTA 模型的输入,我们首先应用 GA 算法进行降维,以提高计算效率。此外,我们还引入了epoch来监测验证集的损失,并设置阈值来提前终止模型训练,从而避免了计算资源的浪费。考虑到框架各部分之间的非相互依赖关系,一种可行的优化策略是采用分布式处理技术,在多个计算节点上同时进行处理。这种方法将加速计算过程,进一步提高 LTAChecker 框架的效率。
在反编译 APP 应用程序等前期工作中,我们使用 Windows 10 操作系统构建实验环境。实验机器配置了英特尔酷睿 i5-8300H 处理器、32GB 内存和英伟达 GTX 1050Ti GPU。我们开发了一个自动脚本,并使用 APKTool 工具依次反编译 APK 文件、提取 smali 文件、映射和提取操作码,并应用 N-gram 算法分割操作码序列。为了进行模型测试,我们使用了谷歌 Colab 提供的在线云服务器环境。硬件环境由 T4 GPU 和 16GB 内存组成。LTA 模型用 Python 3 语言实现,主要利用 Keras 和 TensorFlow 模块。
B.对比实验
在本节中,在对选定样本进行特征提取以生成实验数据集后,将对数据集进行预处理。在二维数据样本中添加时间步长,以构建适合输入 LTA 的时间序列数据。实验数据分为 80% 的训练数据和 20% 的测试数据。在训练过程中,引入 EarlyStopping 监测验证数据的损失。如果验证集上的损失连续 10 个历元都没有改善,则停止训练,并保存表现最好的模型的权重。
通过将 LTAChecker 与 TCN[26]、IntDroid[24]、PLDNN[31] 等其他同类研究进行比较,以及在同一数据集上与 KNN 和 RF 等传统机器学习算法进行比较,证明了 LTAChecker 在安卓恶意软件检测中的有效性。实验结果汇总于表 III。
表三的结果分析表明,与其他四个模型相比,本文提出的 LTA 模型的准确率最高,达到 98.69%,F1 得分也最高。此外,与 PLDNN 模型相比,LTA 模型的准确率略低,但其 F1 得分和召回得分均高于 PLDNN 模型。结果证明,Android 恶意软件操作码序列时序的研究方法和所提出的 LTAChecker 检测框架具有良好的有效性和优越性。
C. 消融实验
我们对 LSTM、LSTM-Attention、TCN、TCN-Attention 和 LSTM-TCN 进行了一系列消减实验,以研究模型中的组件、超参数的影响。其中,LSTM-TCN 模型代表了一种不包含用于强化学习的多头注意力层的模型。实验结果如表 IV 所示。
表 IV 中的结果分析表明,与独立的 TCN 和 LSTM 模型相比,在这两种模型中加入多头注意力机制可提高检测性能。值得注意的是,在 LSTM-TCN 基础上集成了多头注意力层的 LTA 模型实现了最高的检测精度和 F1 分数。这一改进可归功于多头注意层,它在学习过程中增强了模型对 Android 恶意软件操作码序列中行为信息的关注,从而提高了模型的准确性和泛化能力。
我们使用混淆矩阵将检测分类任务可视化。每个矩阵的横轴代表数据的真实标签,并显示测试数据中每个类别的实例数量,包括 280 个良性实例和 254 个恶意实例。纵轴代表每个类别的分类结果。图 10 显示了 LTA 模型和 LSTM-TCN 模型的混淆矩阵。
LTA 模型与 LSTM-TCN 模型的混淆矩阵对比显示,LTA 模型在 280 个良性软件实例中仅误判了 2 个。这一结果凸显了多头注意力强化学习的有效性,它显著降低了对良性安卓软件进行分类时的误判率,所有检测和分类的误判率都有整体下降,从而提高了模型分类的整体准确性。这些结果凸显了 LTA 模型在引入多头关注机制后的卓越分类性能。
D.可解释性和局限性
可解释性。LTA 模型通过学习大量数据特征来进行恶意软件检测,但学习到的特征可能是抽象和复杂的,因为这涉及到对模型内部表示和学习过程的理解。首先,恶意软件样本和正常样本之间的不平衡会导致模型解释学习过程出现偏差。为了解决这个问题,我们在数据集处理上做到了很好的平衡,减少了数据不平衡对模型可解释性的影响。其次,高维特征空间增加了 LTA 模型解释所学特征与恶意软件检测之间关系的复杂性。为解决这一问题,我们首先使用 GA 算法降低数据集的维度,以减少其对模型可解释性的影响。
在模型可解释性分析方面,我们利用 SHAP 黑盒[48]检测方法来衡量特征对分类结果的影响。SHAP 值是解释机器学习模型预测结果的常用方法。它基于博弈论中的 Shapey 概念,通过计算特征对预测结果的贡献来解释黑箱模型。通过这种方法,我们可以更清楚地了解模型的工作原理和特征之间的关系,从而增强模型的可解释性和可信度。根据实验结果,我们保留了对检测和分类影响较大的前 10 个特征,其形状汇总图如图 11 所示。
图中的 X 轴表示特征对分类结果影响的 SHAP 绝对值,Y 轴表示特征的重要性排名。我们对排名第一的特征序列 IIGVG 进行分析。根据其与 smali 代码的映射关系,可以看出其最有可能的行为是窃取用户的隐私敏感信息,执行逻辑数据判断,然后进行网络数据传输。这一操作是目前移动恶意软件中普遍存在的恶意行为之一。
局限性。在目前的工作中,我们利用了外部数据源。在未来的工作中,我们的目标是构建自己的数据存储库,以开展市场层面的研究。此外,鉴于恶意软件技术的不断发展,攻击者可能会借助反射调用来动态加载和执行软件代码,而不是直接将其体现在 smali 代码中。为了应对这一挑战,我们将探索动态分析研究的可能性。通过将动态分析与我们现有的工作相结合,我们旨在采用一种混合方法来全面描述安卓恶意软件的特征。从而增强我们对威胁状况的了解。
VI.结论
本文介绍了一种名为 LTAChecker 的新型安卓恶意软件检测框架,它基于注意力时态网络。通过分析安卓软件指令操作序列中的时序特征信息,核心 LTA 模型结合了 LSTM 和 TCN 架构,融入了用于强化学习的多头注意力机制。LSTM 组件可有效捕捉 Dalvik 操作码序列中的长期依赖关系,解决 RNN 中常见的梯度消失和爆炸等问题。此外,TCN 的残差学习模型还能捕捉不同时间尺度的时间特征,从而提高对异常模式的检测能力。为了进一步提高检测分类的有效性和鲁棒性,该模型引入了多头注意机制进行强化学习。在 CICInvesAndMal2019 和 RmvDroid 数据集以及其他数据集上进行的实验证实了所提出的 LTAChecker 框架在安卓恶意软件检测中的有效性和优越性,超过了其他深度学习方法。
相关文章:

[论文翻译] LTAChecker:利用注意力时态网络基于 Dalvik 操作码序列的轻量级安卓恶意软件检测
LTAChecker: Lightweight Android Malware Detection Based on Dalvik Opcode Sequences using Attention Temporal Networks 摘要: Android 应用程序已成为黑客攻击的主要目标。安卓恶意软件检测是一项关键技术,对保障网络安全和阻止异常情况至关重要。…...
HTTPS链接建立的过程
HTTPS(HyperText Transfer Protocol Secure)建立链接的过程主要是通过TLS(Transport Layer Security)协议来实现的。HTTPS的链接建立过程可以分为以下几个步骤: 1. **客户端发起请求** - 客户端向服务器发送一个请求&…...

文档控件DevExpress Office File API v24.1 - 支持基于Unix系统的打印
DevExpress Office File API是一个专为C#, VB.NET 和 ASP.NET等开发人员提供的非可视化.NET库。有了这个库,不用安装Microsoft Office,就可以完全自动处理Excel、Word等文档。开发人员使用一个非常易于操作的API就可以生成XLS, XLSx, DOC, DOCx, RTF, CS…...

IP地址封装类(InetAddress类)
文章目录 前言一、IP地址是什么?二、IP地址封装类 1.常用方法2.实操展示总结 前言 当我们想要获取到通信对方的IP地址、主机地址等信息时,我们可以使用InetAddress类。InetAddress类在java的net包中。 一、IP地址是什么? IP地址 (Internet Pr…...
数据库设计规范化
在数据库设计中,尤其是在关系型数据库管理系统中,规范化(Normalization)是一种通过减少数据冗余和依赖关系来优化数据库表结构的过程。规范化可以确保数据的完整性和减少数据更新时的问题。规范化的过程通常遵循一系列标准或范式&…...

预约咨询小程序搭建教程,源码获取,从0到1完成开发并部署上线
目录 一、明确需求与规划功能 二、选择开发工具与模板 三、编辑小程序内容 四、发布与运营 五、部分代码展示 制作一个预约咨询小程序,主要可以分为以下几个步骤: 一、明确需求与规划功能 明确需求: 1.确定小程序的服务对象…...

leetcode217. 存在重复元素,哈希表秒解
leetcode217. 存在重复元素 给你一个整数数组 nums 。如果任一值在数组中出现 至少两次 ,返回 true ;如果数组中每个元素互不相同,返回 false 。 示例 1: 输入:nums [1,2,3,1] 输出:true 示例 2&#x…...
QT:QString 支持 UTF-8 编码吗?
在 Qt 中,字符串的处理主要依赖于 QString 类。QString 内部并不是直接使用 UTF-8 编码来存储数据的。相反,QString 使用 Unicode(特别是 UTF-16)来存储文本,以支持多语言环境的国际化应用。这种设计使得 QString 能够…...

我主编的电子技术实验手册(13)——电磁元件之继电器
本专栏是笔者主编教材(图0所示)的电子版,依托简易的元器件和仪表安排了30多个实验,主要面向经费不太充足的中高职院校。每个实验都安排了必不可少的【预习知识】,精心设计的【实验步骤】,全面丰富的【思考习…...

odoo from样式更新
.xodoo_form {.o_form_sheet {padding-bottom: 0 !important;border-style: solid !important;border-color: white;}.o_inner_group {/* 线框的样式 *//*--line-box-border: 1px solid #666;*//*box-shadow: 0 1px 0 #e6e6e6;*/margin: 0;}.grid {display: grid;gap: 0;}.row …...
Oracle(52)分区表有哪些类型?
分区表在Oracle数据库中主要分为以下几种类型: 范围分区(Range Partitioning)列表分区(List Partitioning)哈希分区(Hash Partitioning)组合分区(Composite Partitioning࿰…...

大黄蜂能飞的起来吗?
Bumblebee argument 虽然早期的空气动力学证明大黄蜂不能飞行——因为体重太重,翅膀太薄,但大黄蜂并不知道,所以照飞不误。 背景 在20世纪初,科学家们通过研究发现,大黄蜂的身体与翼展的比例失调,按照…...

虹科新品 | PDF记录仪新增蓝牙®接口型号HK-LIBERO CL-Y
新品发布!HK-LIBERO CE / CH / CL产品家族新增蓝牙接口型号HK-LIBERO CL-Y! PDF记录仪系列新增蓝牙接口型号 HK-LIBERO CL-Y HK-LIBERO CE、HK-LIBERO CH和HK-LIBERO CL,虹科ELPRO提供了一系列高品质的蓝牙(BLE)多用途…...
Bytebase 2.22.1 - SQL 编辑器展示更丰富的 Schema 信息
🚀 新功能 SQL 编辑器直接展示表,视图,函数,存储过程等各种 Schema 详情。OpenAI 功能进入社区版(免费),现在您可以通过配置自有 OpenAI key 在 SQL 编辑器中启用自然语言转 SQL 功能。支持在 …...

SQL Server Management Studio的使用
之前在 https://blog.csdn.net/fengbingchun/article/details/140961550 介绍了在Windows10上安装SQL Server 2022 Express和SSMS,这里整理下SSMS的简单使用: SQL Server Management Studio(SSMS)是一种集成环境,提供用于配置、监视和管理SQL…...
Python 爬虫项目实战一:抖音视频下载与网易云音乐下载
一、项目背景 随着互联网的发展,爬虫技术在数据采集和资源获取中发挥着重要作用。本文将以实际案例为例,使用Python语言实现两个热门的爬虫项目:抖音视频文件下载和网易云音乐下载。通过这些实例,读者可以了解如何利用Python编写…...
CAMDS=中国汽车MDS
1、定义和缩写 MSDS(材料安全数据表, Material Safety Data Sheets),德语为SDB(Sicherheitsdatenbltter),是一种传达材料和混合物安全相关信息的工具,包括来自供应链和下游用户相关材料安全报告的信息。它们旨在为专业用户提供使用这些物质和制剂的必要信息和处理建议,…...
【Golang 面试 - 进阶题】每日 3 题(十七)
✍个人博客:Pandaconda-CSDN博客 📣专栏地址:http://t.csdnimg.cn/UWz06 📚专栏简介:在这个专栏中,我将会分享 Golang 面试中常见的面试题给大家~ ❤️如果有收获的话,欢迎点赞👍收藏…...

ROS 7上实现私网互通方案
一、背景: 第一个私网现状:连接公域网是由tp-link进行拨号链接使用动态公网ip,内部网段是192.168.1.0/24 第二个私网现状:连接公域网是机房的固定公网ip,内部网段为10.0.0.0/16二、目标 安全的打通192.168.1.0/24和10.0.0.0/16的网络, 使得前者局域网中的机器能够安全访…...
iOS企业签名过程中APP频繁出现闪退是什么原因?
企业签名中,我们总会遇到这样或者那样的问题,要么掉签,要么闪退,那在之前的文章,已不止一次跟大家说了掉签的问题,今天就跟大家详细的聊一聊闪退的问题,希望对大家的推广有所帮助。 其实不管是…...
MySQL 隔离级别:脏读、幻读及不可重复读的原理与示例
一、MySQL 隔离级别 MySQL 提供了四种隔离级别,用于控制事务之间的并发访问以及数据的可见性,不同隔离级别对脏读、幻读、不可重复读这几种并发数据问题有着不同的处理方式,具体如下: 隔离级别脏读不可重复读幻读性能特点及锁机制读未提交(READ UNCOMMITTED)允许出现允许…...

Vue3 + Element Plus + TypeScript中el-transfer穿梭框组件使用详解及示例
使用详解 Element Plus 的 el-transfer 组件是一个强大的穿梭框组件,常用于在两个集合之间进行数据转移,如权限分配、数据选择等场景。下面我将详细介绍其用法并提供一个完整示例。 核心特性与用法 基本属性 v-model:绑定右侧列表的值&…...

Debian系统简介
目录 Debian系统介绍 Debian版本介绍 Debian软件源介绍 软件包管理工具dpkg dpkg核心指令详解 安装软件包 卸载软件包 查询软件包状态 验证软件包完整性 手动处理依赖关系 dpkg vs apt Debian系统介绍 Debian 和 Ubuntu 都是基于 Debian内核 的 Linux 发行版ÿ…...
【RockeMQ】第2节|RocketMQ快速实战以及核⼼概念详解(二)
升级Dledger高可用集群 一、主从架构的不足与Dledger的定位 主从架构缺陷 数据备份依赖Slave节点,但无自动故障转移能力,Master宕机后需人工切换,期间消息可能无法读取。Slave仅存储数据,无法主动升级为Master响应请求ÿ…...
【学习笔记】深入理解Java虚拟机学习笔记——第4章 虚拟机性能监控,故障处理工具
第2章 虚拟机性能监控,故障处理工具 4.1 概述 略 4.2 基础故障处理工具 4.2.1 jps:虚拟机进程状况工具 命令:jps [options] [hostid] 功能:本地虚拟机进程显示进程ID(与ps相同),可同时显示主类&#x…...

vue3+vite项目中使用.env文件环境变量方法
vue3vite项目中使用.env文件环境变量方法 .env文件作用命名规则常用的配置项示例使用方法注意事项在vite.config.js文件中读取环境变量方法 .env文件作用 .env 文件用于定义环境变量,这些变量可以在项目中通过 import.meta.env 进行访问。Vite 会自动加载这些环境变…...

初探Service服务发现机制
1.Service简介 Service是将运行在一组Pod上的应用程序发布为网络服务的抽象方法。 主要功能:服务发现和负载均衡。 Service类型的包括ClusterIP类型、NodePort类型、LoadBalancer类型、ExternalName类型 2.Endpoints简介 Endpoints是一种Kubernetes资源…...
jmeter聚合报告中参数详解
sample、average、min、max、90%line、95%line,99%line、Error错误率、吞吐量Thoughput、KB/sec每秒传输的数据量 sample(样本数) 表示测试中发送的请求数量,即测试执行了多少次请求。 单位,以个或者次数表示。 示例:…...
关于uniapp展示PDF的解决方案
在 UniApp 的 H5 环境中使用 pdf-vue3 组件可以实现完整的 PDF 预览功能。以下是详细实现步骤和注意事项: 一、安装依赖 安装 pdf-vue3 和 PDF.js 核心库: npm install pdf-vue3 pdfjs-dist二、基本使用示例 <template><view class"con…...
Python竞赛环境搭建全攻略
Python环境搭建竞赛技术文章大纲 竞赛背景与意义 竞赛的目的与价值Python在竞赛中的应用场景环境搭建对竞赛效率的影响 竞赛环境需求分析 常见竞赛类型(算法、数据分析、机器学习等)不同竞赛对Python版本及库的要求硬件与操作系统的兼容性问题 Pyth…...