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

Для отримання додаткової інформації про техніку перегляньте оригінальний пост з: 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 файлу

  1. Початкове налаштування:
  • Створіть новий NIB файл за допомогою XCode.
  • Додайте об'єкт до інтерфейсу, встановивши його клас на NSAppleScript.
  • Налаштуйте початкову властивість source через User Defined Runtime Attributes.
  1. Гаджет виконання коду:
  • Налаштування дозволяє виконувати AppleScript за запитом.
  • Інтегруйте кнопку для активації об'єкта Apple Script, спеціально викликаючи селектор executeAndReturnError:.
  1. Тестування:
  • Простий Apple Script для тестування:
bash
set theDialogText to "PWND"
display dialog theDialogText
  • Тестуйте, запустивши в налагоджувачі XCode та натиснувши кнопку.

Цілеве застосування (Приклад: Pages)

  1. Підготовка:
  • Скопіюйте цільовий додаток (наприклад, Pages) в окрему директорію (наприклад, /tmp/).
  • Запустіть додаток, щоб обійти проблеми з Gatekeeper і кешувати його.
  1. Перезапис NIB файлу:
  • Замініть існуючий NIB файл (наприклад, About Panel NIB) на створений DirtyNIB файл.
  1. Виконання:
  • Запустіть виконання, взаємодіючи з додатком (наприклад, вибравши пункт меню 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

З macOS Sonoma обмежено модифікації всередині пакетів додатків. Однак раніше методи включали:

  1. Копіювання додатку в інше місце (наприклад, /tmp/).
  2. Перейменування директорій всередині пакету додатку для обходу початкових захистів.
  3. Після запуску додатку для реєстрації з Gatekeeper, модифікація пакету додатку (наприклад, заміна MainMenu.nib на Dirty.nib).
  4. Повернення директорій назад і повторний запуск додатку для виконання ін'єкованого NIB файлу.

Примітка: Останні оновлення macOS зменшили цю вразливість, заборонивши модифікації файлів всередині пакетів додатків після кешування Gatekeeper, що робить цю вразливість неефективною.

tip

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

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