iOS-绝对安全的系统

iOS远比你想象的安全,基本上你能想象到的攻击点,Apple都能想到。

 

The Reduced Attack Surface(减少易被攻击的应用层)

一般攻击者通过应用层输入进行攻击表层,这些易攻击的弱点通常在第三方的应用中。因此,Apple 不会支持Java和Flash在iOS上运行,这两个应用有爆出安全缺陷,因此不使用它们可以减少被弱点漏洞攻击。

 

 

The Stripped-Down iOS(定制化iOS)

在iOS上也会不同于Mac OS,虽然都是基于Unix,但是它并没有shell(/bin/sh),也没有这些操作:rm.ls.ps(no jailbroken)。

 

Privilege Separation(特权分离)

iOS 特权分离很明显,使用用户(user),组别(groups)和传统Unix文件权限机制。例如,iOS大部分的应用运行态需要申请一些权限,而这些应用都会以一个mobile用户执行,而其他的系统进程则以root方式执行(no jailbroken)。这个好处就在于应用不可能修改系统级别的设置。

 

Code Signing (代码签名)

说到这个东西,有很多黑产,挺敏感的。市面上的App都是经过Apple Strore发行,而这些发布到Apple Store的应用,都是经过代码签名。通常使用开发者使用公司申请的证书进行签名,而后发布到Apple Store,Apple有自己的一套审核机制,对应用的安全把控得很严格,基本上发布的应用都安全得要死。这我要给100个赞。而一些第三方应用通过给其它应用签名的方法进行发布(PP助手)。

 

Data Execution Prevention (数据执行保护)

DEP是一种保护机制,它不允许数据执行,只允许代码执行。这很关键,如果你尝试一些Payload,你会发现是不可能的,payload是数据而不是程序代码,所以你想尝试溢出,首先得绕过DEP,使用到ROP(return-oriented programming)缓冲区溢出技术。涉及到iOS内核和驱动层,我就不总结了,后面再说。

 

Address Space Layout Randomization(ASLR)地址空间布局随机化

这个接触得太多太多了,虽然感觉没什么卵用吧,但也算是一个防御手段。

https://www.ibm.com/developerworks/cn/linux/l-cn-gccstack/

通常程序都会使用这项技术,保证编译时安全,在程序编译后,会生成固定的地址,而攻击者更容易攻击啊。地址固定!搞一个不就所有设备都能搞了!所以说ASLR就出来了,主要用到的技术是Stack-smashing Protection(SSP),控制编译生成随机的地址,让你日。但是只是生成的地址偏移量不同,注意,只是偏移量,地址还是固定的,把入口给随机化了。我们逆向通常是这样搞,image list –o –f找到程序动态链接库的地址,然后加上编译后的地址(IDA和hopper)。

 

Sandboxing (沙盒)

这个就屌炸天了(Awesome),上面说到iOS有用户权限mobile,限制了程序运行的权限操作,这下好了,多加个沙盒。每一应用都有一个路径,限制了该应用只能在该路径下操作,应用数据只能存储在该路径Document、Data、Cache等目录下,并不能逃出该路径。像一个监狱一样锁死应用,保证了各个应用相互独立,也与系统相互独立,绝对的大安全啊!(no jailbroken)其它一些沙盒逃逸方法,也是从内核漏洞方面展开,还有堆栈溢出等。

 

总而言之,这些机制组合也就打造了一个封闭的安全系统,然而,没有绝对安全的系统。


本人主页已转:http://www.sweetear.cn

 

你可能感兴趣的:(点滴)