macOS Bundles
Reading time: 3 minutes
tip
Impara e pratica l'Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica l'Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Supporta HackTricks
- Controlla i piani di abbonamento!
- Unisciti al 💬 gruppo Discord o al gruppo telegram o seguici su Twitter 🐦 @hacktricks_live.
- Condividi trucchi di hacking inviando PR ai HackTricks e HackTricks Cloud repos di github.
Informazioni di Base
I bundle in macOS fungono da contenitori per una varietà di risorse, tra cui applicazioni, librerie e altri file necessari, facendoli apparire come oggetti singoli nel Finder, come i familiari file *.app
. Il bundle più comunemente incontrato è il bundle .app
, sebbene siano prevalenti anche altri tipi come .framework
, .systemextension
e .kext
.
Componenti Essenziali di un Bundle
All'interno di un bundle, in particolare nella directory <application>.app/Contents/
, si trovano una varietà di risorse importanti:
- _CodeSignature: Questa directory memorizza i dettagli della firma del codice, vitali per verificare l'integrità dell'applicazione. Puoi ispezionare le informazioni sulla firma del codice utilizzando comandi come: %%%bash openssl dgst -binary -sha1 /Applications/Safari.app/Contents/Resources/Assets.car | openssl base64 %%%
- MacOS: Contiene il binario eseguibile dell'applicazione che viene eseguito all'interazione dell'utente.
- Resources: Un repository per i componenti dell'interfaccia utente dell'applicazione, inclusi immagini, documenti e descrizioni dell'interfaccia (file nib/xib).
- Info.plist: Funziona come il file di configurazione principale dell'applicazione, cruciale per il sistema per riconoscere e interagire correttamente con l'applicazione.
Chiavi Importanti in Info.plist
Il file Info.plist
è un pilastro per la configurazione dell'applicazione, contenente chiavi come:
- CFBundleExecutable: Specifica il nome del file eseguibile principale situato nella directory
Contents/MacOS
. - CFBundleIdentifier: Fornisce un identificatore globale per l'applicazione, utilizzato ampiamente da macOS per la gestione delle applicazioni.
- LSMinimumSystemVersion: Indica la versione minima di macOS richiesta per l'esecuzione dell'applicazione.
Esplorare i Bundle
Per esplorare i contenuti di un bundle, come Safari.app
, può essere utilizzato il seguente comando: bash ls -lR /Applications/Safari.app/Contents
Questa esplorazione rivela directory come _CodeSignature
, MacOS
, Resources
e file come Info.plist
, ognuno con uno scopo unico, dalla sicurezza dell'applicazione alla definizione della sua interfaccia utente e parametri operativi.
Directory Aggiuntive del Bundle
Oltre alle directory comuni, i bundle possono includere anche:
- Frameworks: Contiene framework inclusi utilizzati dall'applicazione. I framework sono simili ai dylibs con risorse extra.
- PlugIns: Una directory per plug-in ed estensioni che migliorano le capacità dell'applicazione.
- XPCServices: Contiene servizi XPC utilizzati dall'applicazione per la comunicazione fuori processo.
Questa struttura garantisce che tutti i componenti necessari siano racchiusi all'interno del bundle, facilitando un ambiente applicativo modulare e sicuro.
Per ulteriori informazioni dettagliate sulle chiavi Info.plist
e i loro significati, la documentazione per sviluppatori di Apple fornisce risorse estensive: Apple Info.plist Key Reference.
tip
Impara e pratica l'Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica l'Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Supporta HackTricks
- Controlla i piani di abbonamento!
- Unisciti al 💬 gruppo Discord o al gruppo telegram o seguici su Twitter 🐦 @hacktricks_live.
- Condividi trucchi di hacking inviando PR ai HackTricks e HackTricks Cloud repos di github.