# macOS Dirty NIB {% hint style="success" %} Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
Support HackTricks * Check the [**subscription plans**](https://github.com/sponsors/carlospolop)! * **Join the** 馃挰 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 馃惁 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** * **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
{% endhint %} **Aby uzyska膰 wi臋cej szczeg贸艂贸w na temat techniki, sprawd藕 oryginalny post z:** [**https://blog.xpnsec.com/dirtynib/**](https://blog.xpnsec.com/dirtynib/) oraz nast臋puj膮cy post od [**https://sector7.computest.nl/post/2024-04-bringing-process-injection-into-view-exploiting-all-macos-apps-using-nib-files/**](https://sector7.computest.nl/post/2024-04-bringing-process-injection-into-view-exploiting-all-macos-apps-using-nib-files/)**.** Oto podsumowanie: ### Czym s膮 pliki Nib Pliki Nib (skr贸t od NeXT Interface Builder), cz臋艣膰 ekosystemu deweloperskiego Apple, s膮 przeznaczone do definiowania **element贸w UI** i ich interakcji w aplikacjach. Zawieraj膮 zserializowane obiekty, takie jak okna i przyciski, i s膮 艂adowane w czasie wykonywania. Pomimo ich ci膮g艂ego u偶ycia, Apple obecnie zaleca korzystanie z Storyboard贸w dla bardziej kompleksowej wizualizacji przep艂ywu UI. G艂贸wny plik Nib jest odniesiony w warto艣ci **`NSMainNibFile`** wewn膮trz pliku `Info.plist` aplikacji i jest 艂adowany przez funkcj臋 **`NSApplicationMain`** wykonywan膮 w funkcji `main` aplikacji. ### Proces wstrzykiwania Dirty Nib #### Tworzenie i konfigurowanie pliku NIB 1. **Wst臋pna konfiguracja**: * Utw贸rz nowy plik NIB za pomoc膮 XCode. * Dodaj obiekt do interfejsu, ustawiaj膮c jego klas臋 na `NSAppleScript`. * Skonfiguruj pocz膮tkow膮 w艂a艣ciwo艣膰 `source` za pomoc膮 Atrybut贸w Czasu Wykonania Zdefiniowanych przez U偶ytkownika. 2. **Gad偶et do wykonywania kodu**: * Konfiguracja umo偶liwia uruchamianie AppleScript na 偶膮danie. * Zintegruj przycisk, aby aktywowa膰 obiekt `Apple Script`, wywo艂uj膮c selektor `executeAndReturnError:`. 3. **Testowanie**: * Prosty skrypt Apple do cel贸w testowych: ```bash set theDialogText to "PWND" display dialog theDialogText ``` * Testuj, uruchamiaj膮c w debuggerze XCode i klikaj膮c przycisk. #### Celowanie w aplikacj臋 (przyk艂ad: Pages) 1. **Przygotowanie**: * Skopiuj docelow膮 aplikacj臋 (np. Pages) do osobnego katalogu (np. `/tmp/`). * Uruchom aplikacj臋, aby obej艣膰 problemy z Gatekeeperem i zbuforowa膰 j膮. 2. **Nadpisywanie pliku NIB**: * Zast膮p istniej膮cy plik NIB (np. NIB panelu "O programie") stworzonym plikiem DirtyNIB. 3. **Wykonanie**: * Wywo艂aj wykonanie, wchodz膮c w interakcj臋 z aplikacj膮 (np. wybieraj膮c element menu `O programie`). #### Dow贸d koncepcji: Uzyskiwanie dost臋pu do danych u偶ytkownika * Zmodyfikuj AppleScript, aby uzyska膰 dost臋p i wyodr臋bni膰 dane u偶ytkownika, takie jak zdj臋cia, bez zgody u偶ytkownika. ### Przyk艂ad kodu: Z艂o艣liwy plik .xib * Uzyskaj dost臋p i przegl膮daj [**przyk艂ad z艂o艣liwego pliku .xib**](https://gist.github.com/xpn/16bfbe5a3f64fedfcc1822d0562636b4), kt贸ry demonstruje wykonywanie dowolnego kodu. ### Inny przyk艂ad W po艣cie [https://sector7.computest.nl/post/2024-04-bringing-process-injection-into-view-exploiting-all-macos-apps-using-nib-files/](https://sector7.computest.nl/post/2024-04-bringing-process-injection-into-view-exploiting-all-macos-apps-using-nib-files/) mo偶esz znale藕膰 samouczek na temat tworzenia dirty nib. ### Rozwi膮zywanie ogranicze艅 uruchamiania * Ograniczenia uruchamiania utrudniaj膮 wykonywanie aplikacji z nieoczekiwanych lokalizacji (np. `/tmp`). * Mo偶liwe jest zidentyfikowanie aplikacji, kt贸re nie s膮 chronione przez ograniczenia uruchamiania i celowanie w nie w celu wstrzykni臋cia pliku NIB. ### Dodatkowe zabezpieczenia macOS Od macOS Sonoma wprowadzone zosta艂y ograniczenia dotycz膮ce modyfikacji wewn膮trz pakiet贸w aplikacji. Jednak wcze艣niejsze metody obejmowa艂y: 1. Skopiowanie aplikacji do innej lokalizacji (np. `/tmp/`). 2. Zmiana nazw katalog贸w w pakiecie aplikacji, aby obej艣膰 pocz膮tkowe zabezpieczenia. 3. Po uruchomieniu aplikacji w celu zarejestrowania si臋 w Gatekeeperze, modyfikacja pakietu aplikacji (np. zast膮pienie MainMenu.nib plikiem Dirty.nib). 4. Przywr贸cenie nazw katalog贸w i ponowne uruchomienie aplikacji w celu wykonania wstrzykni臋tego pliku NIB. **Uwaga**: Ostatnie aktualizacje macOS z艂agodzi艂y ten exploit, uniemo偶liwiaj膮c modyfikacje plik贸w w pakietach aplikacji po buforowaniu Gatekeepera, co czyni exploit nieskutecznym. {% hint style="success" %} Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
Support HackTricks * Check the [**subscription plans**](https://github.com/sponsors/carlospolop)! * **Join the** 馃挰 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 馃惁 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** * **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
{% endhint %}