信安精品课:第25章移动应用安全需求分析与安全保护工程精讲笔记
第25章移动应用安全需求分析与安全保护工程精讲笔记
一、本章知识框架
二、本章大纲要求
8.移动应用安全需求分析与安全保护工程
8.1 移动应用安全威胁与需求分析
● 移动操作系统安全分析●移动通信网络安全分析●移动应用App 安全分析
8.2 Android系统安全与保护机制● Android系统安全体系
●Android系统安全机制(进程沙箱隔离机制、SOLite数据库安全、应用程序签名机制、权限声明机制、网络传输加密)
8.3 iOS系统安全与保护机制
● i0S系统安全体系
●iOS系统安全机制(安全启动链、权限分离机制、代码签名机制、DEP、地址空间布局随机化、沙箱机制、数据的加密与保护机制、网络传输加密)
8.4 移动应用安全保护机制与技术方案
8.4.1 移动应用App安全风险
●逆向工程风险● 篡改风险●数据窃取风险
84.2移动应用App安全加固
●防逆向、防调试、防篡改●数据防泄露、传输数据防护
8.4.3 移动应用App 安全检测
●身份认证机制检测
● 通信会话安全机制检测● 敏感信息保护机制检测●日志安全策略检测●交易流程安全机制检测●服务端鉴权机制检测●访问控制机制检测●数据防篡改能力检测●防SQL注入能力检测● 防钓鱼安全能力检测●App安全漏洞检测
8.5 移动应用安全综合应用案例分析
● 金融移动安全● 运营商移动安全●移动办公安全
三、本章重要易考知识点清单
25.1 移动应用安全威胁与需求分析
1.基于智能手机的移动应用系统基本组成包括三个部分: 一是移动应用,简称 App;二是通信网络,包括无线网络、移动通信网络及互联网;三是应用服务端,由相关的服务器构成,负责处理来自 App 的相关信息或数据。
移动应用的安全威胁主要有以下类型:
移动操作系统平台安全威胁
移动应用的安全性依赖于移动操作系统。目前,市场上主要的移动操作系统是苹果公司的 iOS 操作系统与 Google 公司开源的 Android 操作系统。
无线网络攻击
攻击者利用移动应用程序依赖的无线网络通信环境或网络服务的安全隐患, 实施通信内容监听、假冒基站、网络域名欺诈、网络钓鱼等攻击活动。
移动应用面临 WiFi、蓝牙(Bueooth)、NFC 等多种无线攻击安全威胁。
WiFi “钓鱼”是移动应用安全威胁常见的形式,攻击者通过一台可控的路由器发射无线信号,可以监控连接到该路由器的智能设备,分析智能设备与服务器通信的数据包,修改服务器返回的网页,甚至还可以伪装成受害者与服务器通信。
恶意代码
针对智能手机的恶意代码行为呈上升趋势,常见的恶意行为有流氓行为、资费消耗、恶意扣费、隐私窃取、远程控制、诱骗欺诈、系统破坏、恶意传播等。
移动应用代码逆向工程
攻击者通过对移动应用程序的二进制代码进行反编译分析,获取移动应用源代码的关键算法思路或窃取敏感数据。
移动应用程序非法篡改
攻击者利用安全工具,非法篡改移动应用程序,实现恶意的攻击,窃取用户信息。
25.2 Android 系统安全与保护机制
Android 是一个开源的移动终端操作系统,其系统结构组成共分成 Linux 内核层(Linux Kernel) 、系统运行库层(Libraries 和Android Runtime)、应用程序框架层(Application Framework)和应用程序层(Applications)。
Android 系统的基础层安全威胁来自 Linux 内核攻击。
Android 系统成为恶意代码利用的重点目标,常见的形式有 APK 重打包行库层、应用程序框架层以及应用程序层等各个层面采取了相应的安全措施,以尽可能地保护移动用户数据、应用程序和设备安全。
权限声明机制
权限声明机制,为操作权限和对象之间设定了一些限制,只有把权限和对象进行绑定,才可以有权操作对象。
权限声明机制还制定了不同级别不同的认证方式的制度。在默认情况下Android 应用程序不会被授予权限,其权限分配根据Android 应用APK安装包中的Manifest 文件确定。
应用程序层的权限包括normal 权限、dangerous 权限、signature 权限、signatureOrSystem权限。
normal 权限不会给用户带来实质性的伤害
dangerous 权限可能会给用户带来潜在威胁,如读取用户位置信息,读取电话簿等,对于此类安全威胁,目前大多数手机会在用户安装应用时提醒用户:
signature 权限表示具有同一签名的应用才能访问。
应用程序签名机制
Android 将应用程序打包成.APK 文件,应用程序签名机制规定对 APK 文件进行数字签名,用来标识相应应用程序的开发者和应用程序之间存在信任关系。所有安装到 Android 系统中的应用程序都必须拥有一个数字证书,此数字证书用于标识应用程序的作者和应用程序之间的信任关系。
沙箱机制
沙箱隔离机制使应用程序和其相应运行的 Dalvik 虚拟机都运行在独立的Linux 进程空间,不与其他应用程序交叉,实现完全隔离。
Android 沙箱的本质是为了实现不同应用程序和进程之间的互相隔离,即在默认情况下,应用程序没有权限访问系统资源或其他应用程序的资源。每个 App 和系统进程都被分配唯一并且固定的 UserID,这个 UID 与内核层进程的 UID 对应。每个 App 在各自独立的 Dalvik 虛拟机中运行,拥有独立的地址空间和资源。运行于 Dalvik 虚拟机中的进程必须依托内核层 Linux 进程而存在,Android 使用 Dalvik 虚拟机和 Linux 的文件访问控制来实现沙箱机制,任何应用程序如果想要访问系统资源或者其他应用程序的资源,必须在自己 Manifest 文件中进行声明权限或者共享 UID。
网络通信加密
Android 支持使用 SSL /TSL 协议对网络数据进行传输加密,以防止敏感数据泄露。
内核安全机制
Android 系统的内核层采用分区和 Linux ACL 权限控制机制。
Linux ACL 权限控制机制是指每个文件的访问控制权限都由其拥有者、所属的组、读写执行三个方面共同控制。
文件在创建时被赋予了不同的应用程序ID,只有拥有相同应用程序ID 或被设置为全局可读写才能够被其他应用程序所访问。每个应用均具有自己的用户ID,有自己的私有文件目录。在系统运行时,最外层的安全保护由Linux 提供,其中 system.img 所在的分区是只读的,不允许用户写入, data.img 所在的分区是可读写的,用于存放用户的数据。
25.3 iOS系统安全与保护机制
苹果公司建立以 iOS 平台为核心的封闭的生态系统,iOS 的智能手机操作系统的原名为 iPhoneOS,其核心与 Mac OS X 的核心同样都源自Apple Darwin。iOS 的系统架构分为四个层次:核心操作系统层(Core OS Layer)、核心服务层(Core Services Layer)、媒体层(Media Layer)和可触摸层( Cocoa Touch Layer)。
核心服务层提供给应用所需要的基础的系统服务,如账户、数据存储、网络连接、地理位置、运动框架等。
核心操作系统层提供本地认证、安全、外部访问、系统等服务。
iOS 平台的安全架构可以分为硬件、固件、软件。
硬件、固件层由设备密钥、设备组密钥、苹果根认证、加密引擎、内核组成。
Secure Enclave 是苹果高版本A 系列处理器中的协处理器,独立于应用处理器之外,提供所有加密操作。
软件层则由文件系统、操作系统分区、用户分区、应用沙盒及数据保护类构成。
苹果基于这一整体安全架构,集成了多种安全机制,共同保护 iOS 平台的安全性,主要安全机制如下。
安全启动链
iOS 平台的安全依赖于启动链的安全,为防止黑客攻击启动过程,iOS 启动过程使用的组件要求完整性验证,确保信任传递可控。打开 iOS 设备后,其应用处理器会立即执行只读内存(也称为引导 ROM)中的代码。这些不可更改的代码是在制造芯片时设置好的,为隐式受信任代码。引导 ROM 代码包含苹果根 CA 公钥,该公钥用于验证底层引导加载程序(LLB)是否经过苹果签名,以决定是否允许其加载。引导路径从引导 ROM 出来之后分叉为两条执行路径:一条是普通引导; 另一条则是设备固件更新模式,这个模式用于更新 iOS 镜像。
数据保护
针对移动设各因丢失或被窃取导致的泄露数据的风险,苹果公同的 iOS 4 提供了数据保护 API(Data Protection API)。API 让应用开发者尽可能简单地对文件和 keychain 项中存储的敏感用户数据施以足够的保护,以防它们在用户设备丢失时被泄露。
数据的加密与保护机制
加解密是耗时耗能源的操作,而 iOS 内所有用户数据都是强制加密的,加密功能不能关闭。苹果的 AES 加解密引擎都是硬件级的,位于存储与系统之间的 DMA 内,所有进出存储的数据都要经过硬件的加密与解密,这样提供了较高的效率与性能。除此之外,iOS 提供了名为 File Data Protection 的数据保护方法。所有文件在加密时使用的 key 都是不同的,这些 key 被称作 Profile Key,存储于 Metafile 内。
地址空间布局随机化
iOS 引入地址空间布局随机化(ASLR) 安全保护技术,利用 ASLR 技术,确保 iOS 的二进制文件、库文件、动态链接文件、栈和堆内存地址的位置是随机分布的,从而增强抗攻击能力。
代码签名
为防止应用攻击,iOS 系统要求所有可执行程序必须使用苹果公司发放的证书签名。
沙箱机制
iOS 为限制恶意代码执行所造成的破坏,提供 iOS 沙箱机制,通过沙箱机制,可以限制进程的恶意行为。
25.4 移动应用安全保护机制与技术方案
移动应用 App 安全风险
移动应用App是指运行在智能设备终端的客户端程序,其作用是接收和响应移动用户的服务请求,是移动服务界面窗口。由于移动应用App安装在用户的智能设备上(通常为智能手机),用容易遭受到反编译、调试、篡改、数据窃取等安全成胁。
移动应用 App 安全加固
为保护移动应用 App 的安全性,通常采用防反编译、防调试、防篡改、防窃取等多种安全保护措施。
防反编译
对移动应用程序文件进行加密处理,防止攻击者通过静态的反编译工具, 获取到应用的源代码。除了加密措施之外,还可以对移动应用程序进行代码混淆,增加破解者阅读代码的难度。常见的混淆方法有名字混淆、控制混淆、计算混淆等。例如,将移动应用 App 程序中有明确含义的变量替换成无意义变量,在移动应用 App 程序中插入无关的代码,修改计算等式。
防调试
动态调试利用调试器启动或附加应用程序,可对应用程序运行时的情况进行控制,可以在某一行代码上设置断点,使进程能够停在指定代码行,并实时显示进程当前的状态,甚至可通过改变特定使用目的寄存器值来控制进程的执行。通过调试器,可以获取应用程序运行时的所有信息。
为防止应用程序动态调试,应用程序设置调试检测功能,以触发反调试安全保护措施,如清理用户数据、报告程序所在设备的情况、禁止使用某些功能甚至直接退出运行。
防篡改
通过数字签名和多重校验的防护手段,验证移动应用程序的完整性,防范移动应用程序 APK 被二次打包以及盗版。
防窃取
对移动应用相关的本地数据文件、网络通信等进行加密,防止数据被窃取。
国内 App 安全加固商用工具主要有腾讯乐固、360 加固和梆梆加固,详细情况可参看相关公司的网站。除了商业工具外,也有免费的安全工具,如ProGuard。ProGuard 是个压缩、优化和混淆 Java 字节码文件的免费工具,可以删除无用的类、字段、方法和属性。删除没用的注释,最大限度地优化字节码文件,还可以使用简短的、无意义的名称来重命名已经存在的类、字段、方法和属性。
常见的移动应用App网络安全检测内容11 个如下:
身份认证机制检测;
通信会话安全机制检测:
敏感信息保护机制检测:
日志安全策略检测:
交易流程安全机制检测:
服务端鉴权机制检测:
访问控制机制检测:
数据防篡改能力检测:
防 SQL 注入能力检测;
防钓鱼安全能力检测:
App 安全漏洞检测。
常见的是进程注入工具 Inject、HijackActivity 劫持检测工具、Jeb 静态逆向分析工具、APK 反编译和打包工具 apktool、 数据抓包工具 Tcpdump/Wireshark、Android Hook 框架Xposed、基于代理实现的抓包和分析工具 Burpsuite、静态分析工具Androguard、安卓 APK 文件数据流分析工具 FlowDroid、 安卓应用逆向工具Android Killer 等。
为保护个人信息安全,规范 App 的应用,国家有关部门已发布了《信息安全技术移动互联网应用程序(App) 收集个人信息基本规范(草案)》。
其中,针对Android 6.0 及以上的可收集个人信息的权限,给出了服务类型的最小必要权限参考范围,具体要求是:1地图导航:位置权限、存储权限;2网络约车:位置权限、拨打电话权限;3即时通信:存储权限;4博客论坛:存储权限;5网络支付:存储权限;6新闻资讯:无;7网上购物:无;8短视频:存储权限;9快递配送:无;10 餐饮外卖:位置权限、拨打电话权限;11 交通票务:无;12 婚恋相亲:存储权限;13 求职招聘:存储权限;14 金融借贷:存储权限;15 房屋租售:存储权限;16 二手车交易:存储权限;17 运动健身:位置权限、传感器权限;18 问诊挂号:存储权限;19 网页浏览器:无;20 输入法:无;21 安全管 理:存储权限、获取应用账户、读取电话状态权限、短信权限。
25.5 移动应用安全综合应用案例分析
金融移动安全
常见的安全风险有木马控制用户手机、钓鱼 App 捕获用户账户信息、窃取转移用户资金等。国绕金融类 App 的安全防护,梆梆安全等网络安全厂商提供的 App 安全保护方案内容如下。
实施移动 App 安全开发管理
针对金融业务安全性需求提供咨询服务,帮助客户了解潜在发全风险、优化业务设计。在 App 设计时,考虑应用安全问题。开展移动安全编程培训,培养安全意识。
App 增加安全防护功能,提供安全软键盘、防界面劫持、短信保护、清场等安全 SDK 和组件。对移动应用源代码进行安全性检查及风险排查,减少App 代码安全漏洞,及早发现金融业务安全风险。
移动 App 网络通信内容安全加密保护
针对移动 App 应用通信协议进行加密保护,防止应用通信协议被逆向分析,防止各类刷单、非授权客户端访问行为。对本地文件进行加密保护。
移动 App 安全加固
对 App 进行安全加固,如 dex 加密、smali 流程混淆、so 文件加密、关键函数加密、增加反调试和反编译功能。
移动 App 安全测评
对移动应用进行渗透性测试服务,挖掘移动应用的安全漏洞,避免安全风险。参照《电子银行业务管理办法》《电子银行安全评估指引》《中国金融移动支付客户端技术规范》《中国金融移动支付应用安全规范》等安全标准及信息安全等级保护标准等要求进行合规性核查,避免移动应用合规风险。
移动 App 安全监测
钓鱼监测及响应。对 App 的仿冒、钓鱼应用进行钓鱼监测及响应,及时通知用户,并快速联系渠道下架仿冒、钓鱼应用 App,避免安全影响。
App 漏洞监测及响应。监测移动设备、移动应用、服务器等新增、突发漏洞,及时规避漏洞风险。
盗版监测及响应。监测 App 应用分发渠道上出现的盗版应用,随时进行盗版下架处理。
移动威胁安全态势感知。捕获针对 App 的攻击行为,提供可视化数据分析平台及实时安全防控技术。
运营商移动安全
运营商移动应用安全主要面临的安全威胁如下:
账号、密码窃取。通过病毒、木马、社工库收集、字典破解性猜测等方式,非法获得用户账号及密码。
漏洞利用。黑客及非法利益团体,通过系统漏洞侵入运营商服务器。
恶意代码。将病毒、木马、逻辑炸弹、恶意扣费等恶意代码捆绑在移动应用上,通过运营商网络向普通用户扩散。
数据窃取。利用非法手段窃取、盗用运营商用户重要数据。
恶意刷量、刷单。利用运营商用户数据监管漏洞,伪造大量虚假身份/ 盗用真实用户身份进行自动化大批量的刷单、刷量。
拒绝服务攻击。非法用户利用拒绝服务手段攻击系统。
计费 SDK 破解。通过反编译、破解等手段,屏蔽、破解运营商的移动应用计费 SDK。
钓鱼攻击。通过仿冒正版的钓鱼移动应用程序,截获、捕捉用户输入数据,非法入侵用户互联网账户系统。
社工库诈骗。通过盗版、高仿应用收集用户信息,以及泄露的其他社工库,对用户实施诈骗。
针对运营商移动应用安全问题,梆梆安全等网络安全厂商提供的 App 安全保护方案如下:
加固运营商 App,以及通过运营商应用市场推广的所有第三方 App。
对提交到运营商应用市场的第三方 App 提供病毒、木马、恶意代码查杀服务。
对运营商的计费 SDK 提供基于防调、防改、防破解的加固保护服务。
对运营商的通信协议、证书进行加密。
提供基于移动应用的威胁态势感知服务,实时预警接入网络的异常流量、入侵攻击、风险 App 等。
移动办公安全
移动办公主要面临以下风险:
设备丢失。操控丢失设备接入企业内网,窃取企业机密数据,破坏后台系统。
信息泄露。存储在本地设备中的敏感数据丢失或被窃取,导致信息泄露。
恶意攻击。植入恶意程序,对组织机构服务器进行入侵攻击。
共享访问。员工分享设备、账号密码,泄露组织机构机密信息。
WiFi 监听。按入钓鱼热点,通信数据被劫持监听。
针对移动办公安全问题,天融信、梆梆安全、360 等各网络安全厂商提出移动设备安全接入、移动设备安全管理、移动恶意代码防范、移动 App 安全加固等技术方案。
现以 360 移动终端安全管理系统方案为例,其方案描述如下。
360 天机移动终端安全管理系统包括安全管理平台和移动客户端两个部分,通过管理平台对装有移动客户端的终端进行安全管理,提供对终端外设管理、配置推送、系统参数调整等服务,同时结合管理员可控的安全策略机制, 实现更全面的安全管控特性,解决了组织机构在移动办公过程中遇到的数据安全以及设备管理的问题。
四、本章历年考点分布
详见2020软考信安精讲课程群
五、本章历年真题及答案解析
详见2020软考信安精讲课程群
第25章 移动应用安全需求分析与安全保护工程
25.1 移动应用安全威胁与需求分析 543
25.1.1 移动应用系统组成 543
25.1.2 移动应用安全分析 543
25.2 Android 系统安全与保护机制 544
25.2.1 Android系统组成概要 544
25.2.2 Android系统安全机制 545
25.3 iOS系统安全与保护机制 547
25.3.1 iOS系统组成概要 547
25.3.2 iOS系统安全机制 548
25.4 移动应用安全保护机制与技术方案 551
25.4.1 移动应用App安全风险 551
25.4.2 移动应用App安全加固 551
25.4.3 移动应用App安全检测 552
25.5 移动应用安全综合应用案例分析 553
25.5.1 金融移动安全 553
25.5.2 运营商移动安全 554
25.5.3 移动办公安全 554
25.6 本章小结 555