◎北京邮电大学网络与交换技术国家重点实验室信息安全中心 于成丽
北京信息科技大学理学院 吴秋新
北京邮电大学网络与交换技术国家重点实验室信息安全中心 郭燕慧
一种Android应用安全审核认证系统的设计方案
◎北京邮电大学网络与交换技术国家重点实验室信息安全中心 于成丽
北京信息科技大学理学院 吴秋新
北京邮电大学网络与交换技术国家重点实验室信息安全中心 郭燕慧
针对恶意APK文件泛滥问题,综合静态、动态安全检测和APK重签名技术,设计了一套安全的Android应用审核认证系统,它由基于Web应用的安全审核平台和智能终端APK安全认证模块构成。安全审核平台利用强健的调度子系统完成了批量APK应用的提交、安全检测、重签名、发布及统计查询功能,保证了发布到官方应用商城中APK的安全性;智能终端APK安全认证模块引入了新型的重签名技术,可有效判断APK应用是否由“官方”安全认证。由此可见,该系统从“源”(应用商城)到“端”(智能终端)保障了APK文件的安全。
安全审核平台;APK安全认证;静态检测;动态检测;APK重签名
近年来,随着操作系统、生态体系、无线互联技术的日益完善,智能电视成为继PC、手机和平板电脑之后互联网企业竞逐的一块全新领地,基于此,智能电视产业开始进入快速发展阶段。《2014年智能电视行业媒介数据报告》显示,截至2014年3月,国内智能电视销售量已超过0.35亿台,智能电视应用数量更超过3.2万款,其中,基于And⁃riod系统的智能终端操作系统已经占据了大半江山。在Android电视应用系统快速发展的同时,恶意APK应用、恶意代码、诈骗软件等随之涌现。由于Android平台的开放性,部分被收买的开发者在定制ROM时肆意破解篡改发布的APK软件安装包,在APK编译后,通过植入大量的木马病毒来窃取用户信息,给Android用户带来了严重的隐私安全和经济损失[1-3]。截至2014年7月底,恶意和高风险Android应用程序数量已经达到290万,Zhou等[4]在对第三方电子市场研究后发现,恶意代码往往通过篡改并将自身注入到正常应用程序(即重打包)的方法,达到伪装并欺骗用户下载的目的。鉴于以上原因,他们提出采用Fuzzy Hashing方法,以实现重打包检测。实验结果显示,第三方电子市场5%~13%的应用程序被黑客进行了重打包。更多研究表明[5-6],现存众多第三方电子市场由于普遍缺乏健全的Android应用审核认证机制,因此成为了恶意软件的温床。
智能电视和智能手机在应用方面不存在本质上的区别,在某种程度上,甚至可以认为是将手机上的应用照搬到电视上,因此,从饱受病毒侵扰的智能手机的现状可以预见,未来智能电视也将出现大量的安全问题。为保障整个家庭的信息安全,减少用户不必要的经济损失,搭建并维护一套安全的Android应用审核认证系统势在必得。
然而,某些Android应用审核系统单凭第三方安全检测软件对相关APK进行审核估计便发布应用商城,而当用户下载安装APK时,终端并没有认证机制来保证其安全性。从某种意义上说,这样审核机制治标不治本,它无法阻止不法分子先下载APK后对其篡改,然后再通过某些未被审核的应用商城转到Android用户。
基于此,本文提出了一套可从“源”(应用商城)到“端”(智能终端)保障APK文件安全的系统。
为彻底防御恶意APK,北京邮电大学网络与交换技术国家重点实验室信息安全中心设计了一套安全的APK应用审核认证系统。本系统除了利用静态、动态、病毒检测逐层加强APK安全性外,还可利用“官方”私钥,在智能终端中引入新型的重签名技术,通过对APK重签,以保证其安全和可认证性。同时,在智能终端嵌入APK安全认证模块,认证模块在应用安装过程中对APK进行验签,判断它是否由“官方”安全认证,从而判定它是否为已被破解、被篡改过的打包“盗版软件”,以有效确保Android用户安全使用APK软件安装包。该系统通过实施“三重保障”安全检测技术和终端重签名验签安全认证机制,可从“源”(应用商城)到“端”(智能终端)保障APK文件的安全。
本系统为应用开发者和Android用户提供了APK应用提交、安全测试、重签名、发布、终端安全认证服务。此外,系统还通过一个基于任务队列的调度子系统完成相关任务调度功能,具备高可靠性、高容错性、高效、高扩展性等特点,能够应对海量数据的并发处理和调度,同时可满足负载均衡的要求,实现了平台任务的高效处理和回收。具体设计框架及运行流程如图1所示。
本Android应用审核认证系统主要由基于Web应用的安全审核平台和智能终端APK安全认证模块构成。以安全检测技术为基础,审核平台能够检测发布到官方应用商城中的APK安全,而智能终端APK安全认证模块可利用“官方”公私钥证书对待安装到终端的APK文件进行签名验证。
1.基于Web应用的安全审核平台
基于Web应用的安全审核平台主要由用户层、应用层、数据层和网络层构成,其架构如图2所示。用户层泛指面向平台的使用对象,主要包括管理员、智能电视等静态用户和智能手机、平板电脑等动态用户;应用层主要职责是接收用户层分发的各种任务、调度并匹配平台资源、回收安全检测和重签名相关结果信息,最终将信息传递给数据层;数据层以数据库集群和磁盘阵列等形式完成各层对相应业务数据的快速存储和安全访问;网络层为系统平台网络连接、数据流量控制、网络运行状态控制等最基本网络数据传送服务。显然,应用层是审核平台的核心,本小节将主要围绕Web前端、调度子系统和功能引擎等三方面介绍平台核心应用层的体系结构。
Web前端:Web前端的主要功能是完成与用户层的交互工作,通过端口监听、查询MySQL和MongoDB数据库完成检测结果的查询与分析、数据更新与整合、文件上传与下载、APK应用状态查询、系统管理等功能。
调度子系统:调度子系统的主要功能是实现批量任务接收、调度、结果回收、结果数据存储等功能。基于任务队列和心跳反射机制,调度子系统根据评估系统性能,调度并匹配系统资源进而根据匹配结果分发任务,以保证系统资源池服务器集群的相对负载均衡。
图1 Android应用安全审核认证系统
它主要包括3部分:
1)外节点,调度子系统的对外接口。具有接收上层下发任务及检测结果、更新应用状态、同步安全检测规则库等基本数据库操作功能。
2)中心节点,调度子系统任务调度、分发的核心部分。首先,任务队列模块根据提交的任务形成待分配的任务队列并提交给任务调度模块;其次,利用指定的调度算法,任务调度模块根据子节点心跳信息匹配资源与分配任务,形成待下发任务队列并向指定的资源节点下发任务;最后,当任务完成后,结果回收模块回收结果并存储数据库。
3)子节点,调度子系统的任务下发执行及系统性能评估部分。依据中心节点的任务下发指示、执行样本检测与验证业务、回传检测结果至上层节点、根据收集的系统相关软件或硬件性能(如CPU使用率、内存占用率等)信息持续向中心节点发送心跳。
功能引擎:功能引擎是具体功能执行模块,将具有特定安全策略的软件部署在服务器中Linux虚拟机上,一般有静态、动态、病毒检测引擎和APK重签名服务。
2.智能终端APK安全认证模块
如图3所示,智能终端APK安全认证模块主要由嵌入APK安装器中验签接口、安全代理(实现验签核心工作的后台应用)和公钥证书存储区组成。
具体流程如下:
首先,APK安装器接收待激活安装的SignedApp.apk应用后,调用验签库中对外验签接口Verify(App路径)启动安全代理。
其次,安全代理在公钥证书存储区获取公钥证书,调用内部验签接口Verify并结合公钥证书对已签名的SignedApp.apk进行验签。
最后,安全代理依次通过内部验签接口、外部验签接口将验签结果返回安装器。
图2 安全审核平台体系结构
图3 APK安全认证模块结构流程
由于该认证模块仅在APK安装器中嵌入了轻量级的验签接口,而验签过程中的各种复杂计算、公钥证书的提取等流程均由安全代理完成,因此可在有效地实现模块分离的同时,保证APK安装器安全稳定地运行。
1.安全检测技术
安全审核平台的安全性由静态、动态、病毒检测技术逐层提供安全保障。首先,静态检测发现已知恶意代码片段;其次,动态检测发现未知恶意行为;最后,病毒检测把关审查文件是否被病毒、蠕虫、木马及各类恶意软件感染。病毒检测利用python编写的自动化检测脚本,上传APK到由42个第三方病毒检测引擎组成病毒检测服务器完成安全检测,此处不再赘述。下面主要介绍静态和动态检测原理。
1)静态检测
基于安全规则库的设计,静态检测以APK反编译和面向对象语言的源代码静态分析技术为核心发现已知恶意代码片段。其中,安全规则库是从源代码角度对Android应用中常见的耗费、隐私窃取等恶意行为的关键API(应用程序编程接口)调用进行总结和风险评级,来编写相应的检测规则。静态检测原理如图4所示。
首先,利用Dex-Class、Class-Java、Xml文件等反编译器对Android应用程序class.dex、AndroidManifest.xm l文件进行反编译。
其次,对反编译后Java源代码进行词法、语法解析,将分析结果转换成抽象语法树(AST),匹配静态安全规则库中API对AST进行控制流、数据流分析。
然后查询引起恶意行为的关键API调用,数据流追踪被引入敏感数据的API,精确定位到程序至怀疑出现恶意行为的关键代码段。
最后,安全风险报告器出静态检测结果。
2)动态检测
静态检测只能检测出特征库中已有的恶意代码样本,无法检测未知的恶意代码,同时它很难应对代码混淆、反射、加密等情况。针对静态检测的不足,需要进一步实施动态检测。动态检测分析主要在受控环境(真机、模拟器)中运行一个应用程序并检测其行为,可以在程序运行期间对尚未添加入恶意代码库的新型程序进行甄别。
动态检测技术,一方面包括利用Monkeyrunner等自动化测试技术对应用软件的自动安装、启动、运行测试、卸载应用程序,并对整个测试过程的界面进行截图保存;另一方面从Linux内核层安全监控出发,利用系统调用拦截机制以实现内核层的Hook功能。内核层安全监控模块是用户自定义编写的,利用LKM技术动态加载到系统内核中,在动态测试的过程中,监控应用程序运行中的恶意行为,比如发送短信、窃取用户隐私文件、后台自动联网等。当APK应用有调用行为时,内核层监控模块会记录调用行为,通过通信Netlinksocket,将信息传递给用户态的程序,并保存相应的检测报告,其具体步骤如图5所示。
图4 静态检测原理
图5 动态检测原理
2.APK重签名技术
智能终端APK安全认证模块由新型的APK重签名技术保证,它利用“官方”公私钥对待安装的APK进行重签名验签。
APK签名是Android系统对APK包完整性和发布机构唯一性的校验机制之一,其借助于SHA1、RSA等经典数字签名算法[7-8],可保证APK的安全性、完整性和不可否认性。签名后的APK包中会增加一个目录文件“/ META-INF”,含有3个开发者签名的信息文件:MANI⁃FEST.MF、CERT. SF和CERT.RSA,基本流程如图6的左半部分。然而,跟踪Android系统验签源码发现,验证3个签名信息文件虽然可以校验APK,但并没有对META-INF作自校验处理。同时,如果在META-INF中添加其他文件并不会影响APK系统验签、安装、运行和更新。
基于此,试图在APK系统签名之上,基于信任链传递机制设计一种新型的APK重签名算法,以保证认证模块的高效安全性。以 Android系统原生签名为信任根,将信任不断向上传递到APK重签名流程。重签名时,仅对MANIFEST. MF、CERT.SF、CERT.RSA重签,对其他文件不作任何处理,并将重签名文件Sign.sig和公钥钥证信息文件Info.txt独立存放到META-INF下,具体流程如图6右半部分所示。验签时,通过“官方”公钥证书利用Sign.sig对MANIFEST. MF、CERT.SF、CERT.RSA进行验签,验签结果对用户进行风险提示,用户自行选择是否继续安装。该过程不仅可保证开发者自身签名文件的完整性,而且在APK继续安装时,可进一步验证APK中所有文件的完整性,这是由于APK文件一旦被改动将会导致验签无法顺利通过。
本节分别针对该审核认证系统中的安全审核平台和终端认证模块进行测试。
1.安全审核平台
安全审核平台对1000个APK应用进行安全审核测试,其中包含400个公认的恶意应用(如:近期超级手机病毒“XX神器”)分10个批次下发。
在测试原型系统及实验平台配置中,包括服务器(3台),采用双路16核CPU,4Gbyte内存,CentOs6.2,CPU为core(TM)i3-2120CPU,3.30GHz内存大小4Gbyte,64位Windows7系统。其中,调度节点、安全检测引擎、数据库都以Linux虚拟机的形式部署在服务器上。
系统实验部署示意图如图7所示。
该系统的功能、性能等测试结果如下:
1)在安全审核结果方面,检测出正常应用数量为598,恶意引应用数量为402,此结果初步显示检测应用的误判率仅为0.20%。
2)以100个应用任务作为一批次下发到检测引擎,检测发现每次总耗费时间不超过1.3min;而对于每单次任务,平台从接收到调度平均不超过0.15min,从接收结果到回收完成不超过0.18min。
(3)静态、动态、病毒检测平均时间分别为2~3min、5~15min、不超过1min(与网络速度有关);平均大小为31.8MbyteAPK文件的重签名时间为93ms左右。
图6 APK重签名流程
图7 系统测试部署图
由此可见,安全审核平台在高准确率的安全审核前提下,可高效地完成批量APK应用的静态、动态、病毒检测和重签名调度处理工作。
2.终端APK安全认证模块
该次测试模拟真实电视用户的装机环境,选取了Android智能电视装机必备的10款不同APK应用(譬如安全工具、文件管理、购物、影音、生活等)为例进行测试,测试原型系统配置中,验签移动智能终端的配置为:CPU(1.45 Hz),RAM(2.00 Gbyte),OS(Android 4.2),测试结果如表1所示。
测试表明,Android用户在安装Android智能电视中如上10款APK应用时,利用本系统内置的APK安全认证模块平均所需等待时间仅为0.3 s,对用户安全体验满意度影响微小。
表1 Android智能电视中的10款不同APK应用验签测试结果
本文综合静态、动态、病毒安全检测和APK重签名技术,设计了一套安全的Android应用审核认证系统,它由基于Web应用的安全审核平台和智能终端APK安全认证模块构成。该系统通过采用“三重保障”安全检测技术和终端重签名验签安全认证机制,可从“源”到“端”保障了APK文件的安全使用。同时,该系统能够应对海量数据的并发处理和调度,满足负载均衡的要求,实现平台任务的高效处理和回收,具备高效、高可靠性、高容错性、高扩展性等特点。通过对第三方应用市场Android应用的分析检测以及对系统误报和漏报测试表明,本系统审核认证效果良好,具备高实用性、灵活性和可扩展性等优点,也具有较高的应用价值和推广价值。而如何联合官方安全机构、应用商城及各大智能电视终端厂商建立并维护一套可监管的、健全的、标准化的APK应用安全审核认证系统还需要集体的力量。
[1]闫梅,彭新光.基于Android安全机制的权限检测系统[J].计算机工程与设计,2013,(3):85-88.
[2] 李静华,慕德俊,杨鸣坤.Android恶意程序行为分析系统设计[J].北京邮电大学学报,2014(S1):104-107.
[3]史立原,谭金蓉.安卓电视机芯智能升级的应用研究[J].电视技术,2014,38(6):58-61.
[4]ZHOU W,ZHOU Y,JIANG X,et al. Detecting repackaged smartphone appli⁃cations in third-party Android market places[C]//Proc.the second ACM Confer⁃ence on Data And Application Security and Privacy.[s.l.]:IEEE Press,2012:317-326.
[5]BORJA S,IGOR S,CARLOS L,et al. Permission usage to detect malware in Android[C]//ProC.International Joint Conference CISIS’12-ICEUTE’12-SO⁃CO’12 special sessions,[s.l.]:IEEE Press,2012:289-298.
[6]BURGUERA I,ZRUTUZA U,NADJM S. Behavior-basedmalware detection system for Android[C]//Proc.the 15THACM Workshop on Security and Privacy in Smartphones and Mobile Devices.[s.l.]:IEEE Press,2011:15-26.
[7]DANGRAD I.A design principle for hash functions[C]//Prol.In:Crypto LNCS.[s.l.]: IEEE Press,1989:416-427.
[8]RIVEST R L,SHAMIR A,ADLEMAN L M.A method for obtaining digital sig⁃natures and public-key crypto-systems [J].Communications of the ACM,1978(21):120-126.
于成丽(1989—),硕士生,主要从事智能终端安全保障、移动互联网安全检测、安全加密、密码学、数字水印等研究;
吴秋新(1967—),副教授,硕士生导师,主要从事密码学、信息安全、可信计算等研究;
郭燕慧(1974—),副教授,硕士生导师,主要从事内容安全、软件安全、机器学习、知识发现等研究。
TP393.08
A
【本文献信息】于成丽,吴秋新,郭燕慧.一种Android应用安全审核认证系统的设计方案[J].电视技术,2014,38(20).