CN103440459B - 一种基于函数调用的Android恶意代码检测方法 - Google Patents
一种基于函数调用的Android恶意代码检测方法 Download PDFInfo
- 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
Links
Landscapes
- Stored Programmes (AREA)
Abstract
本发明提出一种Android恶意软件检测方法,旨在解决现有Android恶意代码检测技术无法细粒度构建Android程序行为特征的问题。首先对现有Android恶意代码进行基于权限的统计分析,提取使用率较高的权限作为敏感权限,继而以使用这些权限的API作为入口点,构建调用这些API的函数链,进行基于函数调用的Android恶意代码检测。本发明可以细粒度的构建Android程序的行为特征,由此较好地检测Android恶意代码。
Description
技术领域
本发明涉及移动互联网技术领域,主要涉及一种检测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。
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)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106529274A (zh) * | 2016-10-26 | 2017-03-22 | 努比亚技术有限公司 | 终端及其信息安全保护方法 |
Families Citing this family (23)
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)
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恶意代码检测方法及系统 |
-
2013
- 2013-09-25 CN CN201310443172.1A patent/CN103440459B/zh active Active
Patent Citations (3)
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)
Title |
---|
一种针对Android平台恶意代码的检测方法及系统实现;胡文君,等;《西安交通大学学报》;20130703;第47卷(第10期);摘要,论文第39-42页 * |
基于反编译的Android平台恶意代码静态分析;李寅,等;《计算机系统应用》;20121231;第21卷(第11期);全文 * |
Cited By (1)
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 |