Xamarin Apps
Last updated
Last updated
Lernen & üben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Lernen & üben Sie GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Xamarin ist eine Open-Source-Plattform, die Entwicklern ermöglicht, Apps für iOS, Android und Windows mit den .NET- und C#-Frameworks zu erstellen. Diese Plattform bietet Zugang zu zahlreichen Tools und Erweiterungen, um moderne Anwendungen effizient zu erstellen.
Für Android integriert sich Xamarin über .NET-Bindungen mit Android- und Java-Namensräumen und arbeitet innerhalb der Mono-Ausführungsumgebung zusammen mit der Android Runtime (ART). Managed Callable Wrappers (MCW) und Android Callable Wrappers (ACW) erleichtern die Kommunikation zwischen Mono und ART, die beide auf dem Linux-Kernel basieren.
Für iOS laufen Anwendungen unter der Mono-Laufzeit und nutzen die vollständige Ahead of Time (AOT)-Kompilierung, um C# .NET-Code in ARM-Assemblersprache zu konvertieren. Dieser Prozess läuft zusammen mit der Objective-C-Laufzeit auf einem UNIX-ähnlichen Kernel.
Das .NET-Framework umfasst Assemblies, Klassen und Namensräume für die Anwendungsentwicklung, wobei die .NET-Laufzeit die Codeausführung verwaltet. Es bietet Plattformunabhängigkeit und Abwärtskompatibilität. Das Mono-Framework ist eine Open-Source-Version des .NET-Frameworks, die 2005 initiiert wurde, um .NET auf Linux zu erweitern, jetzt von Microsoft unterstützt und von Xamarin geleitet.
Die Dekompilierung verwandelt kompilierten Code zurück in Quellcode. In Windows kann das Module-Fenster in Visual Studio Module zur Dekompilierung identifizieren, was direkten Zugriff auf Drittanbieter-Code und die Extraktion von Quellcode zur Analyse ermöglicht.
Android unterstützt Just-In-Time (JIT) und Ahead-Of-Time (AOT)-Kompilierung, mit einem Hybrid-AOT-Modus für optimale Ausführungsgeschwindigkeit. Vollständige AOT ist ausschließlich für Enterprise-Lizenzen.
iOS verwendet ausschließlich AOT-Kompilierung aufgrund von Apples Einschränkungen bei der dynamischen Codeausführung.
Um auf die Assemblies in einer APK/IPA zuzugreifen, entpacken Sie die Datei und erkunden das Assemblies-Verzeichnis. Für Android können Tools wie XamAsmUnZ und xamarin-decompress dll-Dateien dekomprimieren.
In Fällen, in denen nach dem Decompilieren der APK der unbekannt/assemblies/-Ordner mit den .dll
-Dateien darin sichtbar ist, ist es möglich, dnSpy direkt über die .dlls
zu verwenden, um sie zu analysieren.
Manchmal findet man jedoch die assemblies.blob
- und assemblies.manifest
-Dateien im unbekannt/assemblies/-Ordner. Das Tool pyxamstore kann verwendet werden, um die assemblies.blob
-Datei in Xamarin-Apps zu entpacken, was den Zugriff auf die .NET-Assemblies für eine weitere Analyse ermöglicht:
iOS dll-Dateien sind leicht zugänglich für die Dekompilierung, was erhebliche Teile des Anwendungscodes offenbart, der oft eine gemeinsame Basis über verschiedene Plattformen hinweg teilt.
Sobald die .dll
s erhalten sind, ist es möglich, den .Net-Code statisch mit Tools wie dnSpy oder ILSpy zu analysieren, die es ermöglichen, den Code der App zu modifizieren. Dies kann sehr nützlich sein, um die Anwendung zu manipulieren, um beispielsweise Schutzmaßnahmen zu umgehen.
Beachten Sie, dass Sie die App nach der Modifikation erneut packen und erneut signieren müssen.
Die dynamische Analyse umfasst die Überprüfung auf SSL-Pinning und die Verwendung von Tools wie Fridax für Laufzeitmodifikationen der .NET-Binärdatei in Xamarin-Apps. Frida-Skripte sind verfügbar, um Root-Erkennung oder SSL-Pinning zu umgehen und die Analysefähigkeiten zu verbessern.
Weitere interessante Frida-Skripte:
Das Tool Uber APK Signer vereinfacht das Signieren mehrerer APKs mit demselben Schlüssel und kann verwendet werden, um eine App nach Änderungen erneut zu signieren.
Lernen & üben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Lernen & üben Sie GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)