hacktricks/mobile-pentesting/ios-pentesting/extracting-entitlements-from-compiled-application.md
2023-06-03 13:10:46 +00:00

5.6 KiB

☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥

Page copiée depuis https://mobile-security.gitbook.io/mobile-security-testing-guide/ios-testing-guide/0x06h-testing-platform-interaction#universal-links

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").

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.

Extraction de la liste de propriétés d'attribution à partir du binaire de l'application

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) :

$ binwalk -e -y=xml ./Telegram\ X

DECIMAL       HEXADECIMAL     DESCRIPTION
--------------------------------------------------------------------------------
1430180       0x15D2A4        XML document, version: "1.0"
1458814       0x16427E        XML document, version: "1.0"

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):

$ 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>...

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.

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).

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).

$ 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>
        ...

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é.

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).