移动终端操作系统应用程序恶意检测系统技术研究
2022-11-12李晓锋燕少飞吴宸
李晓锋 燕少飞 吴宸
(北京赛宝工业技术研究院有限公司 北京市 100043)
1 课题背景与研究意义
手机作为大家日常生活中不可缺少的一个电子产品,其作用已经不仅仅是打电话聊天的终端了。随着手机功能的不断强大与完善,不断推动着信息化与数字化的进程。在移动办公、移动支付、数据存储、身份证明、在线业务办理等重要功能。由于每个人使用手机的频率与市场超过了任何一个电子产品,随之产生的系统数据及个人隐私数据的重要性也不言而喻。不法分子会制作一些手机病毒木马等恶意程序,在用户无任何感知的情况下就控制了手机其他功能的使用,并且窃取了隐私数据。如何安全的使用手机的功能,与如何保护手机存储与产生的个人隐私数据显得尤为重要。
本文设计的移动终端操作系统应用程序恶意检测系统的目的主要是,通过建立机器学习与深度学习模型,完成安卓恶意应用的识别,提高恶意应用的检测能力与检测准确度。
2 恶意程序检测技术研究
当前较为主流的杀毒软件厂商大多采用基于规则的恶意应用检测方式,评估手段较为单一,检测项目不全面。现有恶意应用程序的检测技术主要基于代码、行为等静态特征和动态特征,而这些特征主要来源于已捕获的恶意程序样本,使得现有检测技术在识别未知恶意代码方面存在不足。另一方面,机器学习在数据分析领域的应用目前有了很多成功案例,特别是利用深度学习的模型在图像识别、语音识别和应用分类领域都有良好的效果。因此,通过对不同家族的恶意应用进行分析,提炼应用的特征,建立相匹配的机器学习模型,基于对大批量恶意应用进行训练,实现对于海量应用程序的自动化识别,有助于发现现有恶意应用检测引擎无法识别的未知恶意应用。
3 恶意检测系统整体设计
本文在现有的基于特征工程的机器学习进行恶意应用分类识别与基于CNN的深度学习进行恶意应用分类识别的基础上,进行XGBoost、RF、RNN、SVM等算法的拓展,建立专门的恶意应用分类模型,以提高模型的识别能力;综合使用提取Intent、提取Permission、提取Linux内核命令、提取有恶意倾向的行为、提取API等静态分析方法和沙盒模拟、API调用序列、行为记录等动态分析方法,从恶意应用中提取相关特征,训练恶意应用分类模型,用于对灰色样本中包括已知和未知的恶意应用进行大批量的分类处理。利用动静态结合的分析方法提取恶意样本特征,建立恶意应用特征库,包括静态代码特征、动态行为特征和机器码特征。根据恶意应用特征库中的特征信息,基于现有的机器学习与深度学习模型,建立机器学习与深度学习相结合的恶意应用分类模型,生成安卓恶意应用识别引擎。该引擎使用python[5]进行开发,通过学习输入的新样本,可以自动更新和扩展恶意应用特征库中的特征,从而保证该引擎不仅对已知恶意应用具有较高的分类识别准确率,而且对未知恶意应用也具有良好的识别能力。本系统框架分成组件支持层、业务层和应用层,详细架构如图1所示。
图1:系统框架
此处我们构建了一个CNN-XGBoost模型。该模型将CNN用于特征自动提取和XGBoost分类相结合,XGBoost是以弱分类器来达到强分类的效果,因此设计的系统会达到比其他分类模型更高的性能和精准率。
3.1 XGBoost模型解析
XGBoost是陈天奇等人开发的一个开源机器学习项目,高效地实现了GBDT算法并进行了算法和工程上的许多改进,如图2所示。
图2:XGBoost
要识别一个应用是否是恶意应用,要从多个特征去判断,特征树越多,判断的精度则越准确。通过反编译apk文件提取Permission,Intent,Component等特征,采用多个基学习器,下一个学习器是学习前面基学习器的结果和实际值yi的差值,通过多个学习器的学习,不断降低模型值和实际值的差。XGBoost在Android恶意软件检测时具有更高的分类精度,提高了恶意软件检测的正确率。
通过提取不通特征,不断生成新的特征树,每棵树都是基于上一颗树和目标值的差值来进行学习,从而降低模型的偏差。最终结果为:
即所有特征树的结果累加起来才是模型对一个恶意样本的预测值。
3.2 组件支持层设计与实现
组件支持层包括静态分析组件,动态分析组件和存储组件。
(1)静态分析组件包括加固壳识别组件、脱壳组件、反编译组件、自定义提取组件。其中加固壳识别组件用于识别安卓恶意应用的加壳类型,为后续的脱壳提供依据;脱壳组件根据壳识别结果,调用不同的脱壳工具对安卓恶意应用进行脱壳处理;反编译组件针对脱壳后的程序,反编译获得其对应的Java文件;自定义提取组件用于自定义提取安卓恶意应用的相关信息。
(2)动态分析组件包括输入生成组件、动态沙箱组件、日志收集组件、测试机管理组件。其中输入生成组件用于根据输入的安卓恶意应用生成相应的测试用例;动态沙箱组件用于提供应用的运行环境,用于收集恶意应用程序在执行过程中触发的恶意行为数据;日志收集组件用于收集测试日志并提取相关信息;测试机管理组件用于对大量动态分析测试机进行全局的管理。
(3)存储组件用于对训练出来的模型进行持久化保存。
3.3 业务层设计与实现
业务层包括特征提取、特征处理和特征分析三个部分。
CNN-XGBoost模型要求CNN读取数据集中所有类的每个图像,并自动找到每个恶意软件图像的特征,CNN有自己的三个层:卷积层、池化层,全连通层可以提取图像的高质量特征或特征。在完成特征工程之后,我们需要使用这些特征来进行分类。
3.3.1 特征提取
特征提取包括静态特征和动态特征,其中静态提取对安卓恶意应用的Intent、Permission、调用Linux内核命令、有恶意倾向的行为和API等信息进行提取,较为全面地包含了安卓恶意应用的静态信息;动态提取包括恶意应用对网络、文件的操作、API调用序列、Activity之间的跳转等行为数据。动静态分析的结合使安卓恶意应用的信息提取更为全面,从而为安卓恶意应用识别模型提供足够的特征信息。
本检测引擎支持通过对恶意应用的特征分析,得出某一类恶意家族所具有的具体特征,并能够对灰色样本中被判别为恶意的应用进行恶意家族的类别标注。目前,引擎支持对拦截马、色情类应用以及勒索类应用进行识别与判定。
3.3.1.1 静态特征分析
本引擎能够对安卓应用程序进行检测处理,支持处理的文件类型包括APK文件以及通过解压得到的DEX文件和SO文件。
(1)APK文件。通过对待检测的APK文件进行解压操作,对APK的内部文件进行分析,从而对安卓的Intent、Permission、API调用、系统命令以及恶意行为这五大静态特征进行提取,对其进行统一的数据处理,筛选出对于分类结果影响较大的特征作为特征集,生成机器学习模型的输入向量进行模型训练。
(2)DEX文件。通过对待检测的文件进行解压操作,提取其中的classes.dex文件与安卓Manifest.xml文件,将其转为二进制文件作为输入,进行拼接处理。作为模型输入向量传入深度学习模型,进行模型训练。
(3)SO文件。通过对待检测文件进行解压,得到并解析SO文件,利用SO文件的代码段的起始地址以及长度,取前10000个字节作为特征进行训练,若SO文件的代码段长度不足规定字节长度,则对其进行循环补足操作。
3.3.1.2 动态特征分析
(1)动态行为。动态行为的行为日志将利用沙箱进行提取操作,灰色样本在进入沙箱之后利用动态组件对其运行时的机器码进行监控并进行提取操作。首先得到一个操作集合(目前共53个),并随机打乱,然后将数字1-53与操作进行映射,便于算法处理,并进行持久化,便于后期使用。对拿到的应用动态信息文件进行解析,获得操作序列,根据映射关系对操作序列进行编码,经过统计分析发现有大量操作提取到的连续重复次数过多,导致序列过长,冗余信息过多,所以对连续重复的操作只作为一次操作,最后获得一系列长短不一的数字序列。对序列进行归一化处理后作为输入向量送入模型进行训练。
(2)机器码(opcode)。安卓应用程序的机器码(opcode)同动态行为,利用沙箱进行动态组件对其进行特征的提取,将每个样本的opcode指令码转化为二进制形式进行存储,并将生成的二进制序列映射为长度固定的-1~1之间的输入序列,完成对向量的归一化处理后,送入CNN模型进行模型训练。
3.3.1.3 特征提取实现
3.3.2 特征处理
特征处理包括数据清洗和样本采样。数据清洗主要对采集的原始信息进行分析、缺失值处理、异常值处理、去重处理和噪音数据处理等;样本采样主要针对训练数据中的非均衡数据采用升采样或降采样的方法进行处理。
3.3.3 特征选择使用
特征选择使用Filter方法和Embedded方法。Filter方法包括方差选择法、相关系数法、卡方检验和互信息法等;Embedded方法包括基于惩罚项的特征选择法和基于树模型的特征选择法。通过两种方法的结合能够更加准确地从安卓恶意应用中提取特征。
3.4 应用层设计与实现
应用层包括机器学习算法库、深度学习算法库、模型应用和更新。检测引擎能够利用机器学习与深度学习的方法对未知灰样本进行恶意检测,并对灰样本中判定为恶意的样本进行分类识别。本引擎支持包括XGBoost、随机森林、K-means等机器学习的算法、异构信息网络(HIN)、卷积神经网络(CNN)、LSTM等多种深度学习的算法,能够通过模型融合的方式得到对灰色样本最终的综合判定结果。
(1)机器学习算法库包括XGBOOST、RANDOMFOREST等多种算法。
(2)深度学习算法库包括CNN、CNN+RNN等多种算法。模型可根据实际需求自由选择组合,大大提高了安卓恶意程序识别引擎的灵活性。
(3)模型应用和更新包括模型预测和模型更新两个部分。提高分类结果的准确率和模型的泛化能力,使得平台的可移植性、可扩展性大大增强。
3.4.1 XGBoost机器学习算法
3.4.2 SVM分类算法
3.4.3 CNN深度学习算法
3.4.4 模型应用和更新
模型依据新样本和计算结果不断进行训练和更新,然后再将更新后的算法模型应用于新的预测。算法模型以文件形式存储和更新,样本数据则基于关系型数据库存取。这样可以提高可扩展性。
4 结论
在整个移动终端操作系统应用程序恶意检测系统的设计与开发中,通过对恶意程序的特征进行提取、分析、处理,用CNN深度学习算法和XGBoost机器学习算法进行特征分析与处理,设计了恶意应用分类模型,提高了恶意程序的检测准确性。检验了深度学习和机器学习算法在恶意程序检测领域的可行性。
经过实际运算结果检验,设计开发的移动终端操作系统应用程序恶意加测系统对恶意应用的识别精确度较高,达到预期水平。