# Зловживання установниками macOS {% hint style="success" %} Вивчайте та вправляйтеся в хакінгу AWS: [**Навчання AWS Red Team Expert (ARTE) від HackTricks**](https://training.hacktricks.xyz/courses/arte)\ Вивчайте та вправляйтеся в хакінгу GCP: [**Навчання GCP Red Team Expert (GRTE) від HackTricks**](https://training.hacktricks.xyz/courses/grte)
Підтримайте HackTricks * Перевірте [**плани підписки**](https://github.com/sponsors/carlospolop)! * **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи Telegram**](https://t.me/peass) або **слідкуйте** за нами на **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** * **Поширюйте хакерські трюки, надсилаючи PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) та [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) репозиторіїв на GitHub.
{% endhint %} ## Основна інформація про Pkg Установочний пакет macOS (також відомий як файл `.pkg`) - це формат файлу, який використовується macOS для **розподілу програмного забезпечення**. Ці файли схожі на **коробку, яка містить все необхідне для встановлення та правильної роботи програми**. Сам файл пакету є архівом, який містить **ієрархію файлів та каталогів, які будуть встановлені на цільовий** комп'ютер. Він також може включати **сценарії** для виконання завдань до та після встановлення, наприклад, налаштування файлів конфігурації або очищення старих версій програмного забезпечення. ### Ієрархія
https://www.youtube.com/watch?v=iASSG0_zobQ
* **Distribution (xml)**: Налаштування (назва, текст вітання...) та сценарії/перевірки встановлення * **PackageInfo (xml)**: Інформація, вимоги до встановлення, місце встановлення, шляхи до сценаріїв для виконання * **Bill of materials (bom)**: Список файлів для встановлення, оновлення або видалення з правами доступу до файлів * **Payload (CPIO архів зі стисненням gzip)**: Файли для встановлення в `install-location` з PackageInfo * **Scripts (CPIO архів зі стисненням gzip)**: Сценарії до та після встановлення та інші ресурси, розпаковані в тимчасовий каталог для виконання. ```bash # Tool to directly get the files inside a package pkgutil —expand "/path/to/package.pkg" "/path/to/out/dir" # Get the files ina. more manual way mkdir -p "/path/to/out/dir" cd "/path/to/out/dir" xar -xf "/path/to/package.pkg" # Decompress also the CPIO gzip compressed ones cat Scripts | gzip -dc | cpio -i cpio -i < Scripts ``` Для візуалізації вмісту установника без ручного розпакування ви також можете використовувати безкоштовний інструмент [**Suspicious Package**](https://mothersruin.com/software/SuspiciousPackage/). ## Основна інформація про DMG Файли DMG, або образи диска Apple, - це формат файлу, який використовується macOS від Apple для образів дисків. Файл DMG суттєво є **монтуємим образом диска** (він містить власну файлову систему), який містить сирі блочні дані, які зазвичай стиснуті, а іноді зашифровані. Коли ви відкриваєте файл DMG, macOS **монтує його, ніби це фізичний диск**, що дозволяє вам отримати доступ до його вмісту. {% hint style="danger" %} Зверніть увагу, що установники **`.dmg`** підтримують **так багато форматів**, що у минулому деякі з них, що містять вразливості, були використані для отримання **виконання коду ядра**. {% endhint %} ### Ієрархія
Ієрархія файлу DMG може бути різною в залежності від вмісту. Однак для DMG-файлів програм зазвичай слідує така структура: * Верхній рівень: Це корінь образу диска. Він часто містить програму та, можливо, посилання на папку Applications. * Додаток (.app): Це справжня програма. В macOS програма зазвичай є пакетом, який містить багато окремих файлів та папок, що складають програму. * Посилання на додатки: Це ярлик до папки Applications в macOS. Мета полягає в тому, щоб зробити встановлення програми легким. Ви можете перетягнути файл .app на цей ярлик, щоб встановити додаток. ## Підвищення привілеїв через зловживання pkg ### Виконання з публічних каталогів Якщо передустановочний або післяустановочний скрипт, наприклад, виконується з **`/var/tmp/Installerutil`**, і зловмисник може контролювати цей скрипт, він може підвищити привілеї кожного разу, коли він виконується. Або інший схожий приклад:
https://www.youtube.com/watch?v=iASSG0_zobQ

https://www.youtube.com/watch?v=kCXhIYtODBg

### AuthorizationExecuteWithPrivileges Це [публічна функція](https://developer.apple.com/documentation/security/1540038-authorizationexecutewithprivileg), яку викликають кілька установників та оновлювачів для **виконання чогось як root**. Ця функція приймає **шлях** до **файлу**, який **виконується** як параметр, однак, якщо зловмисник може **змінити** цей файл, він зможе **зловживати** його виконанням з правами root для **підвищення привілеїв**. ```bash # Breakpoint in the function to check wich file is loaded (lldb) b AuthorizationExecuteWithPrivileges # You could also check FS events to find this missconfig ``` ### Виконання шляхом монтування Якщо програмний інсталятор записує дані до `/tmp/fixedname/bla/bla`, можливо **створити монтування** над `/tmp/fixedname` без власників, тому ви зможете **змінювати будь-який файл під час установки** для зловживання процесом установки. Прикладом цього є **CVE-2021-26089**, який зміг **перезаписати періодичний скрипт**, щоб отримати виконання як root. Для отримання додаткової інформації перегляньте доповідь: [**OBTS v4.0: "Mount(ain) of Bugs" - Csaba Fitzl**](https://www.youtube.com/watch?v=jSYPazD4VcE) ## pkg як шкідливе ПЗ ### Порожній навантаження Можливо просто створити файл **`.pkg`** з **перед та після-інсталяційними скриптами** без будь-якого навантаження. ### JS у файлі Distribution xml Можливо додати теги **`