何远德,周序林
(1.西南民族大学外国语学院,四川 成都 610041;2.西南民族大学文学与新闻传播学院,四川 成都 610041)
随着我国几大运营商的不断投入和持续建设,移动互联网取得了长足发展,国内移动设备制造商的持续发力和国民生活水平持续增长.移动设备基本上实现了全面普及,根据中国互联网络信息中今年发布的《第40次|中国互联网络发展状况统计报告》[1]的数据,截止2017年6月,中国手机网民规模已经达到7.24亿,手机上网使用率为96.3%.
在智能移动终端如火如荼发展的同时,其安全态势也日益严峻.根据360互联网中心发布的《2017年中国手机安全生态报告》[2],报告主要从安卓移动终端入手,从系统漏洞、预装软件、手机隐私权获取、恶意程序、钓鱼网站、骚扰电话、垃圾短信、网络诈骗等8个部分就行了统计,其中的几个数据很值得我们注意,各种级别的漏洞存在均在90%以上,严重漏洞的存在率高达90.6%以上[2].从2017年1-7月,统计到的恶意程序感染数高达1.3亿人次[2],每天感染量高达61.5万人次,手机应用程序获取用户的隐私权限高达30.2%[2].
上述的数据令人触目惊心,目前安卓移动终端已经深入到各个领域,涉及到生活、生产、国家安全领域等,与人们的生活息息相关.在这种情况下,关于Android系统安全的研究大幅度增加,来自会议、期刊和网络的论文覆盖面非常广泛.文献[3-6]从安卓系统的发展历史和市场占有、安全状况做了调查、分析和展望,并从安卓的体系结构、安全机制、恶意软件分类和检测、机器学习等方面做了全面的分析和阐释.文献[7]从系统安全和应用安全的角度进行了研究.文献[8]中主要从生物识别、生物认证方面进行了研究,主要从身份认证的角度进行研究.文献[9-13]从恶意代码检测出发提出了多种解决方案,由终端和服务器协作完成,客户端完成轻量级检查,负责检查交由服务器完成;通过签名的方式对恶意代码进行识别等方法,或从app应用权限着手进行分层治理.文献[10]从Dalvik指令出发进行Android恶意代码特征形式化描述和分析方法的研究和应用,用来进行恶意代码的识别.
文献[14-15]基于svm对进行建模进行恶意代码识别研究.在参考文献[16-17]中提出基于机器学习和行为识别的方法并进行了测试实验.
综上所述,当前Android安全研究主要还是倾向于被动防御,对包进行解析、敏感api调用、应用特征码识别、已知漏洞对抗分析等.鉴于用户在Wifi环境下、不使用运营商网接入、固定终端组网、使用固定的应用程的使用场景研究相对较少;本文将基于主动防御的模式下对安卓的安全进行研究,提出应用白名单与主动防御混搭的安全框架,用于解决面向安卓集群工作环境下Android的终端安全以及集群安全.
主动防御体系从底至上依次分为三个层次:安卓传感及防护层 、数据处理中心GMC、管理台.
其中核心部分为安卓传感及防护层,主要包括底层传感器、组件传感器、应用传感器等为主动防御引擎提供支撑;主动防御引擎提供防护模式、诱捕模式、情报模式等三种使用模式;实现对各种攻击行为的感知和查杀,兼备防御、情报收集、攻击行为收集功能,主动防御主要依赖攻击行为的识别.数据处理中心GMC负责处理由安卓防护层上传的数据;管理台为用户展示整个网络空间的态势状态.Android主动防御体系的总体架构如图1所示:
图1 Android主动防御体系Fig.1 Active defense architecture
鉴于本研究中安卓终端使用场景主要限于终端无线组网,后面不再讨论Sim卡方面的问题.主动防
御系统总体结构如下图2所示:
图2 Android主动防御系统Fig.2 Android active defense system
应用场景Android系统使用对象:个体手持移动终端、车载设备、固定终端;
以独立客户端为单位组件的Android终端通信网络场景如下图3所示:
图3 Android终端应用场景Fig.3 Android terminal application scene
Android主动防御系统从技术上分为为两级架构,客户端和后端管理中心.防御客户端运行在个体手持移动终端、车载设备、固定终端等;管理中心运行在后端管理集群.
防御客户端系统基于三层结构进行设计分为展示层、功能层、引擎层三层,以简洁的方式进行人机交互,让用户掌握终端的安全状况.功能层处理应用防御、组件防御、安全策略管理、日志管理、账号权限管理、外设管理等.引擎层从Linux内核、虚拟机安全、硬件访问等层面进行监控和主动防御.
防御系统管理中心基于用户专用网络链接,采用加密链路与各客户端进行信息流和控制流的传输.防御系统管理中心对通信内容进行加密,支持对客户端的认证、鉴权功能.完成和客户端的数据安全交互,实时掌控客户端位置、活动情况;并形成终端的安全态势图,并根据终端的态势进行适当的干预,紧急情况可以发出指令让终端下线、甚至自毁.
Android主动防御客户端防御能力分两层防护:
白名单防护、基于主动防御的防护.Android管理台主要用于对组网中的Android终端之间的通讯链路进行安全加密,主动防御安全策略下发,终端安全状态呈现,对Android终端进行有效管控(远程数据销毁、系统自毁等).
3.1.1 白名单防护功能
根据Android系统的特点及用户使用的场景,用户只会固定使用指定的应用程序,采用白名单机制更适合;凡是出现在白名单的应用,终端无条件的对应用的各种行为放行.Android主动防御白名单通过如下四个方面进行处理:
1)白名单中应用进程监控,确保其应用进程不被非法改变篡改,根据应用md5指纹进行校验;
2)防御客户端保活,确保主动防御程序不被非法强制结束,也是主动防御程序的关键之一,也是目前业界主要研究的内容之一;
3)应用白名单更新,Android终端应收到下发的白名单之后,能正常进行本地白名单更新和当前活动应用的处理.
4)硬件白名单机制,蓝牙、红外、WIFI、Nfc等硬件的白名单管控.
3.1.2 基于主动防御的防护体
基于主动防御的防护功能主要确保Android终端上进程、数据及文件受到实时防护,不被篡改、修改、劫持,由如下几部分构成防护体系.
1)对应用程序的权限清单入库建立权限匹配库,对应用权限进行安全等级划分;
2)列出安卓系统的实时活跃应用进程,自动终止非白名单应用;
3)终端现阶段对蓝牙、红外、NFC等近场通讯设备进行连接探测和检查,自动终止异常连接;
4)对物理文件和内存文件进行自我保护,防止被非法拷贝和复制;
5)基于logcat记录终端运行日志,通过安全链路提交到管理平台进行入库,进行完整分析和安全评估;同时解读敏感日志进行终端预警;
6)网络访问行为沉淀生成网络行为数据库,基于此数据生成网络行为链,如果发现陌生网络行为,即时预警和处理;
7)安全评测:基于上述1)-6),进行安全评判,对安全级别进行数字化展示,让终端用户对当前的安全态势进行直观评判.
3.1.3 异常处理机制
Android主动防御客户端以保护重要文档数据及关键进程的正常运行为核心,当主动防御系统的异常阀值被触发时,启动主动防御文件防护进程,使得所有阅读文档的应有无法打开,也无法在此Android终端上安装具有文档阅读功能的应用;结束该Android终端上白名单中的重要进程,并阻止其再次启动,使得发生异常的终端失效;
Android主动防御管理台主要用于对组网中所有Android终端进行有效管控,并实时呈现总体安全态势,集群中心可以进行总体管控和决策下达,由以下几部分构成:终端联网安全准入认证、离线销毁体系建立、终端运行状态展现、安全状态指标呈现、终端在组网中的实时位置图.
3.3.1 基于主动防御的防护机制
当攻击方第一层白名单机制的限制,将非法进程添加入白名单或者非法入侵并控制白名单中的应用进程时,其之后所做的任何非法异常操作将被基于主动防御的防护机制识别、监控、并阻止;安卓主动防御引擎主要解决防御链与杀伤链之间的对抗.杀伤链通常是指网络攻击杀伤链中的各个链式环节,结构常见如下表1:
表1 杀伤链构成Table 1 Killing chain composition
主动防御链引擎构成参见下表2.
表2 防御链构成Table 2 Defense chain composition
3.3.2 底层Linux内核行为感知与防护
在操作系统底层建立驱动级的进程、设备调度、文件系统管控驱动.主动防御激活之后,会启动文件监控、进程监控、Prop监控、自我防护、行为识别五个线程进行防护.
文件系统过滤驱动将捕获文件创建、打开、删除、重命名、读写、设置、查询等动作;进程监控实时将捕获进程创建、进程终止、进程命令行及参数、本地线程创建、远线程创建、线程终止、驱动加载等;Prop监控将实时获取Android系统配置信息表的打开、创建、删除、写入、查询等;自我防护从内核层和应用层进行双重防护,如果发现有重要进程被终止,并立即进行二次启动,如果多次启动失败将把系统转入异常模式;行为识别线程基于行为库,对当前终端的行为链进行判别.
3.3.3 主动防御核心算法
文献[18]指出Android系统的Android Permission机制作为一种粗粒度的访问控制机制,不能有效地阻断应用程序对系统资源的滥用,使得Android恶意代码容易借此实施攻击.因此在安卓权限的基础上,在应用层采用基于行为的系统资源访问控制方法,对应用程序对资源的行为进行规范,防止系统资源被滥用造成对系统安全的破坏.
主要利用TLCK时序逻辑描述语言,为与系统安全相关的关键系统资源访问定义安全的行为模式,并对应用程序执行过程中的行为进行动态监视,通过匹配该应用的行为模型和资源访问的行为模型,实施访问控制,与基于恶意行为特征的恶意代码检测方法相比,资源访问行为模型更容易定义,并且能够应对未知攻击.
主动防御算法基于行为权重和递归出应用所有相关线程的行为权重进行加权判断,这样在实际训练过程中调整权重来实现权重配比的最优,具体如下:
1)算法训练期
在针对已有的恶意代码行为分析实验中,基于概率论中的大数定律建立恶意行为库,行为库作为文件分离出来并在Android内核层进行保护,以后只要更新行为库就可以进行功能强化和算法升级,所采用的常用算法和主机监控类似,但行为库及规则不一样
2)算法自我更新
在一个行为库更新发布时,即可采用回溯算法得到:能够造成泄密的所有库中行为组合并保存.在主动防御过程中,通过判断应用的自身进程树上的行为链是否包含有该行为的组合,就可以识别这一行为链是否匹配恶意行为,如果满足触发主动防御系统就进行防御处理;如果在这个处理过程中出现误判,可以人工干预,将此行为链标记为良性行为.
3)基于权重阀值的恶意行为判定
行为库中的每种行为都是恶意程序中出现概率较高的,正常程序出现概率较低的.而且每种行为都有一个权重值,窃密性越明显的通信行为权重值越高,权重值的设定基于我们的诱捕系统和自我学习行为.
步骤一:设一棵进程树上每个行为的权重值为Wi(i=1,2,…n),则具有库中n个行为的进程A得出的总权重值为:
步骤二:进程A的所有m个子进程(包括直接的及间接的)所产生的行为链的总权重值为:SubX=,如果进程 X 有子进程,则:WX =AX+SubX 否则 WX=AX.
步骤三:递归算出所有线程的权重,以不再有子进程为递归结束.即可计算出这一系列通信行为链的总权重值Wt.
步骤四:如果权重值达到了设定阀值,则说明:这一行为链具有明显的恶意行为.
步骤五:例外处理.比如:向远程传输文件等行为可以直接把权重值规定为阀值,立即判为异常.对一些特殊进程(配合进程名和文件内容校验)需要设置经验策略.
通过步骤一到步骤五构成主动防御的核心算法基础.
4)行为库建立
安卓应用大多数都通过安卓sdk开发完成,个别应用会辅助Ndk进行原生开发.行为链的构建主要基于安卓权限、Api调用、系统配置修改、文件操作、硬件调用、网络操纵六个部分进行建设.
主动算法行为链中主要对安卓权限、Api调用进行权重维护.安卓权限目前具有一百多种,例如:“android.permission.WRITE_EXTERNAL_STORAG”是允许写外部存储权限,属于高权值权重;而“android.permission.READ_EXTERNAL_STORAGE”是允许读外部存储权限,属于低权值权重.安卓公开了若干Api,我们对Api进行分组整理建立权值库,如“Android.telephony.TelephonyManager.getCellLocation()”是进行位置获取的 Api,是属于高权值 Api;而“android.telephony.TelephonyManager.getDeviceId()”获取设备id信息,权值相对偏低.其他部分的权重信息采集先对单纯一些,不再赘述.
主动防御客户端在安卓5.0,6.0下面开发测试通过,在程序实现上主要需要解决活跃进程的读取、有异常行为的进程的关闭、应用权限列表的获取等.
客户端通过调用 ActivityManager的 getRunningAppProcesses()方法获得当前系统里所有正在运行的应用进程 ,此代码在安卓5.x和安卓6.x下面调试通过.安卓版本更迭快速,关键位置的处理需要针对不同的版本进行不同的处理,运行效果如下图4所示.关键代码如下:
图 4后台进程展示Fig. 4Background process display
Android进程终止处理早期在安卓4.x以前的版本中,可以调用 ActivityManagerNative的 killBackgroundProcesses()方法.但是 5.x,6.x版本中此方法已经失效,只能通过调用安卓的辅助服务功能进行进程的关停.
安卓系统中PackageManger的主要职责是对应用程序包进行管理,通过它可以获取应用程序的相关信息,抽取权限的部分代码如下:
白名单+主动防御的安全体系架构是针对国内特殊行业的需求做的定制设计,目前处于测试运行中,系统运行稳定,管理中心对终端集群整个运行态势、安全态势做到了集中可控.
但是安卓的版本不断升级演进,整套体系架构目前大部分功能还是基于应用层来展开;现在存在的问题在于安卓版本一旦升级,通常都会涉及安全架构的升级,影响安全客户端的有效工作;后续的研究需要基于安卓源代码进行,进行安全线程的底层植入,确保更加自主可控;进行恶意行为判定算法的深入研究向智能算法升级.
[1]中国互联网络信息中心.第40次中国互联网络发展状况统计报告[R/OL].(2017-08-07)[2017-12-01].http://www.cnnic.net.cn/hlwfzyj/hlwxzbg/hlwtjbg/201708/P020170807351923262153.pdf.
[2]360互联网安全中心.2017中国手机安全生报[R/OL].(2017-09-13)[2017-12-01].http://zt.360.cn/dl.php?filename=2017中国手机安全生态报告.pdf.
[3]卿斯汉.Android安全研究进展[J].软件学报,2016,27(1):45-71.
[4]LA POLLA M,MARTINELLI F,SGANDURRA D.A survey on security for mobile devices[J].IEEE Communications Surveys & Tutorials,2013,15(1):446-471.
[5]卿斯汉.Android安全的研究现状与展望[J].电信科学,2016,32(10):2-14.
[6]FANG Z,HAN W,LI Y.Permission-Based Android security:Issues and countermeasures[J].Computers & Security,2014,43:205-218.
[7]张玉清,王凯,杨欢,等.Android安全综述[J].计算机研究与发展,2014,51(7):1385-1396.
[8]许艳萍,马兆丰,王中华,等.Android智能终端安全综述[J].通信学报,2016 ,37(6):169-184.
[9]文伟平,梅瑞,宁戈,等.Android恶意软件检测技术分析和应用研究[J].通信学报,2014,35(8):78-85.
[10]李挺,董航,袁春阳,等.基于Dalvik指令的Android恶意代码特征描述及验证[J].计算机研究与发展,2014,51(7):1458-1466.
[11]ELISH KO,SHU X,YAO D,et al.Profiling user-trigger dependence for Android malware detection[J].Computers & Security,2015,49(C):255-273.
[12]FARUKI P,LAXMI V,BHARMAL A,et al.Andro Similar:Robust signature for detecting variants of Android malware[J].Journal of Information Security and Applications,2015,22:66-80.
[13]LIU X,LIU J.A two-layered permission-based Android malware detection scheme[C].2014 2nd IEEE International Conference on Mobile Cloud Computing,Services,and Engineering,2014,142-148.
[14]龚明明,吴汉,孙知信.基于SVM的Android应用程序安全检测综述[J].计算机应用研究,2017,34(4):965-971.
[15]董航,李祺,董枫,等.基于HMMs-SVM的Android恶意行为动态检测模型[J].北京邮电大学学报,2014:10-19.
[16]雷经纬.一种基于行为的Android恶意软件检测系统的设计及实现[D].武汉:华中科技大学,2015.
[17]卜义云.基于机器学习的Android恶意软件静态检测系统的设计与实现[D].成都:电子科技大学,2016.
[18]雷灵光,荆继武,王跃武,等.一种基于行为的Android系统资源访问控制方案[J].计算机研究与发展,2014,51(5):1028-1038.