hacktricks/macos-hardening/macos-security-and-privilege-escalation/macos-files-folders-and-binaries/macos-bundles.md
carlospolop 466ebcbb16 f
2023-06-05 20:30:03 +02:00

3.9 KiB

Bundles de macOS

☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥

Información básica

Básicamente, un bundle es una estructura de directorios dentro del sistema de archivos. Curiosamente, por defecto este directorio parece un objeto único en Finder.

El bundle más común que encontraremos es el bundle .app, pero muchos otros ejecutables también se empaquetan como bundles, como .framework y .systemextension o .kext.

Los tipos de recursos contenidos en un bundle pueden consistir en aplicaciones, bibliotecas, imágenes, documentación, archivos de encabezado, etc. Todos estos archivos están dentro de <aplicación>.app/Contents/.

ls -lR /Applications/Safari.app/Contents
  • Contents/_CodeSignature

    Contiene información de firmado de código sobre la aplicación (es decir, hashes, etc.).

  • Contents/MacOS

    Contiene el binario de la aplicación (que se ejecuta cuando el usuario hace doble clic en el icono de la aplicación en la interfaz de usuario).

  • Contents/Resources

    Contiene elementos de la interfaz de usuario de la aplicación, como imágenes, documentos y archivos nib/xib (que describen varias interfaces de usuario).

  • Contents/Info.plist
    El "archivo de configuración principal" de la aplicación. Apple señala que "el sistema depende de la presencia de este archivo para identificar información relevante sobre la aplicación y cualquier archivo relacionado".

    • Los archivos Plist contienen información de configuración. Puede encontrar información sobre el significado de las claves plist en https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Introduction/Introduction.html

    • Las parejas que pueden ser de interés al analizar una aplicación incluyen:\

      • CFBundleExecutable

      Contiene el nombre del binario de la aplicación (que se encuentra en Contents/MacOS).

      • CFBundleIdentifier

      Contiene el identificador de paquete de la aplicación (a menudo utilizado por el sistema para identificar globalmente la aplicación).

      • LSMinimumSystemVersion

      Contiene la versión más antigua de macOS con la que es compatible la aplicación.