CN104834862A - 一种安卓权限提升攻击的全面静态分析系统 - Google Patents
一种安卓权限提升攻击的全面静态分析系统 Download PDFInfo
- Publication number
- CN104834862A CN104834862A CN201510135052.4A CN201510135052A CN104834862A CN 104834862 A CN104834862 A CN 104834862A CN 201510135052 A CN201510135052 A CN 201510135052A CN 104834862 A CN104834862 A CN 104834862A
- Authority
- CN
- China
- Prior art keywords
- android
- file
- detection module
- application program
- intent
- 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.)
- Pending
Links
- 238000004458 analytical method Methods 0.000 title claims abstract description 62
- 230000003068 static effect Effects 0.000 title claims abstract description 20
- 238000001514 detection method Methods 0.000 claims abstract description 58
- 238000004891 communication Methods 0.000 claims abstract description 17
- 230000005540 biological transmission Effects 0.000 claims abstract description 5
- 230000006870 function Effects 0.000 claims description 57
- 238000000034 method Methods 0.000 claims description 25
- 230000035945 sensitivity Effects 0.000 claims description 12
- 239000000284 extract Substances 0.000 claims description 10
- 230000008569 process Effects 0.000 claims description 9
- 230000000694 effects Effects 0.000 claims description 6
- 230000003993 interaction Effects 0.000 claims description 6
- 238000013459 approach Methods 0.000 claims description 4
- 230000001960 triggered effect Effects 0.000 claims description 4
- 239000002253 acid Substances 0.000 claims description 3
- 238000000151 deposition Methods 0.000 claims description 3
- 239000008186 active pharmaceutical agent Substances 0.000 description 12
- 230000006399 behavior Effects 0.000 description 8
- 230000009471 action Effects 0.000 description 7
- 238000010586 diagram Methods 0.000 description 6
- 238000000429 assembly Methods 0.000 description 4
- 230000000712 assembly Effects 0.000 description 4
- 238000002474 experimental method Methods 0.000 description 4
- 238000012360 testing method Methods 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 3
- 238000005206 flow analysis Methods 0.000 description 3
- 239000003550 marker Substances 0.000 description 3
- 238000013500 data storage Methods 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012544 monitoring process Methods 0.000 description 2
- 230000035772 mutation Effects 0.000 description 2
- 230000002155 anti-virotic effect Effects 0.000 description 1
- 238000013475 authorization Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 230000007123 defense Effects 0.000 description 1
- 230000007812 deficiency Effects 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 239000004615 ingredient Substances 0.000 description 1
- 238000009434 installation Methods 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 230000009897 systematic effect Effects 0.000 description 1
Landscapes
- Stored Programmes (AREA)
Abstract
本发明公开了一种安卓权限提升攻击的全面静态分析系统,包括以下单元:用于将带有可疑特征的程序从所有程序中剥离出来的可疑分析单元,所述可疑分析单元包括:用于提取安卓应用程序敏感权限的权限检测模块,用于识别安卓应用程序公开组件的组件检测模块,用于识别安卓应用程序Intent通信的Intent操作检测模块,其中Intent是待执行操作的抽象描述,用于识别安卓应用程序文件访问的文件检测模块,用于识别安卓应用程序间网络通信的套接字检测模块;用于提取可疑程序中明确的权能泄漏路径的泄露路径分析单元,所述泄露路径分析单元包括:用于分析敏感行为代码的模块,用于分析敏感数据传输代码的模块。
Description
技术领域
本发明提供了一种Android(安卓)权限提升攻击的全面静态分析系统,特别是一种检测可能导致权限提升攻击的权能泄露漏洞的系统。
背景技术
为了抵挡隐私信息的潜在滥用问题,Android(安卓)提出了一套基于权限的安全模型。每个应用程序在安装前,都必须显式地向用户申请一系列所需的权限,而这有可能暴露出程序的恶意意图。然而,一种称为权限提升攻击的新兴威胁却可以绕过这一权限授权机制。这一模型针对的是包含可疑敏感权限的授权列表,因为敏感权限可能会导致恶意用途。通过利用这一威胁模型,隐私信息获取和发送权限将被分散到不同的应用程序中。而敏感操作访问也可以进行类似的改变,这样就隐藏了其恶意用途。因此,面对多个独立的权限列表和应用程序,传统检测方法将很难识别其潜在的恶意意图。
根据现有的文献资料,现有的反病毒扫描程序可能先采用计算待测试文件哈希值的方法来判断当前样本是否为已知的恶意软件。如果这是一个未知样本,那么扫描程序就将过滤敏感权限并使用控制流图分析、基于启发式的方法等自定义模型来验证这一样本是否是恶意的。因此,在上述的威胁模型中,扫描程序很难在多个独立的权限列表和应用程序中识别出潜在的恶意意图。
目前,也有一些针对权限提升攻击的分析和检测方法。
动态方法专注于调用图分析、IPC(进程间通信)调用链、自定义的监控框架或者灵活且细粒度的强制访问控制组件,以此来解决部分或全部的此类攻击问题。Felt等人将调用图分析与应用程序间的通信跟踪相结合来解决一种特殊的攻击案例。而在此期间,Dietz等人则跟踪IPC(进程间通信)的调用链并为应用程序创建轻量级的签名来发现一种特殊的权限提升攻击。Bugiel等人通过扩展操作系统中的相关组件开发了一个框架来监控应用程序,并利用自定义的权限策略来判断当前样本是否包含权限提升攻击。然而,这些方法存在路径覆盖与输入有效性的问题。目前,也有一些静态技术分析手机预装镜像与应用程序中的此类攻击问题。然而,这些方法只关心中间件层上的公开接口,并不包括内核层上其它形式的公开接口,比如,文件系统和网络套接字,而这样可能会遗漏一些权能泄露的案例。例如,Grace等人只把应用程序配置文件中定义的入口点以及一个可选属性当做公开接口。而在实际场景中以恶意软件NickyBot为例,其会将音频文件放在SD卡(安全数位卡)上,这样就可能被其潜在合谋者所获取。Chan等人使用反编译过的应用程序来分析,这可能会受到不好的反编译结果和潜在的混淆技术的干扰。Zhou等人则对应用程序权能泄露中一类特殊问题Content Leaks展开了静态分析与动态验证。相关文献可见A.P.Felt,H.Wang,A.Moschuk,S.Hanna,and E.Chin.Permission re-delegation:Attacks and defenses.In Proceedings of the20th USENIX Security symposium,2011;M.Dietz,S.Shekhar,Y.Pisetsky,A.Shu,and D.S.Wallach.Quire:Lightweight provenance for smart phone operating systems.In Proceedings of the 20th USENIX Security symposium,2011;S.Bugiel,L.Davi,A.Dmitrienko,T.Fischer,A.Sadeghi,and B.Shastry.Towards taming privilege-escalation attacks on android.In Proceedings of the 19th Network and Distributed SystemSecurity symposium,2012;S.Bugiel,S.Heuser,and A.-R.Sadeghi.Flexible and Fine-Grained Mandatory Access Control on Android for Diverse Security and Privacy Policies.In Proceedings of the 22nd USENIX Security Symposium,2013;M.Grace,Y.Zhou,Z.Wang,and X.Jiang.Systematic detection of capability leaks in stock android smartphones.In Proceedings of the 19th Network and Distributed System Security symposium,2012;P.P.Chan,L.C.Hui,and S.Yiu.Droidchecker:Analyzing android applications for capability leak.In ACM Conference on Security and Privacy in Wireless and Mobile Networks,2012;L.Lu,Z.Li,Z.Wu,W.Lee,and G.Jiang.Chex:statically vetting android apps for component hijacking vulnerabilities.In Proceedings of the 2012ACM Conference on Computer and communications Security,2012;Y.Zhou,and X.Jiang.Detecting Passive Content Leaks and Pollution in Android Applications.In Proceedings of the 20th Network and Distributed System Security symposium,2013;X.Jiang,Security alert:New nickbot spyware found in alternative android markets.http://www.csc.ncsu.edu/faculty/jiang/NickiBot/,2011;apktool.http://code.google.com/p/android-apktool/,2012;androguard.http://code.google.com/p/androguard/,2012。
发明内容
发明目的:本发明所要解决的技术问题是针对现有技术的不足,提供一种Android(安卓)权限提升攻击的全面静态分析系统。
为了解决上述技术问题,本发明公开了一种Android(安卓)权限提升攻击的全面静态分析系统,该装置包括以下单元:
用于将带有可疑特征的程序从众多程序中剥离出来的可疑分析单元;所述可疑分析单元包括:用于提取Android(安卓)应用程序敏感权限的权限检测模块;用于识别Android(安卓)应用程序公开组件的组件检测模块;用于识别Android(安卓)应用程序Intent通信的Intent操作检测模块,其中Intent是待执行操作的抽象描述;用于识别Android(安卓)应用程序文件访问的文件检测模块;用于识别Android(安卓)应用程序间网络通信的套接字检测模块;
用于提取可疑程序中明确的权能泄漏路径的泄露路径分析单元,所述泄露路径分析单元包括:用于提取Android(安卓)应用程序API应用程序接口流向分析的API应用程序接口调用检测模块。
本发明中,优选地,用于识别Android(安卓)应用程序公开组件的组件检测模块,所述组件检测模块包括:用exported默认值或标识为true的组件识别子模块,其中exported用于标记组件是否能被外部程序访问;包含用户自定义行为action的intent-filter的组件识别子模块,其中intent-filter就是用来注册组件具有能在某种数据上执行一个动作的能力;sharedUserId属性的识别子模块,其中sharedUserId为共享UID,即共享用户标识符;
所述组件检测模块检测的组件包括:Activity组件、Service组件、Broadcast Receiver组件以及Content Provider组件;
其中Activity组件是运行在前台与用户交互的窗口;
Service组件是在后台运行且不与用户交互的窗口;
Broadcast Receiver组件为由Intent触发的应用程序的邮箱;
Content Provider组件被URI标识或者被Intent激活用于数据存储。
本发明中,优选地,用于识别Android(安卓)应用程序Intent通信的Intent操作检测模块,主要检测发送Intent的各类函数,其中Intent是待执行操作的抽象描述;
本发明中,优选地,所述用于识别Android(安卓)应用程序文件访问的文件检测模块包括:对带有开放读取模式的健值对文件SharedPreference的识别子模块,其中SharedPreferences也是一种轻型的数据存储方式,它的本质是基于XML文件存储key-value键值对数据,通常用来存储一些简单的配置信息;对带有开放读取模式的传统Java文件的识别子模块;对带有开放读取模式的数据库文件SQLite的识别子模块,其中SQLite则是遵守ACID的关系数据库管理系统;对外存SD卡(安全数位卡)文件的识别子模块;
本发明中,优选地,用于识别Android(安卓)应用程序间网络通信的套接字检测模块,主要检测对象为本地套接字LocalSocket;
本发明中,优选地,所述露路径分析单元中的代码合作分析和数据合作分析包括其中组件或函数对应的控制流分析和数据泄流分析;
本发明中,优选地,所述可疑分析单元(20)包括以下步骤:
步骤S100,利用apktool解析应用程序的配置文件Manifest,得到权限列表,利用androguard工具分析得到该应用程序的可执行文件.dex文件的Dalvik字节码;
步骤S200,根据得到的权限列表,利用权限检测模块(201)提取敏感权限,判断当前安卓应用程序是否存在敏感权限,如果有敏感权限则执行步骤S300,否则执行步骤S600;
步骤S300,由配置文件Manifest得到的组件信息,根据组件检测模块(202)识别出公开组件,且由可执行文件.dex文件得到的Intent抽象描述、文件系统及套接字信息,根据Intent操作检测模块(203)识别出的Intent通信,根据文件检测模块(204)识别出的文件访问,根据套接字检测模块(205)识别出的套接字通信,判断当前安卓应用程序是否存在公开组件、Intent通信、套接字通信以及向一个公开文件的写入操作,如果有,则视为拥有公开接口,执行步骤S400,否则执行步骤S500;
步骤S400,判定当前安卓应用程序既含有敏感权限又包含公开接口,将此应用程序作为可疑样本放入可疑样本集合;
步骤S500,判定当前安卓应用程序没有敏感权限或虽有敏感权限但不包含公开接口,将该应用程序设定为正常程序。
本发明中,优选地,用于分析Android(安卓)应用程序间敏感行为调用的代码合作分析模块,主要分析的对象为敏感行为的代码片段。
本发明中,优选地,用于分析Android(安卓)应用程序间敏感数据传输的数据合作分析模块,主要分析的对象为敏感数据的代码片段。
本发明中,优选地,所述泄露路径分析单元包括以下步骤:
步骤S1010,根据可疑分析单元(20)提取的可疑样本,抽取出其中的敏感权限,并抽取出其中的公开接口,继续执行步骤S1020;
步骤S1020,基于得到的敏感权限,定位出相应敏感API应用程序接口的位置,并判断此类API应用程序接口能够用于代码合作还是数据合作,若能够用于代码合作,则执行步骤S1030,若能够用于数据合作,则执行步骤S1040;
步骤S1030,根据代码合作分析模块(211)定位出调用用于代码合作API应用程序接口的组件,找出调用上述组件的组件,反复迭代,直到得到一个组件集合,继续执行步骤S1050;
步骤S1040,根据数据合作分析模块(212)定位出调用用于数据合作API应用程序接口的函数,得到一个含有存放敏感数据变量的敏感寄存器集合SR,以函数内的控制流图顺序逐条分析指令,根据对应的指令类型,执行四种操作过程:
操作一,如果上述集合SR中的任何寄存器被敏感数据源以外的操作重新赋值了,则删除该的寄存器;
操作二,如果任何敏感寄存器中的数据被传送到其它不在上述集合SR的寄存器中,将所述寄存器记录下来增加到集合SR中;
操作三,如果该函数存在接口,就将其记录下来;
操作四,如果一个函数调用包含敏感寄存器,就迭代地跟踪该函数,对函数间的调用关系做进一步分析,获取函数间的控制流图顺序;
如果当前函数的返回值包含在上述集合SR中的一个寄存器中,将参考函数间的调用关系以在当前函数调用者内部用操作一到操作四的方式对其进行检查,并迭代地重复上述四种操作过程的分析方法,继续执行步骤S1060;
步骤S1050,检测当前的组件集合中是否包含公开接口,若存在公开接口,则建立确定的可疑操作执行路径;
步骤S1060,检测当前的接口集合中是否含有公开接口,若存在公开接口,则建立确定的可疑数据流路径。
本发明的工作流程分为两步:首先,由可疑分析单元20将带有可疑特征的程序从众多程序中剥离出来。这样就可以在第一步过滤掉大量的程序,降低了第二阶段分析的工作量。这一阶段的工作重点在于可疑特征的识别和提取。然后,由泄露路径分析单元21针对可疑程序找出其中明确的权能泄漏路径。这一阶段的工作进一步降低了权能泄漏问题的误报率。这一阶段的工作需要将特征点衔接起来,因此,控制流和数据流分析必不可少。
有益效果:本发明提出了一种Android(安卓)权限提升攻击的全面静态分析系统,不需要源代码,全自动地运行,能准确分析出Android(安卓)应用程序存在的权能泄露问题。与目前的权限提升攻击权能泄露问题的检测工具相比,本发明至少有四个特点:(1)字节码级:不需要源代码。(2)全面检测:包括文件系统和网络套接字等内核层通信渠道。(3)低误报和漏报率。(4)能够准确识别出权能泄露问题。
附图说明
下面结合附图和具体实施方式对本发明做更进一步的具体说明,本发明的上述和/或其他方面的优点将会变得更加清楚。
图1是本发明的系统概览示意图。
图2是可疑分析流程示意图。
图3是泄露路径分析流程示意图。
具体实施方式
本发明建立在apktool和androguard的基础上。
图1是本发明的系统概览示意图。如图1所示,本发明所述的Android(安卓)权限提升攻击的全面静态分析系统10包括:可疑分析单元20,泄露路径分析单元21。
所述可疑分析单元20用于将带有可疑特征的程序从众多程序中剥离出来,主要进行以下五项工作:(1)提取Android(安卓)应用程序敏感权限,(2)识别Android(安卓)应用程序公开组件,(3)识别Android(安卓)应用程序Intent通信,(4)识别Android(安卓)应用程序文件访问,(5)识别Android(安卓)应用程序间网络通信,其中Intent是待执行操作的抽象描述。这五项工作分别由“权限检测模块201”,“组件检测模块202”,“Intent操作检测模块203”,“文件检测模块204”以及“套接字检测模块205”完成。
所述权限检测模块201用于提取Android(安卓)应用程序敏感权限,所述敏感权限指除权限等级为normal(普通级别)之外的其它权限。在第三方应用程序中的权限级别通常不会高过dangerous危险级别,而预装程序则可能包含更高级别的权限,如signature签名级别或signatureOrSystem系统/签名级别。而恶意软件因为属于第三方应用程序,因此我们也能对其进行分析。综合来看,我们的这套分析机制针对的是所有应用程序,包括预装程序和以恶意软件为代表的第三方应用程序。权限是在AndroidManifest配置文件中明确声明的。
所述组件检测模块202用于识别Android(安卓)应用程序公开组件,所述公开组件包括用exported默认值或标识为true的组件、包含用户自定义行为action的intent-filter的组件以及sharedUserId属性,其中exported用于标记组件是否能被外部程序访问,intent-filter则是用来注册组件具有能在某种数据上执行一个动作的能力,sharedUserId为共享UID,即共享用户进程空间。在Android(安卓)应用程序中,每一个组件都可以视为运行程序的入口。因此,其它应用程序可以通过这些组件来调用程序,以此完成某些特定行为。所有组件都有一个exported属性来控制对他们的访问。其中exported用于标记组件是否能被外部程序访问。这一属性的“true”值代表这一组件可以被外部访问,“false”值代表不能。对于Activity、Service以及Broadcast Receiver来说,除非它们含有至少一个intent-filter,否则它们的exported默认值均为false,其中Activity是与用户交互的窗口,运行在前台,Service在后台运行,并且不需要与用户交互,Broadcast Receiver好似应用程序的邮箱,由Intent触发,intent-filter则是用来注册组件具有能在某种数据上执行一个动作的能力。然而,intent-filter中的Intent行为既包含系统定义的,也包含用户自定义,其中intent-filter就是用来注册组件具有能在某种数据上执行一个动作的能力,Intent是待执行操作的抽象描述。系统定义的intent-filter一般来说只能被系统事件触发,其中intent-filter就是用来注册组件具有能在某种数据上执行一个动作的能力。而包含用户自定义的intent-filter的组件可以被其它应用程序触发,并由此开放能被其它应用程序所访问的组件行为。所以,这种intent-filter在我们的分析中是一种明显的特征,有这种intent-filter的组件需要被记录下来。其次,当应用程序的minSdkVersion或targetSdkVersion不高于16时,ContentProvider都含有默认值为true的exported值,而上述两种属性之一大于17时,其默认值为false,其中minSdkVersion为最小SDK版本,targetSdkVersion为目标设备SDK版本,SDK为软件开发包,Content Provider则被URI标识像数据库一样用于数据存储,也可以被Intent激活。因此,我们简单地记录下所有的Content Provider。而对ContentProvider的具体甄别,我们留待后面的分析来予以确定。最后,由于有相同uid用户标识符的多个应用程序可以共享他们的资源而有可能发生合谋攻击,即一种特殊的权限提升攻击形式。因此另一个明显的特征是sharedUserId,这也需要被记录下来,其中sharedUserId为共享UID,即共享用户标识符。
所述Intent操作检测模块203用于识别Android(安卓)应用程序Intent通信,我们将注意力放在含有put前缀的函数,因为这类函数可以用于发送Intent的准备工作,其中Intent是待执行操作的抽象描述。为了提高这一识别的准确率,我们检查每一个Intent的类和行为。
所述文件检测模块204用于识别Android(安卓)应用程序文件访问。对于文件系统而言,所有四类文件类型,即SharedPreference、传统Java文件、SQLite以及SD卡(安全数位卡)文件,都有可能被视为公开接口,其中SharedPreference是一种轻型的数据存储方式,它的本质是基于XML文件存储key-value键值对数据,通常用来存储一些简单的配置信息,而SQLite则是遵守ACID的关系数据库管理系统。前三种文件类型的操作模式MODE_WORLD_READABLE是一个显著的特征,这一特征可以确保目标文件是否是一个确定的公开接口。所有其它应用程序都可以访问这一操作模式的文件。由于SD卡(安全数位卡)是一种共享文件夹,存放在其上的文件都可以被其它应用程序访问。我们通过识别函数getExternalStorageDirectory来记录这一公开接口,这一函数是保存SD卡文件的先决条件,其本义为获取外部存储设备的当前状态。
所述套接字检测模块205用于识别Android(安卓)应用程序间网络通信。所有的网络套接字类可以通过getOutputStream获取输出流或者send发送来进行识别,这两步都是网络发送的重要步骤。
所述泄露路径分析单元21用于提取可疑程序中明确的权能泄漏路径,核心工作为提取Android(安卓)应用程序API应用程序接口流向并进行相关控制流与数据流分析。这项工作由API应用程序接口调用检测模块(211)提供最初的流向分析。
所述API应用程序接口调用检测模块211用于提取Android(安卓)应用程序API应用程序接口流向分析,即定位了对应于上述敏感权限的敏感API应用程序接口调用,这些API调用涉及到敏感资源的释放问题。
图2是可疑分析单元20的实施流程示意图。如图2所示,可疑分析的步骤具体包括。
如图2所示,步骤S100,利用apktool解析应用程序的配置文件Manifest,得到权限列表,利用androguard工具分析得到该应用程序的可执行文件.dex文件的Dalvik字节码,继续执行步骤S200;
步骤S200,根据得到的权限列表,利用权限检测模块(201)提取敏感权限,判断当前Android(安卓)应用程序是否存在敏感权限,如果有敏感权限则执行步骤S400,否则执行步骤S600;
步骤S300,
由配置文件Manifest得到的组件信息,根据组件检测模块(202)识别出公开组件,且由可执行文件.dex文件得到的Intent、文件系统及套接字信息,根据Intent操作检测模块(203)识别出的Intent通信,根据文件检测模块(204)识别出的文件访问,根据套接字检测模块(205)识别出的套接字通信,判断当前Android(安卓)应用程序是否存在公开组件、Intent通信、套接字通信以及向一个公开文件的写入操作,如果有,则视为拥有公开接口,则执行步骤S400,否则执行步骤S500,其中Intent是待执行操作的抽象描述;
步骤S400,此时可以判定当前Android(安卓)应用程序既含有敏感权限又包含公开接口,这样的程序隐含权能泄露的风险,则此应用程序可以放入可疑样本集合;
步骤S500,此时可以判定当前Android(安卓)应用程序没有敏感权限或虽有敏感权限但不包含公开接口,这样的程序不存在权能泄露的风险,则此应用程序为正常程序。
图3是泄露路径分析单元21的实施流程示意图。如图3所示,泄露路径分析的步骤具体包括。
步骤S1010,根据可疑分析单元(20)提取的可疑样本,抽取出其中的敏感权限,并抽取出其中的公开接口,继续执行步骤S1020;
步骤S1020,基于得到的敏感权限,定位出相应敏感API应用程序接口的位置,并判断此类API应用程序接口可用于代码合作还是数据合作,若可用于代码合作,则执行步骤S1030,若可用于数据合作,则执行步骤S1040;
步骤S1030,根据代码合作分析模块(211)定位出调用用于代码合作API应用程序接口的组件,接着,找出调用上述组件的组件,然后迭代地重复这一过程,得到一个组件集合,继续执行步骤S1050;
步骤S1040,根据数据合作分析模块(212)可知,由于在Dalvik字节码中变量保存在寄存器中,定位出调用用于数据合作API应用程序接口的函数后,得到一个含有存放敏感数据变量的敏感寄存器集合SR。然后以函数内的控制流图顺序逐条分析指令。根据不同的指令类型,有四种操作过程。
操作一,如果上述集合SR中的任何寄存器被敏感数据源以外的操作重新赋值了,就将这样的寄存器删除。这样,就保证了敏感寄存器集合的有效性,即集合中的寄存器必然是敏感数据的传递者。这样的保证可以减少一些误报的可能性。
操作二,如果任何敏感寄存器中的数据被传送到其它不在上述集合SR的寄存器中,就将这些受影响的寄存器记录下来增加到集合中。这样动态地扩展敏感寄存器集合,可以保证不出现相应的漏报情况。
操作三,如果该函数存在接口,就将其记录下来,因为公开接口一般来说作为一种通信渠道,可能会泄露全部或部分敏感寄存器集合。这是一种较为明显的权能泄露路径,即敏感数据的生成和发送在一个函数内完成。
操作四,如果一个函数调用包含任何敏感寄存器,就迭代地跟踪这样的函数。在这一步中,需要对函数间的调用关系做进一步分析,即需要获取函数间的控制流图顺序。
最终,如果当前函数的返回值包含在上述集合SR中的某个寄存器中,就将参考函数间的调用关系,并在当前函数调用者内部用操作一到操作四的方式对其调用者进行检查。如此,迭代地重复上述的分析方法,继续执行步骤S1060;
步骤S1050,检测当前的组件集合中是否包含公开接口,若存在公开接口,则可以建立出确定的可疑操作执行路径;
步骤S1060,检测当前的接口集合中是否含有公开接口,若存在公开接口,则可以建立出确定的可疑数据流路径。
实施例
本发明选取了一些具有代表性的恶意软件并构造了一些恶意软件变种对本发明进行测试。实验的主要目的是评价本发明检测权限提升攻击中权能泄露问题的有效性。实验平台:
内存为512MB的Ubuntu 10.04。被测试的恶意软件来源于Android MalwareGenome项目。
本发明构造了如下恶意软件的变种评估检测权限提升攻击中权能泄漏问题的有效性:
DroidDream,FakePlayer,GamSMS,GPSSMSSpy等。实验中,已有恶意软件虽有权能泄漏的显现,但还没有广泛接受权限提升攻击技术。根据已有结果,本发明发现仅有三款恶意软件中包含泄露路径,即AnserverBot,Bgserv以及NickyBot。因此,实验中通过构造一些权能泄露漏洞来增加被检测样本。
表1是有效性测试结果,权限提升攻击中的权能泄露问题均被检测并定位。本发明了同样测试了误报率,发现在执行完第二阶段的分析后,误报率有显著下降。
表1
本发明提供了一种Android(安卓)权限提升攻击的全面静态分析系统的思路及方法,具体实现该技术方案的方法和途径很多,以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。本实施例中未明确的各组成部分均可用现有技术加以实现。
Claims (9)
1.一种安卓权限提升攻击的全面静态分析系统,其特征在于,包括以下单元:
用于将带有可疑特征的程序从所有程序中剥离出来的可疑分析单元(20),所述可疑分析单元(20)包括:
用于提取安卓应用程序敏感权限的权限检测模块(201),
用于识别安卓应用程序公开组件的组件检测模块(202),
用于识别安卓应用程序Intent通信的Intent操作检测模块(203),其中Intent是待执行操作的抽象描述,
用于识别安卓应用程序文件访问的文件检测模块(204),
用于识别安卓应用程序间网络通信的套接字检测模块(205);
用于提取可疑程序中明确的权能泄漏路径的泄露路径分析单元(21),所述泄露路径分析单元包括:
用于分析敏感行为代码的模块(211),
用于分析敏感数据传输代码的模块(212)。
2.根据权利要求1所述的一种安卓权限提升攻击的全面静态分析系统,其特征在于,所述可疑分析单元(20)执行以下步骤:
步骤S100,利用apktool解析应用程序的配置文件Manifest,得到权限列表,利用androguard工具分析得到该应用程序的可执行文件.dex文件的Dalvik字节码;
步骤S200,根据得到的权限列表,利用权限检测模块(201)提取敏感权限,判断当前安卓应用程序是否存在敏感权限,如果有敏感权限则执行步骤S300,否则执行步骤S600;
步骤S300,由配置文件Manifest得到的组件信息,根据组件检测模块(202)识别出公开组件,且由可执行文件.dex文件得到的Intent抽象描述、文件系统及套接字信息,根据Intent操作检测模块(203)识别出的Intent通信,根据文件检测模块(204)识别出的文件访问,根据套接字检测模块(205)识别出的套接字通信,判断当前安卓应用程序是否存在公开组件、Intent通信、套接字通信以及向一个公开文件的写入操作,如果有,则视为拥有公开接口,执行步骤S400,否则执行步骤S500;
步骤S400,判定当前安卓应用程序既含有敏感权限又包含公开接口,将此应用程序作为可疑样本放入可疑样本集合;
步骤S500,判定当前安卓应用程序没有敏感权限或虽有敏感权限但不包含公开接口,将该应用程序设定为正常程序。
3.根据权利要求2所述的一种安卓权限提升攻击的全面静态分析系统,其特征在于,所述泄露路径分析单元(21)执行以下步骤:
步骤S1010,根据可疑分析单元(20)提取的可疑样本,抽取出其中的敏感权限,并抽取出其中的公共接口,继续执行步骤S1020;
步骤S1020,基于得到的敏感权限,定位出相应敏感API应用程序接口的位置,并判断此类API应用程序接口能够用于代码合作还是数据合作,若能够用于代码合作,则执行步骤S1030,若能够用于数据合作,则执行步骤S1040;
步骤S1030,根据代码合作分析模块(211)定位出调用用于代码合作API应用程序接口的组件,找出调用上述组件的组件,反复迭代,直到得到一个组件集合,继续执行步骤S1050;
步骤S1040,根据数据合作分析模块(212)定位出调用用于数据合作API应用程序接口的函数,得到一个含有存放敏感数据变量的敏感寄存器集合SR,以函数内的控制流图顺序逐条分析指令,根据对应的指令类型,执行四种操作过程:
操作一,如果上述集合SR中的任何寄存器被敏感数据源以外的操作重新赋值了,则删除该的寄存器;
操作二,如果任何敏感寄存器中的数据被传送到其它不在上述集合SR的寄存器中,将所述寄存器记录下来增加到集合SR中;
操作三,如果该函数存在接口,就将其记录下来;
操作四,如果一个函数调用包含敏感寄存器,就迭代地跟踪该函数,对函数间的调用关系做进一步分析,获取函数间的控制流图顺序;
如果当前函数的返回值包含在集合SR中的一个寄存器中,将参考函数间的调用关系在当前函数调用者内部用操作一到操作四的方式对其进行检查,并迭代地重复上述四种操作过程的分析方法,继续执行步骤S1060;
步骤S1050,检测当前的组件集合中是否包含公开接口,若存在公开接口,则建立确定的可疑操作执行路径;
步骤S1060,检测当前的接口集合中是否含有公开接口,若存在公开接口,则建立 确定的可疑数据流路径。
4.根据权利要求3所述的一种安卓权限提升攻击的全面静态分析系统,其特征在于,所述组件检测模块(201)检测的组件包括:Activity组件、Service组件、Broadcast Receiver组件以及Content Provider组件;
其中Activity组件是运行在前台与用户交互的窗口;
Service组件是在后台运行且不与用户交互的窗口;
Broadcast Receiver组件为由Intent触发的应用程序的邮箱;
Content Provider组件被URI标识或者被Intent激活用于数据存储。
5.根据权利要求4所述的一种安卓权限提升攻击的全面静态分析系统,其特征在于,所述Intent操作检测模块(203)发送Intent的各类函数检测。
6.根据权利要求5所述的一种安卓权限提升攻击的全面静态分析系统,其特征在于,所述文件检测模块(204)检测的文件类型包括:SharedPreference、Java文件、SQLite以及SD卡文件;
其中SharedPreference是基于XML文件存储key-value键值对数据存储的文件;
SQLite是遵守ACID的关系数据库管理系统。
7.根据权利要求6所述的一种安卓权限提升攻击的全面静态分析系统,其特征在于,套接字检测模块(205)检测的对象为本地套接字LocalSocket。
8.根据权利要求7所述的一种安卓权限提升攻击的全面静态分析系统,其特征在于,代码合作分析模块(211)分析的对象为引起敏感行为的代码片段。
9.根据权利要求8所述的一种安卓权限提升攻击的全面静态分析系统,其特征在于,数据合作分析模块(212)分析的对象为传输敏感数据的代码片段。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510135052.4A CN104834862A (zh) | 2015-03-25 | 2015-03-25 | 一种安卓权限提升攻击的全面静态分析系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510135052.4A CN104834862A (zh) | 2015-03-25 | 2015-03-25 | 一种安卓权限提升攻击的全面静态分析系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN104834862A true CN104834862A (zh) | 2015-08-12 |
Family
ID=53812744
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510135052.4A Pending CN104834862A (zh) | 2015-03-25 | 2015-03-25 | 一种安卓权限提升攻击的全面静态分析系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104834862A (zh) |
Cited By (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105279091A (zh) * | 2015-11-19 | 2016-01-27 | 中国人民大学 | 一种基于动态污点分析的按需跟踪方法及装置 |
CN105653934A (zh) * | 2015-12-25 | 2016-06-08 | 惠州Tcl移动通信有限公司 | 移动终端及其应用保护方法 |
CN105678187A (zh) * | 2016-01-06 | 2016-06-15 | 上海斐讯数据通信技术有限公司 | 一种基于Android系统的智能终端隐私数据保护方法及系统 |
CN106022116A (zh) * | 2016-05-12 | 2016-10-12 | 南京大学 | 基于安卓程序应用间攻击的自动化补丁系统及方法 |
CN106778254A (zh) * | 2016-11-24 | 2017-05-31 | 四川无声信息技术有限公司 | 隐私泄露检测方法及系统 |
CN106897615A (zh) * | 2015-12-18 | 2017-06-27 | 卓望数码技术(深圳)有限公司 | 一种安卓嫌疑软件的同源识别方法及装置 |
CN106951786A (zh) * | 2017-03-30 | 2017-07-14 | 国网江苏省电力公司电力科学研究院 | 面向安卓平台的移动应用权限安全分析方法 |
CN107590013A (zh) * | 2017-09-05 | 2018-01-16 | 南京大学 | 一种检测Android应用Service构件泄露的高效方法 |
CN107967210A (zh) * | 2017-12-04 | 2018-04-27 | 东软集团股份有限公司 | Android组件测试用例生成方法和装置 |
CN108846282A (zh) * | 2018-06-04 | 2018-11-20 | 西安电子科技大学 | 基于静态污点分析的安卓应用程序权限泄露漏洞检测方法 |
US10169576B2 (en) | 2016-11-15 | 2019-01-01 | International Business Machines Corporation | Malware collusion detection |
CN109639884A (zh) * | 2018-11-21 | 2019-04-16 | 惠州Tcl移动通信有限公司 | 一种基于安卓监控敏感权限的方法、存储介质及终端设备 |
CN110162963A (zh) * | 2019-04-26 | 2019-08-23 | 肖银皓 | 一种识别过权应用程序的方法 |
CN110309661A (zh) * | 2019-04-19 | 2019-10-08 | 中国科学院信息工程研究所 | 一种基于控制流的敏感数据使用权限管理方法及装置 |
CN110691357A (zh) * | 2019-09-04 | 2020-01-14 | 南京理工大学 | 基于Intent通信行为语义图的安卓应用间隐信道检测方法 |
CN111783092A (zh) * | 2020-06-22 | 2020-10-16 | 湖南大学 | 面向安卓应用程序间通信机制的恶意攻击检测方法及系统 |
CN112632533A (zh) * | 2020-11-13 | 2021-04-09 | 厦门熙重电子科技有限公司 | 一种基于滑动局部注意力机制的恶意代码检测方法 |
CN113127859A (zh) * | 2019-12-30 | 2021-07-16 | Oppo广东移动通信有限公司 | 待检测文件的检测方法、装置、终端及存储介质 |
WO2023029325A1 (zh) * | 2021-09-06 | 2023-03-09 | 天翼电子商务有限公司 | 一种基于动态权限集的安卓特权提升攻击发现方法 |
-
2015
- 2015-03-25 CN CN201510135052.4A patent/CN104834862A/zh active Pending
Non-Patent Citations (1)
Title |
---|
YIBING ZHONGYANG等: "《Proceedings of the 8th ACM SIGSAC symposium on Information, computer and communications security》", 10 May 2013 * |
Cited By (29)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105279091A (zh) * | 2015-11-19 | 2016-01-27 | 中国人民大学 | 一种基于动态污点分析的按需跟踪方法及装置 |
CN105279091B (zh) * | 2015-11-19 | 2018-01-16 | 中国人民大学 | 一种基于动态污点分析的按需跟踪方法及装置 |
CN106897615A (zh) * | 2015-12-18 | 2017-06-27 | 卓望数码技术(深圳)有限公司 | 一种安卓嫌疑软件的同源识别方法及装置 |
CN105653934A (zh) * | 2015-12-25 | 2016-06-08 | 惠州Tcl移动通信有限公司 | 移动终端及其应用保护方法 |
CN105678187A (zh) * | 2016-01-06 | 2016-06-15 | 上海斐讯数据通信技术有限公司 | 一种基于Android系统的智能终端隐私数据保护方法及系统 |
CN106022116B (zh) * | 2016-05-12 | 2018-11-06 | 南京大学 | 基于安卓程序应用间攻击的自动化补丁系统及方法 |
CN106022116A (zh) * | 2016-05-12 | 2016-10-12 | 南京大学 | 基于安卓程序应用间攻击的自动化补丁系统及方法 |
US11593478B2 (en) | 2016-11-15 | 2023-02-28 | International Business Machines Corporation | Malware collusion detection |
US10169576B2 (en) | 2016-11-15 | 2019-01-01 | International Business Machines Corporation | Malware collusion detection |
US10614215B2 (en) | 2016-11-15 | 2020-04-07 | International Business Machines Corporation | Malware collusion detection |
CN106778254A (zh) * | 2016-11-24 | 2017-05-31 | 四川无声信息技术有限公司 | 隐私泄露检测方法及系统 |
CN106778254B (zh) * | 2016-11-24 | 2020-05-01 | 四川无声信息技术有限公司 | 隐私泄露检测方法及系统 |
CN106951786A (zh) * | 2017-03-30 | 2017-07-14 | 国网江苏省电力公司电力科学研究院 | 面向安卓平台的移动应用权限安全分析方法 |
CN107590013A (zh) * | 2017-09-05 | 2018-01-16 | 南京大学 | 一种检测Android应用Service构件泄露的高效方法 |
CN107590013B (zh) * | 2017-09-05 | 2020-12-04 | 南京大学 | 一种检测Android应用Service构件泄露的高效方法 |
CN107967210A (zh) * | 2017-12-04 | 2018-04-27 | 东软集团股份有限公司 | Android组件测试用例生成方法和装置 |
CN108846282A (zh) * | 2018-06-04 | 2018-11-20 | 西安电子科技大学 | 基于静态污点分析的安卓应用程序权限泄露漏洞检测方法 |
CN109639884A (zh) * | 2018-11-21 | 2019-04-16 | 惠州Tcl移动通信有限公司 | 一种基于安卓监控敏感权限的方法、存储介质及终端设备 |
CN110309661A (zh) * | 2019-04-19 | 2019-10-08 | 中国科学院信息工程研究所 | 一种基于控制流的敏感数据使用权限管理方法及装置 |
CN110309661B (zh) * | 2019-04-19 | 2021-07-16 | 中国科学院信息工程研究所 | 一种基于控制流的敏感数据使用权限管理方法及装置 |
CN110162963A (zh) * | 2019-04-26 | 2019-08-23 | 肖银皓 | 一种识别过权应用程序的方法 |
CN110691357B (zh) * | 2019-09-04 | 2022-06-24 | 南京理工大学 | 基于Intent通信行为语义图的安卓应用间隐信道检测方法 |
CN110691357A (zh) * | 2019-09-04 | 2020-01-14 | 南京理工大学 | 基于Intent通信行为语义图的安卓应用间隐信道检测方法 |
CN113127859A (zh) * | 2019-12-30 | 2021-07-16 | Oppo广东移动通信有限公司 | 待检测文件的检测方法、装置、终端及存储介质 |
CN113127859B (zh) * | 2019-12-30 | 2024-04-12 | Oppo广东移动通信有限公司 | 待检测文件的检测方法、装置、终端及存储介质 |
CN111783092A (zh) * | 2020-06-22 | 2020-10-16 | 湖南大学 | 面向安卓应用程序间通信机制的恶意攻击检测方法及系统 |
CN111783092B (zh) * | 2020-06-22 | 2023-08-22 | 湖南大学 | 面向安卓应用程序间通信机制的恶意攻击检测方法及系统 |
CN112632533A (zh) * | 2020-11-13 | 2021-04-09 | 厦门熙重电子科技有限公司 | 一种基于滑动局部注意力机制的恶意代码检测方法 |
WO2023029325A1 (zh) * | 2021-09-06 | 2023-03-09 | 天翼电子商务有限公司 | 一种基于动态权限集的安卓特权提升攻击发现方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104834862A (zh) | 一种安卓权限提升攻击的全面静态分析系统 | |
He et al. | Dynamic privacy leakage analysis of Android third-party libraries | |
US9141801B2 (en) | Apparatus and method for analyzing permission of application for mobile devices and detecting risk | |
Gibler et al. | Androidleaks: Automatically detecting potential privacy leaks in android applications on a large scale | |
US9712530B2 (en) | Systems and methods for enforcing security in mobile computing | |
Zhongyang et al. | DroidAlarm: an all-sided static analysis tool for Android privilege-escalation malware | |
CN102867143B (zh) | 一种恶意应用程序的快速过滤方法 | |
Li et al. | Android malware detection based on static analysis of characteristic tree | |
KR102079304B1 (ko) | 화이트리스트 기반 악성코드 차단 장치 및 방법 | |
Choi et al. | Personal information leakage detection method using the inference-based access control model on the Android platform | |
Seo et al. | Analysis on maliciousness for mobile applications | |
Wang et al. | Leakdoctor: Toward automatically diagnosing privacy leaks in mobile applications | |
Nguyen et al. | Unlocin: Unauthorized location inference on smartphones without being caught | |
Jogsan | A survey on permission based malware detection in android applications | |
Wen et al. | An empirical study of sdk credential misuse in ios apps | |
Agematsu et al. | A proposal to realize the provision of secure android applications--adms: An application development and management system | |
Petkovic et al. | A host based method for data leak protection by tracking sensitive data flow | |
Chang et al. | Towards a multilayered permission‐based access control for extending Android security | |
Blasco et al. | Detection of app collusion potential using logic programming | |
Gu et al. | Exploiting android system services through bypassing service helpers | |
Hu et al. | Monitoring of root privilege escalation in android kernel | |
He et al. | Linkflow: Efficient large-scale inter-app privacy leakage detection | |
Zhang et al. | SEIP: simple and efficient integrity protection for open mobile platforms | |
Seo et al. | Mobile malware threats and defenses for homeland security | |
Lee et al. | Identifying inter-component communication vulnerabilities in eventbased systems |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
EXSB | Decision made by sipo to initiate substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20150812 |
|
RJ01 | Rejection of invention patent application after publication |