macOS Installers Abuse

Naučite hakovanje AWS-a od nule do heroja sa htARTE (HackTricks AWS Red Team Expert)!

Drugi načini podrške HackTricks-u:

Osnovne informacije o Pkg-u

macOS instalacioni paket (poznat i kao .pkg fajl) je format fajla koji koristi macOS za distribuciju softvera. Ovi fajlovi su poput kutije koja sadrži sve što je potrebno da se komad softvera instalira i pokrene ispravno.

Sam paket fajl je arhiva koja drži hijerarhiju fajlova i direktorijuma koji će biti instalirani na ciljnom računaru. Takođe može uključivati skripte za obavljanje zadataka pre i posle instalacije, poput postavljanja konfiguracionih fajlova ili čišćenja starih verzija softvera.

Hijerarhija

  • Distribucija (xml): Prilagođavanja (naslov, tekst dobrodošlice...) i skripte/provere instalacije

  • PackageInfo (xml): Informacije, zahtevi za instalaciju, lokacija instalacije, putanje do skripti za pokretanje

  • Račun materijala (bom): Lista fajlova za instalaciju, ažuriranje ili uklanjanje sa dozvolama fajlova

  • Payload (CPIO arhiva gzip kompresovana): Fajlovi za instalaciju na install-location iz PackageInfo

  • Skripte (CPIO arhiva gzip kompresovana): Pre i post instalacione skripte i dodatni resursi izdvojeni u privremeni direktorijum za izvršenje.

Dekompresija

# Tool to directly get the files inside a package
pkgutil —expand "/path/to/package.pkg" "/path/to/out/dir"

# Get the files ina. more manual way
mkdir -p "/path/to/out/dir"
cd "/path/to/out/dir"
xar -xf "/path/to/package.pkg"

# Decompress also the CPIO gzip compressed ones
cat Scripts | gzip -dc | cpio -i
cpio -i < Scripts

Osnovne informacije o DMG-u

DMG datoteke, ili Apple Disk Images, su format datoteka koji koristi macOS kompanije Apple za disk slike. DMG datoteka je suštinski montabilna disk slika (sadrži svoj vlastiti sistem datoteka) koja sadrži sirove blok podatke obično komprimirane i ponekad šifrovane. Kada otvorite DMG datoteku, macOS je montira kao da je fizički disk, omogućavajući vam pristup njenom sadržaju.

Imajte na umu da .dmg instalateri podržavaju toliko formata da su u prošlosti neki od njih koji su sadržavali ranjivosti zloupotrebljeni radi dobijanja izvršenja koda kernela.

Hijerarhija

Hijerarhija DMG datoteke može biti različita u zavisnosti od sadržaja. Međutim, za aplikativne DMG-ove, obično prati ovu strukturu:

  • Gornji nivo: Ovo je koren disk slike. Često sadrži aplikaciju i možda link ka fascikli Aplikacije.

  • Aplikacija (.app): Ovo je stvarna aplikacija. U macOS-u, aplikacija je obično paket koji sadrži mnogo pojedinačnih datoteka i fascikli koje čine aplikaciju.

  • Link ka Aplikacijama: Ovo je prečica do fascikle Aplikacije u macOS-u. Svrha ovoga je da vam olakša instaliranje aplikacije. Možete prevući .app datoteku na ovu prečicu da biste instalirali aplikaciju.

Eskalacija privilegija putem zloupotrebe pkg-a

Izvršenje iz javnih direktorijuma

Ako se skript za pre ili post instalaciju na primer izvršava iz /var/tmp/Installerutil, napadač može kontrolisati tu skriptu kako bi eskalirao privilegije svaki put kada se izvrši. Ili još jedan sličan primer:

AuthorizationExecuteWithPrivileges

Ovo je javna funkcija koju će nekoliko instalatera i ažuriranja pozvati da izvrše nešto kao root. Ova funkcija prihvata putanju datoteke koju treba izvršiti kao parametar, međutim, ako napadač može modifikovati ovu datoteku, moći će zloupotrebiti njeno izvršenje sa root privilegijama kako bi eskaliro privilegije.

# Breakpoint in the function to check wich file is loaded
(lldb) b AuthorizationExecuteWithPrivileges
# You could also check FS events to find this missconfig

Izvršenje putem montiranja

Ako instalater piše u /tmp/fixedname/bla/bla, moguće je napraviti montiranje preko /tmp/fixedname bez vlasnika tako da možete izmeniti bilo koji fajl tokom instalacije kako biste zloupotrebili proces instalacije.

Primer za ovo je CVE-2021-26089 koji je uspeo da prepiše periodični skript kako bi dobio izvršenje kao root. Za više informacija pogledajte ovaj talk: OBTS v4.0: "Mount(ain) of Bugs" - Csaba Fitzl

pkg kao zlonamerni softver

Prazan Payload

Moguće je jednostavno generisati .pkg fajl sa pre i post-install skriptama bez ikakvog payload-a.

JS u Distribution xml

Moguće je dodati <script> tagove u distribution xml fajl paketa i taj kod će biti izvršen i može izvršiti komande koristeći system.run:

Reference

Last updated