Exécution des binaires ELF dans OSX

11

J'ai une question liée au FCT et je me demandais si quelqu'un pouvait me diriger dans la bonne direction.

Je travaille sur OSX Yosemite et je traversais des wargames et d'anciens défis CTF. Mon objectif est d'exécuter le binaire ELF du défi "nativement" dans mon iterm (après l'avoir scp localement) bien que je réalise que seuls les binaires MACH peuvent être exécutés par le système sous-jacent.

Néanmoins, une telle chose est-elle possible par émulation peut-être (par exemple QEMU), ou toute autre méthode, afin d'éviter d'ouvrir une VM entière juste pour exécuter un binaire?

Merci d'avance.

nilminus
la source
Ce problème est pertinent pour la sécurité car il se trouve principalement dans les CTF et les wargames de sécurité (c'est ainsi que je suis resté bloqué). Je crois que la communauté de la sécurité a plus de chances de tomber sur ce sujet spécifique. J'essaierai également là-bas.
nilminus
3
Votre question n'est pas sur la sécurité, c'est sur l'exécution de binaires.
Neil Smithline

Réponses:

2

À eux seuls, les binaires ELF ne signifient rien. Peu de binaires s'exécutent seuls - Vous auriez besoin de bibliothèques de support, d'API et d'ABI et d'autres choses brillantes.

Lors de l'exécution de QEMU, vous avez toujours besoin de la plupart des systèmes d'exploitation - juste que ce n'est pas lié aussi étroitement au système hôte que je soupçonne.

En théorie, si vous aviez quelque chose comme `` wine '' mais agissant comme un linux (ou un autre OS * nix syle) -> couche de compatibilité OS X, vous pourriez obtenir ce que vous voulez, mais une telle bête n'existe pas.

Donc non, vous ne pouvez pas exécuter un binaire ELF arbitraire et précompilé sur OS X

Compagnon Geek
la source
1
cette question concerne un scénario de sécurité plutôt niche dans l'espace superutilisateur. imaginez un binaire statique (bibliothèques compilées dans l'image plutôt que liées dynamiquement) qu'un attaquant souhaite placer sur un système cible et exécuter (c'est un scénario de jeu de sécurité CTF de base). il n'aura pas besoin de bibliothèques externes, bien que votre point sur les ABI (par exemple syscalls) soit juste. vous avez raison dans le cas général, mais cette question ne concerne pas spécifiquement le cas général. à mon humble avis, il n'aurait pas dû être déplacé du site de sécurité.
Don Quichotte
2

La réponse est probablement: dépend de la façon dont le fichier ELF a été généré.

Basé sur cet article et cette phrase:

  • Une idée fausse commune est que les fichiers ELF sont uniquement destinés aux exécutables ...
  • Nous avons déjà vu qu'ils peuvent être utilisés pour des pièces partielles ...

Tous les fichiers ELF ne seront pas exécutés, même si vous disposez d'une configuration appropriée.

Sur la base de cet article , il existe un groupe de fichiers ELF pf appelé FatELF:

  • FatELF est un format de fichier qui incorpore plusieurs binaires ELF pour différentes architectures dans un seul fichier
  • Expédiez un fichier compatible avec Linux et FreeBSD

Basé sur cette page d'Apple

  • La partie BSD du noyau OS X est dérivée principalement de FreeBSD

Ainsi, pour Mac OS X, FatELF est le "début de la réponse".

Et enfin, sur la base de cette page :

Convertisseur de fichier objet

Cet utilitaire peut être utilisé pour convertir des fichiers objets entre les formats COFF / PE, OMF, ELF et Mach-O pour toutes les plates-formes x86 32 bits et 64 bits. Peut modifier les noms de symboles dans les fichiers objets. Peut créer, modifier et convertir des bibliothèques de fonctions sur différentes plates-formes . Peut vider les fichiers objets et les fichiers exécutables. Comprend également un très bon démonteur prenant en charge les jeux d'instructions SSE4, AVX, AVX2, AVX512, FMA3, FMA4, XOP et Knights Corner. Code source inclus (GPL).

Vous avez la possibilité d'activer ce que vous voulez.

PS: il y a une autre page sur XBinary , je ne l'ai pas analysée.

Ce document présente XBinary, un nouveau logiciel qui vous permet d'ajouter une prise en charge au niveau du noyau pour l'exécution de fichiers dans des formats binaires arbitraires sur Mac OS X

apagando_tudo
la source