macOS Dirty NIB
Reading time: 4 minutes
tip
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)
Podržite HackTricks
- Proverite planove pretplate!
- Pridružite se 💬 Discord grupi ili telegram grupi ili pratite nas na Twitteru 🐦 @hacktricks_live.
- Podelite hakerske trikove slanjem PR-ova na HackTricks i HackTricks Cloud github repozitorijume.
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:
Šta su Nib datoteke
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.
Proces Injekcije Prljavog Niba
Kreiranje i Postavljanje NIB Datoteke
- 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
svojstvo 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ćiexecuteAndReturnError:
selektor.
- Testiranje:
- Jednostavan Apple Script za testiranje:
set theDialogText to "PWND"
display dialog theDialogText
- Testirajte pokretanjem u XCode debageru i klikom na dugme.
Ciljanje Aplikacije (Primer: Pages)
- 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).
Dokaz Koncepta: Pristupanje Korisničkim Podacima
- Izmenite AppleScript da pristupi i izvuče korisničke podatke, kao što su fotografije, bez pristanka korisnika.
Uzorak Koda: Maliciozna .xib Datoteka
- Pristupite i pregledajte uzorak maliciozne .xib datoteke koja demonstrira izvršavanje proizvoljnog koda.
Drugi Primer
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.
Rešavanje Ograničenja Pokretanja
- 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.
Dodatne macOS Zaštite
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 kako 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 bi se izvršila 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, čineći eksploataciju neefikasnom.
tip
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)
Podržite HackTricks
- Proverite planove pretplate!
- Pridružite se 💬 Discord grupi ili telegram grupi ili pratite nas na Twitteru 🐦 @hacktricks_live.
- Podelite hakerske trikove slanjem PR-ova na HackTricks i HackTricks Cloud github repozitorijume.