iOS Extracting Entitlements From Compiled Application

Lernen Sie AWS-Hacking von Grund auf mit htARTE (HackTricks AWS Red Team Expert)!

Andere Möglichkeiten, HackTricks zu 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

Extrahieren von Berechtigungen und mobilen Bereitstellungsdateien

Wenn es um eine IPA-Datei einer App oder eine installierte App auf einem gejailbreakten Gerät geht, ist es möglicherweise nicht möglich, direkt auf .entitlements-Dateien oder die Datei embedded.mobileprovision zuzugreifen. Dennoch können Berechtigungs-Property-Listen aus der App-Binärdatei extrahiert werden, indem die in Kapitel "iOS Basic Security Testing" beschriebenen Verfahren befolgt werden, insbesondere der Abschnitt "Erwerben der App-Binärdatei".

Auch bei verschlüsselten Binärdateien können bestimmte Schritte angewendet 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 auf einem Computer zugänglichen App-Binärdatei kann binwalk verwendet werden, um alle XML-Dateien zu extrahieren. Der folgende Befehl zeigt, wie dies gemacht wird:

$ 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, der nach allen Zeichenketten im App-Binärcode sucht, 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 die Extraktion von plist-Dateien. Eine Inspektion der ersten Datei (0x0015d2a4) zeigt eine erfolgreiche Wiederherstellung der ursprünglichen Berechtigungsdatei von Telegram.

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

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

Die Anpassung der -A num, --after-context=num-Flagge ermöglicht die Anzeige von mehr oder weniger Zeilen. Diese Methode ist auch für verschlüsselte App-Binärdateien geeignet und wurde bei mehreren App Store-Apps verifiziert. Die zuvor erwähnten Tools können auch auf gejailbreakten iOS-Geräten für ähnliche Zwecke verwendet werden.

Hinweis: Die direkte Verwendung des strings-Befehls wird für diese Aufgabe aufgrund seiner Einschränkungen bei der Suche nach relevanten Informationen nicht empfohlen. Stattdessen wird empfohlen, grep mit der -a-Flagge auf der Binärdatei zu verwenden oder radare2 (izz)/rabin2 (-zz) für effektivere Ergebnisse einzusetzen.

Lernen Sie AWS-Hacking von Grund auf mit htARTE (HackTricks AWS Red Team Expert)!

Andere Möglichkeiten, HackTricks zu unterstützen:

Last updated