iOS Extracting Entitlements From Compiled Application

HackTricks unterstützen

Zusammenfassung der Seite https://mas.owasp.org/MASTG/tests/ios/MASVS-PLATFORM/MASTG-TEST-0069/#review-entitlements-embedded-in-the-compiled-app-binary

Entitlements und mobile Bereitstellungsdateien extrahieren

Beim Umgang mit einer IPA einer App oder einer installierten App auf einem jailbroken Gerät kann es möglicherweise nicht möglich sein, .entitlements-Dateien oder die embedded.mobileprovision-Datei direkt zu finden. Es ist jedoch möglich, die Entitlements-Property-Listen aus der App-Binärdatei zu extrahieren, indem die Verfahren im Kapitel "iOS Basic Security Testing", insbesondere im Abschnitt "Erwerb der App-Binärdatei", befolgt werden.

Selbst bei verschlüsselten Binärdateien können bestimmte Schritte unternommen werden, um diese Dateien zu extrahieren. Sollten diese Schritte fehlschlagen, können Tools wie Clutch (sofern mit der iOS-Version kompatibel), frida-ios-dump oder ähnliche Dienstprogramme erforderlich sein, um die App zu entschlüsseln und zu extrahieren.

Extrahieren der Entitlements-Plist aus der App-Binärdatei

Mit der App-Binärdatei, die auf einem Computer zugänglich ist, kann binwalk verwendet werden, um alle XML-Dateien zu extrahieren. Der folgende Befehl zeigt, wie dies zu tun ist:

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

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

Alternativ kann radare2 verwendet werden, um einen Befehl leise auszuführen und zu beenden, indem nach allen Zeichenfolgen im App-Binärdatei gesucht wird, die "PropertyList" enthalten:

$ r2 -qc 'izz~PropertyList' ./Telegram\ X

0x0015d2a4 ascii <?xml version="1.0" encoding="UTF-8" standalone="yes"?>...
0x0016427d ascii H<?xml version="1.0" encoding="UTF-8"?>...

Beide Methoden, binwalk und radare2, ermöglichen das Extrahieren von plist-Dateien, wobei eine Inspektion der ersten (0x0015d2a4) eine erfolgreiche Wiederherstellung der originalen Berechtigungsdatei von Telegram zeigt.

Für App-Binärdateien, die auf jailbroken Geräten (z. B. über SSH) zugegriffen werden, kann der grep-Befehl mit dem -a, --text-Flag verwendet werden, um alle Dateien als ASCII-Text zu behandeln:

$ grep -a -A 5 'PropertyList' /var/containers/Bundle/Application/...

Das Anpassen des -A num, --after-context=num Flags ermöglicht die Anzeige von mehr oder weniger Zeilen. Diese Methode ist auch für verschlüsselte App-Binärdateien geeignet und wurde gegen mehrere App Store-Apps verifiziert. Die zuvor erwähnten Tools können ebenfalls auf jailbroken iOS-Geräten für ähnliche Zwecke eingesetzt werden.

Hinweis: Die direkte Verwendung des strings-Befehls wird für diese Aufgabe aufgrund seiner Einschränkungen bei der Auffindung relevanter Informationen nicht empfohlen. Stattdessen ist es ratsam, grep mit dem -a-Flag auf der Binärdatei zu verwenden oder radare2 (izz)/rabin2 (-zz) für effektivere Ergebnisse zu nutzen.

Last updated