hacktricks/macos-hardening/macos-security-and-privilege-escalation/macos-files-folders-and-binaries/macos-bundles.md

5.6 KiB

Paquetes de macOS

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

Información básica

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

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

Los tipos de recursos contenidos en un paquete 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 firma de código sobre la aplicación (es decir, hashes, etc.).

  • openssl dgst -binary -sha1 /Applications/Safari.app/Contents/Resources/Assets.car | openssl base64

  • 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 (que a menudo se utiliza para identificar globalmente la aplicación por el sistema).

  • LSMinimumSystemVersion

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

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