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

78 lines
6 KiB
Markdown

<details>
<summary><strong>Aprende hacking en AWS de cero a héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Otras formas de apoyar a HackTricks:
* Si quieres ver a tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF**, consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Consigue el [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **sígueme** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
* **Comparte tus trucos de hacking enviando PRs a los repositorios de GitHub de** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**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)
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 para el archivo `embedded.mobileprovision`. Sin embargo, deberías poder extraer las listas de propiedades de los entitlements del binario de la aplicación por ti mismo (que previamente has obtenido como se explica en el capítulo "Pruebas de Seguridad Básicas en iOS", sección "Adquisición del Binario de la Aplicación").
Los siguientes pasos deberían funcionar incluso al apuntar a un binario encriptado. Si por alguna razón no funcionan, tendrás que desencriptar y extraer la aplicación con, por ejemplo, Clutch (si es compatible con tu versión de iOS), frida-ios-dump o similar.
**Extrayendo la Lista de Entitlements del Binario de la Aplicación**
Si tienes el binario de la aplicación en tu computadora, un enfoque es usar binwalk para extraer (`-e`) todos los archivos 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"
```
O puedes usar radare2 (`-qc` para ejecutar un comando _silenciosamente_ y salir) para buscar todas las cadenas en el binario de la app (`izz`) que contengan "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>...
```
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).
> 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`).
Si accedes al binario de la app en el dispositivo con jailbreak (por ejemplo, vía SSH), puedes usar grep con la bandera `-a, --text` (trata todos los archivos 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>
...
```
Juega con la bandera `-A num, --after-context=num` para mostrar más o menos líneas. También puedes usar herramientas como las que presentamos anteriormente, si también las tienes instaladas en tu dispositivo iOS con jailbreak.
> Este método debería funcionar incluso si el binario de la aplicación aún está cifrado (se probó contra varias aplicaciones de la App Store).
<details>
<summary><strong>Aprende hacking en AWS de cero a héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Otras formas de apoyar a HackTricks:
* Si quieres ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF**, consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Consigue el [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **sígueme** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
* **Comparte tus trucos de hacking enviando PRs a los repositorios de github de** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
</details>