macOS Bundles
tip
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Support HackTricks
- Check the subscription plans!
- Join the 馃挰 Discord group or the telegram group or follow us on Twitter 馃惁 @hacktricks_live.
- Share hacking tricks by submitting PRs to the HackTricks and HackTricks Cloud github repos.
Informaci贸n B谩sica
Los bundles en macOS sirven como contenedores para una variedad de recursos, incluyendo aplicaciones, bibliotecas y otros archivos necesarios, haci茅ndolos aparecer como objetos 煤nicos en Finder, como los familiares archivos *.app
. El bundle m谩s com煤nmente encontrado es el bundle .app
, aunque otros tipos como .framework
, .systemextension
y .kext
tambi茅n son prevalentes.
Componentes Esenciales de un Bundle
Dentro de un bundle, particularmente en el directorio <application>.app/Contents/
, se albergan una variedad de recursos importantes:
- _CodeSignature: Este directorio almacena detalles de firma de c贸digo vitales para verificar la integridad de la aplicaci贸n. Puedes inspeccionar la informaci贸n de firma de c贸digo usando comandos como: %%%bash openssl dgst -binary -sha1 /Applications/Safari.app/Contents/Resources/Assets.car | openssl base64 %%%
- MacOS: Contiene el binario ejecutable de la aplicaci贸n que se ejecuta al interactuar el usuario.
- Resources: Un repositorio para los componentes de la interfaz de usuario de la aplicaci贸n, incluyendo im谩genes, documentos y descripciones de la interfaz (archivos nib/xib).
- Info.plist: Act煤a como el archivo de configuraci贸n principal de la aplicaci贸n, crucial para que el sistema reconozca e interact煤e con la aplicaci贸n de manera adecuada.
Claves Importantes en Info.plist
El archivo Info.plist
es una piedra angular para la configuraci贸n de la aplicaci贸n, conteniendo claves como:
- CFBundleExecutable: Especifica el nombre del archivo ejecutable principal ubicado en el directorio
Contents/MacOS
. - CFBundleIdentifier: Proporciona un identificador global para la aplicaci贸n, utilizado extensamente por macOS para la gesti贸n de aplicaciones.
- LSMinimumSystemVersion: Indica la versi贸n m铆nima de macOS requerida para que la aplicaci贸n se ejecute.
Explorando Bundles
Para explorar el contenido de un bundle, como Safari.app
, se puede usar el siguiente comando: bash ls -lR /Applications/Safari.app/Contents
Esta exploraci贸n revela directorios como _CodeSignature
, MacOS
, Resources
, y archivos como Info.plist
, cada uno sirviendo un prop贸sito 煤nico desde asegurar la aplicaci贸n hasta definir su interfaz de usuario y par谩metros operativos.
Directorios Adicionales de Bundles
M谩s all谩 de los directorios comunes, los bundles tambi茅n pueden incluir:
- Frameworks: Contiene frameworks empaquetados utilizados por la aplicaci贸n. Los frameworks son como dylibs con recursos adicionales.
- PlugIns: Un directorio para plug-ins y extensiones que mejoran las capacidades de la aplicaci贸n.
- XPCServices: Contiene servicios XPC utilizados por la aplicaci贸n para comunicaci贸n fuera de proceso.
Esta estructura asegura que todos los componentes necesarios est茅n encapsulados dentro del bundle, facilitando un entorno de aplicaci贸n modular y seguro.
Para obtener informaci贸n m谩s detallada sobre las claves de Info.plist
y sus significados, la documentaci贸n para desarrolladores de Apple proporciona recursos extensos: Apple Info.plist Key Reference.
tip
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Support HackTricks
- Check the subscription plans!
- Join the 馃挰 Discord group or the telegram group or follow us on Twitter 馃惁 @hacktricks_live.
- Share hacking tricks by submitting PRs to the HackTricks and HackTricks Cloud github repos.