Виконання бінарних файлів ELF в OSX


11

У мене є питання, пов'язані з CTF, і мені було цікаво, чи хтось може мене вказати в правильному напрямку.

Я працюю над OSX Yosemite, і я переживав деякі Wargames та старі завдання CTF. Моя мета - виконати бінарний код ELF виклику "споконвічно" у своїй ітермі (після того, як я пророблю його локально), хоча я розумію, що базовою системою можуть виконуватися лише бінарні файли MACH.

Тим не менш, чи можливо таке зробити через емуляцію (наприклад, QEMU) чи будь-який інший метод, щоб уникнути відкриття цілого VM просто для запуску двійкового?

Спасибі заздалегідь.


Це питання стосується безпеки, оскільки воно знаходиться в основному у захисних CTF та бойових іграх (саме тому я застряг у цьому). Я вважаю, що спільнота безпеки має більше шансів натрапити на цю конкретну тему. Я теж спробую там.
nilminus

3
Ваше запитання не стосується безпеки, а запуску двійкових файлів.
Ніл Смітлайн

Відповіді:


2

Бінарні файли ELF самі по собі нічого не означають. Мало бінарних файлів, які працюють окремо - Вам знадобляться підтримуючі бібліотеки, API та ABI та інші блискучі речі.

Під час роботи QEMU вам все ще потрібна більшість ОС - тільки вона не пов'язана так тісно з хост-системою, яку я підозрюю.

Теоретично, якщо у вас було щось на кшталт "wine", але ви працюєте як linux (або інша * nix syle OS) -> сумісність OS X, ви могли отримати те, що хочете, але такого звіра не існує.

Так ні, ви не можете запустити довільну, попередньо складену двійкову версію ELF в OS X


1
це питання стосується сценарію безпеки, який є досить ніше в просторі суперпользователя. уявіть статичну двійкову (вкладені в зображення, а не динамічно пов'язані), які зловмисник хоче розмістити в цільовій системі та запустити (це базовий сценарій ігрової безпеки CTF). йому не знадобляться зовнішні зв'язки, хоча ваша думка про ABI (наприклад, систематичні дзвінки) справедлива. Ви маєте рацію в загальному випадку, але це питання конкретно не стосується загальної справи. imho, це не повинно було бути переміщено з сайту безпеки.
кіхот

2

Можливо, відповідь: Залежить від створення файлу ELF.

Виходячи з цієї статті і цього речення:

  • Поширена помилка полягає в тому, що файли ELF призначені лише для виконання файлів ...
  • Ми вже бачили, що їх можна використовувати для часткових штук ...

Не всі файли ELF будуть виконані, навіть якщо у вас правильна настройка.

На основі цієї статті існує група файлів ELF у форматі pf під назвою FatELF:

  • FatELF - це формат файлу, який вкладає в один файл кілька бінарних файлів ELF для різних архітектур
  • Відправте один файл, який працює в Linux та FreeBSD

На основі цієї сторінки від Apple

  • Частина BSD ядра OS X походить в основному з FreeBSD

Отже, для Mac OS X FatELF - це "початок відповіді".

І, нарешті, на основі цієї сторінки :

Перетворювач файлів об'єкта

Ця утиліта може використовуватися для перетворення об’єктних файлів між форматами COFF / PE, OMF, ELF та Mach-O для всіх 32-бітних і 64-бітних платформ x86. Може змінювати імена символів у об’єктних файлах. Може створювати, змінювати та перетворювати бібліотеки функцій на різних платформах . Може скидати об’єктні файли та виконувані файли. Також включає дуже хороший розбирач, що підтримує набори інструкцій SSE4, AVX, AVX2, AVX512, FMA3, FMA4, XOP та Knights Corner. Вихідний код включений (GPL).

У вас є шанс активувати те, що ви хочете.

PS: Є ще одна сторінка про XBinary , я її не аналізував.

У цьому документі розглядається XBinary, нове програмне забезпечення, яке дозволяє додавати підтримку на рівні ядра для виконання файлів у довільних бінарних форматах на Mac OS X

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.