Xamarin Apps

Naucz się hakować AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)!

Inne sposoby wsparcia HackTricks:

To jest streszczenie artykułu na blogu https://www.appknox.com/security/xamarin-reverse-engineering-a-guide-for-penetration-testers

Podstawowe informacje

Xamarin to platforma open-source przeznaczona dla programistów do tworzenia aplikacji dla iOS, Androida i Windows przy użyciu frameworków .NET i C#. Ta platforma oferuje dostęp do licznych narzędzi i rozszerzeń umożliwiających efektywne tworzenie nowoczesnych aplikacji.

Architektura Xamarin

  • Dla systemu Android, Xamarin integruje się z przestrzeniami nazw Androida i Javy za pomocą powiązań .NET, działając w środowisku wykonawczym Mono obok Android Runtime (ART). Zarówno Managed Callable Wrappers (MCW), jak i Android Callable Wrappers (ACW) ułatwiają komunikację między Mono a ART, oba zbudowane na jądrze Linuxa.

  • Dla systemu iOS, aplikacje działają w środowisku wykonawczym Mono, wykorzystując pełną kompilację Ahead of Time (AOT) do przekształcenia kodu C# .NET w język asemblera ARM. Ten proces działa obok Objective-C Runtime na jądrze przypominającym UNIX.

.NET Runtime i Mono Framework

.NET framework zawiera zestawy, klasy i przestrzenie nazw do tworzenia aplikacji, a .NET Runtime zarządza wykonaniem kodu. Oferuje on niezależność platformy i wsteczną kompatybilność. Mono Framework to wersja open-source frameworku .NET, rozpoczęta w 2005 roku w celu rozszerzenia .NET na Linux, obecnie wspierana przez Microsoft i prowadzona przez Xamarin.

Reverse Engineering aplikacji Xamarin

Dekompilacja zestawów Xamarin

Dekompilacja przekształca skompilowany kod z powrotem na kod źródłowy. W systemie Windows, okno Moduły w programie Visual Studio może zidentyfikować moduły do dekompilacji, umożliwiając bezpośredni dostęp do kodu firm trzecich i wyodrębnienie kodu źródłowego do analizy.

Kompilacja JIT vs AOT

  • Android obsługuje kompilację Just-In-Time (JIT) i Ahead-Of-Time (AOT), z trybem Hybrid AOT dla optymalnej prędkości wykonania. Pełna kompilacja AOT jest dostępna tylko w licencjach Enterprise.

  • iOS wykorzystuje wyłącznie kompilację AOT ze względu na ograniczenia Apple dotyczące dynamicznego wykonywania kodu.

Wyodrębnianie plików dll z APK/IPA

Aby uzyskać dostęp do zestawów w pliku APK/IPA, należy rozpakować plik i przejrzeć katalog zestawów. Dla systemu Android, narzędzia takie jak XamAsmUnZ i xamarin-decompress mogą rozpakować pliki dll.

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

Dla bloków montażowych w systemie Android, pyxamstore może je rozpakować.

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

Pliki DLL dla systemu iOS są łatwo dostępne do dekompilacji, ujawniając znaczną część kodu aplikacji, który często jest wspólny dla różnych platform.

Analiza dynamiczna

Analiza dynamiczna polega na sprawdzaniu przypinania SSL i korzystaniu z narzędzi takich jak Fridax do modyfikacji w czasie wykonywania binarnego pliku .NET w aplikacjach Xamarin. Dostępne są skrypty Frida umożliwiające obejście wykrywania roota lub przypinania SSL, zwiększając możliwości analizy.

Inne interesujące skrypty Frida:

Dodatkowe informacje

Naucz się hakować AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)!

Inne sposoby wsparcia HackTricks:

Last updated