你的iOS备New_第1页
你的iOS备New_第2页
你的iOS备New_第3页
你的iOS备New_第4页
你的iOS备New_第5页
已阅读5页,还剩54页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、pwn你的ios设备darkmage & windknowndarkmage & windknowncd-team()cd-team()大纲 ios 保护机制 用户态利用技术 内核的利用技术 攻击bootrom jbm 3.0 结论ios 保护机制ios 保护机制沙盒 (seatbelt) ios 的沙盒是基于trustbsd策略框架的内核扩展模块 针对每个进程都可以制定特殊的沙盒配置文件 沙盒配置文件编译后以2进制的方式保存在kernelcache文件中(ios下) 需反汇编成可读的文本格式来查看内核中的沙盒

2、规则ios 保护机制 沙盒规则的例子 (针对mobilesafari) 采用正则表达式的规则语句 iokit-open (allow iokit.math(“(iosurfacerootuserclient) |(iomobileframebufferuserclient) .”)ios 保护机制 更多关于apple的沙盒机制 请阅读 “the apple sandbox” by dionysus blazakisios 保护机制 代码签名 所有的可执行文件、库文件都需要apple签名后才可以运行在ios中 内核会在调用execve之前检测mach-o文件中的lc_code_signature

3、段是否有效和可信任的 无法分配rwx属性的内存页面 ios启动的时候同样也会检测kernelcache的签名是否有效ios 保护机制 页面执行保护 xn (execute never) 标志位在armv6中被引入,从而在硬件上支持执行保护 ios中的栈和堆都是不可执行的 内核不允许将页面保护标志设置为rwxios 保护机制aslr(地址空间随机化) antid0te project是第一个针对越狱iphone提供aslr保护的程序 随后apple正式的在ios 4.3中加入了aslr的支持 加入aslr的目的主要是防御用户态的rop利用方法,例如jbm 2.0越狱程序 同时aslr也增加了越狱

4、的难度 ios 保护机制 aslr细节 所有的模块都已经被映射到dyld_shared_cache文件中 dyld_shared_cache整个文件被加载到一个随机的地址 dyld和程序主文件的随机偏移是相同的 mobilesafari的插件同样会被加载到随机地址用户态利用技术用户态利用技术 arm基础知识 32位risc指令集 通用寄存器:r0 r10 特殊寄存器:sp lr pc thumb指令集合 16位代码用户态利用技术 arm调用规定 r0r3用于传递前4个参数 返回结果存储在r0和r1中 系统函数调用 设置r12为函数调用号,然后执行“svc 0 x80”用户态利用技术 rop技术

5、可用于绕过xn执行保护 没有公开的方法来绕过aslr 至少需要一个信息泄露的漏洞配合 获得任何一个模块的随机偏移可以允许攻击者在所有模块中利用rop 所有模块的随机偏移是一致的用户态利用技术 rop要求 切换栈 首先要求控制sp寄存器 控制r0r3来传递参数 控制返回地址用户态利用技术选择rop的模块 许多模块都可以用来实现rop 针对ios 4.3,可以选择dyld dyld加载在固定地址 - 0 x2fe00000 针对ios 4.3,由于所有模块aslr的偏移是一样的,任何模块都可以被利用 jbm3选取了几个模块的指令来完成rop用户态利用技术 jbm3使用的rop举例 栈切换 将 sp

6、 设置为之前栈中的某个值用户态利用技术jbm3使用的rop举例控制r0r3传递参数函数调用保存函数返回值读取函数返回值内核的利用技术内核的利用技术ios内核以及内核扩展均已加密的方式存储在kernelcache文件中可以在theiphonewiki上查询各个版本的解密keyios的内核没有aslr保护需要用rop的方式来编写内核的利用程序 需要比windows下更加复杂和完善的rop framework内核的利用技术 iocoresurfaceroot 内核整数溢出 在处理iosurface properties存在一个整数溢出漏洞 (iosurfacewidth 等) 该漏洞用于jbm2.0

7、中越狱,针对ios stack用于存储charstring指令的中间数和结果 decoder-buildchar由字体文件中的/buildchararray指令来定义jailbreakme 3.0 jbm3是如何构造rop的 利用charstring命令将指令写到 decoder-buildchar 2 24 callothersubr decoder-buildcharidx = top0; op_callsubr 字体文件中还包含一些子过程jailbreakme 3.0jbm3如何绕过aslr 这个漏洞允许攻击者读写栈 decoder结构存储在栈中 decoder-parse_callba

8、ck存储了t1_parse_glyph函数指针 获取parse_callback的值 - 获取libcgfreetype模块的随机偏移jailbreakme 3.0绕过aslr细节 设置arg_cnt = (0 xfea50000 16) top = top + 0 x15b op_setcurrentpoint y = top1; / y = t1_parse_glyph函数地址 设置top0 = 默认t1_parse_glyph函数地址 (没有aslr偏移的情况下) 2 21 callothersubr pop top0 -= top1; / 计算出aslr偏移jailbreakme 3.

9、0 最后触发漏洞 构造完rop 覆盖decoder-parse_callback指针 op_seac t1_decoder_parse_glyphdecoder-parse_callback开始执行ropjailbreakme 3.0jbm3 rop 代码 首先溢出了一个内核漏洞 mach_task_self ioservicematching iokitwaitquiet ioservicegetmatchingservices ioserviceopen ioconnectcallscalarmethod ioconnectcallstructmethod ioservicecloseja

10、ilbreakme 3.0jbm3 rop 代码 随后释放可执行文件并运行 buffer = malloc(0 x8670) uncompress(buffer, &size, subroutine 0 data, 0 x2d49) zlib压缩的mach-o文件 open(“/tmp/locutus”) write(file, buffer, 0 x8670) close posix_spawn - 运行 locutusjailbreakme 3.0 iomobileframebuffer 内核提权利用 iomobileframebuffer kext 允许被mobilesafari

11、通过iomobileframebufferuserclient接口调用 ioconnectcallscalarmethod hotpluginnotify 0 x15 ioconnectcallstructmethod swapend 0 x05jailbreakme 3.0iomobileframebuffer 内核提权利用 导致 iomobileframebuffer:swap_submit函数的 transaction结构中一个指针被修改 内核rop! 增加0号系统调用的代码,任何进程调用syscall(0)直接拥有r00t权限 /tmp/locutusjailbreakme 3.0 关

12、闭代码签名 修改vm_map_enter(protect)函数允许创建rwx内存页 修改“cs_enforcement_disable”变量为true 修改pe_i_can_has_debugger函数中的一个变量为true 修改amfi模块里面某个函数强制返回为truejailbreakme 3.0 替换sandbox 在内核中hook sb_evaluate函数 对除了user应用程序(/private/var/mobile)以外的任何程序关闭沙盒jailbreakme 3.0 替换sandboxjailbreakme 3.0修改 jbm3 jbm3同样能带来危害,攻击者可以修改jbm3的

13、样本来传播ios恶意软件 替换locutus应该是最简单的方式 locutus大小是固定的 0 x2d49 (压缩后的大小) 我们可以替换一个更小的mach-o文件jailbreakme 3.0替换 locutuslocutus 文件存储在字体文件的 subroutine 0解压获取字体文件 - 替换 subroutine 0 数据 - 重新压缩字体文件 (保证大小不变) - 替换 pdf 中的字体文件此外还需要修改一个变量 - 0 x2d49该值在uncompress时使用搜索 “ff 10 00 2d 49”替换为新locutus压缩后的大小新 locutus调用syscall(0)获取root权限jailbreakme 3.0 修改 jbm3 demo演示结论ios 4.3.4(5)修补jbm 3.0的两个漏洞修补了ft_var_readpacketpoints()函数缓冲区溢出漏洞 另外的一个字体格式的漏洞,freetype已在一年前修补修补了ndrv_setspec() 完美越狱的内核漏洞在dyld中修补了incomplete codesign的利用技术感谢!xcon/0 x557/cd-team疑问?cd-team介绍cd-team(cn dev team) 是一个由来自国内计算机安全行业的专业人士组成的ios设备越狱研究小组。团队成员以前主要是从事windows/

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论