Xamarin Apps

Support HackTricks

This is a summary of the blog post https://www.appknox.com/security/xamarin-reverse-engineering-a-guide-for-penetration-testers

Podstawowe informacje

Xamarin to platforma open-source zaprojektowana dla programistów do tworzenia aplikacji na iOS, Android i Windows przy użyciu frameworków .NET i C#. Ta platforma oferuje dostęp do licznych narzędzi i rozszerzeń, aby efektywnie tworzyć nowoczesne aplikacje.

Architektura Xamarin

  • Dla Androida, Xamarin integruje się z przestrzeniami nazw Android i Java poprzez powiązania .NET, działając w środowisku wykonawczym Mono obok Android Runtime (ART). Managed Callable Wrappers (MCW) i Android Callable Wrappers (ACW) ułatwiają komunikację między Mono a ART, które są zbudowane na jądrze Linuxa.

  • Dla iOS, aplikacje działają pod runtime Mono, wykorzystując pełną kompilację Ahead of Time (AOT) do konwersji kodu C# .NET na język asemblera ARM. Proces ten działa obok Objective-C Runtime na jądrze podobnym do UNIX.

Runtime .NET i framework Mono

Framework .NET obejmuje zestawy, klasy i przestrzenie nazw do rozwoju aplikacji, a Runtime .NET zarządza wykonaniem kodu. Oferuje niezależność platformy i zgodność wsteczną. Framework Mono to wersja open-source frameworka .NET, rozpoczęta w 2005 roku, aby rozszerzyć .NET na Linuxa, obecnie wspierana przez Microsoft i kierowana przez Xamarin.

Inżynieria wsteczna aplikacji Xamarin

Dekompilacja zestawów Xamarin

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

Kompilacja JIT vs AOT

  • Android wspiera kompilację Just-In-Time (JIT) oraz Ahead-Of-Time (AOT), z hybrydowym trybem AOT dla optymalnej prędkości wykonania. Pełna AOT jest zarezerwowana dla licencji Enterprise.

  • iOS stosuje wyłącznie kompilację AOT z powodu ograniczeń Apple dotyczących dynamicznego wykonywania kodu.

Ekstrakcja plików dll z APK/IPA

Aby uzyskać dostęp do zestawów w pliku APK/IPA, rozpakuj plik i przeszukaj katalog zestawów. Dla Androida narzędzia takie jak XamAsmUnZ i xamarin-decompress mogą dekompresować pliki dll.

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

Dla blobów assembly w Androidzie, pyxamstore może je rozpakować.

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

Pliki dll iOS są łatwo dostępne do dekompilacji, ujawniając znaczną część kodu aplikacji, który często dzieli wspólną bazę na różnych platformach.

Analiza dynamiczna

Analiza dynamiczna polega na sprawdzaniu SSL pinning i używaniu narzędzi takich jak Fridax do modyfikacji binarnych .NET w aplikacjach Xamarin w czasie rzeczywistym. Skrypty Frida są dostępne, aby obejść wykrywanie roota lub SSL pinning, co zwiększa możliwości analizy.

Inne interesujące skrypty Frida:

Dalsze informacje

Support HackTricks

Last updated