Esecuzione di binari ELF in OSX


11

Ho una domanda relativa al CTF e mi chiedevo se qualcuno potesse indicarmi la giusta direzione.

Lavoro su OSX Yosemite e stavo attraversando alcuni giochi di guerra e sfide CTF precedenti. Il mio obiettivo è quello di eseguire il binario ELF della sfida "nativamente" nel mio iterm (dopo averlo scp localmente) anche se mi rendo conto che solo i binari MACH possono essere eseguiti dal sistema sottostante.

Tuttavia, una cosa del genere è possibile attraverso l'emulazione forse (ad esempio QEMU) o qualsiasi altro metodo, al fine di evitare l'apertura di un'intera VM solo per eseguire un binario?

Grazie in anticipo.


Questo problema è rilevante per la sicurezza in quanto si trova principalmente nei CTF di sicurezza e nei wargame (è così che mi sono bloccato su questo). Credo che la comunità della sicurezza abbia maggiori possibilità di imbattersi in questo argomento specifico. Ci proverò anche lì.
nilminus,

3
La tua domanda non riguarda la sicurezza, si tratta di eseguire i binari.
Neil Smithline,

Risposte:


2

Di per sé, i binari ELF non significano nulla. Pochi binari funzionano da soli - Avresti bisogno di librerie di supporto, API e ABI e altre cose brillanti.

Quando esegui QEMU hai ancora bisogno della maggior parte del sistema operativo, solo che non è strettamente legato al sistema host che sospetto.

In teoria se si ha qualcosa come 'vino', ma in qualità di Linux (o altro syle OS * nix) -> layer di compatibilità OS X si potrebbe ottenere ciò che volete, ma una bestia non esiste.

Quindi no, non è possibile eseguire un binario ELF arbitrario precompilato su OS X.


1
questa domanda riguarda uno scenario di sicurezza piuttosto di nicchia nello spazio dei superutente. immagina un binario statico (librerie compilate nell'immagine piuttosto che collegate dinamicamente) che un utente malintenzionato vuole posizionare su un sistema di destinazione ed eseguire (questo è uno scenario di gioco di sicurezza CTF di base). non avrà bisogno di librerie esterne, anche se il tuo punto sugli ABI (es. syscalls) è giusto. hai ragione nel caso generale, ma questa domanda non riguarda specificamente il caso generale. Imho, non avrebbe dovuto essere spostato dal sito di sicurezza.
donchisciottesco

2

La risposta è probabilmente: dipende da come è stato generato il file ELF.

Sulla base di questo articolo e di questa frase:

  • Un malinteso comune è che i file ELF sono solo per eseguibili ...
  • Abbiamo già visto che possono essere utilizzati per pezzi parziali ...

Non tutti i file ELF verranno eseguiti, anche se si dispone di un'installazione corretta.

Sulla base di questo articolo , c'è un gruppo pf file ELF chiamato FatELF:

  • FatELF è un formato di file che incorpora più file binari ELF per architetture diverse in un unico file
  • Spedisci un file che funziona su Linux e FreeBSD

Sulla base di questa pagina di Apple

  • La parte BSD del kernel OS X deriva principalmente da FreeBSD

Quindi, per Mac OS X, FatELF è "l'inizio della risposta".

E infine, basato su questa pagina :

Convertitore di file oggetto

Questa utility può essere utilizzata per convertire i file oggetto tra i formati COFF / PE, OMF, ELF e Mach-O per tutte le piattaforme x86 a 32 e 64 bit. Può modificare i nomi dei simboli nei file oggetto. Può costruire, modificare e convertire librerie di funzioni su più piattaforme . Può scaricare file oggetto e file eseguibili. Include anche un ottimo disassemblatore che supporta i set di istruzioni SSE4, AVX, AVX2, AVX512, FMA3, FMA4, XOP e Knights Corner. Codice sorgente incluso (GPL).

Hai la possibilità di attivare ciò che desideri.

PS: c'è un'altra pagina su XBinary , non l'ho analizzato.

Questo documento tratta XBinary, un nuovo software che consente di aggiungere il supporto a livello di kernel per l'esecuzione di file in formati binari arbitrari su Mac OS X

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.