Heim BlogWeb-Scraping Erhalten Sie den von IBM MobileFirst verschlüsselten Quellcode für mobile Apps

Erhalten Sie den von IBM MobileFirst verschlüsselten Quellcode für mobile Apps

von Kadek

Hey! Ich bin Roman, CTO bei Techvice. Manchmal führe ich Reverse Engineering für mobile Apps durch, um auf APIs zuzugreifen und Abfragen in Python- oder NodeJS-Code zu reproduzieren. Dies ist erforderlich, um einen Datenscraper zu erstellen. In einer der kürzlich gecrackten Apps sind mir Spuren der Verwendung von IBM MobileFirst aufgefallen.

IBM MobileFirst (oder IBM Mobile Foundation) ist eine Plattform zur Entwicklung, Optimierung, Integration und Verwaltung sicherer mobiler Anwendungen.

Haftungsausschluss

  1. Ich werde hier nicht den Namen der Anwendung erwähnen.

  2. In der IBM-Site-Dokumentation wird darauf hingewiesen, dass dieser Schutz keine unzerbrechliche Verschlüsselung, sondern eine grundlegende Verschleierungsstufe bietet.

Anwendungsanalyse

Zuerst habe ich versucht, den Datenverkehr zwischen der mobilen Anwendung und dem Server mithilfe von Mitmproxy abzufangen. Ich habe jedoch eine Fehlermeldung erhalten, da die Anwendung SSL-Pinning verwendet.

Um das SSL-Pinning zu deaktivieren, habe ich das Frida-Dienstprogramm verwendet. Hier ist eines der Beispiele für Fridas Skripte zur Umgehung von SSL-Pinning – https://codeshare.frida.re/@pcipolloni/universal-android-ssl-pinning-bypass-with-frida/.

Ich habe versucht, Frida-Skripte zu verwenden, die wir für Anwendungen erstellt haben, die wir zuvor untersucht haben, aber nichts hat funktioniert. Diese Anwendung verfügt wahrscheinlich über eine benutzerdefinierte SSL-Pinning-Implementierung, für die meine bisherige Vorgehensweise nicht funktioniert.

Anwendungsdekompilierung

Zum Dekompilieren von Android-Anwendungen habe ich JADX verwendet.

techvice@MacBook-Pro-techvice some_app % jadx -d ./source_code ./some_app.apk 
INFO  - loading ...
INFO  - processing ...
ERROR - finished with errors, count: 25

Bei der Ausgabe gab uns JADX zwei Verzeichnisse: Ressourcen und Quellen. Werfen wir einen Blick in die Quelle.

techvice@MacBook-Pro-techvice some_app % ls -la source_code/sources 
total 0
drwxr-xr-x  18 techvice  staff   576 Jun 27 15:18 .
drwxr-xr-x   5 techvice  staff   160 Jun 27 15:19 ..
drwxr-xr-x   3 techvice  staff    96 Jun 27 15:18 a
drwxr-xr-x   4 techvice  staff   128 Jun 27 15:18 android
drwxr-xr-x   5 techvice  staff   160 Jun 27 15:18 androidx
drwxr-xr-x   3 techvice  staff    96 Jun 27 15:18 b
drwxr-xr-x  33 techvice  staff  1056 Jun 27 15:18 c
drwxr-xr-x  19 techvice  staff   608 Jun 27 15:18 com
drwxr-xr-x   3 techvice  staff    96 Jun 27 15:18 cordova
drwxr-xr-x  23 techvice  staff   736 Jun 27 15:18 d
drwxr-xr-x   4 techvice  staff   128 Jun 27 15:18 de
drwxr-xr-x   3 techvice  staff    96 Jun 27 15:18 defpackage
drwxr-xr-x   3 techvice  staff    96 Jun 27 15:18 e
drwxr-xr-x   3 techvice  staff    96 Jun 27 15:18 im
drwxr-xr-x   3 techvice  staff    96 Jun 27 15:18 net
drwxr-xr-x   3 techvice  staff    96 Jun 27 15:18 nl
drwxr-xr-x   5 techvice  staff   160 Jun 27 15:18 org
drwxr-xr-x   3 techvice  staff    96 Jun 27 15:18 uk

Im Quellverzeichnis der dekompilierten Anwendung befindet sich ein Cordova-Verzeichnis. Nun, wir wissen, womit wir es jetzt zu tun haben.

Auf Cordova erstellte Anwendungen sind reguläre Webanwendungen, die auf der Chromium-Engine ausgeführt werden. JS-, CSS- und HTML-Dateien, die für die Anwendungsarbeit erforderlich sind, befinden sich im Verzeichnis „resources/assets/www` Verzeichnis. Ich öffne dieses Verzeichnis und sehe …


Archiv
Archiv

Überraschung! Anstelle der erwarteten HTML-, CSS- und JS-Dateien sah ich ein in mehrere Teile aufgeteiltes Zip-Archiv.

Natürlich habe ich versucht, es zu entpacken, aber wie erwartet erhielt ich die Fehlermeldung, dass der Archivierer dies nicht konnte.

Quellcode abrufen

Zuerst suchte ich nach dem Verschlüsselungsschlüssel und versuchte herauszufinden, wie der Verschlüsselungs-/Entschlüsselungsalgorithmus funktioniert. Ein paar Stunden später fiel es mir auf…


Idee
Idee

Zuvor habe ich gesagt, dass Cordova-Anwendungen normale Webanwendungen sind, die auf der Chromium-Engine ausgeführt werden. Aber Chromium kann Zip-Archive nicht dekomprimieren und entschlüsseln! Bevor die Anwendung startet, sollte dieses Archiv also irgendwo entpackt werden.

Ich habe die App auf dem Android-Emulator gestartet. Über SSH habe ich eine Verbindung zur Emulator-Shell hergestellt und ein paar Bash-Befehle wie ausgeführt find . -name index.html . Nach ein paar Minuten gelang es mir, eine Stelle im Dateisystem zu finden, an der das verschlüsselte Zip-Archiv entpackt ist.

So sieht der Quellcode aus.


Dateien
Dateien

Abschließende Gedanken

Ich habe auf index.html geklickt, das im Chrome-Browser geöffnet wurde. Dann habe ich auf der Registerkarte „Netzwerk“ in den Chrome Dev Tools (zum Öffnen F12 drücken) alle Anfragen gefunden, die die Anwendung an den Server stellt.

Related Posts

Hinterlasse einen Kommentar