IOS Jailbreaking from ISC2016

前期准备

iOS架构和内核基础
ARM64基础知识
开发环境设置
64位内核分析
常见内核漏洞类型
内核漏洞利用技巧
Pangu9 UAF漏洞编写实战 ios <= 9.1

苹果操作系统内核

mac/ios/watchos/tvos都是基于NeXTSTEP 5.0

所有后来的系统都基于NeXTSTEP 5.0…
内核(XNU) 是Mach/BSD 混合体
运行驱动是单独分离的一套 (“DriverKit” 就是现在的IOKit)
Objective-C (2.0) 是主要的运行时语言
可执行程序格式是Mach-O
包是(“bundle”) 格式
其中一部分框架是开源的, 其他都是闭源
OS 核心(“Darwin”) 还是开源的
有相对严格的程序开发手册
强大的application frameworks

在这里插入图片描述

整体的结构与安卓类似,分为4层:

在这里插入图片描述

Darwin 大部份分是开源的

Opensource.apple.com

Darwin中大部分运行库并非是苹果提供的
libSystem.B.dylib中提供了大部分的APIs
重导出的子运行库存放在/usr/lib/system
系统运行库通过syscalls/traps调用至XNU内核

Binaries包含一些实用的CLI工具
包含大部份的系统关键服务(/usr/libexec)
苹果选择性的开源

XUN是三种元素BSD/Mach/IoKit的组合体:

一:XNU’s 最上层是POSIX/BSD The BSD layer: 提供正式的API

采用FreeBSD 6.0的代码
完全POSIX兼容
提供files, processes/pthreads, signals, 等等.
Apple扩展: 增加很多独有的syscalls

二:Mach层是内核中的微内核 The Mach layer: 内核中的内核
另外一个NeXTSTEP时代的遗留产物
提供task, thread, memory 以及IPC通讯机制
处理底层的异常,中断及陷入

三:自主的驱动程序环境 I/O Kit: 驱动运行环境
移植自NextSTEP时代的DriverKit
面向对象的,并且受限制的C++框架
采用复杂的多层机制 “IORegistry”
采用他自身的IPC子系统(Mach)
在内核层中支持处理XML (!)
存在大量的安全漏洞

其中“Glue” 组件包含:
ml_* : Machine Layer APIs
Pexpert: Platform expert (“硬件抽象层”)

iOS启动序列(正常启动)

在这里插入图片描述

iOS启动序列(恢复/更新模式)

与android的recovery模式类似??
在这里插入图片描述

常见的漏洞类型:

堆溢出
整数溢出
释放后使用
多次释放
条件竞争
类型混淆
越界访问

常见的漏洞利用技巧

内核地址泄漏
堆风水
内核Dump
内核任意读写
内核Patch

问题:怎么搭建漏洞的测试环境

实际案列:https://www.ichunqiu.com/course/53971

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值