Xamarin Apps

Reading time: 4 minutes

tip

Ucz się i ćwicz AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Ucz się i ćwicz GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Wsparcie HackTricks

Podstawowe informacje

Xamarin to platforma open-source zaprojektowana dla deweloperó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 Linux.
  • 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 Linux, obecnie wspierana przez Microsoft i kierowana przez Xamarin.

Inżynieria odwrotna 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ą rozpakować pliki dll.

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

W przypadkach, gdy po dekompilacji APK możliwe jest zobaczenie folderu unknown/assemblies/ z plikami .dll w środku, można bezpośrednio użyć dnSpy do ich analizy.
Jednak czasami w folderze unknown/assemblies/ znajdują się pliki assemblies.blob i assemblies.manifest. Narzędzie pyxamstore może być użyte do rozpakowania pliku assemblies.blob w aplikacjach Xamarin, co umożliwia dostęp do zestawów .NET w celu dalszej analizy:

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

Pliki .dll dla 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 statyczna

Po uzyskaniu plików .dll możliwe jest statyczne analizowanie kodu .Net za pomocą narzędzi takich jak dnSpy lub ILSpy, które pozwolą na modyfikację kodu aplikacji. Może to być bardzo przydatne do manipulacji aplikacją w celu ominięcia zabezpieczeń, na przykład.
Należy pamiętać, że po modyfikacji aplikacji będziesz musiał ponownie ją spakować i podpisać.

Analiza dynamiczna

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

Inne interesujące skrypty Frida:

Ponowne podpisywanie

Narzędzie Uber APK Signer upraszcza podpisywanie wielu APK z tym samym kluczem i może być używane do ponownego podpisywania aplikacji po wprowadzeniu w niej zmian.

Dalsze informacje

tip

Ucz się i ćwicz AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Ucz się i ćwicz GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Wsparcie HackTricks