macOS Dirty NIB
Za dalje detalje o tehnici pogledajte originalni post na: https://blog.xpnsec.com/dirtynib/**. Evo sažetka:
NIB fajlovi, deo Apple-ovog razvojnog ekosistema, služe za definisanje UI elemenata i njihovih interakcija u aplikacijama. Obuhvataju serijalizovane objekte kao što su prozori i dugmad, i učitavaju se pri izvršavanju. Uprkos njihovoj trenutnoj upotrebi, Apple sada preporučuje Storyboards za sveobuhvatniju vizualizaciju UI toka.
Bezbednosne brige sa NIB fajlovima
Važno je napomenuti da NIB fajlovi mogu predstavljati bezbednosni rizik. Imaju potencijal da izvršavaju proizvoljne komande, a izmene NIB fajlova unutar aplikacije ne sprečavaju Gatekeeper da izvrši aplikaciju, što predstavlja značajnu pretnju.
Proces zloupotrebe prljavog NIB-a
Kreiranje i podešavanje NIB fajla
Početno podešavanje:
Kreirajte novi NIB fajl koristeći XCode.
Dodajte objekat na interfejs, postavljajući mu klasu na
NSAppleScript
.Podesite početno svojstvo
source
putem User Defined Runtime Attributes.
Kod za izvršavanje:
Podešavanje omogućava pokretanje AppleScript-a po potrebi.
Integrišite dugme za aktiviranje objekta
Apple Script
, posebno pokretanje selektoraexecuteAndReturnError:
.
Testiranje:
Jednostavan AppleScript za testiranje:
Testirajte pokretanjem u XCode debuggeru i klikom na dugme.
Ciljanje aplikacije (Primer: Pages)
Priprema:
Kopirajte ciljanu aplikaciju (npr. Pages) u poseban direktorijum (npr.
/tmp/
).Pokrenite aplikaciju da zaobiđete probleme sa Gatekeeper-om i keširajte je.
Pisanje preko NIB fajla:
Zamenite postojeći NIB fajl (npr. About Panel NIB) sa izrađenim DirtyNIB fajlom.
Izvršavanje:
Pokrenite izvršavanje interakcijom sa aplikacijom (npr. izborom stavke menija
About
).
Dokaz o konceptu: Pristupanje korisničkim podacima
Izmenite AppleScript da pristupite i izvučete korisničke podatke, kao što su fotografije, bez pristanka korisnika.
Primer koda: Zlonamerni .xib fajl
Pristupite i pregledajte primer zlonamernog .xib fajla koji demonstrira izvršavanje proizvoljnog koda.
Adresiranje ograničenja pokretanja
Ograničenja pokretanja sprečavaju izvršavanje aplikacije sa neočekivanih lokacija (npr.
/tmp
).Moguće je identifikovati aplikacije koje nisu zaštićene ograničenjima pokretanja i ciljati ih za ubacivanje NIB fajla.
Dodatne macOS zaštite
Od macOS Sonoma verzije nadalje, modifikacije unutar App bundle-ova su ograničene. Međutim, ranije metode su uključivale:
Kopiranje aplikacije na drugu lokaciju (npr.
/tmp/
).Preimenovanje direktorijuma unutar App bundle-a da bi se zaobišle početne zaštite.
Nakon pokretanja aplikacije da se registruje kod Gatekeeper-a, modifikovanje App bundle-a (npr. zamena MainMenu.nib sa Dirty.nib).
Vraćanje preimenovanih direktorijuma i ponovno pokretanje aplikacije da bi se izvršio ubačeni NIB fajl.
Napomena: Nedavne macOS nadogradnje su umanjile ovu eksploataciju sprečavanjem modifikacija fajlova unutar App bundle-a nakon keširanja od strane Gatekeeper-a, čime je eksploatacija postala neefikasna.
Last updated