Maldetect:基于Dalvik指令抽象的Android恶意代码检测系统
发布时间:2019-08-17 09:17
【摘要】:提出了一个Android恶意代码的静态检测系统Maldetect,首先采用逆向工程将DEX文件转化为Dalvik指令并对其进行简化抽象,再将抽象后的指令序列进行N-Gram编码作为样本训练,最后利用机器学习算法创建分类检测模型,并通过对分类算法与N-Gram序列的组合分析,提出了基于3-Gram和随机森林的优选检测方法.通过4 000个Android恶意应用样本与专业反毒软件进行的检测对比实验,表明Maldetect可更有效地进行Android恶意代码检测与分类,且获得较高的检测率.
【图文】:
检测模型和恶意家族分类模型的测试,如图2所示:Fig.1Thedetectionandclassificationmodel.图1恶意代码的检测与分类模型训练Fig.2Theprocessofpredictingmalware.图2恶意代码的检测与分类过程首先,需要确定训练恶意代码检测模型的训练集.训练集分为2个子集:1)恶意APK样本集合;2)非恶意样本APK集合.APK文件格式通常都包含一个classes.dex文件,该DEX(Dalvikexecutableformat)文件封装了可被Dalvik虚拟机执行的Dalvik字节码.利用工具Apktool[13]反汇编APK文件,就能得到一个包含smali源码的文件目录,smali目录结构对应着Java源码的src目录.smali是对Dalvik字节码的一种解释,所有语句都遵循一套标准的语法规范.从smali文件中提取出Dalvik操作码并进行抽象简化为指令符号,再针对抽象的Dalvik指令符号的N-Gram序列特征进行统计与归一化处理,最后采用机器学习的分类算法建立恶意代码检测模型.同理,按照恶意家族的类型划分多个训练子集,按照上述类似的处理过程,,可建立一个恶意家族分类模型.利用模型检测与分类时,将待测APK文件先进行预处理步骤,提取出Dalvik指令特征并作同样的抽象简化与N-Gram序列化处理,再通过恶意代码检测模型的检测,就可判断出是否为恶意代码,如果不是就直接给出检测结果,如果是则需要进一步通过恶意家族分类模型来获得该恶意代
值仅高出了2%,而4-Gram序列的随机森林算法FPR值比3-Gram序列的随机森林算法FPR值却高出了30%.综合分析,3-Gram序列的随机森林算法是一种较优的方法.接下来,分析样本数量对准确性的影响.除了上述实验的600个样本作为小样本集合,再增加一个1100个样本作为大样本集合作为对比实验,按3-Gram的随机森林算法,采用10折交叉验证对它们进行测试.实验结果如表7和图3所示,不难看出,大样本集的所有评估指标都要优于小样本集,这表明样本数量大小对检测效果有一定的影响,训练样本数量越大则综合表现越优.Table7TheResultswithDifferentSizeofSamples表7样本数量对比的结果SampleSizeTPRFPRPrecisionAUC600samples0.9560.0860.9080.9821100samples0.9800.0790.9170.992Fig.3ROCcurveswithdifferentsizeofsamples.图3不同样本数量的ROC曲线对比图3.3MaldetectVS专业反病毒软件根据3.2节的实验结果,以实验效果较优的3-Gram序列的随机森林算法作为基础,通过计算信息增益来选取200个区分度最高的特征作为特征选择方法,我们实现了一个Android恶意代码检测系统Maldetect.本节实验我们分别在2000个样本和4000个样本的2个数据集上进行实验,并按照60%数据作为Maldetect的训练样本库,40%数据作为测试样本库
【作者单位】: 浙江工业大学计算机科学与技术学院;
【基金】:国家自然科学基金项目(U1509214) 浙江省自然科学基金项目(LY16F020035)~~
【分类号】:TP309;TP316
【图文】:
检测模型和恶意家族分类模型的测试,如图2所示:Fig.1Thedetectionandclassificationmodel.图1恶意代码的检测与分类模型训练Fig.2Theprocessofpredictingmalware.图2恶意代码的检测与分类过程首先,需要确定训练恶意代码检测模型的训练集.训练集分为2个子集:1)恶意APK样本集合;2)非恶意样本APK集合.APK文件格式通常都包含一个classes.dex文件,该DEX(Dalvikexecutableformat)文件封装了可被Dalvik虚拟机执行的Dalvik字节码.利用工具Apktool[13]反汇编APK文件,就能得到一个包含smali源码的文件目录,smali目录结构对应着Java源码的src目录.smali是对Dalvik字节码的一种解释,所有语句都遵循一套标准的语法规范.从smali文件中提取出Dalvik操作码并进行抽象简化为指令符号,再针对抽象的Dalvik指令符号的N-Gram序列特征进行统计与归一化处理,最后采用机器学习的分类算法建立恶意代码检测模型.同理,按照恶意家族的类型划分多个训练子集,按照上述类似的处理过程,,可建立一个恶意家族分类模型.利用模型检测与分类时,将待测APK文件先进行预处理步骤,提取出Dalvik指令特征并作同样的抽象简化与N-Gram序列化处理,再通过恶意代码检测模型的检测,就可判断出是否为恶意代码,如果不是就直接给出检测结果,如果是则需要进一步通过恶意家族分类模型来获得该恶意代
值仅高出了2%,而4-Gram序列的随机森林算法FPR值比3-Gram序列的随机森林算法FPR值却高出了30%.综合分析,3-Gram序列的随机森林算法是一种较优的方法.接下来,分析样本数量对准确性的影响.除了上述实验的600个样本作为小样本集合,再增加一个1100个样本作为大样本集合作为对比实验,按3-Gram的随机森林算法,采用10折交叉验证对它们进行测试.实验结果如表7和图3所示,不难看出,大样本集的所有评估指标都要优于小样本集,这表明样本数量大小对检测效果有一定的影响,训练样本数量越大则综合表现越优.Table7TheResultswithDifferentSizeofSamples表7样本数量对比的结果SampleSizeTPRFPRPrecisionAUC600samples0.9560.0860.9080.9821100samples0.9800.0790.9170.992Fig.3ROCcurveswithdifferentsizeofsamples.图3不同样本数量的ROC曲线对比图3.3MaldetectVS专业反病毒软件根据3.2节的实验结果,以实验效果较优的3-Gram序列的随机森林算法作为基础,通过计算信息增益来选取200个区分度最高的特征作为特征选择方法,我们实现了一个Android恶意代码检测系统Maldetect.本节实验我们分别在2000个样本和4000个样本的2个数据集上进行实验,并按照60%数据作为Maldetect的训练样本库,40%数据作为测试样本库
【作者单位】: 浙江工业大学计算机科学与技术学院;
【基金】:国家自然科学基金项目(U1509214) 浙江省自然科学基金项目(LY16F020035)~~
【分类号】:TP309;TP316
【相似文献】
相关期刊论文 前10条
1 林耕宇;;观摩50名Google Android程序开发竞赛作品[J];电子与电脑;2008年08期
2 树子;;Android中文版不完全体验[J];互联网天地;2009年04期
3 Jason Whitmire;;产业软件专家如何协助解决Android的分裂困境[J];电子与电脑;2010年02期
4 蒋彬;;10款Android手机必备应用——Android操作系下的软件评测[J];微电脑世界;2010年04期
5 ;PCWorld Windows Phone 7挑战Android 毅然崛起的AndroidⅠ洗心革面的Windows Phone 7[J];微电脑世界;2010年08期
6 韩青;;Android平台发展的动力与挑战[J];中国电子商情(基础电子);2010年09期
7 方智勇;;Android手机这样用[J];电脑迷;2010年15期
8 缺少浪漫;;Android的另一面[J];电脑迷;2010年13期
9 ;ZTE and Three Release Android
本文编号:2527693
本文链接:https://www.wllwen.com/kejilunwen/ruanjiangongchenglunwen/2527693.html