Ejecutando binarios ELF en OSX

11

Tengo una pregunta relacionada con el CTF y me preguntaba si alguien puede señalarme en la dirección correcta.

Trabajo en OSX Yosemite y estaba pasando por algunos juegos de guerra y desafíos de CTF más antiguos. Mi objetivo es ejecutar el binario ELF del desafío "nativamente" en mi iterm (después de que lo localice) aunque me doy cuenta de que solo el sistema subyacente puede ejecutar los binarios MACH.

Sin embargo, ¿es posible tal cosa a través de la emulación (por ejemplo, QEMU), o cualquier otro método, para evitar abrir una VM completa solo para ejecutar un binario?

Gracias de antemano.

nilminus
fuente
Este problema es relevante para la seguridad, ya que se encuentra principalmente en CTF de seguridad y juegos de guerra (así es como me quedé atrapado en esto). Creo que la comunidad de seguridad tiene mayores posibilidades de encontrarse con este tema específico. Sin embargo, intentaré allí también.
nilminus
3
Su pregunta no se trata de seguridad, se trata de ejecutar binarios.
Neil Smithline

Respuestas:

2

Por sí solo, los archivos binarios ELF no significan nada. Pocos binarios se ejecutan solos: necesitaría bibliotecas, API y ABI compatibles y otras cosas brillantes.

Cuando ejecuta QEMU, todavía necesita la mayoría del sistema operativo, solo que sospecho que no está tan relacionado con el sistema host.

En teoría, si tuviera algo como 'vino' pero actuando como un linux (u otro * nix syle OS) -> capa de compatibilidad OS X, podría obtener lo que desea, pero esa bestia no existe.

Así que no, no puede ejecutar un binario ELF precompilado arbitrario en OS X

Journeyman Geek
fuente
1
Esta pregunta se refiere a un escenario de seguridad que es bastante nicho en el espacio de superusuario. imagine un binario estático (bibliotecas compiladas en la imagen en lugar de vincularse dinámicamente) que un atacante quiere colocar en un sistema de destino y ejecutar (ese es un escenario básico de juego de seguridad CTF). no necesitará libs externas, aunque su punto sobre ABI (por ejemplo, syscalls) es justo. tienes razón en el caso general, pero esta pregunta no se refiere específicamente al caso general. En mi opinión, no debería haber sido trasladado desde el sitio de seguridad.
quijotesco
2

La respuesta es probablemente: depende de cómo se generó el archivo ELF.

Basado en este artículo y esta oración:

  • Un error común es que los archivos ELF son solo para ejecutables ...
  • Ya hemos visto que pueden usarse para piezas parciales ...

No todos los archivos ELF se ejecutarán, incluso si tiene una configuración adecuada.

Basado en este artículo , hay un grupo de archivos ELF llamado FatELF:

  • FatELF es un formato de archivo que incorpora múltiples archivos binarios ELF para diferentes arquitecturas en un archivo
  • Envíe un archivo que funcione en Linux y FreeBSD

Basado en esta página de Apple

  • La porción BSD del núcleo OS X se deriva principalmente de FreeBSD

Entonces, para Mac OS X, FatELF es el "comienzo de la respuesta".

Y finalmente, basado en esta página :

Convertidor de archivos de objetos

Esta utilidad se puede utilizar para convertir archivos de objetos entre los formatos COFF / PE, OMF, ELF y Mach-O para todas las plataformas x86 de 32 bits y 64 bits. Puede modificar nombres de símbolos en archivos de objetos. Puede construir, modificar y convertir bibliotecas de funciones a través de plataformas . Puede volcar archivos de objetos y archivos ejecutables. También incluye un muy buen desensamblador compatible con los conjuntos de instrucciones SSE4, AVX, AVX2, AVX512, FMA3, FMA4, XOP y Knights Corner. Código fuente incluido (GPL).

Tienes la oportunidad de activar lo que quieras.

PD: hay otra página sobre XBinary , no la analicé .

Este documento analiza XBinary, un nuevo software que le permite agregar soporte a nivel de kernel para ejecutar archivos en formatos binarios arbitrarios en Mac OS X

apagando_tudo
fuente