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-03 01:46:23 +00:00
- ¿Trabajas en una **empresa de ciberseguridad**? ¿Quieres ver tu **empresa anunciada en HackTricks**? ¿O quieres tener acceso a la **última versión de PEASS o descargar HackTricks en PDF**? ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
2022-04-28 16:01:33 +00:00
2023-06-03 01:46:23 +00:00
- Descubre [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
2022-04-28 16:01:33 +00:00
2023-06-03 01:46:23 +00:00
- Obtén la [**oficial PEASS & HackTricks swag**](https://peass.creator-spring.com)
2022-04-28 16:01:33 +00:00
2023-06-03 01:46:23 +00:00
- **Únete al** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **sígueme** en **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-03 01:46:23 +00:00
- **Comparte tus trucos de hacking enviando PR al [repositorio de hacktricks](https://github.com/carlospolop/hacktricks) y al [repositorio de hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
2022-04-28 16:01:33 +00:00
</details>
2023-06-03 01:46:23 +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-03 01:46:23 +00:00
Si solo tienes el IPA de la aplicación o simplemente la aplicación instalada en un dispositivo con jailbreak, normalmente no podrás encontrar archivos `.entitlements`. Esto también podría ser el caso del archivo `embedded.mobileprovision`. Aún así, deberías ser capaz de extraer las listas de propiedades de los entitlements del binario de la aplicación tú mismo (que has obtenido previamente como se explica en el capítulo "Pruebas básicas de seguridad en iOS", sección "Adquisición del binario de la aplicación").
2021-05-17 19:08:47 +00:00
2023-06-03 01:46:23 +00:00
Los siguientes pasos deberían funcionar incluso cuando se apunta a un binario cifrado. Si por alguna razón no lo hacen, tendrás que descifrar y extraer la aplicación con, por ejemplo, Clutch (si es compatible con tu versión de iOS), frida-ios-dump o similar.
2021-05-17 19:08:47 +00:00
2023-06-03 01:46:23 +00:00
**Extracción del archivo Entitlements Plist del binario de la aplicación**
2021-05-17 19:08:47 +00:00
2023-06-03 01:46:23 +00:00
Si tienes el binario de la aplicación en tu ordenador, un enfoque es utilizar binwalk para extraer (`-e`) todos los archivos 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-03 01:46:23 +00:00
O puedes usar radare2 (`-qc` para ejecutar un comando en silencio y salir) para buscar todas las cadenas en el binario de la aplicación (`izz`) que contengan "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-03 01:46:23 +00:00
En ambos casos (binwalk o radare2) pudimos extraer los mismos dos archivos `plist`. Si inspeccionamos el primero (0x0015d2a4), vemos que pudimos recuperar completamente el [archivo de entitlements original de 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-03 01:46:23 +00:00
> Nota: el comando `strings` no ayudará aquí ya que no podrá encontrar esta información. Es mejor usar grep con la bandera `-a` directamente en el binario o usar radare2 (`izz`)/rabin2 (`-zz`).
2021-05-17 19:08:47 +00:00
2023-06-03 01:46:23 +00:00
Si accede al binario de la aplicación en el dispositivo con jailbreak (por ejemplo, a través de SSH), puede usar grep con la bandera `-a, --text` (trata todos los archivos 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-03 01:46:23 +00:00
Juega con la bandera `-A num, --after-context=num` para mostrar más o menos líneas. También puedes utilizar herramientas como las que presentamos anteriormente, si las tienes instaladas en tu dispositivo iOS con jailbreak.
2021-05-17 19:08:47 +00:00
2023-06-03 01:46:23 +00:00
> Este método debería funcionar incluso si el binario de la aplicación todavía está encriptado (se probó con varias aplicaciones de la App Store).