信安软考 第二十五章 移动应用安全需要分析与安全保护工程
一、移动安全威胁与需求分析
移动应用系统包括三个部分:移动应用(APP)、通信网络(包括无线网络、移动通信网络、互联网)、应用服务端(有相关服务器构成,处理来自app的相关信息数据)
移动应用的安全威胁主要有以下类型:
(1)移动操作系统平台安全威胁:目前市场上存在的移动操作系统IOS、Android,都存在不同程度的漏洞
(2)无线网络攻击:内容监听、假冒基站、网络域名欺诈、网络钓鱼等
(3)恶意代码
(4)移动应用代码逆向工程:攻击者通过对移动应用的二进制代码进行反编译分析,获取移动应用的源代码的关键算法思路或窃取敏感数据
(5)移动应用程序非法篡改:攻击者利用安全工具,非法篡改移动应用程序,实现恶意攻击,窃取用户信息
二、Android系统安全与保护机制
2.1 Android 系统组成概要
Android是Google的一个开源的移动终端操作系统。其系统结构分为Linux 内核层(Linux Kernel)、系统运行库层(Libraries和Adroid Runtime)、应用程序框架层(Application Framework)和应用程序层(Application)。
Android系统的各层都面临着不同程度的安全威胁。其中,Android系统的基础安全威胁来自于Linux内核攻击,内核漏洞常常导致攻击者能够获得系统最高权限。
2.2 Android 系统安全机制
为保护Android系统以及应用终端平台安全,Android系统在各层都采取了响应的安全措施,以尽可能地保护移动用户数据、应用程序和设备安全。
(1)权限声明机制
为操作权限和兑现之间设定了一些限制,只有把权限和对象进行绑定,才可以有权操作对象。当然,权限声明机制还制定了不同级别的认证方式的制度。在默认情况下Android应用程序不会被授予权限,其权限分配根据Android应用APK安装包中的Manifest文件确定。应用程序的权限包括normal权限、dangerous权限、signature权限、signatureOrSystem权限。
normal权限不会给用户带来实质性的伤害;dangerous权限可能会给用户带来潜在威胁,如读取用户位置信息,读取电话簿;signature权限表示具有同一签名的应用才能访问;signatureOrSystem权限主要由设备商使用。
(2)应用程序签名机制
Android将应用程序打包成.APK文件,应用程序签名机制规定对APK文件进行数字签名,用来标识相应应该用程序的开发者和应用程序之间存在的信任关系。所有安装到Android系统中的应用程序都必须有一个数字证书,此证书用于标识应用程序的作者和应用程序之间的信任关系。
(3)沙箱机制
(4)网络通信加密
Android支持使用SSL/TLS协议对网络数据进行传输加密,以防止敏感数据泄露
(5)内核安全机制
Android系统的内核采用分区和Linux ACL权限控制机制。Linux ACL权限控制机制是指每个文件的访问控制权限都由其拥有者、所属的组、读写执行三个方面共同控制。文件爱创建时被赋予了不同的应用程序ID
三、 iOS系统安全与保护机制
3.1 IOS系统组成概要
苹果公司建立以IOS平台为核心的封闭生态系统,ios核心与Mac os的核心都源于Apple Darwin。ios系统架构如图分为四层:核心操作层(Core OS Layer)、核心服务层(core Services Layer)、媒体层(Media Layer)和可触摸层(Cocoa touch Layer)
3.2 iOS系统安全机制
iOS平台的安全架构可分为硬件、固件、软件,如图
硬件、固件层由设备密钥、设备组密钥、苹果根认证、加密引擎、内核组成。Secure Enclave是苹果高版本A系列处理器中的协处理器,独立于应用处理器之外,提供所有加密操作
软件层由文件系统、操作系统分区、用户分区、应用沙盒及数据保护类构成
苹果基于这一安全架构,集成了多种安全机制,主要如下:
(1)安全启动链。ios启动过程中使用的组件要求完整性验证,确保信任传递可控。
(2)数据保护。针对移动设备丢失或被窃取导致的泄露数据的风险,苹果提供了数据保护API,防止他们在数据设备丢失时,数据丢失。
(3)数据的加密与保护机制:ios内所有用户数据都是强制加密,加密功能不能关闭。
(4)地址空间布局随机化:ios引入地址空间随机化(ASLR)保护技术,利用ASLR技术,确保ios的二进制文件、库文件、动态链接文件、栈和堆内存地址的位置是随机分布的,从而增强抗抵抗能力。
(5)代码签名:ios系统要求所有可执行程序必须使用苹果公司发放的证书签名
(6)沙箱机制:ios为限制恶意代码造成的破坏,通过沙箱机制,可以限制进程的恶意行为。
四、移动应用安全能保护机制与技术方案
4.1 移动应用App安全风险与安全加固
移动应用App是指运行在智能设备终端的客户端程序,其作用是接收和响应移动用户的服务器请求,是移动服务界面窗口。但由于移动应用App安装在用户智能设备上,很容易遭受反编译、调试、篡改、数据窃取等安全威胁。
为保护移动应用App的安全性,常采用以下安全保护措施
(1)防反编译。对移动应用程序文件进行加密处理,防止攻击者通过静态的反编译工具,获取应用的源代码。还可以通过对移动应用程序进行代码混淆,增加破解阅读代码的难度。常见的混淆方法有名字混淆、控制混淆、计算混淆等
动态调试利用调试器启动或附加应用程序,可对应用程序运行时的情况进行控制,可以在某一行代码上设置断点,使进程能够停在指定代码行,并实时显示进程当前的状态,甚至可通过改变特定使用目的寄存器值来控制进程到的执行。通过调试器,可以获取应用程序运行时的所有信息。
(2)防调试。应用程序设置调试检测功能,以触发反调试安全保护措施,如清理用户数据、报告程序所在设备情况、禁止使用某些功能甚至直接退出运行。
(3)防篡改。通过数字签名和多重校验的防护手段,验证移动应用程序的完整性,防范移动应用程序APK被二次打包以及盗版。
(4)防窃取。对移动应用相关的本地数据文件、网络通信等进行加密,防止数据被窃取。
国内的App安全商用加固工具有腾讯乐固、360加固和梆梆加固;免费的有ProGuard
4.2 移动应用共App安全检测
常见的移动移动App网络安全监测内容如下
-
身份认证机制检测
-
通信会话安全机制检测
-
敏感信息保护机制检测
-
日志安全策略检测
-
交易流程安全机制检测
-
服务端鉴权机制检测
-
访问控制机制检测
-
数据防篡改能力检测
-
防SQL注入能力检测
-
防钓鱼安全能力检测
-
App安全漏洞检测
4.3 移动应用安全综合应用案例分析
- 金融移动安全
一些安全厂商提供的金融类App安全保护方案
(1)实施移动App安全开发管理
(2)移动App通信内容安全加密保护
(3)移动App安全加固
(4)移动App安全测评
(5)移动App安全监测
- 运营商移动安全
运营商移动应用安全主要面临的安全威胁如下
(1)账号、密码窃取
(2)漏洞利用
(3)恶意代码
(4)数据窃取
(5)恶意刷量、刷单
(6)拒绝服务攻击
(7)计费SDK破解
(8)钓鱼攻击
(9)社工库诈骗
针对运营商移动应用安全问题,
- 加固运营商App
- 对提交到运营商应用市场的第三方App提供病毒、木马、恶意代码查杀服务
- 对运营商的计费SDK提供防调、防改、防破解的加固保护服务
- 对运营商的通信协议、证书进行加密
- 提供基于移动应用的威胁态势感知服务,实时预警接入网络的异常流量、入侵攻击、风险App等
移动办公主要面临以下风险:
- 设备丢失
- 信息泄露
- 恶意攻击
- 共享访问
- WiFi监听。接入钓鱼热点,通信数据被劫持监听