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

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

  1. 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.
  1. Kode-uitvoeringsgadgets:
  • Die opstelling fasiliteer die uitvoering van AppleScript op aanvraag.
  • Integreer 'n knoppie om die Apple Script voorwerp te aktiveer, spesifiek die executeAndReturnError: selektor te aktiveer.
  1. Toetsing:
  • 'n Eenvoudige Apple Script vir toetsdoeleindes:
bash
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)

  1. 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.
  1. Oorskrywing van NIB-lĂȘer:
  • Vervang 'n bestaande NIB-lĂȘer (bv. About Panel NIB) met die vervaardigde DirtyNIB-lĂȘer.
  1. 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

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:

  1. Kopieer die app na 'n ander plek (bv. /tmp/).
  2. Hernoem gidse binne die app-pakket om aanvanklike beskermings te omseil.
  3. Na die uitvoering van die app om by Gatekeeper te registreer, wysig die app-pakket (bv. vervang MainMenu.nib met Dirty.nib).
  4. 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