macOS Dirty NIB
Vir verdere besonderhede oor die tegniek, kyk na die oorspronklike pos van: https://blog.xpnsec.com/dirtynib/**. Hier is 'n opsomming:
NIB-lêers, deel van Apple se ontwikkelingsekosisteem, is bedoel vir die definisie van UI-elemente en hul interaksies in programme. Dit sluit geserializeerde voorwerpe soos vensters en knoppies in, en word tydens uitvoering gelaai. Ten spyte van hul voortdurende gebruik, bevorder Apple nou Storyboards vir 'n meer omvattende UI-vloei-visualisering.
Sekuriteitskwessies met NIB-lêers
Dit is krities om te let dat NIB-lêers 'n sekuriteitsrisiko kan wees. Hulle het die potensiaal om arbitrêre opdragte uit te voer, en veranderinge aan NIB-lêers binne 'n toepassing verhoed nie dat Gatekeeper die toepassing uitvoer nie, wat 'n beduidende bedreiging vorm.
Vuil NIB-inspuitingsproses
Skep en Opstel van 'n NIB-lêer
Aanvanklike opstel:
Skep 'n nuwe NIB-lêer met behulp van XCode.
Voeg 'n voorwerp by die koppelvlak, stel sy klas in as
NSAppleScript
.Stel die aanvanklike
bron
-eienskap op via Gebruikersgedefinieerde Runtime-attribuut.
Kode-uitvoeringsgadget:
Die opstel fasiliteer die uitvoering van AppleScript op aanvraag.
Integreer 'n knoppie om die
Apple Script
-voorwerp te aktiveer, wat spesifiek dieexecuteAndReturnError:
-selekteerder aktiveer.
Toetsing:
'n Eenvoudige Apple Script vir toetsdoeleindes:
Toets deur dit in die XCode-afskermingsprogram te hardloop en op die knoppie te klik.
Teiken van 'n Toepassing (Voorbeeld: Pages)
Voorbereiding:
Kopieer die teiken-toepassing (bv. Pages) na 'n afsonderlike gids (bv.
/tmp/
).Begin die toepassing om Gatekeeper-kwessies te omseil en dit in die kas te stoor.
Oorskryf van NIB-lêer:
Vervang 'n bestaande NIB-lêer (bv. About Panel NIB) met die vervaardigde DirtyNIB-lêer.
Uitvoering:
Stel die uitvoering in werking deur met die toepassing te interaksieer (bv. die
About
-keuse-item te kies).
Bewys van Konsep: Toegang tot Gebruikersdata
Wysig die AppleScript om toegang tot en onttrekking van gebruikersdata, soos foto's, sonder gebruikersgoedkeuring, te verkry.
Kodevoorbeeld: Skadelike .xib-lêer
Kry toegang tot en hersien 'n voorbeeld van 'n skadelike .xib-lêer wat die uitvoering van arbitrêre kode demonstreer.
Aanspreek van Lanceringbeperkings
Lanceringbeperkings verhoed dat toepassings uit onverwagte plekke (bv.
/tmp
) uitgevoer word.Dit is moontlik om toepassings te identifiseer wat nie deur Lanceringbeperkings beskerm word nie en hulle teiken vir NIB-lêer-inspuiting.
Addisionele macOS-beskerming
Vanaf macOS Sonoma en verder is wysigings binne App-bundels beperk. Vroeëre metodes het egter die volgende behels:
Kopiëring van die toepassing na 'n ander plek (bv.
/tmp/
).Hersiening van gidsname binne die App-bundel om aanvanklike beskerming te omseil.
Na die uitvoering van die toepassing om by Gatekeeper te registreer, wysiging van die App-bundel (bv. vervanging van MainMenu.nib met Dirty.nib).
Terughernoeming van gidsname en heruitvoering van die toepassing om die geïnspireerde NIB-lêer uit te voer.
Let op: Onlangse macOS-opdaterings het hierdie uitbuiting beperk deur lêerwysigings binne App-bundels na Gatekeeper-kasgeheue te verhoed, wat die uitbuiting ondoeltreffend maak.
Last updated