一种启发式静态识别Android系统恶意代码的方法

文档序号:6513161阅读:234来源:国知局
一种启发式静态识别Android系统恶意代码的方法
【专利摘要】本发明提出一种Android恶意软件检测方法。采用构建Andorid应用Apk软件的异构方法调用图,标定敏感函数,利用图的连通性对恶意代码进行定位。具体流程包括:对异构方法调用图进行图的连通性扫描,得到各个子图,对各个子图进行敏感函数打分,超过阈值的子图即为恶意代码模块。本发明可以启发式地发现未知恶意软件,为广大Android第三方市场和个人用户提供安全扫描和保护。
【专利说明】一种启发式静态识别Android系统恶意代码的方法
【技术领域】
[0001]本发明涉及移动互联网【技术领域】,主要涉及一种通过启发式静态分析来识别Android系统上的恶意代码的方法。
【背景技术】
[0002]随着智能手机的高速发展,Android平台逐渐成为了世界上第一大的移动终端平台,产品覆盖了机顶盒,手机,平板,以及各种智能终端,从各个角度影响着人们的生活。而且这些智能终端的功能越发的强大,包括了语音通话,数据业务,NFC近场通讯等。Android智能终端已经深入的进入到了我们每个人的生活中,支付类服务,生活类服务,地图类服务,娱乐类服务,个人信息类服务。在这样的情况下,Android平台上的安全问题逐渐成为了 一个不得不被关注的问题。
[0003]据安全公司TrustGo最新数据表明,Android上恶意应用数量自2011年9月到2012年9月增长了 580%。全球Android恶意软件数量已从2年前的百余款到了今天的过百方,从简单的窃取用户通信记录发展到了全面监控用户手机,窃取包括个人记录,银行记录,第三方软件保存信息,后台发送吸费短信,后台静默点击广告等多个方面。
[0004]现有Android平台恶意代码检测技术大多采用特征库方式,对新的未知恶意软件几乎没有查杀能力。

【发明内容】

[0005]针对现有技术的不足,本发明的目的在于提供一种Android恶意代码检测方法,通过启发式静态分析,提高对恶意代码的识别和查杀能力。
[0006]为实现以上发明目的,本发明的技术方案为:
[0007]一种Android恶意代码检测方法,包括以下步骤:
[0008]第一步,采集Android软件的恶意样本,进行手动分析,提取其中的敏感函数;
[0009]第二步,提取所述恶意样本中经常使用的敏感接收器;
[0010]第三步,对第一步和第二步提取的敏感函数和接收器进行打分,打分原则为高危操作或者敏感信息窃取方向的分值最高,危害程度越低,分值越低;
[0011]第四步,对待测的apk文件进行反编译,得到程序内部各个类的smali格式源码,搜索其中每一个类的每一个方法,将搜索到的方法入口作为起点,将其对内部函数、java系统函数和Android系统函数的调用抽取出来,形成一条完整方法调用序列;通过对所述smali文件的搜索,将所有继承并实现敏感接收器的子类标注出来,将敏感接收器与其子类进行关联;所述完整方法调用序列和所述敏感接收器与其子类之间的关联关系构成异构方法调用序列;
[0012]第五步,对所述异构方法调用序列根据方法所在的类进行聚合,形成全局方法调用图;
[0013]第六步,对第五步生成的图进行连通性扫描,利用图的深度遍历算法,划分出独立子图;
[0014]第七步,对第六步划分出来的子图进行降噪处理;
[0015]第八步,对经降噪处理的子图进行白名单处理,通过对子图的包名检测,凡是在广告白名单中的,均标定为广告模块,使其不参与后续处理;
[0016]第九步,对上一步处理过的子图,利用第三步中的分值结构进行敏感性打分,并计算每个独立子图的评分;
[0017]第十步,上一步中评分超过阈值0.8的即为恶意代码子图模块,进行标定与记录。
[0018]本发明的有益效果为:启发式地发现未知恶意软件,提高识别和查杀能力,为广大Android第三方市场和个人用户提供安全扫描和保护。
【专利附图】

【附图说明】
[0019]图1是本发明提出的Android恶意代码检测方法的流程示意图。
【具体实施方式】
[0020]以下结合附图对本发明的技术方案进行详细说明。
[0021]如图1所示,本发明采用构建Apk软件异构方法调用图,标定敏感函数,继而实现以图的相关性方式对Android恶意代码进行定位。在一个特定实施例中,检测方法具体包括以下步骤:
[0022]第一步,采集Android软件的恶意样本,进行手动分析,提取其中的敏感函数。
[0023]所述敏感函数包括网络类,短信类,电话类,文件操作类,设备操作类,代码执行类,地理位置类等七大类。在一个实施例中,敏感函数共计31个敏感api函数接口,如表I所示。
[0024]表I敏感函数和敏感接收器示例
[0025]
【权利要求】
1.一种Android恶意代码检测方法,包括以下步骤: 第一步,采集Android软件的恶意样本,进行手动分析,提取其中的敏感函数; 第二步,提取所述恶意样本中经常使用的敏感接收器; 第三步,对第一步和第二步提取的敏感函数和接收器进行打分,打分原则为高危操作或者敏感信息窃取方向的分值最高,危害程度越低,分值越低; 第四步,对待测的apk文件进行反编译,得到程序内部各个类的smali格式源码,搜索其中每一个类的每一个方法,将搜索到的方法入口作为起点,将其对内部函数、java系统函数和Android系统函数的调用抽取出来,形成一条完整方法调用序列;通过对所述smali文件的搜索,将所有继承并实现敏感接收器的子类标注出来,将敏感接收器与其子类进行关联;所述完整方法调用序列和所述敏感接收器与其子类之间的关联关系构成异构方法调用序列; 第五步,对所述异构方法调用序列根据方法所在的类进行聚合,形成全局方法调用图; 第六步,对第五步生成的图进行连通性扫描,利用图的深度遍历算法,划分出独立子图; 第七步,对第六步划分出来的子图进行降噪处理; 第八步,对经降噪处理的子图进行白名单处理,通过对子图的包名检测,凡是在广告白名单中的,均标定为广告模块,使其不参与后续处理; 第九步,对上一步处理过的子图,利用第三步中的分值结构进行敏感性打分,并计算每个独立子图的评分; 第十步,上一步中评分超过阈值0.8的即为恶意代码子图模块,进行标定与记录。
2.如权利要求1所述的Android恶意代码检测方法,其中,第一步中提取的敏感函数包括网络类、短信类、电话类、文件操作类、设备操作类、代码执行类和地理位置类七大类。
3.如权利要求1所述的Android恶意代码检测方法,其中,第二步中,所述经常使用的敏感接收器包括接受短信接收器、接通电话接收器、挂断电话接收器、接受来电接收器和开机启动接收器。
4.如权利要求1所述的Android恶意代码检测方法,其中,第三步中的打分采用以下分值结构:分值分为六档,以5分为最低档,30分为最高档,优选的,步长为5。
5.如权利要求1所述的Android恶意代码检测方法,其中,第七步的降噪处理中,将至少满足以下条件之一的对象标定为噪声部分: a.只有单个类,且无敏感函数调用; b.方法总数少于7个,且无敏感函数调用; c.只是单独的监听器或空方法体,而无实际意义的部分。
【文档编号】G06F21/56GK103440458SQ201310443094
【公开日】2013年12月11日 申请日期:2013年9月25日 优先权日:2013年9月25日
【发明者】陶敬, 周文瑜, 胡文君, 赵双, 马小博 申请人:西安交通大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1