macOS Dirty NIB
Reading time: 4 minutes
tip
Ucz się i ćwicz AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Ucz się i ćwicz GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Wsparcie HackTricks
- Sprawdź plany subskrypcyjne!
- Dołącz do 💬 grupy Discord lub grupy telegram lub śledź nas na Twitterze 🐦 @hacktricks_live.
- Dziel się trikami hackingowymi, przesyłając PR-y do HackTricks i HackTricks Cloud repozytoriów github.
Aby uzyskać więcej szczegółów na temat techniki, sprawdź oryginalny post z: 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/. 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. Mimo ich ciągłego użycia, Apple obecnie promuje Storyboards 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
- 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.
- Gadżet do wykonywania kodu:
- Konfiguracja umożliwia uruchamianie AppleScript na żądanie.
- Zintegruj przycisk, aby aktywować obiekt
Apple Script
, wywołując selektorexecuteAndReturnError:
.
- Testowanie:
- Prosty skrypt Apple do celów testowych:
set theDialogText to "PWND"
display dialog theDialogText
- Przetestuj, uruchamiając w debuggerze XCode i klikając przycisk.
Celowanie w aplikację (przykład: Pages)
- Przygotowanie:
- Skopiuj docelową aplikację (np. Pages) do osobnego katalogu (np.
/tmp/
). - Uruchom aplikację, aby obejść problemy z Gatekeeperem i zbuforować ją.
- Nadpisywanie pliku NIB:
- Zastąp istniejący plik NIB (np. NIB panelu "O programie") stworzonym plikiem DirtyNIB.
- 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, 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/ 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 wstrzykiwania plików 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:
- Skopiowanie aplikacji do innej lokalizacji (np.
/tmp/
). - Zmiana nazw katalogów w pakiecie aplikacji, aby obejść początkowe zabezpieczenia.
- Po uruchomieniu aplikacji w celu zarejestrowania się w Gatekeeperze, modyfikacja pakietu aplikacji (np. zastąpienie MainMenu.nib plikiem Dirty.nib).
- 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 przez Gatekeeper, co czyni exploit nieskutecznym.
tip
Ucz się i ćwicz AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Ucz się i ćwicz GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Wsparcie HackTricks
- Sprawdź plany subskrypcyjne!
- Dołącz do 💬 grupy Discord lub grupy telegram lub śledź nas na Twitterze 🐦 @hacktricks_live.
- Dziel się trikami hackingowymi, przesyłając PR-y do HackTricks i HackTricks Cloud repozytoriów github.