macOS Installers Abuse
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)
Pakiet instalacyjny macOS (znany również jako plik .pkg
) to format pliku używany przez macOS do dystrybucji oprogramowania. Te pliki są jak pudełko, które zawiera wszystko, co potrzebne do poprawnej instalacji i uruchomienia oprogramowania.
Sam plik pakietu jest archiwum, które zawiera hierarchię plików i katalogów, które będą instalowane na docelowym komputerze. Może również zawierać skrypty do wykonywania zadań przed i po instalacji, takie jak konfigurowanie plików konfiguracyjnych lub usuwanie starych wersji oprogramowania.
Distribution (xml): Dostosowania (tytuł, tekst powitalny…) oraz kontrole skryptów/instalacji
PackageInfo (xml): Informacje, wymagania instalacyjne, lokalizacja instalacji, ścieżki do skryptów do uruchomienia
Bill of materials (bom): Lista plików do zainstalowania, zaktualizowania lub usunięcia z uprawnieniami do plików
Payload (CPIO archive gzip compresses): Pliki do zainstalowania w install-location
z PackageInfo
Scripts (CPIO archive gzip compressed): Skrypty przed i po instalacji oraz inne zasoby wyodrębnione do katalogu tymczasowego do wykonania.
Aby zobaczyć zawartość instalatora bez ręcznego dekompresowania, możesz również użyć darmowego narzędzia Suspicious Package.
Pliki DMG, czyli obrazy dysków Apple, to format plików używany przez macOS firmy Apple do obrazów dysków. Plik DMG to w zasadzie montowalny obraz dysku (zawiera własny system plików), który zawiera surowe dane blokowe, zazwyczaj skompresowane, a czasami szyfrowane. Gdy otwierasz plik DMG, macOS montuje go tak, jakby był fizycznym dyskiem, co pozwala na dostęp do jego zawartości.
Zauważ, że instalatory .dmg
obsługują tak wiele formatów, że w przeszłości niektóre z nich zawierające luki były wykorzystywane do uzyskania wykonania kodu jądra.
Hierarchia pliku DMG może być różna w zależności od zawartości. Jednak w przypadku DMG aplikacji zazwyczaj ma tę strukturę:
Poziom główny: To jest korzeń obrazu dysku. Często zawiera aplikację i być może link do folderu Aplikacje.
Aplikacja (.app): To jest właściwa aplikacja. W macOS aplikacja to zazwyczaj pakiet, który zawiera wiele pojedynczych plików i folderów, które tworzą aplikację.
Link do Aplikacji: To jest skrót do folderu Aplikacje w macOS. Celem tego jest ułatwienie instalacji aplikacji. Możesz przeciągnąć plik .app do tego skrótu, aby zainstalować aplikację.
Jeśli skrypt przed lub po instalacji na przykład wykonuje się z /var/tmp/Installerutil
, a atakujący mógłby kontrolować ten skrypt, mógłby eskalować uprawnienia za każdym razem, gdy jest on wykonywany. Lub inny podobny przykład:
To jest publiczna funkcja, którą kilka instalatorów i aktualizatorów wywołuje, aby wykonać coś jako root. Ta funkcja akceptuje ścieżkę do pliku, który ma być wykonany jako parametr, jednak jeśli atakujący mógłby zmodyfikować ten plik, będzie w stanie nadużyć jego wykonania z uprawnieniami roota, aby eskalować uprawnienia.
For more info check this talk: https://www.youtube.com/watch?v=lTOItyjTTkw
Jeśli instalator zapisuje do /tmp/fixedname/bla/bla
, możliwe jest utworzenie montażu nad /tmp/fixedname
bez właścicieli, aby móc zmodyfikować dowolny plik podczas instalacji, aby nadużyć proces instalacji.
Przykładem tego jest CVE-2021-26089, które udało się nadpisać skrypt okresowy, aby uzyskać wykonanie jako root. Aby uzyskać więcej informacji, zapoznaj się z wykładem: OBTS v4.0: "Mount(ain) of Bugs" - Csaba Fitzl
Możliwe jest po prostu wygenerowanie pliku .pkg
z skryptami przed i po instalacji bez żadnego rzeczywistego ładunku poza złośliwym oprogramowaniem w skryptach.
Możliwe jest dodanie tagów <script>
w pliku xml dystrybucji pakietu, a ten kod zostanie wykonany i może wykonywać polecenia za pomocą system.run
:
Złośliwy instalator używający skryptu i kodu JS wewnątrz dist.xml
Ucz się i ćwicz Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE) Ucz się i ćwicz Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)