CN103440459B - 一种基于函数调用的Android恶意代码检测方法 - Google Patents

一种基于函数调用的Android恶意代码检测方法 Download PDF

Info

Publication number
CN103440459B
CN103440459B CN201310443172.1A CN201310443172A CN103440459B CN 103440459 B CN103440459 B CN 103440459B CN 201310443172 A CN201310443172 A CN 201310443172A CN 103440459 B CN103440459 B CN 103440459B
Authority
CN
China
Prior art keywords
authority
android
malicious code
api
function call
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.)
Active
Application number
CN201310443172.1A
Other languages
English (en)
Other versions
CN103440459A (zh
Inventor
陶敬
胡文君
周文瑜
赵双
马小博
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Xian Jiaotong University
Original Assignee
Xian Jiaotong University
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Xian Jiaotong University filed Critical Xian Jiaotong University
Priority to CN201310443172.1A priority Critical patent/CN103440459B/zh
Publication of CN103440459A publication Critical patent/CN103440459A/zh
Application granted granted Critical
Publication of CN103440459B publication Critical patent/CN103440459B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Stored Programmes (AREA)

Abstract

本发明提出一种Android恶意软件检测方法,旨在解决现有Android恶意代码检测技术无法细粒度构建Android程序行为特征的问题。首先对现有Android恶意代码进行基于权限的统计分析,提取使用率较高的权限作为敏感权限,继而以使用这些权限的API作为入口点,构建调用这些API的函数链,进行基于函数调用的Android恶意代码检测。本发明可以细粒度的构建Android程序的行为特征,由此较好地检测Android恶意代码。

Description

一种基于函数调用的Android恶意代码检测方法
技术领域
本发明涉及移动互联网技术领域,主要涉及一种检测Android系统上的恶意代码的方法。
背景技术
近年来,基于Android系统的智能手机发展十分迅速,IDC的最新统计报告显示,2012年第4季度,Android系统的智能手机出货量达到了1.598亿部,市场占有率达到70.1%,截止2013年5月,全球Android设备激活量则已经突破9亿。基于Android系统的应用程序数量也在不断增加,这些应用程序涉及日常生活,办公娱乐,电子商务等众多领域,Google宣称,截止2013年5月,Android官方电子市场GooglePlay应用程序下载量达到480亿。同时,除了GooglePlay,还存在Amazon、AppBrain、安智等众多第三方电子市场。
Android系统的普及也伴随着其上恶意代码井喷式的发展速度。F-Secure移动威胁报告显示2013年第一季度发现新的恶意代码家族和变种数目为136个,比上一季度增加41.67%。Android恶意代码以恶意吸费、窃取用户隐私为主要目的,严重威胁了广大用户的切身利益。因此,Android程序的自动化分析无论是对恶意代码分析者,还是普通Android系统用户,都有重要意义
目前,现有Android恶意代码检测技术无法实现细粒度构建Android程序行为特征,因此,存在检测效果不佳的缺点。
发明内容
针对现有技术的不足,本发明提供了一种基于函数调用的Android恶意代码静态分析检测方法,旨在解决现有Android恶意代码检测技术无法细粒度构建Android程序行为特征的问题。
本发明的目的是通过以下技术方案来实现的:
一种基于函数调用的Android恶意代码检测方法,包括以下步骤:
第一步,采集Android恶意代码样本,进行手动分析,提取其中执行恶意行为的关键权限和API函数;
第二步,对采集的Android恶意代码的权限使用进行统计分析,提取使用率最高的前M个权限作为敏感高危权限;
第三步,Android系统中访问特定资源需要申请相应的权限,资源的访问体现在API中,根据AndroidPermissionMap,提取第二步得到的M个权限相对应的API函数;
第四步,对待测的Android程序,提取其中的classes.dex文件,使用baksmali进行反编译生成smali文件;提取AndroidManifest.xml文件,使用AXMLPrinter2进行解码;
第五步,根据第四步得到解码后的AndroidManifest.xml提取该Android程序申请的权限信息,并根据第二步得到的M个权限进行过滤;
第六步,根据第五步得到的权限信息,以及第三步得到的权限与API的对应关系,得到该Android程序使用的敏感API;
第七步,根据第四步得到的smali文件和第六步得到的敏感API,以敏感API为入口,遍历该smali文件,根据smali文件的结构特征建立调用此API的函数调用树;
第八步,对上一步生成的API函数调用树,采用树的遍历算法,构建API函数调用链;
第九步,根据该待测Android程序使用的权限,基于第一步得到的已知恶意代码样本权限信息进行初步过滤,优选为,若该待测Android程序使用的权限包含已知恶意代码样本使用的权限,则将该恶意代码样本加入待匹配队列;
第十步,根据第九步得到的待匹配队列,采用NCD算法(NormalizedCompressionDistance算法,基于压缩的相似度算法)将该待测Android程序与待匹配队列中的恶意代码样本进行逐一的相似性匹配,若二者相似度超过一定阈值,则将该待测Android程序判定为恶意代码,进行标定和记录。
本发明具有可以细粒度地构建Android程序的行为特征,并基于此较好地检测Android恶意代码的优点,能够为众多Android电子市场提供基本审核方法,同时也可以为普通用户提供基本的扫描和保护功能。
附图说明
图1是本发明提出的Android恶意代码检测方法的流程示意图。
具体实施方式
以下结合附图对本发明的技术方案进行详细说明。
本发明的整体思路是对现有Android恶意代码进行基于权限的统计分析,提取使用率较高的权限作为敏感权限,继而以使用这些权限的API作为入口点,构建调用这些API的函数链,进行基于函数调用的Android恶意代码检测。
参考图1,在一个具体实施例中,本发明包括下述步骤:
第一步,首先采集Android恶意代码样本,进行手动分析,提取其中执行恶意行为的关键权限和API函数。例如,具有发送短信功能的恶意代码会申请SEND_SMS权限并使用sendTextMessage的API。
第二步,对采集的Android恶意代码的权限使用进行统计分析,提取使用率最高的前M个权限作为敏感高危权限。在一个特定实施例中,经过对1,200个Android恶意代码样本进行权限分析,提取使用率最高的前20个权限作为敏感高危权限,这些权限如下:
1.INTERNET
2.READ_PHONE_STATE
3.SEND_SMS
4.WRITE_EXTERNAL_STORAGE
5.READ_SMS
6.ACCESS_NETWORK_STATE
7.READ_CONTACTS
8.CALL_PHONE
9.RECEIVE_SMS
10.WRITE_SMS
11.READ_HISTORY_BOOKMARKS
12.WRITE_HISTORY_BOOKMARKS
13.INSTALL_PACKAGES
14.ACCESS_FINE_LOCATION
15.ACCESS_COARSE_LOCATION
16.VIBRATE
17.MOUNT_UNMONT_FILESYSTEM
18.INSTALL_SHORTCUT
19.WRITE_CONTACTS
20.WRITE_APN_SETTINGS
第三步,Android系统中访问特定资源需要申请相应的权限,资源的访问体现在API中,根据AndroidPermissionMap,提取第二步得到的M个权限相对应的API函数。其中,AndroidPermissionMap总结了每一个API调用所需的权限,一种典型的PermissionMap如文献1所定义(文献1:FeltAP,ChinE,HannaS,etal.Androidpermissionsdemystified[C]//Proceedingsofthe18thACMconferenceonComputerandcommunicationssecurity.ACM,2011:627-638.);
第四步,对待测的Android程序,提取其中的classes.dex文件,使用baksmali0进行反编译生成smali文件;提取AndroidManifest.xml文件,使用AXMLPrinter2进行解码。其中,smali/baksmali是Android系统的Java虚拟机dalvik中用于汇编/反汇编dex格式文件的程序(参见https://code.google.com/p/small/.);AXMLPrinter2是用于反编译xml文件的工具(参见https://code.google.com/p/android4me/.)
第五步,根据第四步得到解码后的AndroidManifest.xml提取该Android程序申请的权限信息,并根据第二步得到的M个权限进行过滤;
第六步,根据第五步得到的权限信息,以及第三步得到的权限与API的对应关系,得到该Android程序使用的敏感API;
第七步,根据第四步得到的smali文件和第六步得到的敏感API,以敏感API为入口,遍历该smali文件,根据smali文件的结构特征建立调用此API的函数调用树;
第八步,对上一步生成的API函数调用树,采用树的遍历算法,构建API函数调用链;
第九步,根据该待测Android程序使用的权限,基于第一步得到的已知恶意代码样本权限信息进行初步过滤,具体方法为若该待测Android程序使用的权限包含已知恶意代码样本使用的权限,则该恶意代码样本加入待匹配队列,以此缩小相似性匹配范围;
第十步,根据第九步得到的待匹配队列,采用NCD算法(NormalizedCompressionDistance算法,基于压缩的相似度算法)进行逐一的相似性匹配,相似度超过一定阈值即将该待测Android程序判定为恶意代码,进行标定和记录。所述阈值可以根据试验确定,在一个特定实施例中,所述阈值为0.8。
由此,本发明可以判断待测Android程序是否存在恶意行为并进行标定,从而便于为Android第三方电子市场提供基本的自动审核功能,同时为个人用户提供基本的扫描和保护。
以上利用具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

Claims (1)

1.一种基于函数调用的Android恶意代码检测方法,包括以下步骤:
第一步,采集Android恶意代码样本,进行手动分析,提取其中执行恶意行为的关键权限和API函数;
第二步,对采集的Android恶意代码的权限使用进行统计分析,提取使用率最高的前M个权限作为敏感高危权限;
第三步,Android系统中访问特定资源需要申请相应的权限,资源的访问体现在API中,根据AndroidPermissionMap,提取第二步得到的M个权限相对应的API函数;
第四步,对待测的Android程序,提取其中的classes.dex文件,使用baksmali进行反编译生成smali文件;提取AndroidManifest.xml文件,使用AXMLPrinter2进行解码;
第五步,根据第四步得到解码后的AndroidManifest.xml提取该Android程序申请的权限信息,并根据第二步得到的M个权限进行过滤;
第六步,根据第五步得到的权限信息,以及第三步得到的权限与API的对应关系,得到该Android程序使用的敏感API;
第七步,根据第四步得到的smali文件和第六步得到的敏感API,以敏感API为入口,遍历该smali文件,根据smali文件的结构特征建立调用此API的函数调用树;
第八步,对上一步生成的API函数调用树,采用树的遍历算法,构建API函数调用链;
第九步,根据该待测Android程序使用的权限,基于第一步得到的已知恶意代码样本权限信息进行初步过滤,若该待测Android程序使用的权限包含已知恶意代码样本使用的权限,则将该恶意代码样本加入待匹配队列;
第十步,根据第九步得到的待匹配队列,采用NCD算法(NormalizedCompressionDistance算法,基于压缩的相似度算法)将该待测Android程序与待匹配队列中的恶意代码样本进行逐一的相似性匹配,若二者相似度超过一定阈值,则将该待测Android程序判定为恶意代码,进行标定和记录;
其中,第二步中,所述M取值为20,提取的敏感高危权限如下:
1.INTERNET
2.READ_PHONE_STATE
3.SEND_SMS
4.WRITE_EXTERNAL_STORAGE
5.READ_SMS
6.ACCESS_NETWORK_STATE
7.READ_CONTACTS
8.CALL_PHONE
9.RECEIVE_SMS
10.WRITE_SMS
11.READ_HISTORY_BOOKMARKS
12.WRITE_HISTORY_BOOKMARKS
13.INSTALL_PACKAGES
14.ACCESS_FINE_LOCATION
15.ACCESS_COARSE_LOCATION
16.VIBRATE
17.MOUNT_UNMONT_FILESYSTEM
18.INSTALL_SHORTCUT
19.WRITE_CONTACTS
20.WRITE_APN_SETTINGS
并且其中,第十步中,所述阈值为0.8。
CN201310443172.1A 2013-09-25 2013-09-25 一种基于函数调用的Android恶意代码检测方法 Active CN103440459B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201310443172.1A CN103440459B (zh) 2013-09-25 2013-09-25 一种基于函数调用的Android恶意代码检测方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201310443172.1A CN103440459B (zh) 2013-09-25 2013-09-25 一种基于函数调用的Android恶意代码检测方法

Publications (2)

Publication Number Publication Date
CN103440459A CN103440459A (zh) 2013-12-11
CN103440459B true CN103440459B (zh) 2016-04-06

Family

ID=49694152

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310443172.1A Active CN103440459B (zh) 2013-09-25 2013-09-25 一种基于函数调用的Android恶意代码检测方法

Country Status (1)

Country Link
CN (1) CN103440459B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106529274A (zh) * 2016-10-26 2017-03-22 努比亚技术有限公司 终端及其信息安全保护方法

Families Citing this family (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103902909B (zh) * 2013-12-25 2017-02-08 武汉安天信息技术有限责任公司 一种基于Opcode回溯的Android恶意代码检测系统及方法
CN103761476B (zh) * 2013-12-30 2016-11-09 北京奇虎科技有限公司 特征提取的方法及装置
CN103902910B (zh) * 2013-12-30 2016-07-13 北京奇虎科技有限公司 检测智能终端中恶意代码的方法及装置
WO2015101096A1 (zh) 2013-12-30 2015-07-09 北京奇虎科技有限公司 检测智能终端中恶意代码的方法及装置
CN103761475B (zh) * 2013-12-30 2017-04-26 北京奇虎科技有限公司 检测智能终端中恶意代码的方法及装置
CN104751054B (zh) * 2013-12-31 2018-09-14 北京猎豹移动科技有限公司 恶意程序的识别方法及装置、移动终端
CN103902911B (zh) * 2014-04-16 2016-09-14 南京大学 一种基于程序结构特征的恶意程序检测方法
CN104091121B (zh) * 2014-06-12 2017-07-18 上海交通大学 对Android重打包恶意软件的恶意代码的检测、切除和恢复的方法
CN104156660B (zh) * 2014-08-28 2016-10-26 东南大学 一种基于运行环境状态的Android权限细粒度访问控制方法
CN104391798B (zh) * 2014-12-09 2017-05-10 北京邮电大学 一种软件特征信息的提取方法
CN104636665B (zh) * 2015-02-03 2018-01-05 南京理工大学 一种Android应用程序的描述和匹配方法
CN104778409B (zh) * 2015-04-16 2018-01-12 电子科技大学 一种Android应用软件相似性的检测方法及装置
CN104933362B (zh) * 2015-06-15 2017-10-20 福州大学 Android应用软件API误用类漏洞自动化检测方法
CN104992081B (zh) * 2015-06-24 2018-02-27 华中科技大学 一种Android应用程序第三方代码的安全增强方法
CN106295336B (zh) * 2015-06-26 2020-05-22 阿里巴巴集团控股有限公司 恶意程序检测方法及装置
CN106897609B (zh) * 2015-12-17 2021-03-26 北京奇虎科技有限公司 一种对动态加载的应用程序进行监控的方法及装置
RU2634173C1 (ru) * 2016-06-24 2017-10-24 Акционерное общество "Лаборатория Касперского" Система и способ обнаружения приложения удалённого администрирования
CN108062472A (zh) * 2016-11-07 2018-05-22 武汉安天信息技术有限责任公司 一种安卓平台下勒索应用的检测方法及系统
CN108241802A (zh) * 2016-12-27 2018-07-03 卓望数码技术(深圳)有限公司 一种聚合多维的Android平台隐私窃取类应用自动识别方法
CN108073813B (zh) * 2017-12-06 2021-02-09 西安科技大学 一种Android应用程序溢权漏洞检测和恶意行为识别方法
CN108280350B (zh) * 2018-02-05 2021-09-28 南京航空航天大学 一种面向Android的移动网络终端恶意软件多特征检测方法
CN108681671A (zh) * 2018-05-21 2018-10-19 中国科学技术大学 一种Android移动攻击溯源方法
CN109933986B (zh) * 2019-03-08 2022-02-15 北京椒图科技有限公司 恶意代码检测方法及装置

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102938040A (zh) * 2012-09-29 2013-02-20 中兴通讯股份有限公司 Android恶意应用程序检测方法、系统及设备
CN103136471A (zh) * 2011-11-25 2013-06-05 中国科学院软件研究所 一种恶意Android应用程序检测方法和系统
CN103268445A (zh) * 2012-12-27 2013-08-28 武汉安天信息技术有限责任公司 一种基于OpCode的android恶意代码检测方法及系统

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103136471A (zh) * 2011-11-25 2013-06-05 中国科学院软件研究所 一种恶意Android应用程序检测方法和系统
CN102938040A (zh) * 2012-09-29 2013-02-20 中兴通讯股份有限公司 Android恶意应用程序检测方法、系统及设备
CN103268445A (zh) * 2012-12-27 2013-08-28 武汉安天信息技术有限责任公司 一种基于OpCode的android恶意代码检测方法及系统

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
一种针对Android平台恶意代码的检测方法及系统实现;胡文君,等;《西安交通大学学报》;20130703;第47卷(第10期);摘要,论文第39-42页 *
基于反编译的Android平台恶意代码静态分析;李寅,等;《计算机系统应用》;20121231;第21卷(第11期);全文 *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106529274A (zh) * 2016-10-26 2017-03-22 努比亚技术有限公司 终端及其信息安全保护方法

Also Published As

Publication number Publication date
CN103440459A (zh) 2013-12-11

Similar Documents

Publication Publication Date Title
CN103440459B (zh) 一种基于函数调用的Android恶意代码检测方法
US10083302B1 (en) System and method for detecting time-bomb malware
Canfora et al. Acquiring and analyzing app metrics for effective mobile malware detection
Li et al. An Android malware detection method based on AndroidManifest file
Jin et al. Code injection attacks on html5-based mobile apps: Characterization, detection and mitigation
KR102057565B1 (ko) 멀웨어를 검출하기 위한 컴퓨팅 디바이스
Weichselbaum et al. Andrubis: Android malware under the magnifying glass
KR101677217B1 (ko) 유저 행위 식별 방법 및 유저 행위 식별 장치, 프로그램 및 저장매체
CN103473346B (zh) 一种基于应用程序编程接口的安卓重打包应用检测方法
CN103327492B (zh) 一种安卓手机入侵检测方法及其检测系统
CN103473504B (zh) 一种基于类别分析的Android恶意代码检测方法
CN103746992B (zh) 基于逆向的入侵检测系统及其方法
US8726386B1 (en) Systems and methods for detecting malware
CN104834859A (zh) 一种Android应用中恶意行为的动态检测方法
CN102955913A (zh) 一种网页挂马检测方法及系统
CN103309808A (zh) 基于标签的安卓用户隐私泄露黑盒检测方法及系统
CN108073813B (zh) 一种Android应用程序溢权漏洞检测和恶意行为识别方法
CN103839005A (zh) 移动操作系统的恶意软件检测方法和恶意软件检测系统
Li et al. Android malware detection based on static analysis of characteristic tree
CN103401845B (zh) 一种网址安全性的检测方法、装置
CN105160251A (zh) 一种apk应用软件行为的分析方法及装置
CN105447388A (zh) 一种基于权重的安卓恶意代码检测系统及方法
WO2014117652A1 (en) Method and device for preventing application in an operating system from being uninstalled
KR101256468B1 (ko) 악성 파일 진단 장치 및 방법
CN105488409A (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