在OSX中执行ELF二进制文件


11

我有一个与CTF相关的问题,我想知道是否有人可以指出我正确的方向。

我在OSX Yosemite上工作,正在经历一些战争游戏和较老的CTF挑战。我的目标是将挑战的ELF二进制文件“本地”执行到我的iterm中(在我本地本地化之后),尽管我意识到底层系统只能执行MACH二进制文件。

但是,是否有可能通过仿真(例如QEMU)或任何其他方法来避免通过打开整个VM只是为了运行二进制文件而发生这种事情?

先感谢您。


这个问题与安全性有关,因为它主要存在于安全性CTF和战争游戏中(这就是我坚持的方式)。我认为安全社区有更多机会讨论此特定主题。我也会尝试在那里。
nilminus

3
您的问题不是关于安全性,而是关于运行二进制文件。
尼尔Smithline

Answers:


2

ELF二进制文件本身没有任何意义。很少有二进制文件可以单独运行-您需要支持库,API和ABI以及其他出色的东西。

运行QEMU时,您仍然需要大多数操作系统-只是它与我怀疑的主机系统没有紧密联系。

从理论上讲,如果您有类似“葡萄酒”的角色,但充当linux(或其他* nix syle OS)-> OS X兼容层,则可以得到所需的东西,但是这种野兽并不存在。

因此,不行,您无法在OS X上运行任意预编译的ELF二进制文件


1
这个问题涉及的安全场景在超级用户空间中相当小众。想象攻击者想要放置在目标系统上并运行的静态二进制文件(库编译成映像,而不是动态链接)(这是基本的CTF安全游戏场景)。它不需要外部库,尽管您对ABI(例如syscalls)的观点是很公平的。您在一般情况下是正确的,但是这个问题与一般情况无关。恕我直言,它不应该从安全站点移走。
quixotic

2

答案可能是:取决于ELF文件是如何生成的。

根据本文和这句话:

  • 一个常见的误解是ELF文件仅用于可执行文件...
  • 我们已经看到它们可以用于部分零件...

即使您进行了正确的设置,也不会执行所有的ELF文件。

根据本文,有一组名为FatELF的pf ELF文件:

  • FatELF是一种文件格式,可将用于不同体系结构的多个ELF二进制文件嵌入到一个文件中
  • 交付一个可在Linux和FreeBSD上运行的文件

根据Apple的页面

  • OS X内核的BSD部分主要来自FreeBSD

因此,对于Mac OS X,FatELF是“答案的开始”。

最后,基于此页面

目标文件转换器

此实用程序可用于在所有32位和64位x86平台的COFF / PE,OMF,ELF和Mach-O格式之间转换目标文件。可以修改目标文件中的符号名称。可以跨平台构建,修改和转换功能库。可以转储目标文件和可执行文件。还包括一个非常好的反汇编程序,支持SSE4,AVX,AVX2,AVX512,FMA3,FMA4,XOP和Knights Corner指令集。包含的源代码(GPL)。

您有机会激活自己想要的东西。

PS:关于XBinary还有另一,我没有分析。

本文档讨论XBinary,这是一种新软件,可让您添加内核级支持,以在Mac OS X上以任意二进制格式执行文件。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.