iOS Extracting Entitlements From Compiled Application

Aprenda hacking na AWS do zero ao herói com htARTE (HackTricks AWS Red Team Expert)!

Outras formas de apoiar o HackTricks:

Resumo da página https://mas.owasp.org/MASTG/tests/ios/MASVS-PLATFORM/MASTG-TEST-0069/#review-entitlements-embedded-in-the-compiled-app-binary

Extraindo Entitlements e Arquivos de Provisão Móvel

Ao lidar com um arquivo IPA de um aplicativo ou um aplicativo instalado em um dispositivo com jailbreak, pode não ser possível encontrar arquivos .entitlements ou o arquivo embedded.mobileprovision diretamente. No entanto, listas de propriedades de entitlements ainda podem ser extraídas do binário do aplicativo, seguindo os procedimentos descritos no capítulo "Teste de Segurança Básica do iOS", particularmente na seção "Adquirindo o Binário do Aplicativo".

Mesmo com binários criptografados, certas etapas podem ser empregadas para extrair esses arquivos. Caso essas etapas falhem, ferramentas como Clutch (se compatível com a versão do iOS), frida-ios-dump, ou utilitários similares podem ser necessários para descriptografar e extrair o aplicativo.

Extraindo o Plist de Entitlements do Binário do Aplicativo

Com o binário do aplicativo acessível em um computador, o binwalk pode ser utilizado para extrair todos os arquivos XML. O comando abaixo demonstra como fazer isso:

$ binwalk -e -y=xml ./Telegram\ X

DECIMAL       HEXADECIMAL     DESCRIPTION
--------------------------------------------------------------------------------
1430180       0x15D2A4        XML document, version: "1.0"
1458814       0x16427E        XML document, version: "1.0"

Alternativamente, radare2 pode ser usado para executar silenciosamente um comando e sair, procurando todas as strings no binário do aplicativo que contêm "PropertyList":

$ r2 -qc 'izz~PropertyList' ./Telegram\ X

0x0015d2a4 ascii <?xml version="1.0" encoding="UTF-8" standalone="yes"?>...
0x0016427d ascii H<?xml version="1.0" encoding="UTF-8"?>...

Ambos métodos, binwalk e radare2, permitem a extração de arquivos plist, com uma inspeção do primeiro (0x0015d2a4) revelando uma recuperação bem-sucedida do arquivo de direitos originais do Telegram.

Para binários de aplicativos acessados em dispositivos com jailbreak (por exemplo, via SSH), o comando grep com a flag -a, --text pode ser usado para tratar todos os arquivos como texto ASCII:

$ grep -a -A 5 'PropertyList' /var/containers/Bundle/Application/...

Ajustar a bandeira -A num, --after-context=num permite exibir mais ou menos linhas. Este método é viável mesmo para binários de aplicativos criptografados e foi verificado em vários aplicativos da App Store. As ferramentas mencionadas anteriormente também podem ser usadas em dispositivos iOS com jailbreak para fins semelhantes.

Nota: O uso direto do comando strings não é recomendado para esta tarefa devido às suas limitações em encontrar informações relevantes. Em vez disso, é aconselhável empregar o grep com a bandeira -a no binário ou utilizar o radare2 (izz)/rabin2 (-zz) para obter resultados mais eficazes.

Last updated