macOS Dirty NIB
Reading time: 3 minutes
tip
Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Підтримайте HackTricks
- Перевірте плани підписки!
- Приєднуйтесь до 💬 групи Discord або групи telegram або слідкуйте за нами в Twitter 🐦 @hacktricks_live.
- Діліться хакерськими трюками, надсилаючи PR до HackTricks та HackTricks Cloud репозиторіїв на github.
Для отримання додаткової інформації про техніку перегляньте оригінальний пост з: https://blog.xpnsec.com/dirtynib/ та наступний пост від https://sector7.computest.nl/post/2024-04-bringing-process-injection-into-view-exploiting-all-macos-apps-using-nib-files/. Ось резюме:
Що таке Nib файли
Nib (скорочено від NeXT Interface Builder) файли, частина екосистеми розробки Apple, призначені для визначення UI елементів та їх взаємодій в додатках. Вони містять серіалізовані об'єкти, такі як вікна та кнопки, і завантажуються під час виконання. Незважаючи на їх постійне використання, Apple тепер рекомендує Storyboards для більш комплексної візуалізації потоку UI.
Основний Nib файл згадується у значенні NSMainNibFile
всередині файлу Info.plist
додатку і завантажується функцією NSApplicationMain
, яка виконується в функції main
додатку.
Процес ін'єкції Dirty Nib
Створення та налаштування NIB файлу
- Початкове налаштування:
- Створіть новий NIB файл за допомогою XCode.
- Додайте об'єкт до інтерфейсу, встановивши його клас на
NSAppleScript
. - Налаштуйте початкову властивість
source
через User Defined Runtime Attributes.
- Гаджет виконання коду:
- Налаштування дозволяє виконувати AppleScript за запитом.
- Інтегруйте кнопку для активації об'єкта
Apple Script
, спеціально викликаючи селекторexecuteAndReturnError:
.
- Тестування:
- Простий Apple Script для тестування:
set theDialogText to "PWND"
display dialog theDialogText
- Тестуйте, запустивши в налагоджувачі XCode та натиснувши кнопку.
Цілеве застосування (Приклад: Pages)
- Підготовка:
- Скопіюйте цільовий додаток (наприклад, Pages) в окрему директорію (наприклад,
/tmp/
). - Запустіть додаток, щоб обійти проблеми з Gatekeeper і кешувати його.
- Перезапис NIB файлу:
- Замініть існуючий NIB файл (наприклад, About Panel NIB) на створений DirtyNIB файл.
- Виконання:
- Запустіть виконання, взаємодіючи з додатком (наприклад, вибравши пункт меню
About
).
Доказ концепції: Доступ до даних користувача
- Змініть AppleScript для доступу та вилучення даних користувача, таких як фотографії, без згоди користувача.
Приклад коду: Зловмисний .xib файл
- Доступ до та перегляд зразка зловмисного .xib файлу, який демонструє виконання довільного коду.
Інший приклад
У пості https://sector7.computest.nl/post/2024-04-bringing-process-injection-into-view-exploiting-all-macos-apps-using-nib-files/ ви можете знайти навчальний посібник про те, як створити dirty nib.
Вирішення обмежень запуску
- Обмеження запуску заважають виконанню додатків з несподіваних місць (наприклад,
/tmp
). - Можливо виявити додатки, які не захищені обмеженнями запуску, і націлити їх для ін'єкції NIB файлу.
Додаткові захисти macOS
З macOS Sonoma обмежено модифікації всередині пакетів додатків. Однак раніше методи включали:
- Копіювання додатку в інше місце (наприклад,
/tmp/
). - Перейменування директорій всередині пакету додатку для обходу початкових захистів.
- Після запуску додатку для реєстрації з Gatekeeper, модифікація пакету додатку (наприклад, заміна MainMenu.nib на Dirty.nib).
- Повернення директорій назад і повторний запуск додатку для виконання ін'єкованого NIB файлу.
Примітка: Останні оновлення macOS зменшили цю вразливість, заборонивши модифікації файлів всередині пакетів додатків після кешування Gatekeeper, що робить цю вразливість неефективною.
tip
Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Підтримайте HackTricks
- Перевірте плани підписки!
- Приєднуйтесь до 💬 групи Discord або групи telegram або слідкуйте за нами в Twitter 🐦 @hacktricks_live.
- Діліться хакерськими трюками, надсилаючи PR до HackTricks та HackTricks Cloud репозиторіїв на github.