macOS Dirty NIB
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Для отримання додаткової інформації про техніку перегляньте оригінальний пост за адресою: 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 (скорочення від NeXT Interface Builder) файли, частина екосистеми розробки Apple, призначені для визначення UI елементів та їх взаємодій в додатках. Вони містять серіалізовані об'єкти, такі як вікна та кнопки, і завантажуються під час виконання. Незважаючи на їхнє постійне використання, Apple тепер рекомендує Storyboards для більш комплексної візуалізації потоку UI.
Основний Nib файл згадується в значенні NSMainNibFile
всередині файлу Info.plist
додатка і завантажується функцією NSApplicationMain
, яка виконується в функції main
додатка.
Початкове налаштування:
Створіть новий NIB файл за допомогою XCode.
Додайте об'єкт до інтерфейсу, встановивши його клас на NSAppleScript
.
Налаштуйте початкову властивість source
через User Defined Runtime Attributes.
Гаджет виконання коду:
Налаштування дозволяє виконувати AppleScript за запитом.
Інтегруйте кнопку для активації об'єкта Apple Script
, спеціально викликаючи селектор executeAndReturnError:
.
Тестування:
Простий Apple Script для тестування:
Тестуйте, запустивши в налагоджувачі XCode та натиснувши кнопку.
Підготовка:
Скопіюйте цільовий додаток (наприклад, Pages) в окрему директорію (наприклад, /tmp/
).
Запустіть додаток, щоб обійти проблеми з Gatekeeper і кешувати його.
Перезапис NIB файлу:
Замініть існуючий NIB файл (наприклад, NIB файлу панелі "Про програму") на створений DirtyNIB файл.
Виконання:
Запустіть виконання, взаємодіючи з додатком (наприклад, вибравши пункт меню About
).
Змініть AppleScript, щоб отримати доступ і витягти дані користувача, такі як фотографії, без згоди користувача.
Отримайте доступ і перегляньте зразок зловмисного .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 Sonoma і далі, модифікації всередині пакетів додатків обмежені. Однак раніше методи включали:
Копіювання додатка в інше місце (наприклад, /tmp/
).
Перейменування директорій у пакеті додатка, щоб обійти початкові захисти.
Після запуску додатка для реєстрації з Gatekeeper, модифікація пакету додатка (наприклад, заміна MainMenu.nib на Dirty.nib).
Повернення директорій назад і повторний запуск додатка для виконання ін'єкованого NIB файлу.
Примітка: Останні оновлення macOS зменшили ефективність цього експлойту, заборонивши модифікації файлів у пакетах додатків після кешування Gatekeeper, що робить експлойт неефективним.
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)