基于SEAndroid 的移动设备远程管理

2018-09-10 12:32杨中皇梁善强詹维骁
西安邮电大学学报 2018年3期
关键词:应用程序客户端服务器

杨中皇, 梁善强, 詹维骁

(1. 高雄师范大学 软件工程与管理学系,台湾 高雄 82444;2. 西安邮电大学 无线网络安全技术国家工程实验室, 陕西 西安 710121; 3. 中国信息通信研究院, 北京 100191)

Android操作系统具有开源性和可定制性,且兼容性强,是最受制造商们欢迎的操作系统之一[1-2]。由于具备携带方便、普及范围广和存储容量大的优点,自携设备(bring your own device, BYOD)在企业的日常办公中颇受欢迎[3],移动办公已成市场潮流[4]。但是,针对Android设备的恶意攻击也随之大量增加[5]。企业为保护其内部数据不被窃取和丢失,必须对移动终端设备进行管理[6]。

Google公司从其发布的Android 2.2开始,向开发者提供移动设备管理(mobile device management, MDM)接口,以实现移动设备管理功能[7]。不过,企业在移动设备管理中面临着诸多问题:移动设备体积小容易丢失,造成企业内部隐私数据容易丢失;员工使用的BYOD自由度必须进行控制,防止内部员工盗取数据[8];移动设备存在恶意软件,如果访问企业内部网络,容易造成恶意攻击等。

本文将针对Android 8.0中SELinux系统分区的变化,分析SEAndroid安全机制,提出实现移动设备管理功能的设计架构,并设计出一个支持企业BYOD的基于SEAndroid的移动设备远程管理系统。该系统可实现对移动设备功能的远程禁止和开启、应用程序SM3 Hash值校验、远程权限管理、推送消息和定制ROM等功能。

1 Android 8.0与SEAndroid

1.1 SELinux for Android 8.0

安全增强型Linux(security enhanced linux,SELinux)是美国国家安全局(National Security Agency, NSA) 支持开发的开源项目。SELinux安全模型为强制访问控制(mandatoryaccess control, MAC)[9],它支持默认拒绝原则,只有经过授权方可获得访问权限。

从Android 4.4到Android 7.0,Android SELinux通过合并所有的sepolicy(platform和non-platform),在根目录中生成单一文件,并且大多数SELinux文件保存在rootfs中。原始设计制造商(original design manufacturer, ODM)以及系统芯片(system on chip, SOC)想要修改策略都要修改boot.img或system.img。Android 8.0提出了策略模块化和策略兼容性的方法,策略开发人员可以为特定的模块编写独立的策略集,这些策略集会作为策略模块被构建和分配[10]。模块化的方法使设备供应商修改部分SELinux策略时,只需修改其对应的分区。

在Android 8.0中SELinux policy分为平台(platform,如system.img)和非平台(non-platform,如vendor.img)组件,并允许平台/非平台策略独立更新,同时保持兼容性。Android 8.0提供的这种平台与非平台SELinux策略分开的方法,方便供应商独立构建和更新策略。Sepolicy进一步分为private和public等,public sepolicy包含system/sepolicy/public下定义的所有内容,在public policy下定义的类型和属性是给定稳定应用程序编程接口(application programming interface, API),策略开发者可以编写特定策略进行开发;private sepolicy包括在system/sepolicy/private下定义的所有内容,这一部分形成平台功能所需的类型、权限和属性。SELinux policy存在的位置和功能如表1所示。

表1 policy文件存在位置及内容

Sepolicy 文件由多个源文件组成,具体文件组成如图1所示。

图1 sepolicy文件组成来源

1.2 Android 8.0系统分区

在Android 8.0之前,vendor.img,odm.img和oem.img不必须存在,如果不存在,则使用符号链接将属于这些镜像的文件放在boot.img或system.img中。Android 8.0发起了Project Treble项目,这是Android操作系统框架在架构方面的一项重大改变,旨在让制造商以更低的成本更轻松、更快速地将设备更新到新版Android系统,Project Treble提供了一个稳定的新供应商接口,供设备制造商访问Android代码中特定于硬件的部分,这样一来,设备制造商只需更新Android操作系统框架,即可跳过芯片制造商直接提供新的Android版本。对于Project Treble,Linux内核的长期支持已经从2年延长到6年,这意味着在设备的长期生命周期内不会再错过对内核的主要修复。Android 8.0 vendor(供应商)分区是强制性存在的,Treble提供的标准化接口来模块化分区,如图2所示。

这个标准接口使得只更新Android Platform(例如,system.img)等而不影响SOC和ODM分区。例如,可以将设备system.img从Android 8.0升级到更高版本,而其他镜像(例如vendor.img, odm.img等)则保留在Android 8.0。通常在由Google发布新版本的Android开源项目(android open source project, AOSP)之后,还需要芯片制造厂商对硬件抽象层(hardware abstraction layer, HAL)进行升级,设备制造商对HAL和Framework进行升级后,用户才能在设备上收到在线下载(over-the-air, OTA)升级包的推送。这种模块化可以实现及时的Android Platform升级(如每月安全更新),而无需更新SOC/ODM。另外,Google表示他们正在提升对硬件安全的支持,比如对其安全框架进行升级,推出Android验证开机模式2.0(android verified boot 2.0, AVB 2.0)。AVB 2.0会建立从Bootloader到系统镜像的信任链,主要用于防止系统文件本身被篡改,还包含防止系统回滚的功能,以免有人试图回滚系统并利用以前的漏洞。Android 8.0系统分区如图3所示。

图2 Android更新模型对比

图3 Android 8.0系统分区

1.3 SEAndroid

Android传统的安全模型主要基于应用沙箱,每个应用都运行在各自的应用沙箱内[11]。从Android 4.3起,Security Enhancements for Android project项目组将SELinux 修改后集成到了Android中,称其为SEAndroid[12]。

SEAndroid机制可有效地防止应用程序漏洞与提权攻击,其架构与运作流程如图4[13]。

图4 SEAndroid运作流程

运作过程中Security Policy实时允许或拒绝主体对内核客体的访问,sepolicy文件以二进制格式保存于系统之中。策略规则采用形式allow domains types:classes permissions。其中:Domain为一个或一组进程的标签,Type为一个对象(例如,套接字、文件等)或一组对象的标签,Class为要访问的对象(例如,套接字、文件等)的类型,Permission为要执行的操作(例如,写入、读取等),rule_name有allow、dontaudit、auditallow和neverallow等关键字。

Android 8.0 SELinux上下文标签比较之前的版本发生了较大变化,file_contexts、property contexts、service contexts、seapp contexts、mac permissions等标签文件都分为了平台和非平台两部分,例如,file_contexts分为plat_file_contexts和nonplat_file_contexts,plat_file_contexts标记平台正常运行的供应商分区部分,在init启动时加载nonplat_file_contexts,nonplat_file_contexts,Boardconfig.mk文件中的BOARD_SEPOLICY_D-IRS指向设备特定的file_context。

可以使用seinfo工具对SEAndroid的sepolicy文件进行分析,Android 6.0至Android 8.0的sepolicy策略文件分析结果如表2所示。

表2 Android各版本sepolicy策略文件分析结果

2 移动设备管理概述

2.1 移动设备管理

移动设备管理属于企业的管理内容,可以实现移动设备的开发,保护,监控,集成和管理功能[14]。MDM的目的是提高移动设备的内部安全性[15-16],有效保护设备中与企业隐私有关的资料,同时保护企业网络安全。

2.2 移动设备管理实现方案

AndroidPN(Android Push Notification)是一套针对Android的开源服务推送的软件,主要使用Java Server Pages编写而成,可以在Tomcat服务器上运行,使用可扩展消息与存在协议(extensible messaging and presence protocol, XMPP)传输协定由服务端推送消息至客户端。基于XMPP的推送机制无需担心服务器在国外带来的推送信息延迟且不稳定,也不存在使用国内第三方推送平台带来的安全风险。同时该机制继承了可扩展标记语言(extensible markup language,XML)的优点,具有很强的扩展性,可实现复杂通信。服务端以此软体为基础,结合国家加密算法SM4对指令和消息进行加密处理,并使用SM2生成公私钥来保证消息的完整性与不可否认性。该软件添加MDM所需的各项功能,将其修改为远程管理服务器,实现移动设备远程管理的功能。

3 系统架构设计与功能实现

3.1 系统架构

Android安全的远程管理系统由客户端和服务器两部分组成,系统架构如图5所示。服务器包括sepolicy更新、权限管理、应用程序管理、消息推送的功能,客户端主要由Google提供的Android 8.0源代码修改并加入客户端应用程序,可以对系统内应用行为及权限风险系数进行监控。其运作的方式为服务器发送命令触发客户端应用程序。

(1) sepolicy更新

管理人员通过替换设备原有的policy文档以实现对设备相关功能的控管,依据不同情况设定不同的policy文档,在不重新开启设备的状态下,提高核心层保护。

(2) 权限管理

通过关闭设备上应用程式权限,达到保护使用者隐私资料的目标。

(3) 应用程序管理

对设备内Android应用程序包(android application package,APK)进行SM3 Hash值计算并传达服务端,管理者将Hash值与存在服务器正确的值比对,确认APK版本是否错误或遭到篡改,如果Hash值错误,可对APK进行远程卸载。

(4) 推送消息及定制ROM

管理者可随时发布企业通知和企业定制的ROM更新包到指定设备。

图5 系统架构

3.2 系统设计

本系统服务器可运行在Windows、Ubuntu等支持Java环境的操作系统,搭配推送服务开源软件AndroidPN修改而成,详细服务器开发与测试环境如表3所示。客戶端开发系统为Android 8.0源码,由Java程语言以及Google Android APIs开发而成详细客户端开发和测试环境如表4。

表3 服务器开发与测试环境

表4 客户端开发与测试环境

功能实现上,“sepolicy更新”通过替换sepolicy文档与使用指令达到修改sepolicy功能,并可以获得设备内核错误讯息。“权限管理”由Android指令pm(Package Manager)管理应用程序权限。“应用程序管理”通过MessageDigest对安装到设备的APK使用国产加密算法SM3进行Hash值计算,并将结果返回到服务器,与服务器保存的Hash进行比对,结果相同即为正常APK,结果出现差异说明APK带有疑似恶意攻击,将进行远程卸载。“推送”使用XMPP传输协定推送消息至客户端,由AOSP编译后定制的ROM推送到设备,设备进行Android系统更新。客户端独立具有系统应用程序监控与权限风险系数评估。

3.3 系统实现功能

3.3.1 客户端功能

基于企业MDM管理,将Android 8.0原代码修改后加入MDM客户端应用程序,将此修改的原代码编译成ROM再刷入设备中。客户端应用程序提供与服务器进行通讯连接,主界面如图6所示,另外,设备开机后客户端即开机启动。客户端还具有权限检测和应用活动监控的功能。

图6 客户端主界面

点击应用监控和权限检测后,功能如图7、图8,应用监控可对“拨打电话”、“发送资料”等活动进行监控。权限检测评估分数若大于7分,风险为高等,小于5分为低等,大于5分小于7分为中等。移动终端设备使用者可对设备安全及隐私状态进行动态了解。

图7 应用活动监控

图8 权限隐私检测

3.3.2 服务端功能

移动设备管理系统服务器端,在设备管理界面显示受服务器管理的设备,界面显示目前设备名称、在线状态、客户端IP、以及注册日期等。设备管理界面如图9所示。

图9 服务器设备管理界面

(1) Sepolicy更新

Sepolicy更新界面,通过替换设备原有的sepolicy文档实现对设备相关功能的管理,点击选择设备后,选择需禁止或开启的功能后,点击更新按键即可实现功能管控。另外,还具有远程清除设备数据和远程锁屏,防止设备丢失后隐私资料外泄。具体功能如图10所示。

(2) 权限管理

权限管理介面显示可管理应用程序过开、关按键,开启或关闭所管理设备上所有第三方应用程序指定权限,点击详情,可显示权限详细信息,如图11所示。

(3) 应用程序管理

应用程序管理使用国产加密算法SM3对Hash值进行计算,并将结果返回到服务器,与服务器保存的Hash值进行比对,当Hash值不同时显示红色,可对应用程序进行卸载,并重新安装,如图12所示。

图10 sepolicy更新与远程清除数据界面

图11 权限管理界面

图12 第三方应用管理

(4) 推送消息及定制ROM

消息推送功能为AndroidPN原有功能,如图13所示。在此基础上进行稍微修改,点击发送按键客户端即收到消息,此功能无需借助任何第三方消息推送平台,即可完成消息推送,消息使用国产加密算法SM4加密。由AOSP编译后定制的ROM包可推送到客户端,客户端可进行Android版本的更新。

图13 推送界面

4 研究结果分析

关于MDM,文献[17]的研究目标为客户端能在多种作业系统(Android、IOS、Windows)中运行,文献[11]的研究目标为验证应用程序的正确性和客户端位置信息获取,本研究关注的移动设备核心层安全加强机制,与单一的MDM相比,功能更加完善。因主要研究目标不同,在实现时有不同功能和系统特色,上述研究中主要功能比较如表5所示。

表5 相关功能比较

5 结语

本研究以SELinux为基础,以企业BYOD策略下移动设备管理为目标开发一套Android核心层与应用层移动设备远程管理系统。本系统协助管理人员对设备安全问题作出回应,提升企业内部设备安全性。主要针对Android核心层的SEAndroid的security policy及时更新并进行分析,通过此功能可从核心层限制进程权限。应用层主要以管理第三方应用程序为主,通过APK校验和权限管控,使应用程序使用在尽可能的安全范围内,在APK校验失败后,可提示用户立即解除应用并重新安装,确保设备内企业资料不外泄。客户端和服务端通信使用国产密码算法SM4进行加密,并使用SM2生成公私钥来保证消息的完整性与不可否认性,保证数据在通信过程的安全性。

猜你喜欢
应用程序客户端服务器
服务器组功能的使用
通信控制服务器(CCS)维护终端的设计与实现
删除Win10中自带的应用程序
如何看待传统媒体新闻客户端的“断舍离”?
PowerTCP Server Tool
谷歌禁止加密货币应用程序
县级台在突发事件报道中如何应用手机客户端
孵化垂直频道:新闻客户端新策略
大枢纽 云平台 客户端——中央人民广播电台的探索之路
计算机网络安全服务器入侵与防御