Xamarin Apps
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
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.
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.
Framework .NET zawiera 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 open-source'owa wersja frameworka .NET, rozpoczęta w 2005 roku, aby rozszerzyć .NET na Linux, obecnie wspierana przez Microsoft i kierowana przez 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.
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.
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.
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:
Pliki .dll w systemie 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.
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 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:
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.
Ucz się i ćwicz Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE) Ucz się i ćwicz Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)