韩玉会
摘要:信息时代,移动智能终端被广泛应用于处理各类重要的数据信息,与之紧密相连的各类移动安全问题也随之出现,例如个人隐私泄露,手机病毒泛滥,各类恶意攻击等。该文在深入分析IOS系统安全机制及IOS应用安全检测技术的基础上应,综合运用理论分析及实证研究等方法,提出针对IOS平台应用的以静态分析技术为基础,结合动态监测手段的综合分析检测方法,可有效提高IOS平台应用安全检测的准确度,降低报错率。
关键词:IOS系统;应用开发;安全性
1背景
信息时代,越来越多的人使用移动智能设备处理各类重要数据。当今主流的智能终端操作系统主要有谷歌的Android系统和苹果的IOS系统,IOS系统是运行在苹果系列产品如iPhone和iPod Touch等终端产品上的移动操作系统,它具有强大的无线网络功能,支持视频电话、GPS定位及安装第三方开发的应用程序等功能。随着苹果产品的不断推广和升级,随之而来的系统应用安全问题也愈显突出。2014年9月其中包括隐私泄漏、木马病毒、恶意程序、轰动一时的各类“窃听门”事件等智能终端安全事件的出现,标志着IOS平台应用安全问题已经日趋严重,用户的个人隐私面临严重的安全隐患。
2IOS系统安全机制分析
在研究影响IOS应用的各种安全情况之前,我们首先对IOS平台的安全特性做一个深刻剖析,以便于后续对应用安全分析的理解。lOS系统自身有严格的安全防范机制,这些安全特性对各种运行IOS系统的设备基本透明,很多安全特性设置都是默认开启和关闭,不需要用户人为的进行各种复杂配置的设置。IOS系统尤其对一些关键的安全特性不允许用户自行配置,以避免用户设置错误或操作失误导致这些重要的安全防护功能关闭,例如硬件设备的加密特性,就在生产时设定以后再不允许修改。IOS系统安全模型如如图1所示,这种安全模型旨在不影响用户基本使用的情况下保护系统数据的安全性。
图1中,与底层的硬件或固件相关的安全设置都与苹果公司的出厂设置密切相关,苹果根证书(Apple Root Certificate)在芯片制造时就已经植入,不可再次更改,这些安全特性都是为了防御恶意应用或病毒篡改设备的重要信息。上层操作系统的安全设置则是为了防御非法(未授权)使用破坏系统完整性,阻止攻击行为的运行。苹果公司把IOS系统的安全性作为软件更新和维护的核心,同时,在IOS系统的安全性能设计上使用了大量的密码学理论和计算机加密技术,修补系统漏洞,更新版本,提升系统功能。
IOS平台的核心安全特性可以归纳如下几点:
1)硬件安全一安全啟动链策略
IOS设备硬件启动过程的安全性由其安全启动链来保证。安全启动链中所涉及的每个组件都由苹果公司加密签名以确保其可靠性和完整性。IOS设备开机后,苹果公司事先写人Boot ROM中的根数字认证密钥就会被CPU运行,根数字认证密钥一旦写人芯片,就不可更改,并会的系统的绝对信任。这个密钥是验证其他底层硬件引导或加载程序(LLB)的基础,所有启动程序都需要通过验证其是否已经经过苹果公司的签名,通过加载,否则拒绝。这种安全启动链的验证模式保证了每次启动时底层代码的安全性,确保其未被人为篡改。而且也保证了IOS系统只能运行在经过验证的、确认是合法授权的IOS硬件设备上。
2)应用安全一程序代码强制签名策略
IOS系统是一个封闭的系统,所有的硬件设备和软件应用都与苹果公司相关,苹果公司生产设备并开发的IOS系统,所有运行在苹果设备上的应用都需要经过苹果公司审核。为确保所有程序均已获批准,且此文件与批准时的文件完全相同,IOS系统要求所有可执行代码均使用苹果公司颁发的证书进行签名。硬件设备附带的应用程序由苹果公司签名。第三方应用由苹果公司颁发证书验证签名。这种程序代码强制签名规定,是安全启动链的信任关系从IOS系统延伸至应用程序,以防止陌生应用运行及各种代码篡改。
3)数据安全——文件数据保护技术
IOS系统的文件数据保护是以硬件设备加密技术为基础的。苹果公司在硬件设备中植入了一些与安全相关的技术和设备,硬件的安全设置为IOS系统安全提供最为基础的保护。这些硬件加密引擎是构建各类层次的应用密钥的关键,由于硬件中固化的密钥为唯一且永远不变,利用这个密钥进行所有后续安全设置的加密引擎,既可以保护数据安全,又可以保证加解密的效率。具体实施如下:所有IOS设备生产时就培植了专用的256AES加密引擎,放置在DMA中,由于DMA处于闪存与系统主存之间,方便高效的文件数据加解密。专属的硬件密钥由设备唯一ID(UID)和设备组ID组合而成,为防止篡改或绕过因此被固化在IOS设备的处理器中。并且苹果公司规定任何软件或固件都无法直接读取设备的硬件密钥,只能查看密钥参与加密或解密之后的执行结果。生成文件时,开发人员指定文件类别,由数据保护系统根据文件类别分配类密钥,从而实现文件数据安全控制。
4)执行安全一沙盒技术和地址空间布局随机化策略
沙盒技术把IOS系统应用的运行限制在一个独立、封闭的空间,这个独立的空间叫做沙盒(sandbox)。IOS系统的沙盒机制主要是为了实现安全隔离。首先进程隔离(process isola-tion):应用程序在运行过程中禁止读取其他进程数据,也就是说,在运行过程中进程之间的通信被完全限制,以防止运行过程中的遭遇感染或攻击的几率。其次文件系统隔离(file sys-temisolation):所有应用程序都只能在自己的目录下操作文件,这样应用之间就不会可能产生攻击行为。应用程序沙盒化后,其活动范围被限定在一个独立的沙盒中,对系统以及用户更加安全,并且加大了恶意程序入侵系统的难度。
地址空间布局随机化(Address Space Location Randomiza-tion,ASLR):是参与保护缓冲区溢出问题的一个计算机安全技术,防止攻击者在内存中能够可靠地跳转到特定函数。ASLR技术可以确保应用程序启动时随机安排所有内存区域,其中包括随机排列程序的关键数据区域,如可执行的部分、堆、栈及共享库的位置等。通过随机安排这些重要数据的内存地址,有效降低了遭到各种复杂攻击的可能性,防止黑客利用内存损坏错误对系统进行攻击。
3IOS应用静态分析研究
3.1应用程序的隐私泄露分析
IOS应用的隐私泄露问题已经成为影响苹果用户产品体验的重要因素之一。为了确定隐私泄露的源头及可疑点,监测工具需要从最近访问隐私数据的函数向上,一直追溯到发送数据的第一个函数。目前,这方面的研究比较多,其中Egde等人提出的PIOS就是一个具有代表性的静态检测分析工具。PIOS主要通过三个步骤来完成对隐私数据泄露的检查,第一步:重建控制流图,追溯函数的调用过程。在控制流图中包含许多基本块,基本块是根据函数跳转关系,或者函数调用指令进行分割而得到的。第二步可达性分析。深入分析控制流图,检查其中是否存在一条或多条从敏感信息到可能泄露信息的网络路径。第三步数据流分析,对于每一条可能泄露隐私的路径,再跟踪其中的数据流向。本人使用PIOS分析了100个IOS应用程序(其中苹果商店应用80个,Cydia资源库应用20个),实验结果表明:80%的IOS应用都会将一些用户信息泄露出去,同时对比发现,苹果商店中的IOS应用程序的安全性较Cydia资源库中的要差一些。
3.2应用程序的逆向分析
IOS系统构建的复杂、缜密的安全防范机制在防范恶意攻击的同时,也给应用程序安全监测的逆向工程带来了巨大阻碍。由于绝大部分应用程序都运行在普通的苹果设别上,运行权限均是用户权限,而不是系统(root)权限,如上所述,普通用户权限的应用程序,其可执行代码需要签名认证才能被处理器执行,由此,解密应用程序的可执行文件是应用逆向工程的首要任务。对于IOS系统而言,只能通过设备越狱,利用系统漏洞来解锁设备,进而获得系统(root)访问权限。其次,成功越狱提升权限后就可以修改系统加载策略,使所有签名的程序运行得到许可,这样在运行正常的通过苹果认证的应用程序的同时,就可以装载测试工具软件进行逆向分析,如调试器、反汇编工具等。最后,利用安装的调试器启动程序,在应用程序入口设置一个断点,一旦程序运行就会自动触发这个断点,转而加载系统验证签名,解密应用程序的可执行代码,然后分析、研究二进制地址空间所占的内存区域,获得解密后的应用程序代码。应用程序的逆向分析除过解密应用技术外,还需要直接分析汇编代码等工作。
4IOS应用动态分析研究
4.1IOS应用动态分析探索
动态分析是指使用一组技术从不同方面来监控程序运行时的行为。通过真實设备或模拟机器实际运行应用程序执行过程,达到对未知恶意软件的检测目的。由于动态分析能够实时的跟踪程序的运行行为,因而检测效果较静态分析好一些,并且具有较强的直观性。常用的动态分析技术有:动态二进制重写、调试机制、信息流分析法等。动态二进制重写技术可以用来监控由应用程序或有动态链接库实现的函数调用关系。调试机制也可以被用来收集彼此之间的调用关系等信息,而且,具有调用机制分析功能的操作系统还可以提供有效的Hook机制,用于监控系统调用。这些技术都可用于动态监测IOS应用的运行行为,实现应用动态监测分析。
另外一种相对独立的监控函数调用称为信息流分析法。与前面几种方法不同的是,这种分析法不特别关注程序运行过程中函数调用的情况,而是专注于输入程序的数据的行为。例如程序可以为从网络接收数据包或者从移动设备上获取相关的信息,通过追踪这些数据在系统内部的路径,信息流分析工具会在敏感数据通过网络传输等危险行为发生之前,提前预警,以达到动态监控的目的。此外,还有Enck等人提出的TaintDroid系统,用污点分析技术跟踪数据流,从而判定应用是否存在数据泄露。
动态分析技术都是通过分析程序的实时运行情况,来推断应用程序的安全状态,能够比较准确的刻画程序的执行过程,得到相对准确的检测结果。目前,动态分析技术遇到的主要问题是如何预设不同的输入以测试应用程序有可能遭遇的各种不同场景,因此如何根据应用程序的不同应用环境,自动化的分析测试成为动态分析研究的重点。
4.2静一动态分析技术比较研究
目前,针对IOS应用安全性的静态分析技术较多,静态分析技术相对成熟,如著名的PiOS工具等,但是静态分析过程涵盖了应用程序运行过程中所有可能和不可能的执行路径,因此,所有静态分析技术都遇到了一个共同的问题——误报率比较高,无法控制分析结果的正确性,要获得更加准确的安全检测分析数据,就必须通过动态检测分析技术来实现。
动态分析技术旨在设计一个系统,用于检测应用程序在运行过程中所有可能存在的安全隐患,分析结果的正确率较高。目前,无论是权威的专家,还是普通的IOS应用开发者,在IOS应用安全检测的动态分析方面都做了大量工作,静态分析与动态分析相结合的安全检测模式也成为IOS应用安全检测的基本研究形式。但由于IOS系统的封闭性——所有源代码对外封闭,因此目前没有一款可靠的软件测试工具可以动态调试0bjective-c程序的环境,这也是所有IOS系统研究领域的遇到的一个瓶颈问题。尽管目前有很多研究人员已经着力于开发IOS系统的模拟环境iEmu,但是,这方面的研究工作才刚刚启动,IOS系统模拟环境的开发和研究还有很长的路要走。
5结束语
伴随着移动智能设备的普及,加载在其上各类的应用软件也日趋多样化,应用软件的安全性的受到人们的普遍关注,有关应用安全的研究也取得了很多研究成果。通过查阅相关资料及实际调查我们发现,目前绝大多数的应用安全性研究都关注于开源的Android系统,因为其开源人们可以看到源代码,通过分析研究源代码,然后再进行经动态分析检测,并实验验证结果,过程完整,结论明确,论证充分。IOS系统由于封闭性,应用安全研究人员也无法深入了解其全部的安全机制的设计及实现策略,IOS系统及其应用的安全机制只有苹果公司内部人员才有可能了解,而且对外严格保密,一定程度上阻碍了IOS应用的安全研究。