hacktricks/macos-hardening/macos-security-and-privilege-escalation/macos-files-folders-and-binaries/macos-installer-packages-pkg.md

3.8 KiB

Informações básicas

Um pacote de instalação do macOS (também conhecido como arquivo .pkg) é um formato de arquivo usado pelo macOS para distribuir software. Esses arquivos são como uma caixa que contém tudo o que um software precisa para instalar e executar corretamente.

O arquivo do pacote em si é um arquivo que contém uma hierarquia de arquivos e diretórios que serão instalados no computador de destino. Ele também pode incluir scripts para executar tarefas antes e depois da instalação, como configurar arquivos de configuração ou limpar versões antigas do software.

Hierarquia

  • Distribuição (xml): Personalizações (título, texto de boas-vindas...) e verificações de script/instalação
  • PackageInfo (xml): Informações, requisitos de instalação, local de instalação, caminhos para scripts a serem executados
  • Lista de materiais (bom): Lista de arquivos para instalar, atualizar ou remover com permissões de arquivo
  • Carga útil (arquivo CPIO compactado com gzip): Arquivos para instalar no local-de-instalação do PackageInfo
  • Scripts (arquivo CPIO compactado com gzip): Scripts de pré e pós-instalação e mais recursos extraídos para um diretório temporário para execução.

Descompactar

# Tool to directly get the files inside a package
pkgutil —expand "/path/to/package.pkg" "/path/to/out/dir"

# Get the files ina. more manual way
mkdir -p "/path/to/out/dir"
cd "/path/to/out/dir"
xar -xf "/path/to/package.pkg"

# Decompress also the CPIO gzip compressed ones
cat Scripts | gzip -dc | cpio -i
cpio -i < Scripts

Privesc via abuso de pacotes pkg

Execução a partir de diretórios públicos

Se um script de pré ou pós-instalação estiver executando, por exemplo, a partir de /var/tmp/Installerutil, um invasor pode controlar esse script para elevar privilégios sempre que for executado. Ou outro exemplo semelhante:

Referências

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