iOS Extracting Entitlements From Compiled Application

Supporta HackTricks

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

Estrazione dei Diritti e dei File di Provisioning Mobile

Quando si tratta di un IPA di un'app o di un'app installata su un dispositivo jailbroken, trovare file .entitlements o il file embedded.mobileprovision direttamente potrebbe non essere possibile. Tuttavia, le liste di proprietà dei diritti possono ancora essere estratte dal binario dell'app, seguendo le procedure delineate nel capitolo "iOS Basic Security Testing", in particolare la sezione "Acquiring the App Binary".

Anche con binari crittografati, possono essere impiegati determinati passaggi per estrarre questi file. Se questi passaggi falliscono, potrebbero essere necessari strumenti come Clutch (se compatibile con la versione iOS), frida-ios-dump o utility simili per decrittografare ed estrarre l'app.

Estrazione del Plist dei Diritti dal Binario dell'App

Con il binario dell'app accessibile su un computer, binwalk può essere utilizzato per estrarre tutti i file XML. Il comando qui sotto dimostra come farlo:

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

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

In alternativa, radare2 può essere utilizzato per eseguire silenziosamente un comando e uscire, cercando tutte le stringhe nel binario dell'app che contengono "PropertyList":

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

Entrambi i metodi, binwalk e radare2, consentono l'estrazione di file plist, con un'ispezione del primo (0x0015d2a4) che rivela un recupero riuscito del file di autorizzazioni originale di Telegram.

Per i binari delle app accessibili su dispositivi jailbroken (ad esempio, tramite SSH), il comando grep con il flag -a, --text può essere utilizzato per trattare tutti i file come testo ASCII:

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

Regolare il flag -A num, --after-context=num consente di visualizzare più o meno righe. Questo metodo è valido anche per i binari delle app crittografate ed è stato verificato su più app dell'App Store. Gli strumenti menzionati in precedenza possono essere utilizzati anche su dispositivi iOS jailbroken per scopi simili.

Nota: L'uso diretto del comando strings non è raccomandato per questo compito a causa delle sue limitazioni nel trovare informazioni rilevanti. Invece, è consigliabile utilizzare grep con il flag -a sul binario o utilizzare radare2 (izz)/rabin2 (-zz) per risultati più efficaci.

Support HackTricks

Last updated