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)
A macOS installer package (also known as a .pkg
file) is a file format used by macOS to distribute software. Ove datoteke su poput kutije koja sadrži sve što je komadu softvera potrebno da se ispravno instalira i pokrene.
The package file itself is an archive that holds a hierarchy of files and directories that will be installed on the target computer. Takođe može uključivati skripte za obavljanje zadataka pre i posle instalacije, kao što su postavljanje konfiguracionih datoteka ili čišćenje starih verzija softvera.
Distribution (xml): Prilagođavanja (naslov, tekst dobrodošlice…) i provere skripti/instalacije
PackageInfo (xml): Informacije, zahtevi za instalaciju, lokacija instalacije, putevi do skripti koje treba pokrenuti
Bill of materials (bom): Lista datoteka za instalaciju, ažuriranje ili uklanjanje sa dozvolama datoteka
Payload (CPIO archive gzip compresses): Datoteke za instalaciju u install-location
iz PackageInfo
Scripts (CPIO archive gzip compressed): Pre i post instalacione skripte i drugi resursi ekstraktovani u privremeni direktorijum za izvršavanje.
In order to visualize the contents of the installer without decompressing it manually you can also use the free tool Suspicious Package.
DMG datoteke, ili Apple Disk Images, su format datoteka koji koristi Apple-ov macOS za disk slike. DMG datoteka je u suštini montabilna disk slika (sadrži sopstveni fajl sistem) koja sadrži sirove blok podatke obično kompresovane i ponekad enkriptovane. Kada otvorite DMG datoteku, macOS montira kao da je fizički disk, omogućavajući vam pristup njenom sadržaju.
Napomena da .dmg
instalateri podržavaju toliko formata da su u prošlosti neki od njih koji su sadržavali ranjivosti zloupotrebljavani za dobijanje kernel code execution.
Hijerarhija DMG datoteke može biti različita u zavisnosti od sadržaja. Međutim, za aplikacione DMG-ove, obično prati ovu strukturu:
Gornji nivo: Ovo je koren disk slike. Često sadrži aplikaciju i moguće link ka folderu Aplikacije.
Aplikacija (.app): Ovo je stvarna aplikacija. U macOS-u, aplikacija je obično paket koji sadrži mnoge pojedinačne datoteke i foldere koji čine aplikaciju.
Link do Aplikacija: Ovo je prečica do foldera Aplikacije u macOS-u. Svrha ovoga je da vam olakša instalaciju aplikacije. Možete prevući .app datoteku na ovu prečicu da instalirate aplikaciju.
Ako pre ili post instalacioni skript, na primer, izvršava iz /var/tmp/Installerutil
, napadač bi mogao kontrolisati taj skript kako bi eskalirao privilegije svaki put kada se izvrši. Ili drugi sličan primer:
Ovo je javna funkcija koju će nekoliko instalatera i ažuriranja pozvati da izvrši nešto kao root. Ova funkcija prihvata putanju do datoteke koju treba izvršiti kao parametar, međutim, ako napadač može modifikovati ovu datoteku, biće u mogućnosti da zloupotrebi njeno izvršavanje sa root-om da eskalira privilegije.
Za više informacija pogledajte ovaj govor: https://www.youtube.com/watch?v=lTOItyjTTkw
Ako instalater piše u /tmp/fixedname/bla/bla
, moguće je napraviti montiranje preko /tmp/fixedname
bez vlasnika, tako da možete modifikovati bilo koju datoteku tokom instalacije da biste zloupotrebili proces instalacije.
Primer za to je CVE-2021-26089 koji je uspeo da prepiše periodični skript da bi dobio izvršenje kao root. Za više informacija pogledajte govor: OBTS v4.0: "Mount(ain) of Bugs" - Csaba Fitzl
Moguće je samo generisati .pkg
datoteku sa pre i post-instalacionim skriptama bez bilo kakvog pravog payload-a osim malware-a unutar skripti.
Moguće je dodati <script>
tagove u distribution xml datoteku paketa i taj kod će se izvršiti i može izvršiti komande koristeći system.run
:
Zlonameran instalater koristi skriptu i JS kod unutar dist.xml
Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)