# macOS Dirty NIB
Naucz się hakować AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)!
Inne sposoby wsparcia HackTricks:
* Jeśli chcesz zobaczyć swoją **firmę reklamowaną w HackTricks** lub **pobrać HackTricks w formacie PDF**, sprawdź [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)!
* Zdobądź [**oficjalne gadżety PEASS & HackTricks**](https://peass.creator-spring.com)
* Odkryj [**Rodzinę PEASS**](https://opensea.io/collection/the-peass-family), naszą kolekcję ekskluzywnych [**NFT**](https://opensea.io/collection/the-peass-family)
* **Dołącz do** 💬 [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** nas na **Twitterze** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
**Aby uzyskać więcej szczegółów na temat techniki, sprawdź oryginalny post na stronie: [https://blog.xpnsec.com/dirtynib/**](https://blog.xpnsec.com/dirtynib/).** Oto streszczenie:
Pliki NIB, będące częścią ekosystemu Apple do tworzenia aplikacji, służą do definiowania **elementów interfejsu użytkownika** i ich interakcji. Obejmują 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 Storyboards do bardziej kompleksowej wizualizacji przepływu interfejsu użytkownika.
### Zagrożenia związane z plikami NIB
Warto zauważyć, że **pliki NIB mogą stanowić ryzyko dla bezpieczeństwa**. Mają potencjał do **wykonywania dowolnych poleceń**, a zmiany w plikach NIB wewnątrz aplikacji nie powstrzymują Gatekeepera przed uruchomieniem aplikacji, co stanowi poważne zagrożenie.
### Proces wstrzykiwania brudnego NIB
#### Tworzenie i konfiguracja pliku NIB
1. **Początkowa 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 wykonujący kod**:
- Konfiguracja umożliwia uruchamianie skryptów AppleScript na żądanie.
- Dodaj przycisk, który aktywuje obiekt `Apple Script`, wywołując specyficzny selektor `executeAndReturnError:`.
3. **Testowanie**:
- Prosty skrypt AppleScript do celów testowych:
```bash
set theDialogText to "PWND"
display dialog theDialogText
```
- Przetestuj, uruchamiając go 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 ominąć problemy z Gatekeeperem i zbuforować ją.
2. **Nadpisanie pliku NIB**:
- Zastąp istniejący plik NIB (np. About Panel NIB) przygotowanym plikiem DirtyNIB.
3. **Wykonanie**:
- Uruchom wykonanie, oddziałując na aplikację (np. wybierając pozycję menu `About`).
#### Dowód koncepcji: Dostęp do danych użytkownika
- Zmodyfikuj skrypt 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 przejrzyj [**przykład złośliwego pliku .xib**](https://gist.github.com/xpn/16bfbe5a3f64fedfcc1822d0562636b4), który demonstruje wykonywanie dowolnego kodu.
### Rozwiązywanie ograniczeń uruchamiania
- Ograniczenia uruchamiania uniemożliwiają uruchamianie aplikacji z nieoczekiwanych lokalizacji (np. `/tmp`).
- Możliwe jest zidentyfikowanie aplikacji niechronionych przez ograniczenia uruchamiania i celowanie w nie do wstrzykiwania plików NIB.
### Dodatkowe zabezpieczenia macOS
Od macOS Sonoma w górę, modyfikacje wewnątrz paczek aplikacji są ograniczone. Jednak wcześniejsze metody obejmowały:
1. Skopiowanie aplikacji do innego miejsca (np. `/tmp/`).
2. Zmiana nazw katalogów wewnątrz paczki aplikacji w celu obejścia początkowych zabezpieczeń.
3. Po uruchomieniu aplikacji w celu zarejestrowania jej w Gatekeeperze, modyfikacja paczki aplikacji (np. zastąpienie MainMenu.nib przez Dirty.nib).
4. Przywrócenie pierwotnych nazw katalogów i ponowne uruchomienie aplikacji w celu wykonania wstrzykniętego pliku NIB.
**Uwaga**: Ostatnie aktualizacje macOS zabezpieczyły tę luki, uniemożliwiając modyfikacje plików wewnątrz paczek aplikacji po zbuforowaniu przez Gatekeepera, co czyni tę luki nieskuteczną.
Naucz się hakować AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)!
Inne sposoby wsparcia HackTricks:
* Jeśli chcesz zobaczyć swoją **firmę reklamowaną w HackTricks** lub **pobrać HackTricks w formacie PDF**, sprawdź [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)!
* Zdobądź [**oficjalne gadżety PEASS & HackTricks**](https://peass.creator-spring.com)
* Odkryj [**Rodzinę PEASS**](https://opensea.io/collection/the-peass-family), naszą kolekcję ekskluzywnych [**NFT**](https://opensea.io/collection/the-peass-family)
* **Dołącz do** 💬 [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** nas na **Twitterze** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.