概念漂移处理:Efficient Concept Drift Handling for Batch Android Malware Detection Models
翻译
批量 Android 恶意软件检测模型的高效概念漂移处理
摘要
Android 应用程序快速发展的性质对恶意软件检测系统中使用的静态批处理机器学习算法提出了重大挑战,因为它们很快就会过时。尽管面临这一挑战,现有文献对解决这一问题的关注有限,许多先进的 Android 恶意软件检测方法(例如 Drebin、DroidDet 和 MaMaDroid)都依赖于静态模型。在这项工作中,我们展示了再训练技术如何能够随着时间的推移保持检测器的能力。特别是,我们分析了两个方面对检测器效率和性能的影响:1)模型重新训练的频率,2)用于重新训练的数据。在第一个实验中,我们将定期重新训练与更先进的概念漂移检测方法进行比较,该方法仅在必要时触发重新训练。在第二个实验中,我们分析了采样方法,以减少用于重新训练模型的数据量。具体来说,我们比较了最新数据的固定大小窗口和最先进的主动学习方法,选择那些有助于保持训练数据集小而多样化的应用程序。我们的实验表明,概念漂移检测和样本选择机制可以产生非常有效的再训练策略,可以成功地用于在不断变化的环境中保持最先进的静态 Android 恶意软件检测器的性能。
介绍
漂移是指被分析数据的统计属性随时间变化的现象,可能是由数据漂移和/或概念漂移引起的。数据漂移是指输入数据的分布随时间发生的变化,而概念漂移或模型漂移是由输入数据与模型结果之间的关系(即类变量的条件概率分布)的变化引起的给定输入 Gama 等人。 [2014]。即使这两种漂移类型都很有趣并且值得分析,但事实证明,概念漂移是 Android 恶意软件检测中的一个紧迫问题,因为它会导致经过训练的静态机器学习 (ML) 模型的性能随着时间的推移而稳步下降 Pendlebury 等人等人。 [2019],莫利纳-科罗纳多等人。 [2023],陈等人。 [2023a]。从这个意义上说,在本文的其余部分,每当我们提到术语漂移时,我们都会指概念漂移。
显然,Android 应用程序生态系统具有不断发展的性质,例如,新类型的恶意软件出现或新的软件功能添加到 Molina-Coronado 等人的开发框架中。 [2023]。然而,当前大多数 Android 反恶意软件研究解决方案都依赖于批量 ML 算法 Liu 等人。 [2020]。在实验室条件下,这些算法表现出了非凡的恶意软件检测率和低误报率,这使它们成为对抗恶意软件的有前途的解决方案 Ucci 等人。 [2019]。然而,批量机器学习算法是为静态环境设计的。它们用于在恶意和良性应用程序的标记样本的大型数据集上离线训练模型,然后使用这些数据集来准确检测新的、以前未见过的恶意软件。因此,依赖这些算法的检测器很快就会过时,并且由于概念漂移而失去有效性。 [2014],Bayram 等人。 [2022]。
近年来,概念漂移管理方法已成为解决非平稳应用中漂移挑战的一种有前景的解决方案。 [2019] 以及各种领域,包括故障诊断,Žliobait ̇ e等人[2016], 信用卡欺诈检测 Blázquez-García 等人。 [2021],网络入侵检测 Molina-Coronado 等人。 [2020],以及游戏推荐系统 Al-Ghossein 等人。 [2021]。概念漂移管理方法可分为两大类:(1) 再训练,其中包括用根据最新可用数据训练的新模型替换旧模型;(2) 增量算法,当新数据到达时不断更新模型。虽然增量解决方案是特定的学习算法,但再训练的优点是作为一种不可知的方法,可以应用于任何基于机器学习的检测器。
对于 Android 恶意软件检测,一些研究人员提出了自适应解决方案来克服概念漂移带来的挑战,要么依赖于增量算法 Narayanan 等人。 [2017],徐等人。 [2019] 或再培训程序 Karbab 和 Debbabi [2021]、Guerra-Manzanares 和 Bahsi [2022]。这些算法提出了全新的检测方法,并忽略了大多数可用的最先进的 Android 恶意软件检测器的相关性,这些检测器依赖于代码的静态分析来提取代表应用程序的特征,并利用批量 ML 算法来执行检测等人。 [2020]。在这一点上,是否可以使用简单的再训练机制来增强这些现有的静态检测器并使其适应不断变化的场景,从而避免开发新检测器的需要,这仍然很有趣。
在现有探测器上成功实施再训练取决于一系列关键的实施决策。这些决策涉及建立再训练策略,确定何时以及使用哪些数据执行模型再训练和替换操作 Webb 等人。 [2016]。不充分的再训练策略可能会导致不必要、过于频繁或不充分的再训练操作,从而使模型无法适应数据分布的变化 Baena-Garcıa 等人。 [2006],Bifet 和 Gavalda [2007]。同样重要的是选择反映当前分布趋势的代表性数据,但不要忘记重复出现或稳定的模式。新数据必须持续存储、分析(有时手动)和标记,然后才能用于重新训练 Android 恶意软件检测器。此外,随着新输入数据量的增加,再训练的存储、标记工作和计算要求也成比例增加。 [2017]。
本文的目的是研究再训练作为增强最先进的批量 Android 恶意软件检测器的有效方法的潜力。事实上,我们专注于重新训练现有的检测器并分析降低重新训练成本的技术。特别是,我们关注两个关键方面:(1)再训练的频率和(2)用于此操作的数据。由于导致漂移以及模型老化的因素可能多种多样且可变,因此只要观察到性能下降,就会监控模型性能以触发更新程序。关于用于模型更新的训练集,我们提出了保持其规模较小并降低标记新数据的成本的策略。因此,最小化重新训练监督模型的成本。通过一系列全面的实验,我们证明了再训练提供了一种实用的解决方案,可以解决使用批量 ML 算法进行 Android 恶意软件检测的解决方案中的概念漂移问题。
本文的其余部分安排如下。第 2 部分分析了与当前工作相关的文献。第 3 节介绍批量 Android 恶意软件检测以及如何轻松应用重新训练来实现模型进化。然后,在接下来的两节中,我们重点讨论本文分析的确定再训练频率(第 4 节)和用于再训练的数据(第 5 节)的具体方法。第 6 节介绍了我们的实验设置,介绍了我们实验中使用的三种最先进的批量 Android 恶意软件检测器,并描述了分析所遵循的评估程序。第 7 节介绍了所获得的结果,最后,我们讨论了我们工作的主要发现、未来的研究方向,并在第 8 节中总结了本文。
2 相关工作
在不断发展的环境中学习需要定义两个主要方面:1)用于更新模型的机制和2)用于更新模型的数据。在本节中,我们将考虑这两个轴,简要回顾 Android 恶意软件检测领域的相关提案。
2.1 自适应恶意软件检测器
如前所述,在有漂移的环境中构建分类器时,第一个决定性的方面是用于调整模型的机制。事实上,在提出的适应性强的 Android 恶意软件检测器中,我们可以找到使用每个数据点更新模型的增量学习算法,或者训练新模型并替换现有模型的再训练方法
在最近的一项工作中,Guerra-Manzanares 和 Bahsi [2022] 提出使用批量随机森林分类器池和带有系统调用特征的异常检测模型。检测是通过对模型输出进行多数投票来执行的。每当池中的模型不一致时,异常检测器就会用于得出样本类别的结论。为了实现模型自适应,假设真实标签已知,并且池中性能最差的随机森林模型和异常检测器在固定时间块进行重新训练。在纳拉亚南等人中。 [2017],提出了使用增量学习检测器,利用上下文 API 调用信息作为特征集。该模型会随着每个传入的样本而更新。然而,它假设每个样本的真实标签是实时已知的。 Karbab 和 Debbabi [2021] 中提出的检测器使用卷积神经网络 (CNN) 池,其中包含代码中调用的方法、对象和字段名称序列。重新训练是在固定时间块上执行的,并且仅使用预测足够可靠的样本,因此通过池的多数投票获得的标签被认为是准确的。在每一轮再训练中,整个 CNN 模型池都会被替换。在 DroidEvolver Xu 等人中。 [2019],提出了增量线性模型池。对于更新,将调整与池中其余模型的一致性决策较低的模型。为了标记数据,该方法使用通过模型决策的多数投票获得的伪标签。
正如简介中提到的,所有这些方法都是全新的检测器,它们不利用任何先前发布的最先进的批量检测器,至少不直接利用。从这个意义上说,这些工作与我们的建议之间的区别在于,我们尝试直接使用现有的研究,使用与模型无关的再训练策略来在存在概念漂移时增强或维持其性能。此外,这些提案还提出了与样品标签相关的问题。例如,随着时间的推移,使用根据模型决策计算出的伪标签已被证明会导致模型污染 Kan 等人。 [2021],虽然获得真正的标签会产生经常被忽视的成本。
2.2 分布外样本
在漂移环境中使用再训练策略时必须考虑的第二个方面是用于再训练的数据的选择。这些数据必须代表当前的概念,但是标记这些数据和重新训练模型的成本与我们在此过程中使用的数据量成正比。从这个意义上说,Android文献中已经提出了一些数据选择策略。
最常见的方法是利用当前模型对新样本的预测的置信度来分析这个新样本是否是由相同的概率分布生成的。 [2021a]。新样本的置信度可以通过分析几个分类器在预测其类别时的一致性来衡量。在徐等人中。 [2019]和Zhang等人。 [2020],低置信度样本(模型最不同意的样本)用于更新模型。与这些方法相反,尽管它可能不利于模型的适应能力,但 Narayanan 等人。 [2017] 以及 Karbab 和 Debbabi [2021] 低置信度数据被视为噪声数据并从更新过程中丢弃,以避免使用伪标签时模型污染。同样,巴贝罗等人。 [2022]提出了一个决策拒绝框架,旨在通过丢弃漂移样本的不可靠模型决策来保持模型决策随着时间的推移保持准确。该框架提出了一种不合格措施,用于识别相对于用于训练模型的一组参考样本的漂移样本。
其他作者提出使用基于聚类思想的特定模型。杨等人。 [2021b]使用基于对比学习的神经网络将样本分组为好软件或特定恶意软件家族。如果某个样本在某个再训练步骤中远离所有已识别的组,则该样本被识别为漂移。 Chen 等人最近对此提案进行了改进。 [2023b]使用分层对比学习分类器,根据 CL 嵌入的适合度和分类器的预测分数对样本进行排序。目的是在不平衡场景中提供更稳健的漂移样本选择。
所有这些OOD(分布外)选择建议,都专注于识别最佳样本以提高模型的检测能力。然而,它们都不能直接用于与模型无关的简单再训练框架(即构建在任何检测器上)。此外,它们是通用方法,不利用 Android 环境的特定行为来设计特定的样本选择策略。在本文中,我们将分析 CL 方法和不确定性采样作为与模型无关的再训练策略,以及专门为此问题设计的临时样本选择方法。
3 初步概念
我们已经讨论了大多数关于 Android 恶意软件检测的已发表文献如何忽略概念漂移作为 Android 恶意软件检测的基本功能。
本节简要介绍恶意软件检测通常是如何使用批处理ML算法执行的,以及如何将这些最先进的检测器集成到再培训管道中。
3.1 批量恶意软件检测
通常,使用批量机器学习的 Android 恶意软件检测过程由三个主要阶段组成:预处理阶段、训练阶段和预测阶段 [6]。此过程如图 1 所示。首先(预备步骤),需要一组应用程序,并且必须执行两项任务。首先,所有应用程序都必须被标记。标记过程包括分析代码、元数据和应用程序行为,以识别任何可疑活动或已知的恶意软件签名,将数据集中的应用程序标记为好软件或恶意软件。此外,在此预处理阶段,将对应用程序进行检查,提取表明其功能的特征并以结构化方式表示它们。这些功能的示例包括权限、函数名称、代码中的字符串等。获得应用程序标签及其功能后,在训练阶段,ML 算法将帮助确定好软件和恶意软件的最具特征的模式。此训练阶段的结果是,获得了能够预测新应用程序的类标签(好软件或恶意软件)的 ML 模型。最后,预测阶段包括从新传入的应用程序中提取在训练阶段识别的特征。然后,这些特征被输入到之前训练的机器学习模型中,以便它确定应用程序是好软件还是恶意软件。
3.2 批量恶意软件检测器的再培训
再训练机制将检测器视为黑匣子工具。这意味着任何现有的批量检测器都可以集成到再训练过程中,无需修改。图 2 描述了如何将再训练机制集成到任何现有的检测器中。为了使新模型能够正确表示当前的数据分布,必须使用代表性应用程序不断更新训练数据。由于 Android 恶意软件检测器依赖于受监督的算法,因此必须对这些应用程序进行标记。再培训由主管发出信号。每当发出信号时,就会训练一个新模型来替换旧模型。这涉及预处理数据集中的所有(或部分)应用程序以提取其特征,使用此信息训练新模型,以及替换旧模型。
一个非常简单的再训练策略就是以固定的时间间隔激活更新过程,例如每月一次。每当一定数量的新标记应用程序可用时(例如,当识别出 10000 个新应用程序时),也可以触发它。尽管如此,最有效的策略是每当检测到漂移时就触发重新训练。主管可以监控模型的性能,或测量训练应用程序和传入应用程序之间的差异程度。在以下部分中,我们将研究其中一些再训练策略的影响,以及不同的再训练数据管理策略对批量 Android 恶意软件检测器效率的影响。特别是,我们关注两种机制:固定周期的再训练和使用识别更改以触发更新的监视器。此外,我们探索了三种选择用于重新训练模型的数据的方法:丢弃旧应用程序的遗忘机制、选择高度相关数据的三种主动学习方法以及基于聚类的针对特定问题的样本选择技术。