Pular para o conteúdo principal

Arquivo Info.plist

O Info.plist é o primeiro arquivo que um analista deve abrir ao receber um .ipa. Ele concentra metadados declarativos do app, lidos pelo iOS antes mesmo de executar o binário.

Identificação do app

A chave CFBundleIdentifier contém o Bundle ID, o identificador único do app dentro do ecossistema Apple. Ele é usado como referência em comunicação entre processos, em perfis de provisionamento e no Keychain.

A chave CFBundleExecutable informa o nome exato do binário Mach-O dentro do bundle, que é o alvo tanto da análise estática quanto do hooking dinâmico feito mais à frente.

App Transport Security

A seção NSAppTransportSecurity controla as políticas de TLS do app. A chave NSAllowsArbitraryLoads com valor true desativa completamente o ATS, permitindo conexões HTTP não cifradas para qualquer host. O DVIA-v2 usa exatamente essa configuração, já que foi construído para demonstrar vulnerabilidades de propósito, mas esse mesmo padrão aparece com frequência em apps de produção também.

<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>

Além de checar NSAllowsArbitraryLoads, vale olhar exceções por domínio dentro de NSExceptionDomains, que podem revelar endpoints de backend rodando com TLS degradado mesmo quando o ATS está nominalmente ativo.

URL Schemes

A chave CFBundleURLTypes lista os URL schemes registrados pelo app. Esses schemes funcionam como deep links, o que significa que qualquer outro app instalado no dispositivo pode invocar o app alvo através deles, abrindo superfície para ataques de injeção de input e para comportamentos parecidos com CSRF via URL.

No DVIA-v2, os schemes registrados são dvia e dviaswift. Um atacante com acesso ao dispositivo consegue acionar funcionalidades internas do app através desses endpoints, sem qualquer autenticação prévia.

Permissões de privacidade

As chaves no formato NS*UsageDescription declaram as permissões que o app solicita ao sistema. Além de revelar quais recursos o app efetivamente acessa, elas permitem comparar o que foi declarado com o que o app realmente faz em runtime, uma discrepância comum em apps mal desenvolvidos ou que carregam SDKs de terceiros abusivos.

No DVIA-v2, apenas NSCameraUsageDescription está presente, o que é intencionalmente restrito para o contexto de laboratório.

Versão mínima de iOS e SDK

As chaves MinimumOSVersion e DTPlatformVersion indicam, respectivamente, a versão mínima de iOS suportada pelo app e a versão do SDK usada na compilação. Uma versão antiga de SDK pode significar ausência de proteções introduzidas em versões mais recentes do sistema.

PkgInfo

O arquivo PkgInfo, que fica ao lado do Info.plist, contém apenas 8 bytes, o tipo do bundle (APPL) e um creator code herdado do macOS.

Leitura prática

O Info.plist pode estar em formato XML ou binário dentro do bundle. Para ler no terminal:

plutil -p Info.plist

Para converter de binário para XML e poder editar o conteúdo diretamente:

plutil -convert xml1 Info.plist -o Info_readable.plist

Referências