macOS Dirty NIB
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
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:
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.
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 selektor executeAndReturnError:
.
Testowanie:
Prosty skrypt Apple do celów testowych:
Testuj, uruchamiając w debuggerze XCode i klikając przycisk.
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
).
Zmodyfikuj AppleScript, aby uzyskać dostęp i wyodrębnić dane użytkownika, takie jak zdjęcia, bez zgody użytkownika.
Uzyskaj dostęp i przeglądaj przykład złośliwego pliku .xib, który demonstruje wykonywanie dowolnego kodu.
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.
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.
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 Gatekeepera, co czyni exploit nieskutecznym.
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)