转载

Hacking Team Mac OSX 64位 Shellcode 技术分析

Hacking Team Mac OSX 64位 Shellcode 技术分析

博文作者:riusksk

发布日期:2015-07-16

阅读次数:398

博文内容:

在此次泄露的 Flash 0Day 的利用代码都包含针对 Mac OSX 64 位系统的利用,以往在网上看到的大多是 windows 平台 32/64 位的利用代码,很少有 Mac 版的 flash 利用代码曝光,刚好可以借机分析学习下军用级武器的写法。

【源码分析】

下面以第 1 HackingTeam 泄露的 CVE-2015-5119Flash 0day 漏洞中的利用代码为例:

1 、内在中暴力搜索 Mach-o 文件头 magic 标记 0xfeedfacf (类似搜索 windows 平台下的 PE MZ 标记),它代表 64 位程序的意思,也是 MacOS X 上可执行文件的开头。

Hacking Team Mac OSX 64位 Shellcode 技术分析

可以用 otool 或者 MachOView 查看 Mach-o 可执行文件格式:

Hacking Team Mac OSX 64位 Shellcode 技术分析

2 、在 Mach-o 文件头之后是加载命令( LoadCommand )区域,接下来程序搜索用于映射文件中的段到进程内存空间的 LC_SEGMENT_64 加载命令,遍历每个被加载的段,找到包含段标记为 S_SYMBOL_STUBS (代表包含符号信息) S_ATTR_PURE_INSTRUCTIONS (代表包含机器码)的段,然后获取段地址 Address 、偏移量 Offset Size Stubs Size Stubs 数量以及 Indirect Sym Index (间接符号表索引值)。

Hacking Team Mac OSX 64位 Shellcode 技术分析

Hacking Team Mac OSX 64位 Shellcode 技术分析

Hacking Team Mac OSX 64位 Shellcode 技术分析

3 、找到 _LINKEDIT 段,从中获取相应的虚拟地址和文件偏移,然后互减得到两者之间的偏移量。

Hacking Team Mac OSX 64位 Shellcode 技术分析

4 、获取 LC_SYMTAB 加载命令的相关信息,该命令用于指定文件所使用的符号表,找到后分别获取符号表偏移量、符号数、字符串表偏移量、字符串表大小

Hacking Team Mac OSX 64位 Shellcode 技术分析

Hacking Team Mac OSX 64位 Shellcode 技术分析

5 、获取 LC_DYSYMTAB 加载命令的相关信息,该命令用于指定动态链接库所使用的符号表,找到后获取间接符号表偏移量

Hacking Team Mac OSX 64位 Shellcode 技术分析

Hacking Team Mac OSX 64位 Shellcode 技术分析

6 、将前面获取的符号表地址、间接符号表地址和字符串表地址分别加上第 3 步获取的偏移量

Hacking Team Mac OSX 64位 Shellcode 技术分析

7 、从前面获取的 3 个值,去字符串表中索引 mprotect 函数,找到其对应的内存地址,以利用它去真正的 shellcode 部分赋予可执行权限(这部分与 Windows 平台上的代码基本一致),以绕过 DEP 的保护。

Hacking Team Mac OSX 64位 Shellcode 技术分析

8 、前面都是为执行接下来 x64 shellcode 代码而作的准备,由于 vfork 所创建的子进程与父进程共享数据,因此可用于检测是否位于沙盒中,若在沙盒中 vfrok 会执行失效,进而退出执行。

Hacking Team Mac OSX 64位 Shellcode 技术分析

9 、通过为 syscall 指定调用号来调用 execve 函数,以执行 "/Applications/Calulator.app/Contents/MacOS/Calculator” 打开计算器,然后再调用 exit 退出子进程。

Hacking Team Mac OSX 64位 Shellcode 技术分析

10 、设置返回值为 int atom 类型,左移 3 位是为了对最后 3 bits 清零,因为它代表着 atom 类型,再加 6 是为了设置为 int atom 类型,因为 shellcode 相当于自定义函数,它是用于替换 payload JIT 函数去执行的,最后弹出栈数据,以维持栈平衡。

Hacking Team Mac OSX 64位 Shellcode 技术分析

Hacking Team Mac OSX 64位 Shellcode 技术分析

【总结】

此次的 Mac OSX 64 位平台的利用,主要还是先根据 Maco-o 文件头标记找到 flash 模块,然后去索引符号表、间接符号表和字符串表,进而找到 mprotect 函数的地址,将 shellcode 内存块设置为可执行权限。真正用于弹出计算器的 shellcode 代码相对比较简单,向 syscall 传递调用号来执行 execve 函数,进而打开指定的程序文件 Calculator ,实现最终的任意代码执行。

Hacking Team Mac OSX 64位 Shellcode 技术分析

Hacking Team Mac OSX 64位 Shellcode 技术分析 本文专属二维码,扫一扫还能分享朋友圈

[共有 1条 评论]
正文到此结束
Loading...