Download presentation
Presentation is loading. Please wait.
1
Android移动应用安全 加固方案介绍 北京大学 软件与微电子学院 2017年3月
2
主要内容 加固方案总体概况 加固方案涉及到的关键技术 2
3
加固方案总体概况 应用层 本加固方案根据客户的安全需求,实现了对Android平台的安全加固。 按体系结构划分,本方案主要涉及以下几个层次:
驱动层 Linux内核层 Android框架层 Android应用层 应用层 框架层 驱动层 内核层 核心库 SELinux 3
4
加固方案总体概况 用户接口 本方案主要特点 “安全助手”应用,利用图形界面进行精细化操作。 策略文件,类似于批处理,可以实现快速方案部署。
立足于全志Android 4.0.4解决方案,通用型强。 采用基于SELinux(来自于美国国家安全局NSA)的动态安全加固技术,安全性高。 用户界面美观易用,功能设计合理,能够在不影响性能的前提下,满足客户的安全需求。 4
5
加固方案关键技术 本方案关键技术可分为8项: 登录时身份认证 网络访问控制 安装时授权检查 运行时授权检查 系统升级授权检查 安全状态检测
全局外设管理 安全审计 需求分析 详细设计 关键技术 5
6
登录时身份认证 背景 Android终端通常有设置PIN码的需求。现有技术通常在系统启动后进行PIN码验证,容易被Root从而绕过验证。 方案 在Boot引导时进行PIN码校验,有效防止Root等非法行为。 6
7
登录时身份认证 技术难点 如何在系统启动之前实现PIN码验证这种界面交互操作? 如何存储正确PIN码?
在BootLoader状态,实现显示驱动和触摸屏驱动,加载FrameBuffer子系统和Input子系统,分别处理键盘显示、PIN码输入框显示和用户输入检测。 如何存储正确PIN码? PIN码格式为8位数字,以某种安全方式存储于安全TF卡中,需要专门的TF卡操作接口才能够读取,当用户输入正确PIN码时,方可进入系统。 安全TF卡中的数据经过了加密处理,其他人无法读取。 7
8
登录时身份认证 登录校验流程图 PIN码校验用户界面 8
9
网络访问控制 背景 方案 目前针对Android平台的网络攻击频发,如何从网络层面保护终端免受外部的蠕虫攻击、或者内部木马的外连请求。
现有技术通常只从应用的角度对网络进行限制,无法实现IP地址、端口级别的细粒度访问控制。 方案 采用基于iptables规则的防火墙过滤技术进行数据包的过滤,将来自外部的非法数据包拦截并丢弃,从而实现网络的访问控制。 同时实现网络层过滤和应用层过滤。网络层过滤从IP地址和端口的角度对网络访问进行控制;应用层过滤限制了终端上每个应用是否能够WIFI网络或者蜂窝网络。 9
10
网络访问控制 技术难点 防火墙规则编写的技术门槛较高,如何令普通用户也能实现规则配置?
我们在iptables技术的基础之上实现了脚本批处理功能,能够通过云端自动向各Android终端发送脚本指令,实现防火墙规则的自动配置,几乎可以实现傻瓜式操作。 外部攻击类型层出不穷,如何保证防火墙能够有效抵御攻击? iptables技术可以实现数据包的记录功能,通过可疑数据包上传到云端进行分析,可以有效发现新型类型的攻击,从而利用云端的脚本快速部署,实现对各Android终端防火墙的实时更新,有效抑制0Day漏洞的危害。 10
11
网络访问控制 网络层规则示意图 应用层规则示意图 11
12
安装时授权检查 背景 方案 Android平台恶意软件层出不穷,需要实现软件的授权安装,即不允许未授权的应用在终端上进行安装。
采用白名单模式对安装应用进行限制,未出现在白名单中的应用禁止安装。 12
13
安装时授权检查 技术难点 如何识别应用的身份? 如何实现应用安装动作的拦截?
签名标识了一个应用的发布者的身份,无法伪造,因此利用签名作为应用的身份认证机制较为安全。可以在白名单中存放签名文件。 如何实现应用安装动作的拦截? 系统应用安装――开机时完成,没有安装界面; 网络下载应用安装――通过market应用完成,没有安装界面; ADB工具安装――没有安装界面; 第三方应用安装――通过SD卡里的APK文件安装,有安装界面,由packageinstaller.apk应用处理安装及卸载过程的界面; Android共有上述四种安装方式,分别设置钩子函数进行拦截。 13
14
在scanPackageL这里设置钩子函数!
安装时授权检查 Android应用安装UML序列图 在scanPackageL这里设置钩子函数! 14
15
运行时授权检查 背景 为了防止某些应用偷发短信、偷偷上网等问题,需要对各应用的权限进行动态管理。目前Android 4.0平台仅仅是将应用所要申请的权限在安装时显示给用户,而一般用户在安装时根本不会去仔细查看权限列表。 方案 设计了针对应用的授权管理机制,并开发应用“安全助手”作为用户界面。 在“安全助手”中可以实现对所有应用权限的查看、修改。 对权限的动作包括两种:允许和禁止。 15
16
运行时授权检查 技术难点 如何实现应用权限调用动作的拦截?
Android系统上应用软件的权限共有130多种,通过对每一种权限的调用API处设置钩子函数,从而在运行时有效拦截权限调用。 权限描述 权限定义 读取联系人权限 android.permission.READ_CONTACTS 写入联系人权限 android.permission.WRITE_CONTACTS 读取SMS权限 android.permission.READ_SMS 监听处理收到的 SMS 权限 android.permission.RECEIVE_SMS 编辑 SMS 权限 android.permission.WRITE_SMS 发布 SMS 权限 android.permission.SEND_SMS 访问网络权限 android.permission.INTERNET 录音权限 android.permission.RECORD_AUDIO 拍照权限 android.permission.CAMERA 定位权限 android.permission.ACCESS_FINE_LOCATION 16
17
运行时授权检查 应用程序列表 权限的查看、修改 17
18
系统升级授权检查 背景 在系统更新时,为了防止用户采用非法升级包从而破坏原有系统,需要对系统升级包进行校验。现有的系统升级包校验机制与应用安装包校验机制相同,安全性得不到保障。 方案 为安全起见,方案增加了系统升级包专用的签名验证机制,只有当待安装的系统升级包同时满足“应用安装包校验”和“系统升级包签名验证”时,才能够在终端上进行安装升级,从而保证系统升级的安全性和可靠性。 18
19
系统升级授权检查 技术难点 如何实现更安全的系统升级包校验? 采用安全签名算法:SHA1-RSA 采用自定义的签名格式,较难被破解。
字段 含义 占用大小 字序 注释 MAGIC 固定标示,总是为: 0x58 0x44 0x4A 0x41 4BYTES 按字节写入 字符XDJA SIG_OFFSET 签名数据(SIG_BODY)的偏移位置 2BYTES 小端 以SIG_BLK的起始为偏移0 SIG_SIZE 签名数据的大小 SIG_BODY 签名数据 128BYTES 由两部分组成:签名数据、验签证书。签名数据大小为128Bytes;证书大小一般为1024Bytes左右! 验签证书 SIG_SIZE-128 TOTAL_SIZE SIG_BLK的总大小 包括TOTAL_SIZE自身占用的大小 19
20
安全状态检测 背景 现有Android系统一旦被Root,意味着其他应用可以随便获得系统最高权限,毫无安全性可言。因此,有必要设计一种机制检测用户或者恶意软件的Root行为。 方案 在系统启动之后,运行一个后台线程,定时(如每5分钟)对当前系统运行状态进行检测。 如果root检测呈阳性,则可以采取惩罚性措施,比如系统不能再开机。 20
21
安全状态检测 技术难点 如何进行Root检测? 执行root专属命令,看其执行是否成功来判断。
在内核层次,对/system/bin目录进行扫描,检测是否存在su程序,若存在su程序,则可以以很大概率判断此终端已经被Root。 实现Root的特征库,对现有Root方法进行特征收集,利用类似杀毒软件的方式对Root行为进行防控。 21
22
安全审计 背景 为了统一管理,Android终端上用户的一切非法操作行为及终端负载信息,有必要提交到管理后台进行统计分析。现有Android平台并无此功能。 方案 日志包括: 非法操作行为:PIN码校验失败,应用安装失败,系统更新失败,访问非法网络,应用运行发生权限异常 (SecurityException); 终端负载信息:照片,录音音频,摄像视频。 本方案需要实现日志的记录、提取和上传,分别由日志记录模块、日志提取模块和日志上传模块负责完成。 22
23
安全审计 日志记录 非法操作行为主要有两种:一种是系统原有认定的非法操作行为(如应用运行发生权限异常,程序意外关闭,ANR等);一种是由本方案设计的安全加固机制触发的非法操作行为(如PIN码校验失败、应用安装失败、系统更新失败、访问非法网络)。 对于前者,Android系统会自动进行记录,不需要人工干预;对于后者,我们可采用Log.e接口实现日志记录,日志级别为ERROR,下面附Android系统日志级别: Android系统的日志级别共有五级: ERROR:错误; WARN:警告; INFO:信息; DEBUG:调试信息; VERBOSE:详细信息。 23
24
安全审计 日志提取 由于在日志持久化后,非法操作行为已经成为文件的形式。终端负载信息本身也是文件形式。因此,日志提取本身就是文件提取。可以通过读取外部存储来获取。具体需要利用Java的File接口(需要android.permission.READ_EXTERNAL_STORAGE权限) 每种类型的日志的存储目录如下: 名称 标识符 目录 非法操作行为 log /sdcard/log_history 照片 image /sdcard/DCIM/Camera/image 视频 video /sdcard/DCIM/Camera/video 录音 sound /sdcard/MIUI/sound_recorder 24
25
安全审计 日志上传 日志上传由客户端和服务器端两部分实现,终端设备作为客户端向服务器端上传日志。
客户端日志上传方式,目前采用主动上传方式,即终端用户通过操作界面,实现日志上传,如图所示的“一键上传非法操作”和“一键上传终端负载”按钮。也可以增加自动上传方式,即系统以一定频率定时以后台方式上传日志信息。 25
26
ly veotax@pku.edu.cn 北京大学 软件与微电子学院 2017年3月
敬请批评指正,谢谢! ly 北京大学 软件与微电子学院 2017年3月
Similar presentations