macOS Dirty NIB
Aby uzyskać więcej szczegółów na temat techniki, sprawdź oryginalny post na stronie: 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
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.
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 selektorexecuteAndReturnError:
.
Testowanie:
Prosty skrypt AppleScript do celów testowych:
Przetestuj, uruchamiając go 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 ominąć problemy z Gatekeeperem i zbuforować ją.
Nadpisanie pliku NIB:
Zastąp istniejący plik NIB (np. About Panel NIB) przygotowanym plikiem DirtyNIB.
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, 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:
Skopiowanie aplikacji do innego miejsca (np.
/tmp/
).Zmiana nazw katalogów wewnątrz paczki aplikacji w celu obejścia początkowych zabezpieczeń.
Po uruchomieniu aplikacji w celu zarejestrowania jej w Gatekeeperze, modyfikacja paczki aplikacji (np. zastąpienie MainMenu.nib przez Dirty.nib).
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ą.
Last updated