Android平台恶意软件自动检测方法

文档序号:6514492阅读:955来源:国知局
Android平台恶意软件自动检测方法
【专利摘要】本发明提供一种Android平台恶意软件自动检测方法,该Android平台恶意软件自动检测方法包括:S1.设定Android平台的敏感API数据集;S2.对待检测的应用程序进行逆向代码还原,得到该应用程序的逆向代码;S3.根据该敏感API数据集提取该逆向代码中的敏感API和包含网络地址信息的字符串;S4.根据该逆向代码绘制函数调用关系有向图,并根据该函数调用关系图、该提取的敏感API和字符串判断该应用程序是否为恶意软件。本发明能够自动的判断应用程序是否为恶意软件,并提高了Android平台下恶意软件的检测效率。
【专利说明】Android平台恶思软件自动检测方法
【技术领域】
[0001]本发明涉及计算机安全领域,尤其涉及一种Android平台恶意软件自动检测方法。
【背景技术】
[0002]随着中国移动互联网爆发式的增长,移动网络开始从3G向4G升级,移动设备用户数超越台式电脑数,移动应用数量成倍增长,整个移动互联网行业呈现蓬勃发展态势。
[0003]移动智能终端指的是具有独立操作系统,可以由用户自行安装软件、游戏等第三方应用程序,能够使用移动互联网访问网络的手机及平板电脑。目前,基于Android操作系统的移动智能终端呈现出蓬勃发展的状态,已经占领超过一半的用户市场。
[0004]相比于早期的非智能手机,移动智能终端最大的特点是可以由用户自行安装APP以便扩展其功能和业务。其中,APP (Application),即互联网应用与服务,就是可以在手机或平板电脑终端运行的软件。类似与普通PC电脑上的软件,安装在移动智能终端桌面后,点击一下桌面的软件图标即可进入查看内容,不需要登陆浏览器访问网址这些复杂的步骤。
[0005]高速网络技术的飞速发展使得互联网已经成为全球信息发布、传播和交流的主要平台之一,而移动智能手机的普及则进一步极大的改善了人们信息获取的方式,但是同时也给恶意软件的传播提供了土壤。目前,移动智能终端下的恶意软件主要以用户隐私窃取为核心目标,窃取内容包括用户的通讯录、短信、电话记录、照片、日历等用户私人信息,窃取方式主要采用后台隐秘上传方法,在不惊动手机用户的同时将用户的个人隐私信息进行窃取,严重危害了用户的个人信息安全。
[0006]但是,不同于普通PC终端上的恶意软件分析方法,由于操作系统、编译环境、硬件设备以及系统指令等方面的巨大差异,对移动智能终端下的恶意软件的检测还属于难题,不能简单的直接使用PC端下的恶意软件分析和检测技术以及思路。
[0007]目前,对Android下恶意软件的分析主要依靠人工的方式进行,通过对恶意软件进行逆向代码还原后,采用人工的方式查找恶意代码,分析恶意行为,提取检测特征。这种方法人工参与程度较大,并且所消耗时间较多,而且通常会严重依赖于分析人员的个人能力,无法做到快速、高效、全面的分析。因此,自动化的对Android平台下的恶意软件进行分析,尽可能的提取其中的恶意行为,并对软件的恶意程度进行初步判断迫在眉睫。

【发明内容】

[0008](一)要解决的技术问题
[0009]本发明要解决的技术问题是:提供一种Android平台恶意软件自动检测方法,能够自动检测应用程序是否为恶意软件。
[0010](二)技术方案
[0011]为解决上述技术问题,本发明提供了一种Android平台恶意软件自动检测方法,包括:
[0012]S1.设定Android平台的敏感API数据集;
[0013]S2.对待检测的应用程序进行逆向代码还原,得到所述应用程序的逆向代码;
[0014]S3.根据所述敏感API数据集提取所述逆向代码中的敏感API和包含网络地址信息的字符串;
[0015]S4.根据所述逆向代码绘制函数调用关系有向图,并根据所述函数调用关系图、所述提取的敏感API和字符串判断所述应用程序是否为恶意软件。
[0016]进一步地,步骤SI包括:
[0017]Sll.根据Android开发工具包查找与恶意软件相关的敏感API ;
[0018]S12.将Sll获取的敏感API按照其功能类别进行整理和分类,得到敏感API数据集。
[0019]进一步地,步骤Sll中与恶意软件相关的敏感API包括Android开发工具包中跟电话、短信、照片、摄像头、GPRS、通讯录相关的API函数及所属类。
[0020]进一步地,所述敏感API数据集包括敏感API函数名、敏感API参数、敏感API类名。
[0021]进一步地,步骤S2包括:
[0022]S21.利用解压缩工具将待检测应用程序安装包进行解压缩,获得dex文件;
[0023]S22.将S21步骤解压缩获得的dex文件转换为Java语言的字节码格式,并生成jar文件;
[0024]S23.利用解压缩工具将S22步骤所获得的jar文件进行解压缩,然后将解压缩获得每个class文件反编译成java格式文件。
[0025]进一步地,步骤S3包括:
[0026]S31.根据步骤SI所设定的敏感API数据集,采用字符串匹配算法对在步骤S2中所获得的java格式文件进行逐行匹配,判断是否调用了敏感API函数,如果调用,则进一步记录调用的敏感API函数的所属自建函数名和所属文件名;匹配结束后,如果存在敏感API函数调用情况,则执行步骤S32,否则结束;
[0027]S32.利用正则匹配算法,对在步骤S2中所获得的java格式文件进行逐行匹配,判断所述java格式文件中是否包含网络地址信息的字符串,如果包含,则进一步记录包含所述字符串的所属自建函数名和所属文件名;匹配结束后,如果存在内置网络地址信息情况,则执行步骤S4,否则结束。
[0028]进一步地,步骤S4包括:
[0029]S41.分析S2步骤中所得到的java格式的逆向代码,并绘制函数调用关系有向图;
[0030]S42.在所述函数调用关系有向图中标注步骤S3中记录的敏感API函数的所属自建函数以及包含所述字符串的所属自建函数;
[0031]S43.在所述标注后的函数调用关系有向图中,以任意一个包含敏感API函数的所属自建函数为起点,以任意一个包含所述字符串的所属自建函数为终点,以函数调用关系有向图中的方向为路径,追踪并判断起点与终点之间是否存在调用关系,若是,则判断所述应用程序为恶意软件,否则,则判定所述应用程序为正常软件。[0032](三)有益效果
[0033]本发明首先从Android开发工具包中找寻所有涉及隐私窃取行为的敏感API,并整理成数据集;之后,对待检测的恶意软件进行逆向代码还原,反编译出java代码;然后,利用敏感API数据集在代码中搜索使用了敏感API的函数名,同时,搜索内置URL/IP字符串的自建函数名;将待检测软件的函数调用关系绘制成调用关系有向图,并在其中标注出全部使用敏感API的自建函数以及包含内置URL/IP的自建函数,最后,判断两类自建函数之间是否存在路径,即是否存在调用关系,如果存在任意一条路径,则判定该应用程序为恶意软件,从而实现了自动的判断应用程序是否为恶意软件,并提高了 Android平台下恶意软件的检测效率。
【专利附图】

【附图说明】
[0034]图1是本发明实施方式提供的一种Android平台恶意软件自动检测方法的流程图;
[0035]图2是本发明实施方式提供的Android平台恶意软件自动检测方法的示意图。【具体实施方式】
[0036]下面结合附图和实施例,对本发明的【具体实施方式】作进一步详细描述。以下实施例用于说明本发明,但不用来限制本发明的范围。
[0037]图1是本发明实施方式提供的一种Android平台恶意软件自动检测方法的流程图,包括:
[0038]步骤S1.设定 Android 平台的敏感 API (Application Programming Interface,应用程序编程接口)数据集;
[0039]其中,该敏感API数据集可以包括敏感API函数名、敏感API参数、敏感API类名。
[0040]步骤S2.对待检测的应用程序进行逆向代码还原,得到所述应用程序的逆向代码;
[0041]步骤S3.根据所述敏感API数据集提取所述逆向代码中的敏感API和包含网络地址信息的字符串,该包括网络地址信息的字符串可以为URL (UniformResourceLocator,统一资源定位符)字符串,也可以为IP (Internet Protocol,网络之间互连的协议)字符串;
[0042]步骤S4.根据所述逆向代码绘制函数调用关系有向图,并根据所述函数调用关系图、所述提取的敏感API和字符串判断所述应用程序是否为恶意软件。
[0043]其中,步骤SI进一步包括:
[0044]Sll.根据Android开发工具包查找与恶意软件相关的敏感API ;
[0045]具体地,与恶意软件相关的敏感API可以包括Android开发工具包中跟电话、短信、照片、摄像头、GPRS (General Packet Radio Service,通用分组无线服务技术)、通讯录相关的API函数及所属类。例如,通讯录类别的敏感API可以包括:android, costent.ContentResolver、android, database.Cursor、android, provider.ContactsContract、getContentResolver、coursor.getCoIumnIndexOrThrowΛ insert、ContentValue、updata 和 delete 等,短信类的敏感 API 可以包括:An droid, telephony.SmsManageλ SmsManagerΛSmsManager.getDefault、sendTextMessage、sendDataMessage 和sendMultipartTextMessage 等。
[0046]S12.将Sll获取的敏感API按照其功能类别进行整理和分类,得到敏感API数据集。具体地,敏感API涉及隐私的信息内容主要有:网络信息、设备信息、短信、通讯录、GPRS信息、来电记录、照片、浏览器历史信息和笔记本信息,函数内容主要包括HTTP通信、数据加解密和线程。
[0047]其中,步骤S2进一步包括:
[0048]S21.利用解压缩工具将待检测应用程序安装包进行解压缩,获得dex文件,具体地,利用解压缩工具将待检测的Android平台的应用程序APK安装包进行解压缩,获得classes, dex 文件;
[0049]S22.将S21步骤解压缩获得的dex文件转换为Java语言的字节码格式,并生成jar文件,具体地,将S21步骤解压缩获得的classes, dex文件从Dalvik虚拟机的字节码格式转换成Java语言的字节码格式,并生成classes_dex2jar.jar文件;
[0050]S23.利用解压缩工具将S22步骤所获得的jar文件进行解压缩,然后将解压缩获得每个class文件反编译成java格式文件,具体地,利用解压缩工具将S22步骤所获得的classes_dex2jar.jar文件进行解压缩,然后将解压缩获得每个class文件反编译成java格式文件。
[0051]其中,步骤S3进一步包括:
[0052]S31.根据步骤SI所设定的敏感API数据集,采用字符串匹配算法对在步骤S2中所获得的java格式文件进行逐行匹配,判断是否调用了敏感API函数,如果调用,则进一步记录调用的敏感API函数的所属自建函数名和所属文件名;匹配结束后,如果存在敏感API函数调用情况,则执行步骤S32,否则结束。例如,提取的电话类的敏感API为TelephonyManager_>getSystemService ("phone"),短信类的敏感 API 为 1calSmsManager.sendTextMessage,通讯录类的敏感 API 具体包括有 getColumnlndex (〃display_name〃)以及 getColumnlndex(〃has_phone_number〃)。
[0053]S32.利用正则匹配算法,对在步骤S2中所获得的java格式文件进行逐行匹配,判断所述java格式文件中是否包含网络地址信息的字符串,如果包含,则进一步记录包含所述字符串的所属自建函数名和所属文件名;匹配结束后,如果存在内置网络地址信息情况,则执行步骤S4,否则结束;
[0054]具体地,利用正则匹配算法对在步骤S2中所获得的所有java文件进行逐行匹配,判断文件中是否包含URL/IP字符串,如果包含,则进一步记录包含URL/IP字符串的所属自建函数名和所属文件名,之后执行步骤S4,例如,提取的URL为:http://androids-market.ru/unregister/。
[0055]其中,步骤S4进一步包括:
[0056]S41.分析S2步骤中所得到的java格式的逆向代码,并绘制函数调用关系有向图;
[0057]S42.在所述函数调用关系有向图中标注步骤S3中记录的敏感API函数的所属自建函数以及包含所述字符串的所属自建函数;具体地,可以将函数按照其不同功能标注为不同的颜色,系统函数标注为绿色,包含敏感API的自建函数标注为蓝色,不包含敏感API的自建函数标注为黄色,包含URL/IP的自建函数标注为红色。[0058]S43.在所述标注后的函数调用关系有向图中,以任意一个包含敏感API函数的所属自建函数为起点,以任意一个包含所述字符串的所属自建函数为终点,以函数调用关系有向图中的方向为路径,追踪并判断起点与终点之间是否存在调用关系,若是,则判断所述应用程序为恶意软件,否则,则判定所述应用程序为正常软件。
[0059]具体地,以任意一个包含敏感API的自建函数为起点,以任意一个包含URL/IP的自建函数为终点,以函数调用关系有向图中的方向为路径,追踪并判断起点与终点之间是否存在调用关系,若存在一条从某一调用敏感API的自建函数到包含URL/IP的自建函数的路径,则判断该应用程序为恶意软件。
[0060]参见图2,本发明提供的Android平台恶意软件自动检测方法,首先根据Android平台下的恶意软件的常见隐私窃取行为,分析其窃取的信息内容,并从Android开发工具包中找寻所有涉及隐私窃取行为的敏感API,并整理成数据集;之后,通过反编译引擎对待检测的恶意软件进行逆向代码还原,反编译出java代码;然后,通过敏感API分析引擎利用敏感API数据集在代码中搜索使用了敏感API的自建函数名,同时,通过控制&命令服务器分析引擎搜索内置URL/IP字符串的自建函数名;并通过图分析引擎将待检测软件的函数调用关系绘制成调用关系有向图,并在其中标注出全部使用敏感API的自建函数以及包含内置URL/IP的自建函数,最后,判断两类自建函数之间是否存在路径,即是否存在调用关系,如果存在任意一条路径,则证明此应用程序为恶意软件,从而能够自动的判断应用程序是否为恶意软件,进而提高了 Android平台下恶意软件的分析效率。
[0061]本发明实施方式提供的Android平台恶意软件自动检测方法采用图论理论自动的判断Android平台下的恶意软件,改进了 Android恶意软件检测的方法,降低了人工参与程度,从而提高了 Android平台下恶意软件的检测效率,能够为普通用户检测其使用的Android平台下的应用程序是否为恶意软件,还可以提供丰富的运行信息给恶意软件分析人员,方便其进行更深层次的分析。
[0062]以上实施方式仅用于说明本发明,而并非对本发明的限制,有关【技术领域】的普通技术人员,在不脱离本发明的精神和范围的情况下,还可以做出各种变化和变型,因此所有等同的技术方案也属于本发明的范畴,本发明的专利保护范围应由权利要求限定。
【权利要求】
1.一种Android平台恶意软件自动检测方法,其特征在于,包括: S1.设定Android平台的敏感API数据集; S2.对待检测的应用程序进行逆向代码还原,得到所述应用程序的逆向代码; S3.根据所述敏感API数据集提取所述逆向代码中的敏感API和包含网络地址信息的字符串; S4.根据所述逆向代码绘制函数调用关系有向图,并根据所述函数调用关系图、所述提取的敏感API和字符串判断所述应用程序是否为恶意软件。
2.根据权利要求1所述的Android平台恶意软件自动检测方法,其特征在于,步骤SI包括: S11.根据Android开发工具包查找与恶意软件相关的敏感API; S12.将Sll获取的敏感API按照其功能类别进行整理和分类,得到敏感API数据集。
3.根据权利要求2所述的Android平台恶意软件自动检测方法,其特征在于,步骤Sll中与恶意软件相关的敏感API包括Android开发工具包中跟电话、短信、照片、摄像头、GPRS、通讯录相关的API函数及所属类。
4.根据权利要求1所述的Android平台恶意软件自动检测方法,其特征在于,所述敏感API数据集包括敏感API函数名、敏感API参数、敏感API类名。
5.根据权利要求4所述的Android平台恶意软件自动检测方法,其特征在于,步骤S2包括: S21.利用解压缩工具将待检测应用程序安装包进行解压缩,获得dex文件; S22.将S21步骤解压缩获得的dex文件转换为Java语言的字节码格式,并生成jar文件; S23.利用解压缩工具将S22步骤所获得的jar文件进行解压缩,然后将解压缩获得每个class文件反编译成java格式文件。
6.根据权利要求5所述的Android平台恶意软件自动检测方法,其特征在于,步骤S3包括: S31.根据步骤SI所设定的敏感API数据集,采用字符串匹配算法对在步骤S2中所获得的java格式文件进行逐行匹配,判断是否调用了敏感API函数,如果调用,则进一步记录调用的敏感API函数的所属自建函数名和所属文件名;匹配结束后,如果存在敏感API函数调用情况,则执行步骤S32,否则结束; S32.利用正则匹配算法,对在步骤S2中所获得的java格式文件进行逐行匹配,判断所述java格式文件中是否包含网络地址信息的字符串,如果包含,则进一步记录包含所述字符串的所属自建函数名和所属文件名;匹配结束后,如果存在内置网络地址信息情况,则执行步骤S4,否则结束。
7. 根据权利要求6所述的Android平台恶意软件自动检测方法,其特征在于,步骤S4包括: S41.分析S2步骤中所得到的java格式的逆向代码,并绘制函数调用关系有向图; S42.在所述函数调用关系有向图中标注步骤S3中记录的敏感API函数的所属自建函数以及包含所述字符串的所属自建函数; S43.在所述标注后的函数调用关系有向图中,以任意一个包含敏感API函数的所属自建函数为起点,以任意一个包含所述字符串的所属自建函数为终点,以函数调用关系有向图中的方向为路径,追踪并判断起点与终点之间是否存在调用关系,若是,则判断所述应用程序为恶意软件,否则,则.判定所述应用程序为正常软件。
【文档编号】G06F21/56GK103473509SQ201310462544
【公开日】2013年12月25日 申请日期:2013年9月30日 优先权日:2013年9月30日
【发明者】薛一波, 李城龙, 张洛什, 于贺威, 张慧, 王秀文, 李静, 曹首峰, 王大伟, 贺龙涛, 贺欣 申请人:清华大学, 国家计算机网络与信息安全管理中心
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1