【第25章】移动应用安全需求分析与安全保护工程
25.1 移动应用安全威胁与需求分析
25.1.1 移动应用系统组成
包括三个部分:
一是移动应用,简称 App;
二是通信网络,包括无线网络、移动通信网络及互联网;
三是应用服务端,由相关的服务器构成,负责处理来自 App 的相关信息或数据。
25.1.2 移动应用安全分析
移动应用的安全威胁主要有以下类型。
1. 移动操作系统平台安全威胁
2. 无线网络攻击:实施通信内容监听、假冒基站、网络域名欺诈、网络钓鱼等攻击活动。
3. 恶意代码:常见的恶意行为有流氓行为、资费消耗、恶意扣费、隐私窃取、远程控制、诱骗欺诈、系统破坏、恶意传播等。
4. 移动应用代码逆向工程
5. 移动应用程序非法篡改:非法篡改移动应用程序,实现恶意的攻击,窃取用户信息。
---------------
25.2 Android 系统安全与保护机制
25.2.1 Android 系统组成概要
Android是一个开源的移动终端操作系统,其系统结构组成共分成: Linux内核层(Linux Kernel) 、系统运行库层(Libraries 和Android Runtime) 、应用程序框架层(Application Framework) 和应用程序层(Applications)。
25.2.2 Android 系统安全机制
1. 权限声明机制
权限声明机制,为操作权限和对象之间设定了一些限制,只有把权限和对象进行绑定,才可以有权操作对象。
2. 应用程序签名机制
Android 将应用程序打包成APK 文件,应用程序签名机制规定对 APK 文件进行数字签名,用来标识相应应用程序的开发者和应用程序之间存在信任关系。
3. 沙箱机制
沙箱隔离机制使应用程序和其相应运行的 Dalvik 虚拟机都运行在独立的 Linux 进程空间,不与其他应用程序交叉,实现完全隔离。
4. 网络通信加密
Android 支持使用 SSL/TSL 协议对网络数据进行传输加密,以防止敏感数据泄露。
5. 内核安全机制
Android 系统的内核层采用分区和 Linux ACL 权限控制机制。
Linux ACL 权限控制机制是指每个文件的访问控制权限都巾其拥有者、所属的组、读写执行三个方面共同控制。文件在创建时被赋予了不同的应用程序 ID,只有拥有相同应用程序 ID 或被设置为全局可读写才能够被其他应用程序所访问。每个应用均具有自己的用户 ID, 有自己的私有文件目录。在系统运行时,最外层的安全保护由Linux 提供,其中system.img 所在的分区是只读的,不允许用户写入,data.img 所在的分区是可读写的,用千存放用户的数据。在 Android2.3 版本之后增加了基千硬件的 NX (No execute) 支持,不允许在堆栈中执行代码。在 Android4.0 之后,增加了“地址空间布局随机化(Address Space Layout Randomization, ASLR) "功能,防止内存相关的攻击。Android 进一步支持具有强制访问控制功能的 SELinux,防止内核级提权攻击。
---------------
25.3 iOS 系统安全与保护机制
iOS 的系统架构,其分为四个层次:核心操作系统层(Core OS Layer) 、核心服务层(Core Services Layer)、媒体层(Media Layer) 和可触摸层(Cocoa Touch Layer)
25.3.2 iOS 系统安全机制
iOS 平台的安全架构可以分为硬件、固件、软件。
硬件、固件层由设备密钥、设备组密钥、苹果根认证、加密引擎、内核组成。
软件层则由文件系统、操作系统分区、用户分区、应用沙盒及数据保护类构成。
苹果基于这一整体安全架构,集成了多种安全机制,共同保护 iOS 平台的安全性,主要安全机制如下。
1. 安全启动链
2. 数据保护
3. 数据的加密与保护机制
4. 地址空间布局随机化
5. 代码签名
6. 沙箱机制
---------------
25.4 移动应用安全保护机制与技术方案
25.4.1 移动应用 App 安全风险
移动应用 App 是指运行在智能设备终端的客户端程序,其作用是接收和响应移动用户的服务请求,是移动服务界面窗口。由千移动应用 App 安装在用户的智能设备上(通常为智能手机),很容易遭受到反编译、调试、篡改、数据窃取等安全威胁。
25.4.2 移动应用 App 安全加固
为保护移动应用 App 的安全性,通常采用:
1. 防反编译
对移动应用程序文件进行加密处理,防止攻击者通过静态的反编译工具,获取到应用的源代码。
2. 防调试
为防止应用程序动态调试,应用程序设置调试检测功能,以触发反调试安全保护措施,如清理用户数据、报告程序所在设备的情况、禁止使用某些功能甚至直接退出运行。
3. 防篡改
通过数字签名和多重校验的防护手段,验证移动应用程序的完整性,防范移动应用程序APK 被二次打包以及盗版。
4. 防窃取
对移动应用相关的本地数据文件、网络通信等进行加密,防止数据被窃取。
25.4.3 移动应用 App 安全检测
常见的移动应用App网络安全检测内容如下:
•身份认证机制检测;
•通信会话安全机制检测;
•敏感信息保护机制检测;
•日志安全策略检测;
•交易流程安全机制检测;
•服务端鉴权机制检测;
•访问控制机制检测;
•数据防篡改能力检测;
•防 SQL 注入能力检测;
•防钓鱼安全能力检测;
•App安全漏洞检测。
---------------
25.5 移动应用安全综合应用案例分析
25.5.1 金融移动安全
移动金融引发大量黑客攻击活动,常见的安全风险有木马控制用户手机、钓鱼 App 捕获用户账户信息、窃取转移用户资金等。围绕金融类 App 的安全防护,梆梆安全等网络安全厂商提供的 App 安全保护方案内容如下。
1. 实施移动 App 安全开发管理
针对金融业务安全性需求提供咨询服务,帮助客户了解潜在安全风险、优化业务设计。在App 设计时,考虑应用安全问题。开展移动安全编程培训,培养安全意识。App 增加安全防护功能,提供安全软键盘、防界面劫待、短信保护、清场等安全 SDK 和组件。对移动应用源代码进行安全性检查及风险排查,减少 App 代码安全漏洞,及早发现金融业务安全风险。
2. 移动 App 网络通信内容安全加密保护
针对移动 App 应用通信协议进行加密保护,防止应用通信协议被逆向分析,防止各类刷单、非授权客户端访问行为。对本地文件进行加密保护。
3. 移动 App 安全加固
对 App 进行安全加固,如dex加密、smali流程混淆、so文件加密、关键函数加密、增加反调试和反编译功能。
4. 移动 App 安全测评
对移动应用进行渗透性测试服务,挖掘移动应用的安全漏洞,避免安全风险。参照《电子银行业务管理办法》
《电子银行安全评估指引》《中国金融移动支付客户端技术规范》《中国金融移动支付应用安全规范》等安全标准及信息安全等级保护标准等要求进行合规性核查,避免移动应用合规风险。
5. 移动 App 安全监测
a.钓鱼监测及响应。
b.App漏洞监测及响应。
c.盗版监测及响应。
d.移动威胁安全态势感知。
25.5.2 运营商移动安全
运营商移动应用安全主要面临的安全威胁如下:
•账号、密码窃取 。
•漏洞利用。
•恶意代码。
数据窃取。
恶意刷量、刷单。
拒绝服务攻击。
计费 SDK 破解。
钓鱼攻击。
社工库诈骗。
25.5.3 移动办公安全
移动办公主要面临以下风险:
•设备丢失。操控丢失设备接入企业内网,窃取企业机密数据,破坏后台系统。
•信息泄露。存储在本地设备中的敏感数据丢失或被窃取,导致信息泄露。
•恶意攻击。植入恶意程序,对组织机构服务器进行入侵攻击。
•共享访问。员工分享设备、账号密码,泄露组织机构机密信息。
•WiFi监听。接入钓鱼热点,通信数据被劫待监听。