macOS Installers Abuse
Dowiedz się i praktykuj Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Dowiedz się i praktykuj Hacking GCP:
HackTricks Training GCP Red Team Expert (GRTE)
Podstawowe informacje o plikach Pkg
Plik pakietu instalacyjnego 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, czego potrzebuje kawałek oprogramowania do poprawnej instalacji i działania.
Sam plik pakietu to archiwum, które przechowuje hierarchię plików i katalogów, które zostaną zainstalowane na docelowym komputerze. Może również zawierać skrypty do wykonywania zadań przed i po instalacji, takie jak konfigurowanie plików konfiguracyjnych lub czyszczenie starych wersji oprogramowania.
Hierarchia
![https://www.youtube.com/watch?v=iASSG0_zobQ](https://book.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2F600722126-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FJtticLwENZ4i7WwgHiQe%252Fuploads%252Fgit-blob-50ee5e9f3a49a2b9bffb0eb1f4eca9d43c197ee4%252FPasted%2520Graphic.png%3Falt%3Dmedia&width=768&dpr=4&quality=100&sign=d0151624&sv=1)
Dystrybucja (xml): Dostosowania (tytuł, tekst powitalny...) i skrypt/sprawdzenia instalacji
PackageInfo (xml): Informacje, wymagania instalacji, lokalizacja instalacji, ścieżki do skryptów do uruchomienia
Spis materiałów (bom): Lista plików do zainstalowania, aktualizacji lub usunięcia z uprawnieniami do pliku
Ładunek (archiwum CPIO gzip): Pliki do zainstalowania w
install-location
z PackageInfoSkrypty (archiwum CPIO gzip): Skrypty przed i po instalacji oraz więcej zasobów wypakowanych do tymczasowego katalogu do wykonania.
Dekompresja
Podstawowe informacje o plikach DMG
Pliki DMG, czyli Obrazy Dysków Apple, to format plików używany przez macOS firmy Apple do obrazów dysków. Plik DMG jest w zasadzie montowalnym obrazem dysku (zawiera własny system plików), który zawiera surowe dane blokowe, zazwyczaj skompresowane i czasami zaszyfrowane. Gdy otworzysz plik DMG, macOS montuje go jakby był fizycznym dyskiem, pozwalając 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 podatności były wykorzystywane do uzyskania wykonania kodu jądra.
Hierarchia
![](https://book.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2F600722126-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FJtticLwENZ4i7WwgHiQe%252Fuploads%252Fgit-blob-1a73a04a7e418b6825679c0d55f529c7360da2f5%252Fimage%2520%28225%29.png%3Falt%3Dmedia&width=768&dpr=4&quality=100&sign=1cde7e22&sv=1)
Hierarchia pliku DMG może być różna w zależności od zawartości. Jednakże, dla aplikacji DMG, zazwyczaj podąża ona za tą strukturą:
Poziom Główny: To jest główny katalog obrazu dysku. Zazwyczaj zawiera aplikację i ewentualnie odnośnik do folderu Aplikacje.
Aplikacja (.app): To jest właściwa aplikacja. W macOS, aplikacja zazwyczaj jest pakietem zawierającym wiele indywidualnych plików i folderów tworzących aplikację.
Odnośnik do Aplikacji: To jest skrót do folderu Aplikacje w macOS. Ma to ułatwić instalację aplikacji. Możesz przeciągnąć plik .app na ten skrót, aby zainstalować aplikację.
Eskalacja uprawnień poprzez nadużycie pakietów pkg
Wykonywanie z publicznych katalogów
Jeśli skrypt instalacyjny przed lub po instalacji wykonuje się na przykład z /var/tmp/Installerutil
, a atakujący może kontrolować ten skrypt, to może uzyskać wyższe uprawnienia za każdym razem, gdy zostanie wykonany. Lub inny podobny przykład:
AuthorizationExecuteWithPrivileges
To jest publiczna funkcja, którą kilka instalatorów i aktualizatorów wywołuje, aby wykonać coś jako root. Ta funkcja przyjmuje ścieżkę pliku do wykonania jako parametr, jednakże, jeśli atakujący mógłby zmodyfikować ten plik, będzie mógł nadużyć jego wykonanie jako root do eskalacji uprawnień.
Wykonanie poprzez montowanie
Jeśli instalator zapisuje do /tmp/fixedname/bla/bla
, można utworzyć montowanie nad /tmp/fixedname
bez właścicieli, dzięki czemu można modyfikować dowolny plik podczas instalacji, aby nadużyć procesu instalacji.
Przykładem tego jest CVE-2021-26089, który zdołał nadpisać skrypt okresowy, aby uzyskać wykonanie jako root. Aby uzyskać więcej informacji, zapoznaj się z prezentacją: OBTS v4.0: "Mount(ain) of Bugs" - Csaba Fitzl
pkg jako złośliwe oprogramowanie
Pusta ładunek
Możliwe jest po prostu wygenerowanie pliku .pkg
z skryptami przed i po instalacji bez żadnego ładunku.
JS w pliku Distribution xml
Możliwe jest dodanie tagów <script>
w pliku distribution xml pakietu, a ten kod zostanie wykonany i może wykonywać polecenia za pomocą system.run
:
![](https://book.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2F600722126-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FJtticLwENZ4i7WwgHiQe%252Fuploads%252Fgit-blob-d0cfa4151beb130101e7ff8624a331aff10da60d%252Fimage%2520%281043%29.png%3Falt%3Dmedia&width=768&dpr=4&quality=100&sign=cd7be2ea&sv=1)
Odnośniki
Last updated