libmalloc源码分析之初始化

摘要

为了加深对OS X系统在应用层堆内存分配的了解,对libmalloc进行了阅读与理解。

  • 加强对堆上内存分布的理解
  • 遇到内存泄露问题需要处理时,对堆分配策略的了解,可以提高分析的速度与精确度
  • 遇到堆内存漏洞利用时,可以更加清楚的理解EXP的原理,做出更精准的分析

阅读本文之前可以先稍微了解一下OS X在堆上的内存处理的大致情况,点这里。了解大致情况之后,才能更好的理解源码的设计。

10-11-4版本小结

0x00 版本小结

10.11.4版本开始着手研究OS X系统安全方面的知识,上周苹果发布了10.11.5版本,10.11.4版本的补丁中还有大量的漏洞没有研究完,又放出了新的版本,这里稍微做一下总结。

0x01 10.11.4 小结

1.1 基础知识

1.1.1 macho格式学习

​ 因为刚开始研究OS X系统,花了一部分时间研究了mach-o文件格式的知识,在后续的漏洞分析中发现,mach-o文件的知识还不够扎实,还会有很多似懂非懂的问题。

mach-o格式分析

Mach-O的动态链接相关知识

fishhook源码分析

OSX内核加载mach-o流程分析

1.1.2 dyld源码分析

dyld源码分析-动态加载load

dyld中mach-o文件加载的简单分析

1.2漏洞分析

​ 主要分析了两个漏洞CVE-2016-1757以及CVE-2016-1749。两个漏洞一个是应用层一个是内核层的,在分析研究漏洞的过程中,也熟悉掌握了ida,bindiff,lldb等一系列工具的实际操作。在分析另外一个内核漏洞的过程中,发现在内核框架的掌握上有比较大的缺憾,所以花了大量的时间熟悉了内核开发与一些相关部分的源码,所以有半个月时间左右没有通过日志总结学习的小结,在10.11.5版本的漏洞研究时将补充相关的内容。

  • libkern c++ 运行时源码学习
  • kext内核扩展加载流程
  • iokit框架工作的原理及细节的简单深入分析
  • mach-o的dyld中重定向的代码细节

0x02 10.11.5 目标

  • 提高漏洞分析的能力和速度(POC构建,EXP编写)
  • 提高基础能力的学习(内核源码,系统结构)

apple沙盒研究之基础知识

1 基础知识

1.1 什么是沙盒?

计算机安全领域,沙盒(英语:sandbox,又译为沙箱)是一种安全机制,为运行中的程序提供的隔离环境。通常是作为一些来源不可信、具破坏力或无法判定程序意图的程序提供实验之用[1]#cite_note-1)。

沙盒通常严格控制其中的程序所能访问的资源,比如,沙盒可以提供用后即回收的磁盘及内存空间。在沙盒中,网络访问、对真实系统的访问、对输入设备的读取通常被禁止或是严格限制。从这个角度来说,沙盒属于虚拟化的一种。

沙盒中的所有改动对操作系统不会造成任何损失。通常,这种技术被计算机技术人员广泛用于测试可能带毒的程序或是其他的恶意代码[2]#cite_note-2)。

— 维基百科,沙盒 (计算机安全)

这样一段话说的已经很清楚了,关于在OS X系统中沙盒的简单应用,也有文章解释过了,这些不是本文的核心内容,有兴趣的读者可以自行google

OS X以及IOS系统中限制了进程对一些资源的访问权限,例如网络、某些特殊路径、文件的读写等等,限定了进程的一些行为,从而保证进程不会做出超越权限的操作。

CVE-2016-1757简单分析

0x00 摘要

灵犀一指可攻可守,进攻时也是一指,是天下第一指法,与移花接玉这个天下第一掌法同样都是非兵刃的第一绝技

—陆小凤传奇

最近的10.11.4补丁修复了一个利用条件竞争获得代码执行权限的漏洞,经过对内核源码以及poc的理解之后,先对问题作出一个简单的分析。

OSX内核加载mach-o流程分析

0x00 摘要

​ 研究OS X安全方面的知识需要对mach-o加载的流程需要有一个比较完整的理解,断断续续一个月的时间里面,通过对源码的阅读对mach-o的加载有一个比较基本的认识,在遇到各个具体的问题是才能更好的理解和操作。

​ 其他相关文章可以看这里,基本涵盖了从内核态到应用层的相关源码的简单分析。还有不足之处在遇到相关的问题时也会加到这一系列文章中。

​ 1.mach-o加载流程学习-dyld对主image的处理流程

​ 2.mach-o加载流程学习-dyld对依赖库的加载流程

​ 3.mach-o加载流程学习-内核对mach-o文件的加载流程(本文)

​ 通过一张图片,可以比较清楚的理解整个流程。

整体流程

,