macOS Dirty NIB
Reading time: 4 minutes
tip
Leer & oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Leer & oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Ondersteun HackTricks
- Kyk na die subskripsie planne!
- Sluit aan by die đŹ Discord groep of die telegram groep of volg ons op Twitter đŠ @hacktricks_live.
- Deel hacking truuks deur PRs in te dien na die HackTricks en HackTricks Cloud github repos.
Vir verdere besonderhede oor die tegniek, kyk na die oorspronklike pos van: https://blog.xpnsec.com/dirtynib/ en die volgende pos deur https://sector7.computest.nl/post/2024-04-bringing-process-injection-into-view-exploiting-all-macos-apps-using-nib-files/. Hier is 'n opsomming:
Wat is Nib-lĂȘers
Nib (kort vir NeXT Interface Builder) lĂȘers, deel van Apple se ontwikkelings-ekosisteem, is bedoel om UI-elemente en hul interaksies in toepassings te definieer. Hulle sluit geserialiseerde voorwerpe soos vensters en knoppies in, en word tydens uitvoering gelaai. Ten spyte van hul voortgesette gebruik, beveel Apple nou Storyboards aan vir 'n meer omvattende UI-stroomvisualisering.
Die hoof Nib-lĂȘer word in die waarde NSMainNibFile
binne die Info.plist
lĂȘer van die toepassing verwys en word gelaai deur die funksie NSApplicationMain
wat in die main
funksie van die toepassing uitgevoer word.
Dirty Nib Inspuitingsproses
Skep en Stel 'n NIB-lĂȘer op
- Beginopstelling:
- Skep 'n nuwe NIB-lĂȘer met XCode.
- Voeg 'n voorwerp by die koppelvlak, stel sy klas op
NSAppleScript
. - Konfigureer die aanvanklike
source
eienskap via Gebruiker Gedefinieerde Runtime Attribuut.
- Kode-uitvoeringsgadgets:
- Die opstelling fasiliteer die uitvoering van AppleScript op aanvraag.
- Integreer 'n knoppie om die
Apple Script
voorwerp te aktiveer, spesifiek dieexecuteAndReturnError:
selektor te aktiveer.
- Toetsing:
- 'n Eenvoudige Apple Script vir toetsdoeleindes:
set theDialogText to "PWND"
display dialog theDialogText
- Toets deur in die XCode-debugger te loop en op die knoppie te klik.
Teiken 'n Toepassing (Voorbeeld: Pages)
- Voorbereiding:
- Kopieer die teiken-app (bv. Pages) na 'n aparte gids (bv.
/tmp/
). - Begin die app om Gatekeeper-probleme te omseil en dit te kas.
- Oorskrywing van NIB-lĂȘer:
- Vervang 'n bestaande NIB-lĂȘer (bv. About Panel NIB) met die vervaardigde DirtyNIB-lĂȘer.
- Uitvoering:
- Trigger die uitvoering deur met die app te interaksie (bv. die
About
menu-item te kies).
Bewys van Konsep: Toegang tot Gebruikersdata
- Wysig die AppleScript om toegang te verkry tot en gebruikersdata, soos foto's, te onttrek, sonder gebruikers toestemming.
Kode Voorbeeld: Kwaadwillige .xib-lĂȘer
- Toegang tot en hersien 'n voorbeeld van 'n kwaadwillige .xib-lĂȘer wat die uitvoering van arbitrĂȘre kode demonstreer.
Ander Voorbeeld
In die pos https://sector7.computest.nl/post/2024-04-bringing-process-injection-into-view-exploiting-all-macos-apps-using-nib-files/ kan jy 'n tutoriaal vind oor hoe om 'n dirty nib te skep.
Aanspreek van Beginbeperkings
- Beginbeperkings hinder app-uitvoering vanaf onverwagte plekke (bv.
/tmp
). - Dit is moontlik om apps te identifiseer wat nie deur Beginbeperkings beskerm word nie en hulle te teiken vir NIB-lĂȘerinspuiting.
Addisionele macOS Beskermings
Vanaf macOS Sonoma, is wysigings binne App-pakkette beperk. egter, vroeëre metodes het behels:
- Kopieer die app na 'n ander plek (bv.
/tmp/
). - Hernoem gidse binne die app-pakket om aanvanklike beskermings te omseil.
- Na die uitvoering van die app om by Gatekeeper te registreer, wysig die app-pakket (bv. vervang MainMenu.nib met Dirty.nib).
- Hernoem gidse terug en herloop die app om die ingespuite NIB-lĂȘer uit te voer.
Let wel: Onlangs macOS-opdaterings het hierdie uitbuiting verminder deur lĂȘerwysigings binne app-pakkette na Gatekeeper-kas te voorkom, wat die uitbuiting ondoeltreffend maak.
tip
Leer & oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Leer & oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Ondersteun HackTricks
- Kyk na die subskripsie planne!
- Sluit aan by die đŹ Discord groep of die telegram groep of volg ons op Twitter đŠ @hacktricks_live.
- Deel hacking truuks deur PRs in te dien na die HackTricks en HackTricks Cloud github repos.