Xamarin Apps
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.
Dla blobów assembly w Androidzie, pyxamstore może je rozpakować.
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
Last updated