hacktricks/mobile-pentesting/ios-pentesting/extracting-entitlements-from-compiled-application.md

78 lines
6 KiB
Markdown

<details>
<summary><strong>Aprenda hacking no AWS do zero ao herói com</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Outras formas de apoiar o HackTricks:
* Se você quer ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
* Adquira o [**material oficial PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
* **Participe do grupo** 💬 [**Discord**](https://discord.gg/hRep4RUj7f) ou do grupo [**telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
* **Compartilhe suas técnicas de hacking enviando PRs para os repositórios do GitHub** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
</details>
**Página copiada de** [**https://mobile-security.gitbook.io/mobile-security-testing-guide/ios-testing-guide/0x06h-testing-platform-interaction#universal-links**](https://mobile-security.gitbook.io/mobile-security-testing-guide/ios-testing-guide/0x06h-testing-platform-interaction#universal-links)
Se você só tem o IPA do aplicativo ou simplesmente o aplicativo instalado em um dispositivo com jailbreak, normalmente não será possível encontrar arquivos `.entitlements`. Isso também pode acontecer com o arquivo `embedded.mobileprovision`. Ainda assim, você deve ser capaz de extrair as listas de propriedades de entitlements do binário do aplicativo por conta própria (o qual você obteve anteriormente, conforme explicado no capítulo "iOS Basic Security Testing", seção "Acquiring the App Binary").
Os seguintes passos devem funcionar mesmo quando direcionados a um binário criptografado. Se por algum motivo não funcionarem, você terá que descriptografar e extrair o aplicativo com, por exemplo, Clutch (se compatível com sua versão do iOS), frida-ios-dump ou similar.
**Extraindo a Lista de Entitlements Plist do Binário do Aplicativo**
Se você tem o binário do aplicativo em seu computador, uma abordagem é usar o binwalk para extrair (`-e`) todos os arquivos XML (`-y=xml`):
```bash
$ binwalk -e -y=xml ./Telegram\ X
DECIMAL HEXADECIMAL DESCRIPTION
--------------------------------------------------------------------------------
1430180 0x15D2A4 XML document, version: "1.0"
1458814 0x16427E XML document, version: "1.0"
```
Ou você pode usar o radare2 (`-qc` para executar um comando _silenciosamente_ e sair) para procurar todas as strings no binário do app (`izz`) que contenham "PropertyList" (`~PropertyList`):
```bash
$ r2 -qc 'izz~PropertyList' ./Telegram\ X
0x0015d2a4 ascii <?xml version="1.0" encoding="UTF-8" standalone="yes"?>\n<!DOCTYPE plist PUBLIC
"-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">\n<plist version="1.0">
...<key>com.apple.security.application-groups</key>\n\t\t<array>
\n\t\t\t<string>group.ph.telegra.Telegraph</string>...
0x0016427d ascii H<?xml version="1.0" encoding="UTF-8"?>\n<!DOCTYPE plist PUBLIC
"-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">\n<plist version="1.0">\n
<dict>\n\t<key>cdhashes</key>...
```
Nos dois casos (binwalk ou radare2), conseguimos extrair os mesmos dois arquivos `plist`. Se inspecionarmos o primeiro (0x0015d2a4), veremos que conseguimos recuperar completamente o [arquivo de entitlements original do Telegram](https://github.com/peter-iakovlev/Telegram-iOS/blob/77ee5c4dabdd6eb5f1e2ff76219edf7e18b45c00/Telegram-iOS/Telegram-iOS-AppStoreLLC.entitlements).
> Nota: o comando `strings` não ajudará aqui, pois não será capaz de encontrar essa informação. Melhor usar grep com a flag `-a` diretamente no binário ou usar radare2 (`izz`)/rabin2 (`-zz`).
Se você acessar o binário do aplicativo em um dispositivo com jailbreak (por exemplo, via SSH), você pode usar grep com a flag `-a, --text` (trata todos os arquivos como texto ASCII):
```bash
$ grep -a -A 5 'PropertyList' /var/containers/Bundle/Application/
15E6A58F-1CA7-44A4-A9E0-6CA85B65FA35/Telegram X.app/Telegram\ X
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>com.apple.security.application-groups</key>
<array>
...
```
Brinque com a flag `-A num, --after-context=num` para exibir mais ou menos linhas. Você também pode usar ferramentas como as que apresentamos acima, se também as tiver instalado em seu dispositivo iOS com jailbreak.
> Este método deve funcionar mesmo que o binário do aplicativo ainda esteja criptografado (foi testado contra vários aplicativos da App Store).
<details>
<summary><strong>Aprenda hacking em AWS do zero ao herói com</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Outras formas de apoiar o HackTricks:
* Se você quer ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
* Adquira o [**material oficial PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
* **Junte-se ao grupo** 💬 [**Discord**](https://discord.gg/hRep4RUj7f) ou ao grupo [**telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
* **Compartilhe suas técnicas de hacking enviando PRs para os repositórios github do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
</details>