iOS安全入门与进阶

iOS安全入门与进阶

安全学习很难,但,山顶很高,哪怕失败了,也证明你爬过了高山,而不是在土丘上登顶。土丘容易被铲平,而高山不会,你挑战的目标就是你挑战的见证。

这是鸡汤还是警句,就取决于你有没有行动。让那些一笑而过的人成为历史的沙砾吧。你、我会书写历史。

iOS架构

iOS安全研究的动力


图:移动平台0day漏洞赏金榜,来自Zerodium

iOS Security

Apple会发布iOS安全架构的白皮书:

  • Apple Developer Documentation: Link
  • iOS Security, iOS12.3, 2019: Link

iOS安全技术演进

  • Isolation

  • Restricted Sanbox

    • 默认的沙盒规则为Container
    • 所有从App Store下载的APP,第一次打卡应用时,询问用户访问控制是否给予权限
    • 沙盒内的应用和内核的交互非常窄
    • 沙箱内的应用只能访问几个有限的内核模块 [TODO,哪几个?]
  • Code Signing

  • Apple上的代码签名验证很严格

  • Expoloit Mitigation(ASLR, DEP)

  • Data Protection

    • Passcode 屏幕锁、指纹识别、FaceID?TODO
    • 很多敏感数据只有在正确的passcode输入后,才会生成有效的解密key
    • iPhone5S后,有一个专门的硬件芯片负责Passcode的计算、生成Passcode Key和Passcode输入错误次数的检测(从硬件上进行的防范)
  • Hypervisor

    • iOS 9之后
    • 会检查内核代码段的完整性 Kernel Patch Protection

    iOS安全体系经历了从无到有,从弱到强的发展,其中也得益于硬件芯片的发展。

iOS(通用)漏洞挖掘

1.识别Attack Surface

先明确哪些地方会接受数据,识别攻击面

iOS本地攻击面

  • USB

    • 文件访问接口
    • 备份还原接口
      • 问题比较多,被大量分析的一个接口
    • 应用管理接口
    • 开发者接口
      • 配合Xcode
  • 安装的应用

    • JekyII 类型应用(USENIX Security’13)
    • Masque Attacks(FireEye Research)
  • 接口漏洞资料

    • 《是谁推开我的“窗”:iOS App接口安全分析》,长亭科技:Link TODO

用户态远程攻击面分析

  • 任何网络连接都有可能成为攻击面
    • Mobile Safari
      • JailbreakMe
      • Mobile Pwn2Own
    • Messager 研究iMessage黑产漏洞信息 [TODO, 重要]
      • 🎯CEV-2009-2204, SMS vulnerability, Charlie Miller
      • 🎯CVE-2015-1157, crafted Unicode text reboot bug
    • 系统中的网络服务进程
      • 🎯CVE-2015-1118, crafted configuration profile reboot bug

内核攻击面分析

  • 用户态和内核的任何通信渠道都是潜在的攻击面。对于内核来说,可以默认流入的数据都是有害的

    进一步细分

ioctl

File System

Devices

IOkit:macOS和iOS上的驱动内核扩展总称

MIG:负责用户态到内核态的数据交互

  • 文件系统(File System)

    • 🎯HFS legacy volume() name stack buffer overflow
      • JailbreakME 3 for iOS 4.2.x
    • 🎯HFS heap overflow
      • Corona for iOS 5.0
  • POSIX系统调用

    • posix_spawn 处理file action data的整数溢出漏洞
    • p0sixspwn for iOS 6.1.3
  • ioctl

    • Packet Filter Kernel Exploit
      • 🎯DIOCADDRULE ioctl 处理函数未初始化变量漏洞
        • 可以使任意内核地址的内容减一
      • 🎯limera1n/greenpois0n for iOS 4.1
  • 设备 /dev/*

    • 🎯ptmx_get_ioctl 内存越界访问漏洞
      • ptmx设备在处理minor参数的时候没有做越界检测
      • evasi0n7 for 7.0.x
  • 🎯IOKit(很多)

    • IOSurface
    • IOMobileFrameBuffer(越狱漏洞,2017年,iOS10,堆溢出)
    • IOUSBDeviceFamily:Link ,最终可以实现RCE
    • IOShareDataQueue
    • IOHIDFamily,开源模块,漏洞很多

2.理解数据交互过程

非常关键,读源码,明确用户态和内核态的交互过程

3.审计代码实现和逻辑

审计、发现代码缺陷

4.挖掘漏洞构造触发样本

构造、使用POC进行验证

自动化挖掘(静态、动态)

iOS消息机制漏洞样例分析

iOS内核态漏洞分析