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

5.3 KiB

macOS Bundles

{% hint style="success" %} Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Support HackTricks
{% endhint %}

Informações Básicas

Os bundles no macOS servem como contêineres para uma variedade de recursos, incluindo aplicativos, bibliotecas e outros arquivos necessários, fazendo com que apareçam como objetos únicos no Finder, como os arquivos *.app. O bundle mais comumente encontrado é o bundle .app, embora outros tipos como .framework, .systemextension e .kext também sejam prevalentes.

Componentes Essenciais de um Bundle

Dentro de um bundle, particularmente no diretório <application>.app/Contents/, uma variedade de recursos importantes está armazenada:

  • _CodeSignature: Este diretório armazena detalhes de assinatura de código vitais para verificar a integridade do aplicativo. Você pode inspecionar as informações de assinatura de código usando comandos como: %%%bash openssl dgst -binary -sha1 /Applications/Safari.app/Contents/Resources/Assets.car | openssl base64 %%%
  • MacOS: Contém o binário executável do aplicativo que é executado ao interagir com o usuário.
  • Resources: Um repositório para os componentes da interface do usuário do aplicativo, incluindo imagens, documentos e descrições da interface (arquivos nib/xib).
  • Info.plist: Funciona como o arquivo de configuração principal do aplicativo, crucial para que o sistema reconheça e interaja com o aplicativo de forma apropriada.

Chaves Importantes no Info.plist

O arquivo Info.plist é uma pedra angular para a configuração do aplicativo, contendo chaves como:

  • CFBundleExecutable: Especifica o nome do arquivo executável principal localizado no diretório Contents/MacOS.
  • CFBundleIdentifier: Fornece um identificador global para o aplicativo, amplamente utilizado pelo macOS para gerenciamento de aplicativos.
  • LSMinimumSystemVersion: Indica a versão mínima do macOS necessária para o aplicativo ser executado.

Explorando Bundles

Para explorar o conteúdo de um bundle, como Safari.app, o seguinte comando pode ser usado: bash ls -lR /Applications/Safari.app/Contents

Essa exploração revela diretórios como _CodeSignature, MacOS, Resources, e arquivos como Info.plist, cada um servindo a um propósito único, desde a segurança do aplicativo até a definição de sua interface do usuário e parâmetros operacionais.

Diretórios Adicionais de Bundle

Além dos diretórios comuns, os bundles também podem incluir:

  • Frameworks: Contém frameworks agrupados usados pelo aplicativo. Frameworks são como dylibs com recursos extras.
  • PlugIns: Um diretório para plug-ins e extensões que aprimoram as capacidades do aplicativo.
  • XPCServices: Contém serviços XPC usados pelo aplicativo para comunicação fora do processo.

Essa estrutura garante que todos os componentes necessários estejam encapsulados dentro do bundle, facilitando um ambiente de aplicativo modular e seguro.

Para informações mais detalhadas sobre as chaves Info.plist e seus significados, a documentação do desenvolvedor da Apple fornece recursos extensivos: Apple Info.plist Key Reference.

{% hint style="success" %} Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Support HackTricks
{% endhint %}