hacktricks/macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/macos-dirty-nib.md
2024-02-11 01:46:25 +00:00

5.9 KiB

macOS Dirty NIB

Naucz się hakować AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)!

Inne sposoby wsparcia HackTricks:

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

  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.
  1. 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:.
  1. Testowanie:
  • Prosty skrypt AppleScript do celów testowych:
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ą.
  1. Nadpisanie pliku NIB:
  • Zastąp istniejący plik NIB (np. About Panel NIB) przygotowanym plikiem DirtyNIB.
  1. 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

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: