6 KiB
Xamarin Apps
{% hint style="success" %}
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Support HackTricks
- Check the subscription plans!
- Join the 💬 Discord group or the telegram group or follow us on Twitter 🐦 @hacktricks_live.
- Share hacking tricks by submitting PRs to the HackTricks and HackTricks Cloud github repos.
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
- https://www.appknox.com/security/xamarin-reverse-engineering-a-guide-for-penetration-testers
- https://thecobraden.com/posts/unpacking_xamarin_assembly_stores/
{% hint style="success" %}
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Support HackTricks
- Check the subscription plans!
- Join the 💬 Discord group or the telegram group or follow us on Twitter 🐦 @hacktricks_live.
- Share hacking tricks by submitting PRs to the HackTricks and HackTricks Cloud github repos.