# 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 %}