macOS Dirty NIB
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)
Za više detalja o tehnici pogledajte originalni post sa: https://blog.xpnsec.com/dirtynib/ i sledeći post od https://sector7.computest.nl/post/2024-04-bringing-process-injection-into-view-exploiting-all-macos-apps-using-nib-files/. Evo sažetak:
Nib (skraćeno od NeXT Interface Builder) datoteke, deo Apple-ovog razvojnog ekosistema, namenjene su definisanju UI elemenata i njihovih interakcija u aplikacijama. One obuhvataju serijalizovane objekte kao što su prozori i dugmad, i učitavaju se u vreme izvođenja. I pored njihove stalne upotrebe, Apple sada preporučuje Storyboards za sveobuhvatniju vizualizaciju UI toka.
Glavna Nib datoteka se poziva u vrednosti NSMainNibFile
unutar Info.plist
datoteke aplikacije i učitava je funkcija NSApplicationMain
koja se izvršava u main
funkciji aplikacije.
Početna Konfiguracija:
Kreirajte novu NIB datoteku koristeći XCode.
Dodajte objekat u interfejs, postavljajući njegovu klasu na NSAppleScript
.
Konfigurišite početnu source
osobinu putem User Defined Runtime Attributes.
Gadget za Izvršavanje Koda:
Konfiguracija omogućava pokretanje AppleScript-a na zahtev.
Integrisati dugme za aktiviranje Apple Script
objekta, posebno pokrećući executeAndReturnError:
selektor.
Testiranje:
Jednostavan Apple Script za testiranje:
Testirajte pokretanjem u XCode debageru i klikom na dugme.
Priprema:
Kopirajte ciljan app (npr., Pages) u poseban direktorijum (npr., /tmp/
).
Pokrenite aplikaciju da biste izbegli probleme sa Gatekeeper-om i keširali je.
Prepisivanje NIB Datoteke:
Zamenite postojeću NIB datoteku (npr., About Panel NIB) sa kreiranom DirtyNIB datotekom.
Izvršavanje:
Pokrenite izvršavanje interakcijom sa aplikacijom (npr., odabirom About
menija).
Izmenite AppleScript da pristupi i izvuče korisničke podatke, kao što su fotografije, bez pristanka korisnika.
Pristupite i pregledajte uzorak maliciozne .xib datoteke koja demonstrira izvršavanje proizvoljnog koda.
U postu https://sector7.computest.nl/post/2024-04-bringing-process-injection-into-view-exploiting-all-macos-apps-using-nib-files/ možete pronaći tutorijal o tome kako kreirati prljavi nib.
Ograničenja pokretanja sprečavaju izvršavanje aplikacija iz neočekivanih lokacija (npr., /tmp
).
Moguće je identifikovati aplikacije koje nisu zaštićene Ograničenjima pokretanja i ciljati ih za injekciju NIB datoteka.
Od macOS Sonoma nadalje, modifikacije unutar App bundle-a su ograničene. Međutim, ranije metode su uključivale:
Kopiranje aplikacije na drugo mesto (npr., /tmp/
).
Preimenovanje direktorijuma unutar app bundle-a da bi se zaobišle početne zaštite.
Nakon pokretanja aplikacije da se registruje sa Gatekeeper-om, modifikovanje app bundle-a (npr., zamenjivanje MainMenu.nib sa Dirty.nib).
Ponovno preimenovanje direktorijuma i ponovo pokretanje aplikacije da se izvrši injektovana NIB datoteka.
Napomena: Nedavne macOS nadogradnje su ublažile ovu eksploataciju sprečavanjem modifikacija datoteka unutar app bundle-a nakon keširanja Gatekeeper-a, čime je eksploatacija postala neefikasna.
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)