Ausführen von ELF-Binärdateien in OSX

11

Ich habe eine CTF-bezogene Frage und habe mich gefragt, ob mich jemand in die richtige Richtung weisen kann.

Ich arbeite an OSX Yosemite und habe einige Kriegsspiele und ältere CTF-Herausforderungen durchlaufen. Mein Ziel ist es, die ELF-Binärdatei der Herausforderung "nativ" in meinem iterm auszuführen (nachdem ich sie lokal scp), obwohl mir klar ist, dass nur MACH-Binärdateien vom zugrunde liegenden System ausgeführt werden dürfen.

Ist so etwas jedoch vielleicht durch Emulation (z. B. QEMU) oder eine andere Methode möglich, um zu vermeiden, dass eine ganze VM nur zum Ausführen einer Binärdatei geöffnet wird?

Danke im Voraus.

Nilminus
quelle
Dieses Problem ist für die Sicherheit relevant, da es hauptsächlich in Sicherheits-CTFs und Wargames zu finden ist (so habe ich mich daran gehalten). Ich glaube, dass die Sicherheitsgemeinschaft höhere Chancen hat, auf dieses spezielle Thema zu stoßen. Ich werde es aber auch dort versuchen.
Nilminus
3
Bei Ihrer Frage geht es nicht um Sicherheit, sondern um das Ausführen von Binärdateien.
Neil Smithline

Antworten:

2

ELF-Binärdateien bedeuten für sich genommen nichts. Nur wenige Binärdateien werden alleine ausgeführt. Sie benötigen unterstützende Bibliotheken, APIs, ABIs und andere glänzende Dinge.

Wenn Sie QEMU ausführen, benötigen Sie immer noch den größten Teil des Betriebssystems - nur, dass es nicht so eng mit dem Host-System verbunden ist, das ich vermute.

Theoretisch könnten Sie bekommen, was Sie wollen, wenn Sie so etwas wie "Wein" hätten, aber als Linux (oder eine andere * nix-artige OS) -> OS X-Kompatibilitätsschicht fungieren , aber ein solches Biest gibt es nicht.

Also nein, Sie können unter OS X keine willkürliche, vorkompilierte ELF-Binärdatei ausführen

Gesellenfreak
quelle
1
Diese Frage bezieht sich auf ein Sicherheitsszenario, das im Superuser-Bereich eher eine Nische darstellt. Stellen Sie sich eine statische Binärdatei vor (Bibliotheken werden im Bild kompiliert und nicht dynamisch verknüpft), die ein Angreifer auf einem Zielsystem platzieren und ausführen möchte (dies ist ein grundlegendes CTF-Sicherheitsspielszenario). Es werden keine externen Bibliotheken benötigt, obwohl Ihr Standpunkt zu ABIs (z. B. Systemaufrufen) fair ist. Sie haben im allgemeinen Fall Recht, aber diese Frage bezieht sich speziell nicht auf den allgemeinen Fall. imho sollte es nicht von der Sicherheitsseite verschoben worden sein.
Quixotic
2

Die Antwort lautet wahrscheinlich: Hängt davon ab, wie die ELF-Datei generiert wurde.

Basierend auf diesem Artikel und diesem Satz:

  • Ein häufiges Missverständnis ist, dass ELF-Dateien nur für ausführbare Dateien sind ...
  • Wir haben bereits gesehen, dass sie für Teilstücke verwendet werden können ...

Nicht alle ELF-Dateien werden ausgeführt, selbst wenn Sie über ein ordnungsgemäßes Setup verfügen.

Basierend auf diesem Artikel gibt es eine Gruppe von ELF-Dateien namens FatELF:

  • FatELF ist ein Dateiformat, das mehrere ELF-Binärdateien für verschiedene Architekturen in eine Datei einbettet
  • Versenden Sie eine Datei, die unter Linux und FreeBSD funktioniert

Basierend auf dieser Seite von Apple

  • Der BSD-Teil des OS X-Kernels wird hauptsächlich von FreeBSD abgeleitet

Für Mac OS X ist FatELF der "Anfang der Antwort".

Und schließlich basierend auf dieser Seite :

Objektdateikonverter

Dieses Dienstprogramm kann zum Konvertieren von Objektdateien zwischen den Formaten COFF / PE, OMF, ELF und Mach-O für alle 32-Bit- und 64-Bit-x86-Plattformen verwendet werden. Kann Symbolnamen in Objektdateien ändern. Kann Funktionsbibliotheken plattformübergreifend erstellen, ändern und konvertieren . Kann Objektdateien und ausführbare Dateien sichern. Enthält auch einen sehr guten Disassembler, der die Befehlssätze SSE4, AVX, AVX2, AVX512, FMA3, FMA4, XOP und Knights Corner unterstützt. Quellcode enthalten (GPL).

Sie haben die Möglichkeit zu aktivieren, was Sie wollen.

PS: Es gibt eine andere Seite über XBinary , die ich nicht analysiert habe.

In diesem Dokument wird XBinary erläutert, eine neue Software, mit der Sie Unterstützung auf Kernelebene für die Ausführung von Dateien in beliebigen Binärformaten unter Mac OS X hinzufügen können

apagando_tudo
quelle