CN108073813A - 一种Android应用程序溢权漏洞检测和恶意行为识别方法 - Google Patents
一种Android应用程序溢权漏洞检测和恶意行为识别方法 Download PDFInfo
- Publication number
- CN108073813A CN108073813A CN201711275363.6A CN201711275363A CN108073813A CN 108073813 A CN108073813 A CN 108073813A CN 201711275363 A CN201711275363 A CN 201711275363A CN 108073813 A CN108073813 A CN 108073813A
- Authority
- CN
- China
- Prior art keywords
- permission
- app
- uri
- android
- application
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/56—Computer malware detection or handling, e.g. anti-virus arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/24—Classification techniques
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
- G06F21/577—Assessing vulnerabilities and evaluating computer system security
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/53—Decompilation; Disassembly
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Bioinformatics & Computational Biology (AREA)
- Evolutionary Computation (AREA)
- Evolutionary Biology (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Artificial Intelligence (AREA)
- Computing Systems (AREA)
- Life Sciences & Earth Sciences (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Virology (AREA)
- Stored Programmes (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明公开了一种Android应用程序溢权漏洞检测和恶意行为识别方法。采用静态分析方法以及字符串分析方法,并全面考虑APP中使用权限的程序点,准确、有效提取出了Android APP的实际使用权限集合的上界,减少了溢权漏洞的误报率;以实际使用权限为特征,更准确的描述了APP的行为特征,在此基础上构造了准确率高、误报率低的APP恶意行为分类器。
Description
技术领域
本发明涉及软件安全领域,主要涉及一种通过静态分析方法来检测Android移动应用程序的溢权漏洞,并通过应用程序的权限特征来识别其恶意行为的方法。
背景技术
由于Android自身安全机制存在缺陷,使得具有安全漏洞甚至恶意行为的Android应用程序被大量制作,并通过国内大量参差不齐的第三方应用市场得到广泛传播,个人和公众隐私数据频繁遭到窃取和滥用,严重威胁个人隐私,甚至国家经济政治安全。因此研究Android应用程序(以下简称APP)恶意行为检测方法,开发检测系统,对于保护个人隐私信息、维护国家网络空间安全具有重要意义。
常用的恶意程序检测技术大多采用基于特征(signature-based)的方法,把APP的Hash值、代码片段或出现的字符串等与恶意软件库进行比对。该方法依赖历史恶意程序的分析和提取,对新型未知恶意软件几乎没有查杀能力。另外,很多恶意程序为了逃避检测,采用了代码混淆和加密,使得这类方法难以有效抽取出典型特征。
发明内容
本发明的目的是提供一种Android APP溢权漏洞检测和恶意行为识别方法,能够有效提取出APP的实际使用权限,构造准确率高、误报率低的APP恶意行为分类器。
本发明主要解决两个问题:
1、Android APP实际使用权限集合的提取以及溢权漏洞的检测方法;
2、基于权限特征的APP恶意行为识别方法。
解决第一个问题的关键是,有效提取出APP的实际使用权限。通常,APP所申请的权限并不等于实际使用的权限,当申请的权限多于实际使用的权限时,就会出现溢权漏洞。恶意APP经常使用溢权漏洞,获取敏感资源的操作权限,实施恶意攻击。
解决第二个问题的关键是构造准确率高、误报率低的APP恶意行为分类器,这依赖于样本数量、样本的选择以及分类算法的设计。
本发明提出一种对APP的实际使用权限进行提取和分析,并通过这些权限特征对APP的恶意行为进行识别的方法。
该方法具有以下优点:
第一,由于APP的权限集合反映了该APP能够访问的敏感资源(如网络接口、位置信息、联系人信息等)的集合,因此以权限作为APP的特征能够在很大程度上描述APP使用敏感资源的行为,进而为判断和识别APP的恶意性提供依据。
第二,APP请求的权限通常在应用程序的说明文件中以明文形式给予了明确说明,因此便于提取和分析;
第三,权限特征的分析依赖于大量恶性和良性样本,但是从样本中构造出分类模型之后,可以用于识别其它未知或新出现的恶意APP,因此克服了基于特征的识别方法的不足。
本发明的技术方案是:一种Android应用程序溢权漏洞检测和恶意行为识别方法,包括以下步骤:
第一步:使用反编译工具链对Android APP安装包进行处理,得到反编译的Java字节码程序(以下简称“程序”),对程序进行扫描提取与权限有关的API调用,即敏感API;
第二步:扫描有关Java反射的系统调用,采用字符串分析方法得到通过反射接口调用的敏感API;
第三步:扫描Intent对象的所有发送点,采用字符串常量传播分析方法得到Intent对象发送时的action属性值;扫描Intent对象的所有接收点(即Intent Filter),得到IntentFilter对象的action属性值;
第四步:扫描所有URI数据源的构造点,以及对URI数据的操作点,得到数据源的URI和对URI的读写操作;
第五步:根据第二步、第三步和第四步得到的敏感API、Intent和IntentFilter对象的action属性值、以及URI对象值以及读写操作,将其映射为相应的权限集合,该集合就是APP在程序中实际使用的权限集合,记为PermUsed;
第六步:从AndroidManifest.xml文件中提取出应用申请的权限集合,记为PermReq;将PermUsed和PermReq进行比对,检测APP中是否存在溢权漏洞和权限申请不足的漏洞。
下面的第七步~第九步,是根据大量恶意和良性APP样本的实际使用权限集合,得到一个识别APP恶意性的分类器。
第七步:根据提取出的PermUsed权限集,从中选择一定数目的典型权限作为描述APP恶意行为的特征,并为每个权限确定恶意程度值;
第八步:将每个APP的实际使用权限映射成一个权限特征向量,将权限特征向量与权限恶意度列向量相乘便得到一个应用的恶意程度值;
第九步:在大量恶意和良性样本恶意程度值平均值的基础上,确定合适的权重阈值,形成一个线性分类器用于判断一个未知APP的恶意性。
本发明具有如下有益效果:
1、现有方法大多仅考虑了AndroidManifest.xml中声明的权限和API调用的权限,得到的实际使用权限集较小,导致误报率较高;而本发明由于采用了静态分析方法以及字符串分析方法,并全面考虑了APP中使用权限的程序点,因此能够准确的提取出实际使用权限集合的上界,减少了溢权漏洞的误报率(false positive)。
2、现有方法大多以申请的权限作为特征,而本发明以实际使用权限作为权限特征,更准确的描述了APP的权限特征。
附图说明
图1是Android APP溢权漏洞检测流程图。
图2是分类器流程图。
图3特征权限在恶意应用中的分布图。
图4特征权限在正常应用中的分布图。
具体实施方式
以下结合附图对本发明的技术方案进行详细说明。
在一个特定实施例中,检测方法具体包括以下步骤:
第一步:使用APKTool和Dare对待测APK文件进行反编译得到Java字节码程序,该程序是后面所有分析的基础。其中,APKTool把Android dex文件翻译为smali文件,Dare把smali文件格式转换为Java字节码格式,便于后续分析。
第二步:采用字符串搜索,在程序中找到所有敏感API调用。“敏感API”是指Android框架中,对权限有要求的类方法。敏感API的例子如表1所示。
表1敏感API以及依赖的权限
第三步:Intent对象的发送点是指程序中发送Intent对象的代码片段。Intent对象的接收点是指程序中注册IntentFilter对象的代码片段,如表2所示。采用字符串常量传播分析工具(如IC3),得到发送点上Intent对象的action属性值,以及接收点上IntentFilter对象的action属性值。
第四步:URI数据源的构造点是指程序中构造Uri的代码片段;URI数据的操作点是指对URI进行读、写的代码片段,如表2所示。同样采用字符串常量传播分析工具得到URI对象的属性值。
表2程序点
第五步:把第二步、第三步和第四步提取出的所有值,通过PScout权限库,映射到Android权限集合,从而得到APP实际使用的权限集PermUsed。Pscout是由加拿大多伦多大学电子与计算机工程系开发的一个开源的Android权限映射库,是目前为止最全的一个权限映射库,而且PScout遵守国际开源代码协定,因此在本发明中使用该库不违反版权。具体映射过程就是根据敏感API、Intent和IntentFilter对象的action属性值、URI的值以及读写操作等,找到Pscout库中的对应条目,然后得到对应权限。为了加快映射过程,用MySQL数据库实现了PScout中的数据组织。下面以API权限映射为例例示实现,表结构如表3、表4和表5所示。
表3Name表
表4Permission表
PID | Permission |
1 | android.permission.SEND_SMS |
2 | android.permission.READ_CONTACTS |
3 | android.permission.WRITE_CONTACTS |
4 | android.permission.CALL_PRIVILEGED |
5 | android.permission.BROADCAST_SMS |
6 | android.permission.RECEIVE_SMS |
7 | android.permission.READ_SMS |
8 | android.permission.WRITE_SMS |
表5Name-Permission映射表
Type | NID | PID |
null | 1 | 1 |
null | 2 | 1 |
null | 2 | 2 |
null | 2 | 3 |
send | 3 | 4 |
send | 4 | 5 |
receive | 4 | 6 |
com.android.providers.telephony.SmsProvider | 5 | 1 |
com.android.providers.telephony.SmsProvider | 5 | 8 |
com.android.mms.data.RecipientIdCache | 6 | 7 |
第六步:从AndroidManifest.xml文件中提取出APP申请的权限集合,即扫描文件中<uses-permission>标签,从中提取出申请的权限集PermReq。然后把PermReq与PermUsed进行比对,判断是否存在溢权漏洞。
判断方法是:如果说明有溢权漏洞,差集PermReq-PermUsed是申请了但是没有用到的权限集;如果 那么说明存在权限申请不足的设计漏洞。
第七步:从VirusShare下载1000个恶意样本,再从Google Play上下载780个良性样本。对其中一部分样本,采用第一步~第五步的方法,提取出它的实际使用权限集合,然后统计在恶意应用中出现次数最多的前20个权限作为判断应用恶意性的特征权限,并统计这20个权限在正常应用中的出现频率,如图3和图4所示。根据特征权限在恶意应用和正常应用中出现频率的差异性,为每个特征权限计算一个权限恶意程度值,由权限恶意程度值构成一个权限恶意度列向量;
第八步:将每个APP的实际使用权限映射成一个权限特征向量,将权限特征向量与权限恶意度列向量相乘便得到一个应用的恶意程度值。比如,应用A的权限特征向量为:
QA=(0,1,0,0,0,1,1,0,0,0,1,0,0,0,1,0,0,0,1,0)
权限恶意度列向量F为:
F=(0.8080,2.1316,0.5487,0.3253,7.3633,0.5568,
1.96,0.1352,0.9113,0.1477,0.23,2.645,5.29,0.2017,
1.2033,0.32,0.0804,0.0623,0.0613,0.0377)T
则应用A的恶意程度值为:
VA=QAF=6.143
第九步:分别对500个典型恶意应用和500个正常应用计算其恶意程度值,进而计算恶意应用的平均恶意程度值和正常应用的平均恶意程度值,然后通过对这两个平均值加不同的权重作为候选阈值,观察其判断结果的准确性,最终选择判断结果最佳的候选阈值为最终的阈值;在判断应用恶意性的过程中,如果应用的恶意程度值大于阈值,则为恶意应用,否则,为良性应用。
Claims (2)
1.一种Android应用程序溢权漏洞检测和恶意行为识别方法,其特征是,包括以下步骤:
第一步:使用反编译工具链对Android APP安装包进行处理,得到反编译的Java字节码程序,对程序进行扫描,提取与权限有关的API调用,即敏感API;
第二步:扫描有关Java反射的系统调用,采用字符串分析方法得到通过反射接口调用的敏感API;
第三步:扫描Intent对象的所有发送点,采用字符串常量传播分析方法得到发送点上Intent对象的action属性值;扫描Intent对象的所有接收点上Intent Filter,得到接收点上IntentFilter对象的action属性值;
第四步:扫描所有URI数据源的构造点,以及对URI数据的操作点,得到数据源的URI和对URI的读写操作;URI数据源的构造点是指程序中构造URI的代码片段;URI数据的操作点是指对URI进行读、写的代码片段;采用字符串常量传播分析工具得到URI对象的属性值。
第五步:根据第二步、第三步和第四步得到的敏感API、Intent和IntentFilter对象的action属性值、以及URI对象的属性值以及读写操作,将其映射为相应的权限集合,该集合就是APP在程序中实际使用的权限集合,记为PermUsed;
第六步:从AndroidManifest.xml文件中提取出APP申请的权限集合,记为PermReq;将PermUsed和PermReq进行比对,判断APP中是否存在溢权漏洞和权限申请不足的漏洞;
第七步:根据提取出的PermUsed权限集,从中选择一定数目的典型权限作为描述APP恶意行为的特征权限,根据特征权限在恶意应用和正常应用中出现频率的差异性,为每个特征权限计算一个权限恶意程度值,由权限恶意程度值构成一个权限恶意度列向量;
第八步:将每个APP的实际使用权限映射成一个权限特征向量,将权限特征向量与权限恶意度列向量相乘便得到一个应用的恶意程度值;
第九步:计算大量恶意和良性样本恶意程度值平均值,确定合适的权重阈值,形成一个线性分类器用于判断一个未知APP的恶意性;如果应用的恶意程度值大于阈值,则为恶意应用,否则,为良性应用。
2.如权利要求1所述的Android应用程序溢权漏洞检测和恶意行为识别方法,其特征是,第六步判断方法是:如果 说明有溢权漏洞,差集PermReq-PermUsed是申请了但是没有用到的权限集;如果那么说明存在权限申请不足的设计漏洞。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711275363.6A CN108073813B (zh) | 2017-12-06 | 2017-12-06 | 一种Android应用程序溢权漏洞检测和恶意行为识别方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711275363.6A CN108073813B (zh) | 2017-12-06 | 2017-12-06 | 一种Android应用程序溢权漏洞检测和恶意行为识别方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108073813A true CN108073813A (zh) | 2018-05-25 |
CN108073813B CN108073813B (zh) | 2021-02-09 |
Family
ID=62157966
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711275363.6A Expired - Fee Related CN108073813B (zh) | 2017-12-06 | 2017-12-06 | 一种Android应用程序溢权漏洞检测和恶意行为识别方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108073813B (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109189369A (zh) * | 2018-07-25 | 2019-01-11 | 北京奇艺世纪科技有限公司 | 一种压缩代码的方法及装置 |
CN109818945A (zh) * | 2019-01-11 | 2019-05-28 | 中国科学院信息工程研究所 | 应用程序行为特征选择方法及装置 |
CN109977644A (zh) * | 2019-04-03 | 2019-07-05 | 山东超越数控电子股份有限公司 | 一种Android平台下分级权限管理方法 |
CN111143831A (zh) * | 2019-12-24 | 2020-05-12 | 平安普惠企业管理有限公司 | 安装包隐私权限扫描方法、装置及计算机设备 |
CN111783095A (zh) * | 2020-07-28 | 2020-10-16 | 支付宝(杭州)信息技术有限公司 | 小程序恶意代码的识别方法、装置和电子设备 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103034789A (zh) * | 2012-12-10 | 2013-04-10 | 山东中创软件商用中间件股份有限公司 | 一种组件部署方法、装置及安全框架 |
US20130326599A1 (en) * | 2012-05-31 | 2013-12-05 | Keith Bray | Validating Pointer Records In A Domain Name System (DNS) Service |
CN103440459A (zh) * | 2013-09-25 | 2013-12-11 | 西安交通大学 | 一种基于函数调用的Android恶意代码检测方法 |
CN106295311A (zh) * | 2016-08-05 | 2017-01-04 | 北京智能管家科技有限公司 | 一种系统权限控制方法及装置 |
CN107180192A (zh) * | 2017-05-09 | 2017-09-19 | 北京理工大学 | 基于多特征融合的安卓恶意应用程序检测方法和系统 |
CN107239694A (zh) * | 2017-05-27 | 2017-10-10 | 武汉大学 | 一种基于用户评论的Android应用权限推理方法及装置 |
-
2017
- 2017-12-06 CN CN201711275363.6A patent/CN108073813B/zh not_active Expired - Fee Related
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130326599A1 (en) * | 2012-05-31 | 2013-12-05 | Keith Bray | Validating Pointer Records In A Domain Name System (DNS) Service |
CN103034789A (zh) * | 2012-12-10 | 2013-04-10 | 山东中创软件商用中间件股份有限公司 | 一种组件部署方法、装置及安全框架 |
CN103440459A (zh) * | 2013-09-25 | 2013-12-11 | 西安交通大学 | 一种基于函数调用的Android恶意代码检测方法 |
CN106295311A (zh) * | 2016-08-05 | 2017-01-04 | 北京智能管家科技有限公司 | 一种系统权限控制方法及装置 |
CN107180192A (zh) * | 2017-05-09 | 2017-09-19 | 北京理工大学 | 基于多特征融合的安卓恶意应用程序检测方法和系统 |
CN107239694A (zh) * | 2017-05-27 | 2017-10-10 | 武汉大学 | 一种基于用户评论的Android应用权限推理方法及装置 |
Non-Patent Citations (2)
Title |
---|
徐林溪 等: ""基于混合特征的恶意安卓程序检测方法"", 《计算机工程与科学》 * |
郑冠仕 等: ""面向移动系统安全的应用分析技术综述"", 《计算机系统应用》 * |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109189369A (zh) * | 2018-07-25 | 2019-01-11 | 北京奇艺世纪科技有限公司 | 一种压缩代码的方法及装置 |
CN109189369B (zh) * | 2018-07-25 | 2022-03-04 | 北京奇艺世纪科技有限公司 | 一种压缩代码的方法及装置 |
CN109818945A (zh) * | 2019-01-11 | 2019-05-28 | 中国科学院信息工程研究所 | 应用程序行为特征选择方法及装置 |
CN109977644A (zh) * | 2019-04-03 | 2019-07-05 | 山东超越数控电子股份有限公司 | 一种Android平台下分级权限管理方法 |
CN109977644B (zh) * | 2019-04-03 | 2021-01-01 | 山东超越数控电子股份有限公司 | 一种Android平台下分级权限管理方法 |
CN111143831A (zh) * | 2019-12-24 | 2020-05-12 | 平安普惠企业管理有限公司 | 安装包隐私权限扫描方法、装置及计算机设备 |
CN111783095A (zh) * | 2020-07-28 | 2020-10-16 | 支付宝(杭州)信息技术有限公司 | 小程序恶意代码的识别方法、装置和电子设备 |
Also Published As
Publication number | Publication date |
---|---|
CN108073813B (zh) | 2021-02-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108073813A (zh) | 一种Android应用程序溢权漏洞检测和恶意行为识别方法 | |
Sato et al. | Detecting android malware by analyzing manifest files | |
Chen et al. | Achieving accuracy and scalability simultaneously in detecting application clones on android markets | |
US10915659B2 (en) | Privacy detection of a mobile application program | |
KR101083311B1 (ko) | 악성 스크립트 분석 시스템 및 그를 이용한 악성 스크립트 분석 방법 | |
US8161548B1 (en) | Malware detection using pattern classification | |
US10986103B2 (en) | Signal tokens indicative of malware | |
Kim et al. | Suspicious malicious web site detection with strength analysis of a javascript obfuscation | |
US9798981B2 (en) | Determining malware based on signal tokens | |
Alsoghyer et al. | On the effectiveness of application permissions for Android ransomware detection | |
CN109271788B (zh) | 一种基于深度学习的Android恶意软件检测方法 | |
CN108280350A (zh) | 一种面向Android的移动网络终端恶意软件多特征检测方法 | |
CN109690547A (zh) | 用于检测在线欺诈的系统和方法 | |
Zhao et al. | Automatic uncovering of hidden behaviors from input validation in mobile apps | |
WO2021017318A1 (zh) | 跨站攻击防护方法、装置、设备及存储介质 | |
CN109344614B (zh) | 一种Android恶意应用在线检测方法 | |
Suarez-Tangil et al. | Thwarting obfuscated malware via differential fault analysis | |
CN113177205A (zh) | 一种恶意应用检测系统及方法 | |
Mijwil | Malware Detection in Android OS Using Machine Learning Techniques | |
Ren et al. | MobiSentry: Towards easy and effective detection of android malware on smartphones | |
Dubin | Content disarm and reconstruction of PDF files | |
Jang et al. | Function‐Oriented Mobile Malware Analysis as First Aid | |
Tian et al. | FrameHanger: Evaluating and classifying iframe injection at large scale | |
CN113343219B (zh) | 一种自动高效的高风险移动应用程序检测方法 | |
Hao et al. | JavaScript malicious codes analysis based on naive bayes classification |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20210209 Termination date: 20211206 |
|
CF01 | Termination of patent right due to non-payment of annual fee |