Xamarin Apps

Support HackTricks

Dies ist eine Zusammenfassung des Blogbeitrags https://www.appknox.com/security/xamarin-reverse-engineering-a-guide-for-penetration-testers

Grundinformationen

Xamarin ist eine Open-Source-Plattform, die für Entwickler konzipiert wurde, um 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.

Xamarin-Architektur

  • 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.

.NET-Laufzeit und Mono-Framework

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.

Reverse Engineering von Xamarin-Apps

Dekompilierung von Xamarin-Assemblies

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.

JIT vs AOT-Kompilierung

  • 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 exklusiv für Enterprise-Lizenzen.

  • iOS verwendet ausschließlich AOT-Kompilierung aufgrund von Apples Einschränkungen bei der dynamischen Codeausführung.

Extrahieren von dll-Dateien aus APK/IPA

Um auf die Assemblies in einer APK/IPA zuzugreifen, entpacken Sie die Datei und erkunden Sie das Assemblies-Verzeichnis. Für Android können Tools wie XamAsmUnZ und xamarin-decompress dll-Dateien dekomprimieren.

python3 xamarin-decompress.py -o /path/to/decompressed/apk

Für Assembly-Blobs in Android kann pyxamstore sie entpacken.

pyxamstore unpack -d /path/to/decompressed/apk/assemblies/

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.

Dynamische Analyse

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 die Root-Erkennung oder das SSL-Pinning zu umgehen, was die Analysefähigkeiten verbessert.

Weitere interessante Frida-Skripte:

Weitere Informationen

Unterstützen Sie HackTricks

Last updated