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

67 lines
5.4 KiB
Markdown
Raw Normal View History

2022-04-28 16:01:33 +00:00
<details>
2023-04-25 18:35:28 +00:00
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
2022-04-28 16:01:33 +00:00
2023-06-06 18:56:34 +00:00
- Você trabalha em uma **empresa de cibersegurança**? Você quer ver sua **empresa anunciada no HackTricks**? ou você quer ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
2022-04-28 16:01:33 +00:00
2023-06-06 18:56:34 +00:00
- Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
2022-04-28 16:01:33 +00:00
2023-06-06 18:56:34 +00:00
- Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
2022-04-28 16:01:33 +00:00
2023-06-06 18:56:34 +00:00
- **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga-me** no **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
2022-04-28 16:01:33 +00:00
2023-06-06 18:56:34 +00:00
- **Compartilhe suas técnicas de hacking enviando PRs para o [repositório hacktricks](https://github.com/carlospolop/hacktricks) e [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**.
2022-04-28 16:01:33 +00:00
</details>
2023-06-06 18:56:34 +00:00
**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)
2021-05-17 19:08:47 +00:00
2023-06-06 18:56:34 +00:00
Se você só tem o IPA do aplicativo ou simplesmente o aplicativo instalado em um dispositivo com jailbreak, normalmente não poderá encontrar arquivos `.entitlements`. Isso também pode ser o caso do arquivo `embedded.mobileprovision`. Ainda assim, você deve ser capaz de extrair as listas de propriedades de direitos do aplicativo binário (que você obteve anteriormente, conforme explicado no capítulo "Teste de segurança básica do iOS", seção "Obtendo o binário do aplicativo").
2021-05-17 19:08:47 +00:00
2023-06-06 18:56:34 +00:00
As seguintes etapas devem funcionar mesmo ao direcionar um binário criptografado. Se, por algum motivo, eles 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.
2021-05-17 19:08:47 +00:00
2023-06-06 18:56:34 +00:00
**Extraindo a lista de propriedades de direitos do aplicativo binário**
2021-05-17 19:08:47 +00:00
2023-06-06 18:56:34 +00:00
Se você tiver o binário do aplicativo em seu computador, uma abordagem é usar o binwalk para extrair (`-e`) todos os arquivos XML (`-y=xml`):
2021-05-17 19:08:47 +00:00
```bash
$ binwalk -e -y=xml ./Telegram\ X
DECIMAL HEXADECIMAL DESCRIPTION
--------------------------------------------------------------------------------
1430180 0x15D2A4 XML document, version: "1.0"
1458814 0x16427E XML document, version: "1.0"
```
2023-06-06 18:56:34 +00:00
Ou você pode usar o radare2 (`-qc` para executar silenciosamente um comando e sair) para pesquisar todas as strings no binário do aplicativo (`izz`) contendo "PropertyList" (`~PropertyList`):
2021-05-17 19:08:47 +00:00
```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>...
```
2023-06-06 18:56:34 +00:00
Em ambos os casos (binwalk ou radare2), conseguimos extrair os mesmos dois arquivos `plist`. Se inspecionarmos o primeiro (0x0015d2a4), veremos que conseguimos recuperar completamente o [arquivo de direitos originais do Telegram](https://github.com/peter-iakovlev/Telegram-iOS/blob/77ee5c4dabdd6eb5f1e2ff76219edf7e18b45c00/Telegram-iOS/Telegram-iOS-AppStoreLLC.entitlements).
2021-05-17 19:08:47 +00:00
2023-06-06 18:56:34 +00:00
> Nota: o comando `strings` não ajudará aqui, pois não será capaz de encontrar essas informações. É melhor usar o grep com a opção `-a` diretamente no binário ou usar o radare2 (`izz`)/rabin2 (`-zz`).
2021-05-17 19:08:47 +00:00
2023-06-06 18:56:34 +00:00
Se você acessar o binário do aplicativo no dispositivo com jailbreak (por exemplo, via SSH), pode usar o grep com a opção `-a, --text` (trata todos os arquivos como texto ASCII):
2021-05-17 19:08:47 +00:00
```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>
...
```
2023-06-06 18:56:34 +00:00
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 tiverem sido instaladas em seu dispositivo iOS com jailbreak.
2021-05-17 19:08:47 +00:00
2023-06-06 18:56:34 +00:00
> Este método deve funcionar mesmo se o binário do aplicativo ainda estiver criptografado (foi testado em vários aplicativos da App Store).