2. 中国科学技术大学 软件学院, 合肥 230026
2. School of Software, University of Science and Technology of China, Hefei 230026, China
经过近十年的高速发展,Android系统已经在移动互联网操作系统中占有压倒性优势[1-2]。在Android移动应用市场上,由于系统高度开放性和广泛普及性,Android应用面临着被恶意注入、二次打包等严重的安全风险。Android恶意软件危害性已经危及个人隐私安全、财产安全甚至国家信息安全[3-4]。要遏制Android恶意软件的危害性,可以从应用市场这个源头上对软件的分发进行科学技术管理,检测分析Android软件的安全信用指数,限制危害性较高、安全信用度低的Android软件通过应用市场被安装到目标移动终端中。
Android软件安全信用指数是其检测结果输出的一部分。Android安全检测通常采用静态分析[5-7]、动态分析[8-10]等方法,对Android程序进行安全分析,以期发现其中的安全漏洞或恶意行为。从Android软件APK文件的结构和运行机制可以得知:AndroidManifest.xml文件中声明的系统权限是软件本身行为的特征,也是静态检测软件安全的重要途径。
可信软件的核心方向是评估软件的可信度,国内外学者都提出了许多经典解决方案,如Walter等[11]提出基于Markov模型的方法,Shi等[12]提出基于分布式的BIND框架。对于Android软件的信用评估,通常从逆向工程静态分析[13-14]和恶意行为动态检测[15-16]2个方向进行研究。通过检测安全性,评估出Android软件的风险指数和信用级别[17]。然而,传统Android软件安全度量技术的度量精度可确定其安全等级,但无法满足软件信用精确度量和安全指数排序的现实需求。
针对上述需求,本文通过对Android软件逆向工程和静态分析,根据不同权限安全等级划分,在分析目前Android软件安全权限的基础上给定安全范围内的安全系数。采用经典的层次分析法(analytic hierarchy process,AHP)评估模型,对Android软件进行初步安全评分。同时结合Android软件的认证强度和国内知名应用市场上的违规记录,再次使用AHP综合度量软件的最终安全信用指数。实验结果表明:该度量方法可行有效,可在精度允许的范围内,精确度量Android软件的安全信用指数达到了预期目标。
1 Android软件安全性分析与信用评估分类目前Android市场上的恶意软件仍以手机账单欺诈类为主,占比27%;窃取用户隐私占比19%;流氓行为即恶意广告插件等占比10%;而其他恶意行为,例如系统破坏占比4%。根据国内主要移动互联网应用信息安全统计,可以将目前Android市场上的恶意软件恶意行为的严重程度分为严重、中等和轻微三级;把发生的可能性也分为较低、一般和较高三级。例如图 1中的消耗网络流量,恶意软件通过该行为来消耗用户资费,其发生的可能性在恶意行为中较高,并且对用户的影响程度严重。因此可以在度量分配权重时作为参考分配数值。在监控该行为时,设定范围也可以作为参考,来判断该行为是否越界。通过定性威胁风险分析图可以清楚地得到每种行为的发生可能性和影响程度,这为后续的分配权重、度量评判结果等奠定了基础。
![]() |
图 1 Android软件安全分析与信用评估分类 |
同时,根据实际业务需求,对第三方认证厂商的认证强度和其他信息安全平台获取的违规记录也进行风险评级和权重分配。
2 安全指标度量技术设计将对象APK导入逆向工程分析,得到技术风险内容和安全映射关系,并结合第三方认证厂商的认证强度和其他信息安全平台获取的违规记录,建立AHP层次分析模型,分析计算后经过人工核实和研判,最终得到对象APK的信用指标值(见图 2)。
![]() |
图 2 安全信用指标度量技术框架 |
2.1 建立AHP模型
权限访问可信主要指安卓应用的权限机制,包括Root权限,开发应用时Android Manifest.xml文件中声明的相关权限等,这样可以确保应用的行为可信性。认证强度指通过第三方企业获得的信息安全认证信息,包括百度、阿里聚安全、腾讯360、爱加密、梆梆、网秦等安全厂商对对象App的认证信息。违规记录是国内权威信息安全平台对对象App的白名单和黑名单记录,包括工信部、国家信息中心、国家互联网应急中心、公安部的信息安全平台中形成的违规信息。
根据安全风险(准则层:权限访问可信、认证强度、违规记录)权重,针对准则层次某单元(元素),本层次与其有关单元之间相对重要性的比较,建立方案层(各类)两两比较的判断矩阵(见图 3)。
![]() |
图 3 AHP建模示意图 |
在AHP评估模型中,本文按两两元素相比的重要性,从小到大取值1~9,通过比较在第二层中,取权限访问与认证强度的比值为6,权限访问与违规记录比为5,认证强度与违规记录比为2,从而得到下图的判断矩阵。判断矩阵B具有如下特征:
$ \begin{align} &\ \ \ \ \ \ \ \ \ {{b}_{ii}}=1, \ \ \ \ {{b}_{ji}}=1/{{b}_{ij}}, \\ &{{b}_{ij}}={{b}_{ik}}/{{b}_{jk}}\ \ \ \ \left( i, j, k=1, 2, \cdots, n \right) \\ \end{align} $ |
随后计算权重Wi,Wi为当前层元素分别对上层元素的权重,一致性比例为检验判断矩阵是否合格的指标,当其小于0.1则合格,λmax为判断矩阵的最大特征值。上述各值都可通过和积法求出。根据上述原则,分别对准则层的认证强度、权限访问可信和违规记录建立初始矩阵。第1个中间层中要素权限访问可信、认证强度和违规记录对决策目标的排序权重分别为0.725 8、0.172 1、0.102 0;第2个中间层中要素系统高、系统中、认证强度、系统低、违规记录、普通高、普通中、普通低对决策目标的排序权重分别为0.309 6、0.179 1、0.172 1、0.122 6、0.102 0、0.059 3、0.032 3、0.022 9。认证强度的一致性比例为0.000 0,对“信用指数”的权重为0.172 1,最大特征值λmax=1.000 0;违规记录的一致性比例为0.000 0,对“信用指数”的权重为0.102 0,最大特征值λmax=1.000 0。同时,形成方案层信用指数的初始矩阵见表 1—2,随后可计算方案层的各个App对应的信用权重。
系统高 | 系统中 | 系统低 | 普通高 | 普通中 | 普通低 | Wi |
1.000 0 | 3.000 0 | 4.000 0 | 5.000 0 | 6.000 0 | 8.000 0 | 0.426 6 |
0.333 3 | 1.000 0 | 3.000 0 | 4.000 0 | 5.000 0 | 5.000 0 | 0.246 8 |
0.250 0 | 0.333 3 | 1.000 0 | 4.000 0 | 5.000 0 | 6.000 0 | 0.168 8 |
0.200 0 | 0.250 0 | 0.250 0 | 1.000 0 | 3.000 0 | 4.000 0 | 0.081 7 |
0.166 7 | 0.200 0 | 0.200 0 | 0.333 3 | 1.000 0 | 2.000 0 | 0.044 5 |
0.125 0 | 0.200 0 | 0.166 7 | 0.250 0 | 0.500 0 | 1.000 0 | 0.031 6 |
信用指数 | 认证强度 | 权限访问可信 | 违规记录 | Wi |
认证强度 | 1.000 0 | 0.200 0 | 2.000 0 | 0.172 1 |
权限访问可信 | 5.000 0 | 1.000 0 | 6.000 0 | 0.725 8 |
违规记录 | 0.500 0 | 0.166 7 | 1.000 0 | 0.102 0 |
2.2 计算信用指标步骤
依据AHP模型的计算过程,本文的计算信用指标主要步骤如下见图 5。
![]() |
图 5 信用指标计算流程 |
步骤1 求出目标层的权数估计,用和积法计算其最大特征向量。
步骤2 和积法计算:将判断矩阵的每一列元素作归一化处理。
步骤3 将每一列经归一化处理后的判断。
步骤4 对向量W=(W1,W2,…,Wn)t归一化处理,得到特征向量的近似解。
步骤5 计算判断矩阵最大特征根λmax。
步骤6 判断矩阵一致性指标。
2.3 实现过程通过调研分析及相关资料的查阅,使用AHP法对App信用度量建模总体可分为目标层、准则层、方案层三层。其中目标层对应信用指数,准则层为权限访问可信、认证强度、违规记录,方案层为需要评估的App安全信用指数。
目标层以下每一层对上一层各影响因素生成相应阶数的判断矩阵,并进行一致性判断。在生成判断矩阵时,以往都是各专家或行业专业人士对各元素重要性打分生成,每一个矩阵生成主观影响较大,且分层较多,矩阵阶数大时,所耗费的时间精力巨大,任务繁重生成过程也可能出错,引起不必要的麻烦。因此,在本次生成判断矩阵时,考虑通过分析相关数据利用计算机较为客观的生成判断矩阵,以减轻人工工作量。
在准则层最繁琐的为权限访问可信的矩阵建立,在App中有70多个访问权限,而每一个App所拥有的权限并不相同,所以在生成相关矩阵时需要分析每一个App包含的访问权限。首先通过Android逆向工具对所要评估的全部App进行逆向分析,逆向后对App中AndroidManifest.xml文件的权限进行整理分类。将所有权限中,本文将其分为6大类,分别为系统权限(高、中、低)和普通权限(高、中、低),随统计全部评估App中所含6类权限。
统计后将数据存入文本,使用Java程序读取,在6大类中任意2个App数据相互比较,所得比值若大于1则四舍五入存入矩阵相应的位置;比值小于1,则将其倒数取近似置于矩阵位置的对称位,近似后的值在取倒数存于当前矩阵位置。如此反复循环,直到所有数据两两比较结束,生成的矩阵即为判断矩阵。
判断矩阵生成后,每个矩阵可求出对影响因素的单层权重,求权重可使用和积法和矩阵行列归一化进行计算。各层权重求出后进行总层次权重计算,并将权重排序,即为信用指数排序。
3 信用指标度量技术实验分析为了测试本文中安全信用指标度量技术的可行性和有效性,本文随机从大量的APK应用中选择了15个作为测试样本。选择15个样本是因为AHP模型对初始为15×15矩阵的支持误差较小。同时,对使用AHP度量的结果再次与第三方移动应用市场的安全违规记录结果进行二次AHP建模,建模的过程和计算流程与上述使用AHP度量过程基本相同。限于本文的篇幅,不再详细说明违规记录结果使用AHP的建模过程和计算流程。
根据AHP计算步骤,对中间层中包括认证强度系统高、系统中、系统低、普通高、普通中、普通低、违规记录等在内的要素对决策目标进行计算,如表 3所示,得出一致性比例、对“信用指数”的权重和λmax,对计算结果四舍五入,保留小数点后面4位有效数字,这个精度可适用于对超过万余款App进行较为精确度量。最后计算出方案层中的决策排序,即可得到各个应用的安全信用评分。软件安全信用指数越高,则该App越安全;反之,该App风险越高。如本实验中App3的安全信用指数较高,App1的安全风险较高。经过比对,实验中的最后结果与人工分析基本一致。而人工手动分析15个App耗时大于3 h,本文的度量方案不到10 s得到了精确评估结果,如图 6所示,分别对第1、2个中间层中要素对决策目标的排序权重,最后得到方案总排序权重(安全信用指数)。
要素类型 | 一致性比例 | 对“信用指数”的权重 | λmax |
认证强度 | 0.081 0 | 0.172 1 | 16.804 1 |
系统高 | 0.009 0 | 0.309 6 | 15.199 9 |
系统中 | 0.011 8 | 0.179 1 | 15.263 7 |
系统低 | 0.000 0 | 0.122 6 | 6.000 0 |
普通高 | 0.003 4 | 0.059 3 | 14.070 7 |
普通中 | 0.007 0 | 0.032 3 | 14.144 1 |
普通低 | 0.000 0 | 0.022 9 | 8.000 0 |
违规记录 | 0.076 1 | 0.102 0 | 16.693 1 |
![]() |
图 6 计算得到排序权重和安全信用指数 |
4 结论
虽然本文采用AHP模型度量Android软件安全信用指数的过程中存在一定的主观因素,特别是在确定重要程度指标初始矩阵的过程中,但是在随后使用AHP模型技术的过程中,会修正部分因为主观判断失误而造成的结果偏差。对于海量APK需要进行安全信用指数度量,则只需要分成每15个一组分组计算,最终的结果同样可以排序处理。同时,第三方违规记录的综合度量,使得安全信用指数的评估结果进一步准确。本文涉及的Android逆向工程未详尽讨论,但对最终评估结果也会产生一定的影响。如果评估的Android软件中存在大量加固手段非常成熟而高效的APK,甚至连权限配置文件AndroidManifest.xml都无法正确解析,那么几乎所有的安全评估度量方法都会因此而失效。这是Android软件逆向分析的工作重点,也是本文下一步需要攻克的技术难题。
[1] |
徐君锋, 吴世忠, 张利.
Android软件安全攻防对抗技术及发展[J]. 北京理工大学学报, 2017, 37(2): 163–167.
XU J F, WU S Z, ZHANG L. Survey on attack and defense technologies of Android software security[J]. Transactions of Beijing Institute of Technology, 2017, 37(2): 163–167. (in Chinese) |
[2] |
卿斯汉.
Android安全研究进展[J]. 软件学报, 2016, 27(1): 45–71.
QING S H. Research progress on Android security[J]. Journal of Software, 2016, 27(1): 45–71. (in Chinese) |
[3] | BAGHERI H, SADEGHI A, GARCIA J, et al. COVERT:Compositional analysis of Android inter-App permission leakage[J]. IEEE Transactions on Software Engineering, 2015, 41(9): 866–886. DOI:10.1109/TSE.2015.2419611 |
[4] | WANG W, WANG X, FENG D W, et al. Exploring permission-induced risk in Android applications for malicious application detection[J]. IEEE Transactions on Information Forensics and Security, 2014, 9(11): 1869–1882. DOI:10.1109/TIFS.2014.2353996 |
[5] | CEN L, GATES C S, SI L, et al. A probabilistic discriminative model for Android malware detection with decompiled source code[J]. IEEE Transactions on Dependable and Secure Computing, 2015, 12(4): 400–412. DOI:10.1109/TDSC.2014.2355839 |
[6] | YANG Z M, YANG M. LeakMiner: Detect information leakage on Android with static taint analysis[C]//Proceedings of the Third World Congress on Software Engineering. Wuhan, China: IEEE, 2012: 101-104. |
[7] | JING Y M, AHN G J, ZHAO Z M, et al. Towards automated risk assessment and mitigation of mobile applications[J]. IEEE Transactions on Dependable and Secure Computing, 2015, 12(5): 571–584. DOI:10.1109/TDSC.2014.2366457 |
[8] | YERIMA S Y, SEZER S, MUTTIK I. High accuracy Android malware detection using ensemble learning[J]. IET Information Security, 2015, 9(6): 313–320. DOI:10.1049/iet-ifs.2014.0099 |
[9] | ZHENG M, SUN M S, LUI J C S. DroidTrace: A ptrace based Android dynamic analysis system with forward execution capability[C]//Proceedings of 2014 International Wireless Communications and Mobile Computing Conference. Nicosia, Cyprus: IEEE, 2014: 128-133. |
[10] | BARTEL A, KLEIN J, MONPERRUS M, et al. Static analysis for extracting permission checks of a large scale framework:The challenges and solutions for Analyzing android[J]. IEEE Transactions on Software Engineering, 2014, 40(6): 617–632. DOI:10.1109/TSE.2014.2322867 |
[11] | GUTJAHR W J. Software dependability evaluation based on Markov usage models[J]. Performance Evaluation, 2000, 40(4): 199–222. DOI:10.1016/S0166-5316(99)00052-8 |
[12] | SHI E, PERRIG A, VAN DOORN L. BIND: A fine-grained attestation service for secure distributed systems[C]//Proceedings of 2005 IEEE Symposium on Security and Privacy. Oakland, USA: IEEE, 2005: 154-168. |
[13] |
乐洪舟, 张玉清, 王文杰, 等.
Android动态加载与反射机制的静态污点分析研究[J]. 计算机研究与发展, 2017, 54(2): 313–327.
LE H Z, ZHANG Y Q, WANG W J, et al. Android static taint analysis of dynamic loading and reflection mechanism[J]. Journal of Computer Research and Development, 2017, 54(2): 313–327. DOI:10.7544/issn1000-1239.2017.20150928 (in Chinese) |
[14] | FERNANDES E, CRISPO B, CONTI M. FM 99.9, radio virus:Exploiting FM radio broadcasts for malware deployment[J]. IEEE Transactions on Information Forensics and Security, 2013, 8(6): 1027–1037. DOI:10.1109/TIFS.2013.2259818 |
[15] |
宁卓, 胡婷, 孙知信.
基于动态分析的Android应用程序安全研究[J]. 计算机科学, 2016, 43(S2): 324–328.
NING Z, HU T, SUN Z X. Security survey on Android application based on dynamic analysis[J]. Computer Science, 2016, 43(S2): 324–328. (in Chinese) |
[16] | JARABEK C, BARRERA D, AYCOCK J. ThinAV: Truly lightweight mobile cloud-based anti-malware[C]//Proceedings of the 28th Annual Computer Security Applications Conference. Orlando, USA: ACM 2012: 209-218. |
[17] |
李舟军, 吴春明, 王啸.
基于沙盒的Android应用风险行为分析与评估[J]. 清华大学学报(自然科学版), 2016, 56(5): 453–460.
LI Z J, WU C M, WANG X. Assessment of Android application's risk behavior based on a sandbox system[J]. Journal of Tsinghua University (Science and Technology), 2016, 56(5): 453–460. (in Chinese) |