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

67 lines
5.6 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 13:10:46 +00:00
- Travaillez-vous dans une entreprise de cybersécurité ? Voulez-vous voir votre entreprise annoncée dans HackTricks ? ou voulez-vous avoir accès à la dernière version de PEASS ou télécharger HackTricks en PDF ? Consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) !
2022-04-28 16:01:33 +00:00
2023-06-03 13:10:46 +00:00
- Découvrez [**The PEASS Family**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family)
2022-04-28 16:01:33 +00:00
2023-06-03 13:10:46 +00:00
- Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
2022-04-28 16:01:33 +00:00
2023-06-03 13:10:46 +00:00
- **Rejoignez le** [**💬**](https://emojipedia.org/speech-balloon/) [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe telegram**](https://t.me/peass) ou **suivez** moi sur **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 13:10:46 +00:00
- **Partagez vos astuces de piratage en soumettant des PR au [repo hacktricks](https://github.com/carlospolop/hacktricks) et au [repo hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
2022-04-28 16:01:33 +00:00
</details>
2023-06-03 13:10:46 +00:00
**Page copiée depuis** [**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 13:10:46 +00:00
Si vous n'avez que l'IPA de l'application ou simplement l'application installée sur un appareil jailbreaké, vous ne pourrez normalement pas trouver les fichiers `.entitlements`. Cela pourrait également être le cas pour le fichier `embedded.mobileprovision`. Néanmoins, vous devriez être en mesure d'extraire les listes de propriétés d'attribution à partir du binaire de l'application vous-même (que vous avez précédemment obtenu comme expliqué dans le chapitre "iOS Basic Security Testing", section "Acquiring the App Binary").
2021-05-17 19:08:47 +00:00
2023-06-03 13:10:46 +00:00
Les étapes suivantes devraient fonctionner même lorsqu'il s'agit d'un binaire chiffré. Si pour une raison quelconque cela ne fonctionne pas, vous devrez décrypter et extraire l'application avec Clutch (si compatible avec votre version iOS), frida-ios-dump ou similaire.
2021-05-17 19:08:47 +00:00
2023-06-03 13:10:46 +00:00
**Extraction de la liste de propriétés d'attribution à partir du binaire de l'application**
2021-05-17 19:08:47 +00:00
2023-06-03 13:10:46 +00:00
Si vous avez le binaire de l'application sur votre ordinateur, une approche consiste à utiliser binwalk pour extraire (`-e`) tous les fichiers 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 13:10:46 +00:00
Ou vous pouvez utiliser radare2 (`-qc` pour exécuter silencieusement une commande et quitter) pour rechercher toutes les chaînes de caractères dans le binaire de l'application (`izz`) contenant "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 13:10:46 +00:00
Dans les deux cas (binwalk ou radare2), nous avons pu extraire les mêmes deux fichiers `plist`. Si nous inspectons le premier (0x0015d2a4), nous voyons que nous avons pu récupérer complètement le [fichier d'attribution 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 13:10:46 +00:00
> Note: la commande `strings` ne sera pas utile ici car elle ne pourra pas trouver cette information. Il vaut mieux utiliser grep avec l'option `-a` directement sur le binaire ou utiliser radare2 (`izz`)/rabin2 (`-zz`).
2021-05-17 19:08:47 +00:00
2023-06-03 13:10:46 +00:00
Si vous accédez au binaire de l'application sur l'appareil jailbreaké (par exemple via SSH), vous pouvez utiliser grep avec l'option `-a, --text` (traite tous les fichiers comme du texte 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 13:10:46 +00:00
Jouez avec le drapeau `-A num, --after-context=num` pour afficher plus ou moins de lignes. Vous pouvez également utiliser des outils comme ceux que nous avons présentés ci-dessus, si vous les avez également installés sur votre appareil iOS jailbreaké.
2021-05-17 19:08:47 +00:00
2023-06-03 13:10:46 +00:00
> Cette méthode devrait fonctionner même si le binaire de l'application est encore chiffré (elle a été testée sur plusieurs applications de l'App Store).