一种基于字节码图像聚类的Android恶意代码家族分类方法

文档序号:10725515阅读:685来源:国知局
一种基于字节码图像聚类的Android恶意代码家族分类方法【专利摘要】一种基于字节码图像聚类的Android恶意代码家族分类方法,包括如下步骤:1)APK程序代码映射成灰度图像;2)利用GIST算法提取特征过程如下:2.1)首先按照原始图像的像素点总数,通过计算得到一个高度与宽度等长的像素点矩阵,该矩阵存放的仍是原始图像的像素点,并可利用矩阵生成一个正方形图像;2.2)然后对每个子区域进行8个方向与4个尺度的小波滤波来提取图像的纹理特征信息;2.3)每一幅图像最终获得一个512维特征向量;将得到的高维数据进行降维与数据可视化;3)使用随机森林算法对特征进行分类,通过对灰度图像的聚类完成对Android恶意代码家族的分类。本发明精测精度较高、误报率较低。【专利说明】一种基于字节码图像聚类的Android恶意代码家族分类方法
技术领域
[0001]本发明涉及恶意代码分析
技术领域
,尤其是一种Android恶意代码家族分类方法。【
背景技术
】[0002]随着移动互联网的蓬勃发展,移动应用的种类与数量都呈现快速增长,同时,移动应用的恶意代码规模也呈现指数级增长。阿里聚安全的2015移动安全病毒年报指出,Android平台约5.6台设备中就有1台染毒,设备感染率高达18%,约95%的应用都存在病毒仿冒。[0003]虽然恶意代码的数量每年都在增加,但是大部分新的变种是在原有恶意代码的基础上经过一些变换操作得到的。恶意软件编写者在生成恶意软件的过程中,往往采用模块重用或者自动化工具等手段来编写变种。这些同源恶意代码家族很大程度上都共用了祖先的大部分代码,具有内在关联性、相似性。因此,对恶意代码家族的分类技术研究显得尤为重要,是直接影响恶意代码检测效果的一个关键因素。[0004]恶意代码可视化分析方法已在界内开始得应用,该类方法基本思路是将恶意代码的特征转换为图像上的特征,通过分析图像的特征来间接实现检测恶意代码或者对恶意家族进行分类。[0005]在PC平台,恶意代码的可视化方法在国际上已经有不少人进行了一定的研究。例如,2011年,LNataraj等人提出了一种将Windows平台的恶意代码转化为纹理图像的方法来进行恶意代码分类,该方法具有无需执行代码,无需反汇编等优点。2012年,YWu等人提出了一种点图可视化方法并对恶意代码进行了聚类。2013年,KSHan等人将恶意代码通过反汇编后提取出OpCode,并用哈希函数将OpCode序列生成像素点的坐标信息与RGB信息,最后通过计算图像的相似度来对恶意代码家族进行分类。2014年,MShaid等人用不同的色系表示不同的API调用的风险程度,生成彩图来可视化恶意代码的行为,此方法用于识别恶意代码的变种有较高的精准度。国内也有学者进行了相关研究,韩晓光等人将恶意代码映射为图片,并用灰阶共生矩阵算法提取图片的纹理指纹特征作为恶意代码的指纹,该方法对恶意代码变种有较好的识别能力。[0006]相对于PC平台,Android平台目前利用可视化方法来检测恶意代码变种的相关研究尚属空白。[0007]2012年,北卡罗莱纳州立大学YZhou等人第一次对Android恶意家族进行了系统性的研究。他们的研究团队从2010年8月到2011年10月收集了Android平台共计1,200个恶意样本,并对Android恶意家族的特征与演化过程进行了系统化的研究。2014年,DArp等人收集了5,560个恶意样本,并提出一个DREBIN的方法,该方法除了能够对Android恶意代码与正常代码进行分类,也能对不同家族的Android恶意代码进行分类,该方法具有较高的检测率,但是误报率较高。【
发明内容】[0008]为了克服已有Android恶意代码家族分类方法的误报率较高的不足,本发明提供一种精测精度较高、误报率较低的基于字节码图像聚类的Android恶意代码家族分类方法。[0009]本发明解决其技术问题所采用的技术方案是:[0010]一种基于字节码图像聚类的Android恶意代码家族分类方法,所述分类方法包括如下步骤:[0011]1)APK程序代码映射成灰度图像[0012]将Android恶意APK格式的文件中的DEX文件提取出来,该DEX文件包含了Dalvik字节码,所述Dalvik字节码能被Dalvik虚拟机执行;将字节码构建成一个像素点矩阵,矩阵中的像素点为一个字节,取值范围从0x00至OxFF,即有256种取值,对应256阶的灰度,由像素矩阵生成png格式的灰度图;[0013]2)灰度图像的特征提取[0014]利用GIST算法提取步骤1)生成的灰度图的特征过程如下:[0015]2.1).首先按照原始图像的像素点总数,通过计算得到一个高度与宽度等长的像素点矩阵,该矩阵存放的仍是原始图像的像素点,并可利用矩阵生成一个正方形图像;[0016]2.2).然后对每个子区域进行8个方向与4个尺度的小波滤波来提取图像的纹理特征信息;[0017]2.3).每一幅图像最终获得一个16X8X4=512维特征向量;[0018]将得到的高维数据进行降维与数据可视化;[0019]3)基于灰度图像特征的分类[0020]使用随机森林算法对特征进行分类,通过对灰度图像的聚类完成对Android恶意代码家族的分类。[0021]本发明的技术构思为:首次将恶意代码可视化的方法引入到Android平台,并根据Android平台的特点提出一种可快速生成Dalvik字节码图像的方法,再将该方法与GIST算法与随机森林算法相结合,用于分类Android恶意代码家族,具有精度高且误报率低的特点。[0022]基本思路是将Android恶意应用的Dalvik字节码转化为一幅256阶灰度图,然后用GIST算法提取图像的纹理特征,最后再结合随机森林算法对特征进行分类。[0023]整体流程如图1所示,将APK中的DEX文件提取出来,该DEX文件包含了Dalvik字节码,可以被Dalvik虚拟机执行。然后,将字节码构建成一个合适宽度的像素点矩阵,矩阵中的像素点为一个字节,取值范围从0x00至OxFF,即有256种取值,刚好对应256阶的灰度,由像素矩阵可生成png格式的灰度图。最后,利用GIST特征算法提取出灰度图中的纹理特征,得到一个有512维的特征向量,该特征向量可适用于随机森林的分类算法。[0024]本发明的有益效果主要表现在:[0025](1)可快速生成Dalvik字节码的灰度图像,并能清晰标识DEX文件结构与字节码图像纹理之间的对应关系。[0026](2)与当前业界主流的方法相比,可更有效地进行Android恶意代码家族分类,检测精度高、误报率低。[0027](3)具备良好的扩展性,可支持Android恶意代码的不同类型的字节码,并用相同的方法映射到灰度图,即可实现基于图像聚类的Android恶意代码家族分类。【附图说明】[0028]图1是基于字节码图像聚类的Android恶意代码家族分类方法的流程图。[0029]图2是DEX文件结构与字节码灰度图像的对应关系图。[0030]图3是同一家族的字节码图像,其中,(a)是DroidKungFu家族5组图像,(b)是Plankton家族5组图像,(c)是Opfake家族5组图像,(d)是Kmin家族5组图像。[0031]图4是不同家族的字节码图像,其中,(a)是BaseBridge家族代表图像,(b)是DroidDrearn家族代表图像,(c)是DroidKungFu家族代表图像,(d)是FakeDoc家族代表图像,(e)是Fakelnstaller家族代表图像,(f)是FakeRun家族代表图像,(g)是Iconosys家族代表图像,(h)是Imlog家族代表图像,(i)是Kmin家族代表图像,(j)是MobileTx家族代表图像,(k)是Opfake家族代表图像,(1)是Plankton家族代表图像,(m)是SendPay家族代表图像,(η)是Gappusin家族代表图像。[0032]图5是GIST特征的数据可视化的示意图。【具体实施方式】[0033]下面结合附图对本发明作进一步描述。[0034]参照图1~图5,一种基于字节码图像聚类的Android恶意代码家族分类方法,包括以下步骤:[0035]1)APK程序代码映射成灰度图像[0036]APK格式的文件通常都包含了一个名为classes,dex的文件,该DEX(DalvikExecutable)文件封装了可被Dalvik虚拟机执行的所有Dalvik字节码。DEX文件的结构由多个结构体组合而成,包括dexheader、string_ids、type_ids、proto_ids、field_ids、method_ids、class_def、data等多个部分。DEX文件头指定了DEX文件的一些属性,并记录了其他6部分数据结构在DEX文件中的物理偏移。[0037]若将DEX文件的字节码构建成一个合适宽度的像素点矩阵(宽度建议见表1),矩阵中的像素点为一个字节,取值范围从0x00至OxFF,刚好对应256阶的灰度,能够由像素矩阵生成一张灰度图形式的字节码图像。图2显示了一个恶意代码的DEX文件结构与字节码图像的对应关系,灰度图的纹理特征是对字节码的数据结构与数据的一种综合反映。[0039]表1[0040]由于同源恶意代码家族很大程度上都共用了祖先的大部分代码,具有内在关联性、相似性,因而同一个家族的恶意代码的字节码图像的纹理也会表现出一定的相似性。如图3所不,Android恶意家族DroidKungFu、Plankton、Opfake、Kmin各有5个变种的样本,同一个家族的字节码图像的相似性要大于不同家族的字节码图像。另外,图4给出了14个常见的Android恶意家族的较为典型的字节码图像,不难发现,各家族的图像具有各自的视觉特点。[0041]2)灰度图像的特征提取[0042]常见的图像的纹理特征提取方法包括GLCM、边界频率法、GIST模型、Gabor滤波法等。本方案采用公知的GIST算法,该算法常用于图像识别系统。这里简要给出如何利用GIST算法提取字节码图像特征的流程:[0043]2.1).首先,按照原始图像的像素点总数,通过计算可得到一个高度与宽度等长的像素点矩阵,该矩阵存放的仍是原始图像的像素点,并可利用矩阵生成一个正方形图像。[0044]2.2).然后对每个子区域进行8个方向与4个尺度的小波滤波来提取图像的纹理特征信息。[0045]2.3).每一幅图像最终获得一个16X8X4=512维特征向量。[0046]我们采用上述步骤将6个Android恶意代码家族的部分样本进行了特征的提取,并将得到的高维数据进行降维与数据可视化,结果如图5所显示,GIST特征有较好的分类效果。[0047]3)基于灰度图像特征的分类[0048]随机森林算法有许多优点,特别是在处理多种类型数据时可以产生高准确度,且对于不平衡的数据集可以平衡误差,非常适用于恶意家族数据集的分类,所以在实验部分选用随机森林算法。[0049]测试所采用的恶意样本来源于德国哥廷根大学DREBIN项目的恶意样本数据库。在该样本库中选用了14类常见的恶意家族作为最终的实验数据,如表2所示[0051]表2[0052]使用随机森林算法对14类3962个样本按照10折交叉验证模式进行测试,结果如表3所示,除了Gappusin家族由于样本数量较少导致TPR值较低,其他家族的TPR值都不低于0.8;总体上,平均检测率要高于90%,平均误报率约为0.6%,表明该方法对恶意家族分类有较好的效果。[0054]表3[0055]本发明方法与DREBIN方法在相同实验数据集上检测率的对比情况,两种检测方法在不同的检测恶意家族的表现上互有优劣,总体效果基本接近,但是Gappusin家族一项的检测率虽然都不高,本方法高于DREBIN方法。DREBIN方法的平均误报率为1%,而本方法的平均误报率为0.6%,要优于DREBIN方法。【主权项】1.一种基于字节码图像聚类的Android恶意代码家族分类方法,其特征在于:所述分类方法包括如下步骤:1)APK程序代码映射成灰度图像将Android恶意APK格式的文件中的DEX文件提取出来,该DEX文件包含了Dalvik字节码,所述Dalvik字节码能被Dalvik虚拟机执行;将字节码构建成一个像素点矩阵,矩阵中的像素点为一个字节,取值范围从0x00至OxFF,即有256种取值,对应256阶的灰度,由像素矩阵生成png格式的灰度图;2)灰度图像的特征提取利用GIST算法提取步骤1)生成的灰度图的特征过程如下:2.1).首先按照原始图像的像素点总数,通过计算得到一个高度与宽度等长的像素点矩阵,该矩阵存放的仍是原始图像的像素点,并可利用矩阵生成一个正方形图像;2.2).然后对每个子区域进行8个方向与4个尺度的小波滤波来提取图像的纹理特征信息;2·3)·每一幅图像最终获得一个16X8X4=512维特征向量;将得到的高维数据进行降维与数据可视化;3)基于灰度图像特征的分类使用随机森林算法对特征进行分类,通过对灰度图像的聚类完成对Android恶意代码家族的分类。【文档编号】G06F21/56GK106096411SQ201610405003【公开日】2016年11月9日【申请日】2016年6月8日【发明人】陈铁明,杨益敏【申请人】浙江工业大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1