CN103440458A - 一种启发式静态识别Android系统恶意代码的方法 - Google Patents
一种启发式静态识别Android系统恶意代码的方法 Download PDFInfo
- Publication number
- CN103440458A CN103440458A CN2013104430945A CN201310443094A CN103440458A CN 103440458 A CN103440458 A CN 103440458A CN 2013104430945 A CN2013104430945 A CN 2013104430945A CN 201310443094 A CN201310443094 A CN 201310443094A CN 103440458 A CN103440458 A CN 103440458A
- Authority
- CN
- China
- Prior art keywords
- class
- receiver
- android
- subgraph
- malicious code
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Landscapes
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明提出一种Android恶意软件检测方法。采用构建Andorid应用Apk软件的异构方法调用图,标定敏感函数,利用图的连通性对恶意代码进行定位。具体流程包括:对异构方法调用图进行图的连通性扫描,得到各个子图,对各个子图进行敏感函数打分,超过阈值的子图即为恶意代码模块。本发明可以启发式地发现未知恶意软件,为广大Android第三方市场和个人用户提供安全扫描和保护。
Description
技术领域
本发明涉及移动互联网技术领域,主要涉及一种通过启发式静态分析来识别Android系统上的恶意代码的方法。
背景技术
随着智能手机的高速发展,Android平台逐渐成为了世界上第一大的移动终端平台,产品覆盖了机顶盒,手机,平板,以及各种智能终端,从各个角度影响着人们的生活。而且这些智能终端的功能越发的强大,包括了语音通话,数据业务,NFC近场通讯等。Android智能终端已经深入的进入到了我们每个人的生活中,支付类服务,生活类服务,地图类服务,娱乐类服务,个人信息类服务。在这样的情况下,Android平台上的安全问题逐渐成为了一个不得不被关注的问题。
据安全公司TrustGo最新数据表明,Android上恶意应用数量自2011年9月到2012年9月增长了580%。全球Android恶意软件数量已从2年前的百余款到了今天的过百方,从简单的窃取用户通信记录发展到了全面监控用户手机,窃取包括个人记录,银行记录,第三方软件保存信息,后台发送吸费短信,后台静默点击广告等多个方面。
现有Android平台恶意代码检测技术大多采用特征库方式,对新的未知恶意软件几乎没有查杀能力。
发明内容
针对现有技术的不足,本发明的目的在于提供一种Android恶意代码检测方法,通过启发式静态分析,提高对恶意代码的识别和查杀能力。
为实现以上发明目的,本发明的技术方案为:
一种Android恶意代码检测方法,包括以下步骤:
第一步,采集Android软件的恶意样本,进行手动分析,提取其中的敏感函数;
第二步,提取所述恶意样本中经常使用的敏感接收器;
第三步,对第一步和第二步提取的敏感函数和接收器进行打分,打分原则为高危操作或者敏感信息窃取方向的分值最高,危害程度越低,分值越低;
第四步,对待测的apk文件进行反编译,得到程序内部各个类的smali格式源码,搜索其中每一个类的每一个方法,将搜索到的方法入口作为起点,将其对内部函数、java系统函数和Android系统函数的调用抽取出来,形成一条完整方法调用序列;通过对所述smali文件的搜索,将所有继承并实现敏感接收器的子类标注出来,将敏感接收器与其子类进行关联;所述完整方法调用序列和所述敏感接收器与其子类之间的关联关系构成异构方法调用序列;
第五步,对所述异构方法调用序列根据方法所在的类进行聚合,形成全局方法调用图;
第六步,对第五步生成的图进行连通性扫描,利用图的深度遍历算法,划分出独立子图;
第七步,对第六步划分出来的子图进行降噪处理;
第八步,对经降噪处理的子图进行白名单处理,通过对子图的包名检测,凡是在广告白名单中的,均标定为广告模块,使其不参与后续处理;
第九步,对上一步处理过的子图,利用第三步中的分值结构进行敏感性打分,并计算每个独立子图的评分;
第十步,上一步中评分超过阈值0.8的即为恶意代码子图模块,进行标定与记录。
本发明的有益效果为:启发式地发现未知恶意软件,提高识别和查杀能力,为广大Android第三方市场和个人用户提供安全扫描和保护。
附图说明
图1是本发明提出的Android恶意代码检测方法的流程示意图。
具体实施方式
以下结合附图对本发明的技术方案进行详细说明。
如图1所示,本发明采用构建Apk软件异构方法调用图,标定敏感函数,继而实现以图的相关性方式对Android恶意代码进行定位。在一个特定实施例中,检测方法具体包括以下步骤:
第一步,采集Android软件的恶意样本,进行手动分析,提取其中的敏感函数。
所述敏感函数包括网络类,短信类,电话类,文件操作类,设备操作类,代码执行类,地理位置类等七大类。在一个实施例中,敏感函数共计31个敏感api函数接口,如表1所示。
表1敏感函数和敏感接收器示例
第二步,提取恶意样本中经常使用的敏感接收器。本领域技术人员应当明了,所谓“经常使用”是指在预定时间内使用次数达到或超过预定阈值。在一个实施例中,经常使用的敏感接收器包括接受短信接收器,接通电话接收器,挂断电话接收器,接受来电接收器,开机启动接收器共计五个,见表1。
第三步,对第一步和第二步采集的敏感函数和接收器进行打分。分值可以采用连续的数值,也可以采用分段档位。在一个实施例中,分值分为六档,如表1所示,以5分为最低档,30分为最高档,步长为5。打分原则为高危操作或者敏感信息窃取方向的分值最高,随着危害程度不同,危害越低,分值越低。
第四步,对待测的apk文件,通过反编译APK源文件,得到程序内部各个类的smali格式源码,smali格式是一种文本形式的java反汇编码,具有很好的可读性。因此可以通过文本搜索和匹配的方式来查找待测程序所使用的类和函数信息。通过搜索每一个类的每一个方法,并将搜索到的方法入口作为起点,将其对别的函数的调用(包括了内部函数,java系统函数和Android系统函数)抽取出来,形成了一条完整方法调用序列。此外通过对smali文件的搜索,可以将所有继承并实现敏感接收器的子类标注出来,并将敏感接收器与其子类进行关联。这两部分一起构成了异构方法调用序列;
第五步,在异构方法调用序列的基础上,对序列进行聚合。聚合的方法:Android开发代码中所有的Java方法必须存在于类中,所以可以将方法调用序列根据方法所在类进行聚合,从而形成全局方法调用图;
第六步,对第五步生成的图进行连通性扫描,利用图的深度遍历算法,划分出独立子图。
第七步,对第六步划分出来的子图进行降噪处理。由于Android代码开发的特性,会存在大量没有实际意义的空方法体和代码碎片,针对这种情况,需要进行降噪处理,其中,需要为判定噪声确立一定的标准。在一个实施例中,将满足以下任意条件之一的对象标定为噪声部分:a.只有单个类,且无敏感函数调用;b.方法总数少于7个,且无敏感函数调用;c.只是单独的监听器或空方法体,而无实际意义的部分。这些为噪声部分,在第七步中进行标定为噪声处理,使其不参与后续的处理。
第八步,对上一步处理过的子图进行白名单处理。处理完的独立子图中包含广告模块,需要进行标定处理。针对这种情况设定了广告白名单,通过对子图进行包名检测,只要是子图的包名包含在广告白名单中的,均标定为广告模块子图,使其不参与后续处理。广告白名单如表2所示。
表2广告白名单示例
广告厂商 | 广告白名单包名特征 |
The AdMob Marketplace | com/admob/android |
The Google AD | com/google/ads |
The QQ AD | com/tencent/mobwin |
The Wooboo AD | com/wooboo/adlib_android |
The Umeng Analyse | com/mobclick/android |
第九步,对上一步处理过的子图,利用第三步中的分值结构进行敏感性打分,并计算每个独立子图的评分,(评分=敏感分数/方法总数)。
第十步,上一步中评分超过一阈值的即为恶意代码子图模块,进行标定与记录。所述阈值可以通过试验确定。在一个实施例中,阈值为0.8。
由此,本发明利用图的连通性对恶意代码进行定位,启发式地发现未知恶意软件,提高识别和查杀能力。
以上利用具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (5)
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.只是单独的监听器或空方法体,而无实际意义的部分。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310443094.5A CN103440458B (zh) | 2013-09-25 | 2013-09-25 | 一种启发式静态识别Android系统恶意代码的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310443094.5A CN103440458B (zh) | 2013-09-25 | 2013-09-25 | 一种启发式静态识别Android系统恶意代码的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103440458A true CN103440458A (zh) | 2013-12-11 |
CN103440458B CN103440458B (zh) | 2016-05-11 |
Family
ID=49694151
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310443094.5A Active CN103440458B (zh) | 2013-09-25 | 2013-09-25 | 一种启发式静态识别Android系统恶意代码的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103440458B (zh) |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104504337A (zh) * | 2014-12-31 | 2015-04-08 | 中国人民解放军理工大学 | 一种安卓数据泄露的恶意应用检测方法 |
CN104714884A (zh) * | 2015-01-05 | 2015-06-17 | 中山大学 | 一种检查web应用和Android应用一致性的方法 |
WO2015101096A1 (zh) * | 2013-12-30 | 2015-07-09 | 北京奇虎科技有限公司 | 检测智能终端中恶意代码的方法及装置 |
CN106227509A (zh) * | 2016-06-30 | 2016-12-14 | 扬州大学 | 一种面向Java代码的类使用示例生成方法 |
CN107463843A (zh) * | 2016-06-02 | 2017-12-12 | 重庆达特科技有限公司 | 恶意代码降噪大数据检测系统 |
CN108470002A (zh) * | 2018-03-19 | 2018-08-31 | 南京邮电大学 | 一种面向Selenium IDE的XML测试脚本质量评判方法 |
CN109492398A (zh) * | 2018-11-23 | 2019-03-19 | 北京梆梆安全科技有限公司 | 一种Android应用程序敏感行为的风险检测方法及装置 |
CN109635565A (zh) * | 2018-11-28 | 2019-04-16 | 江苏通付盾信息安全技术有限公司 | 恶意程序的检测方法、装置、计算设备及计算机存储介质 |
TWI668592B (zh) * | 2017-07-28 | 2019-08-11 | 中華電信股份有限公司 | Method for automatically determining the malicious degree of Android App by using multiple dimensions |
CN110460601A (zh) * | 2019-08-14 | 2019-11-15 | 北京三快在线科技有限公司 | 依赖包安全性检测方法、装置及存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040264367A1 (en) * | 2003-06-26 | 2004-12-30 | Microsoft Corporation | Data flow chasing |
US7437718B2 (en) * | 2003-09-05 | 2008-10-14 | Microsoft Corporation | Reviewing the security of trusted software components |
CN102034042A (zh) * | 2010-12-13 | 2011-04-27 | 四川大学 | 基于函数调用关系图特征的恶意代码检测新方法 |
CN102663281A (zh) * | 2012-03-16 | 2012-09-12 | 成都市华为赛门铁克科技有限公司 | 检测恶意软件的方法和装置 |
CN102938040A (zh) * | 2012-09-29 | 2013-02-20 | 中兴通讯股份有限公司 | Android恶意应用程序检测方法、系统及设备 |
-
2013
- 2013-09-25 CN CN201310443094.5A patent/CN103440458B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040264367A1 (en) * | 2003-06-26 | 2004-12-30 | Microsoft Corporation | Data flow chasing |
US7437718B2 (en) * | 2003-09-05 | 2008-10-14 | Microsoft Corporation | Reviewing the security of trusted software components |
CN102034042A (zh) * | 2010-12-13 | 2011-04-27 | 四川大学 | 基于函数调用关系图特征的恶意代码检测新方法 |
CN102663281A (zh) * | 2012-03-16 | 2012-09-12 | 成都市华为赛门铁克科技有限公司 | 检测恶意软件的方法和装置 |
CN102938040A (zh) * | 2012-09-29 | 2013-02-20 | 中兴通讯股份有限公司 | Android恶意应用程序检测方法、系统及设备 |
Non-Patent Citations (1)
Title |
---|
于鹏洋 等: "Android 应用隐私泄露静态代码分析", 《软件》 * |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2015101096A1 (zh) * | 2013-12-30 | 2015-07-09 | 北京奇虎科技有限公司 | 检测智能终端中恶意代码的方法及装置 |
CN104504337A (zh) * | 2014-12-31 | 2015-04-08 | 中国人民解放军理工大学 | 一种安卓数据泄露的恶意应用检测方法 |
CN104714884A (zh) * | 2015-01-05 | 2015-06-17 | 中山大学 | 一种检查web应用和Android应用一致性的方法 |
CN107463843A (zh) * | 2016-06-02 | 2017-12-12 | 重庆达特科技有限公司 | 恶意代码降噪大数据检测系统 |
CN106227509A (zh) * | 2016-06-30 | 2016-12-14 | 扬州大学 | 一种面向Java代码的类使用示例生成方法 |
CN106227509B (zh) * | 2016-06-30 | 2019-03-19 | 扬州大学 | 一种面向Java代码的类使用示例生成方法 |
TWI668592B (zh) * | 2017-07-28 | 2019-08-11 | 中華電信股份有限公司 | Method for automatically determining the malicious degree of Android App by using multiple dimensions |
CN108470002A (zh) * | 2018-03-19 | 2018-08-31 | 南京邮电大学 | 一种面向Selenium IDE的XML测试脚本质量评判方法 |
CN109492398A (zh) * | 2018-11-23 | 2019-03-19 | 北京梆梆安全科技有限公司 | 一种Android应用程序敏感行为的风险检测方法及装置 |
CN109635565A (zh) * | 2018-11-28 | 2019-04-16 | 江苏通付盾信息安全技术有限公司 | 恶意程序的检测方法、装置、计算设备及计算机存储介质 |
CN110460601A (zh) * | 2019-08-14 | 2019-11-15 | 北京三快在线科技有限公司 | 依赖包安全性检测方法、装置及存储介质 |
CN110460601B (zh) * | 2019-08-14 | 2020-12-22 | 北京三快在线科技有限公司 | 依赖包安全性检测方法、装置及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN103440458B (zh) | 2016-05-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103440458B (zh) | 一种启发式静态识别Android系统恶意代码的方法 | |
CN103473507B (zh) | 一种Android恶意代码检测方法 | |
KR101767454B1 (ko) | 다양한 웹 서비스 환경에서 사용자의 행위 패턴 분석을 통한 이상행위 탐지 방법과 그를 위한 장치 | |
CN110334241A (zh) | 客服录音的质检方法、装置、设备及计算机可读存储介质 | |
CN103415004B (zh) | 一种检测垃圾短消息的方法及装置 | |
CN105447388B (zh) | 一种基于权重的安卓恶意代码检测系统及方法 | |
CN103440459A (zh) | 一种基于函数调用的Android恶意代码检测方法 | |
CN102368853B (zh) | 通信事件处理方法及系统 | |
CN110839216B (zh) | 识别通讯信息诈骗的方法和装置 | |
CN109922065B (zh) | 恶意网站快速识别方法 | |
CN111131593B (zh) | 骚扰电话识别方法及其装置 | |
CN103268449B (zh) | 一种手机恶意代码的高速检测方法和系统 | |
CN105488031A (zh) | 一种检测相似短信的方法及装置 | |
CN106599688A (zh) | 一种基于应用类别的安卓恶意软件检测方法 | |
CN105825129A (zh) | 一种融合通信中恶意软件鉴别方法和系统 | |
CN106713579A (zh) | 一种电话号码识别方法及装置 | |
CN105718795A (zh) | Linux下基于特征码的恶意代码取证方法及系统 | |
CN103297267A (zh) | 一种网络行为的风险评估方法和系统 | |
CN107958154A (zh) | 一种恶意软件检测装置及方法 | |
CN107330345A (zh) | 一种检测隐私数据泄露的方法和装置 | |
CN109905524B (zh) | 电话号码识别方法、装置、计算机设备及计算机存储介质 | |
CN103902906A (zh) | 基于应用图标的移动终端恶意代码检测方法及系统 | |
CN108171057B (zh) | 基于特征匹配的Android平台恶意软件检测方法 | |
KR101657667B1 (ko) | 악성 앱 분류 장치 및 악성 앱 분류 방법 | |
CN105653941A (zh) | 一种启发式检测钓鱼网站的方法及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |