macOS Bundles

Reading time: 3 minutes

tip

Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Підтримайте HackTricks

Basic Information

Бандли в macOS слугують контейнерами для різноманітних ресурсів, включаючи програми, бібліотеки та інші необхідні файли, що дозволяє їм з'являтися як єдині об'єкти у Finder, такі як знайомі *.app файли. Найбільш поширеним бандлом є бандл .app, хоча також поширені інші типи, такі як .framework, .systemextension та .kext.

Essential Components of a Bundle

Усередині бандла, зокрема в каталозі <application>.app/Contents/, розміщено різноманітні важливі ресурси:

  • _CodeSignature: Цей каталог зберігає деталі підпису коду, які є важливими для перевірки цілісності програми. Ви можете перевірити інформацію про підпис коду, використовуючи команди, такі як: %%%bash openssl dgst -binary -sha1 /Applications/Safari.app/Contents/Resources/Assets.car | openssl base64 %%%
  • MacOS: Містить виконуваний бінарний файл програми, який запускається при взаємодії з користувачем.
  • Resources: Сховище для компонентів інтерфейсу користувача програми, включаючи зображення, документи та описи інтерфейсу (файли nib/xib).
  • Info.plist: Виконує роль основного конфігураційного файлу програми, що є критично важливим для системи, щоб правильно розпізнавати та взаємодіяти з програмою.

Important Keys in Info.plist

Файл Info.plist є основою для конфігурації програми, містячи ключі, такі як:

  • CFBundleExecutable: Вказує на ім'я основного виконуваного файлу, розташованого в каталозі Contents/MacOS.
  • CFBundleIdentifier: Надає глобальний ідентифікатор для програми, який широко використовується macOS для управління програмами.
  • LSMinimumSystemVersion: Вказує на мінімальну версію macOS, необхідну для запуску програми.

Exploring Bundles

Щоб дослідити вміст бандла, такого як Safari.app, можна використовувати наступну команду: bash ls -lR /Applications/Safari.app/Contents

Це дослідження виявляє каталоги, такі як _CodeSignature, MacOS, Resources, та файли, такі як Info.plist, кожен з яких виконує унікальну роль, від забезпечення безпеки програми до визначення її інтерфейсу користувача та операційних параметрів.

Additional Bundle Directories

Окрім загальних каталогів, бандли можуть також включати:

  • Frameworks: Містить упаковані фреймворки, які використовуються програмою. Фреймворки подібні до dylibs з додатковими ресурсами.
  • PlugIns: Каталог для плагінів та розширень, які покращують можливості програми.
  • XPCServices: Містить XPC сервіси, які використовуються програмою для міжпроцесної комунікації.

Ця структура забезпечує, що всі необхідні компоненти інкапсульовані в бандлі, що сприяє модульному та безпечному середовищу програми.

Для отримання більш детальної інформації про ключі Info.plist та їх значення, документація для розробників Apple надає обширні ресурси: Apple Info.plist Key Reference.

tip

Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Підтримайте HackTricks