hacktricks/mobile-pentesting/xamarin-apps.md
2024-02-10 15:36:32 +00:00

6.5 KiB

Xamarin Apps

Lernen Sie das Hacken von AWS von Null bis zum Experten mit htARTE (HackTricks AWS Red Team Expert)!

Andere Möglichkeiten, HackTricks zu unterstützen:

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

Grundlegende Informationen

Xamarin ist eine Open-Source-Plattform, die für Entwickler entwickelt wurde, um Apps für iOS, Android und Windows mit den .NET- und C#-Frameworks zu erstellen. Diese Plattform bietet Zugriff auf zahlreiche Tools und Erweiterungen, um moderne Anwendungen effizient zu erstellen.

Xamarin-Architektur

  • Für Android integriert Xamarin Android- und Java-Namespace über .NET-Bindungen und arbeitet in der Mono-Ausführungsumgebung neben 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 aufbauen.
  • Für iOS werden Anwendungen unter der Mono-Laufzeit ausgeführt und nutzen die vollständige Ahead-of-Time (AOT)-Kompilierung, um C# .NET-Code in ARM-Assemblercode umzuwandeln. Dieser Prozess läuft neben der Objective-C-Laufzeit auf einem UNIX-ähnlichen Kernel.

.NET-Laufzeit und Mono-Framework

Das .NET-Framework umfasst Assemblys, Klassen und Namespaces 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, das 2005 gestartet wurde, um .NET auf Linux zu erweitern. Es wird jetzt von Microsoft unterstützt und von Xamarin geleitet.

Reverse Engineering von Xamarin-Apps

Dekompilierung von Xamarin-Assemblys

Die Dekompilierung wandelt kompilierten Code wieder in Quellcode um. In Windows kann das Fenster "Module" in Visual Studio Module zur Dekompilierung identifizieren, was einen direkten Zugriff auf Code von Drittanbietern 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. Die vollständige AOT ist exklusiv für Enterprise-Lizenzen.
  • iOS verwendet ausschließlich AOT-Kompilierung aufgrund der Einschränkungen von Apple für die Ausführung von dynamischem Code.

Extrahieren von DLL-Dateien aus APK/IPA

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

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 und können dekompiliert werden, wodurch erhebliche Teile des Anwendungscode offengelegt werden, der oft eine gemeinsame Basis für verschiedene Plattformen hat.

Dynamische Analyse

Die dynamische Analyse umfasst die Überprüfung von SSL-Pinning und die Verwendung von Tools wie Fridax für Laufzeitmodifikationen der .NET-Binärdatei in Xamarin-Apps. Frida-Skripte stehen zur Verfügung, um die Root-Erkennung oder das SSL-Pinning zu umgehen und die Analysefähigkeiten zu verbessern.

Andere interessante Frida-Skripte:

Weitere Informationen

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

Andere Möglichkeiten, HackTricks zu unterstützen: