Pular para o conteúdo principal

Estrutura de diretório do sandbox iOS

Quando um app é instalado no iOS, o sistema cria vários diretórios próprios para ele, isolados dos diretórios de outros apps, como visto no capítulo sobre App Sandbox. Esses diretórios têm papéis diferentes, um guarda o bundle estático do app, outro guarda arquivos que o usuário cria, outro guarda cache que pode ser apagado a qualquer momento, e assim por diante. Saber onde cada tipo de dado costuma parar é o que torna a análise de armazenamento local rápida em vez de uma busca às cegas pelo sandbox inteiro.

Um comando que veremos mais adiante, é o env do objection que lista os principais diretórios do sandbox da aplicação. Veja abaixo um exemplo de saída desse comando:

NamePath
BundlePath/private/var/containers/Bundle/Application/1F8DC61F-1B8F-4EEB-86DB-FB4C058D5466/DVIA-v2.app
CachesDirectory/var/mobile/Containers/Data/Application/570497EC-ADC0-4AA5-9F58-53D65D2C4E5E/Library/Caches
DocumentDirectory/var/mobile/Containers/Data/Application/570497EC-ADC0-4AA5-9F58-53D65D2C4E5E/Documents
LibraryDirectory/var/mobile/Containers/Data/Application/570497EC-ADC0-4AA5-9F58-53D65D2C4E5E/Library

Entender o papel de cada um é essencial para saber onde procurar dados sensíveis, plists, bancos SQLite, tokens e cache durante um pentest de app iOS.

É a pasta do bundle estático, o app instalado em si. Não é gravável em tempo de execução, então não é aqui que você va achar dados criados pelo usuário. Aqui ficam o binário, assets, storyboards compilados e o Info.plist original. Útil pra engenharia reversa do binário e pra checar configurações estáticas, mas não pra dados gerados em runtime.

Insights para pentest

  1. Library/Preferences (plists do NSUserDefaults)
  2. Documents (bancos de dados, arquivos criados pelo app)
  3. Library/Application Support (Core Data, estado persistente)
  4. Library/Cookies e Library/WebKit (sessão e webview)
  5. Caches (pode conter dados sensíveis por descuido do dev)
  6. BundlePath (análise estática do binário, não dados de runtime)