Wykonywanie plików binarnych ELF w OSX

11

Mam pytanie związane z CTF i zastanawiałem się, czy ktoś może wskazać mi właściwy kierunek.

Pracuję na OSX Yosemite i przechodziłem przez niektóre gry wojenne i starsze wyzwania CTF. Moim celem jest wykonanie pliku binarnego ELF wyzwania „natywnie” w moim itermie (po scpowaniu go lokalnie), chociaż zdaję sobie sprawę, że system bazowy może wykonywać tylko pliki binarne MACH.

Niemniej jednak, czy jest to możliwe poprzez emulację (np. QEMU) lub inną metodę, aby uniknąć otwarcia całej maszyny wirtualnej tylko w celu uruchomienia pliku binarnego?

Z góry dziękuję.

Nilminus
źródło
Ten problem dotyczy bezpieczeństwa, ponieważ występuje głównie w zabezpieczeniach CTF i grach wojennych (tak utknąłem w tym). Uważam, że społeczność bezpieczeństwa ma większe szanse na spotkanie z tym konkretnym tematem. Spróbuję też tam.
nilminus
3
Twoje pytanie nie dotyczy bezpieczeństwa, chodzi o uruchamianie plików binarnych.
Neil Smithline,

Odpowiedzi:

2

Same pliki binarne ELF nic nie znaczą. Kilka plików binarnych działa samodzielnie - potrzebujesz bibliotek pomocniczych, interfejsów API i ABI oraz innych lśniących rzeczy.

Podczas uruchamiania QEMU nadal potrzebujesz większości systemu operacyjnego - po prostu nie jest on tak ściśle związany z systemem hosta, jak podejrzewam.

W teorii, gdybyś miał coś w rodzaju „wina”, ale działa jak Linux (lub innego * nix syle OS) -> OS X warstwa kompatybilności Państwo mogli dostać to, czego chce, ale takie zwierzę nie istnieje.

NIE, nie możesz uruchomić arbitralnego, wstępnie skompilowanego pliku binarnego ELF na OS X

Journeyman Geek
źródło
1
to pytanie dotyczy scenariusza bezpieczeństwa, który jest raczej niszowy w przestrzeni administratora. wyobraź sobie statyczny plik binarny (lib wkompilowany w obraz, a nie dynamicznie połączony), który atakujący chce umieścić w systemie docelowym i uruchomić (jest to podstawowy scenariusz gry bezpieczeństwa CTF). nie będzie potrzebował zewnętrznych bibliotek, ale twoje zdanie na temat ABI (np. syscalls) jest słuszne. masz rację w przypadku ogólnym, ale to pytanie nie dotyczy konkretnie przypadku ogólnego. imho nie powinno być przeniesione z witryny bezpieczeństwa.
donkiszot z
2

Odpowiedź brzmi prawdopodobnie: zależy od tego, jak plik ELF został wygenerowany.

Na podstawie tego artykułu i tego zdania:

  • Częstym nieporozumieniem jest to, że pliki ELF są przeznaczone tylko do plików wykonywalnych ...
  • Widzieliśmy już, że można ich używać do częściowych elementów ...

Nie wszystkie pliki ELF zostaną wykonane, nawet jeśli masz prawidłową konfigurację.

Na podstawie tego artykułu istnieje grupa plików ELF o nazwie FatELF:

  • FatELF to format pliku, który osadza wiele plików binarnych ELF dla różnych architektur w jednym pliku
  • Wyślij jeden plik, który działa w systemie Linux i FreeBSD

Na podstawie tej strony Apple

  • Część BSD jądra OS X pochodzi głównie z FreeBSD

Tak więc w Mac OS X FatELF jest „początkiem odpowiedzi”.

I na koniec na podstawie tej strony :

Konwerter plików obiektowych

Tego narzędzia można użyć do konwersji plików obiektowych między formatami COFF / PE, OMF, ELF i Mach-O dla wszystkich 32-bitowych i 64-bitowych platform x86. Może modyfikować nazwy symboli w plikach obiektowych. Potrafi budować, modyfikować i konwertować biblioteki funkcji na różnych platformach . Może zrzucić pliki obiektów i pliki wykonywalne. Zawiera także bardzo dobry deasembler obsługujący zestawy instrukcji SSE4, AVX, AVX2, AVX512, FMA3, FMA4, XOP i Knights Corner. Zawiera kod źródłowy (GPL).

Masz szansę aktywować, co chcesz.

PS: jest jeszcze jedna strona o XBinary , nie analizowałem jej.

W tym dokumencie omówiono XBinary, nowe oprogramowanie, które pozwala dodać obsługę jądra do wykonywania plików w dowolnych formatach binarnych w systemie Mac OS X

apagando_tudo
źródło