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
- Sprawdź plany subskrypcyjne!
- Dołącz do 💬 grupy Discord lub grupy telegram lub śledź nas na Twitterze 🐦 @hacktricks_live.
- Dziel się trikami hackingowymi, przesyłając PR-y do HackTricks i HackTricks Cloud repozytoriów github.
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.
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:
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
- https://www.appknox.com/security/xamarin-reverse-engineering-a-guide-for-penetration-testers
- https://thecobraden.com/posts/unpacking_xamarin_assembly_stores/
- https://medium.com/@justmobilesec/introduction-to-the-exploitation-of-xamarin-apps-fde4619a51bf
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
- Sprawdź plany subskrypcyjne!
- Dołącz do 💬 grupy Discord lub grupy telegram lub śledź nas na Twitterze 🐦 @hacktricks_live.
- Dziel się trikami hackingowymi, przesyłając PR-y do HackTricks i HackTricks Cloud repozytoriów github.