hacktricks/mobile-pentesting/xamarin-apps.md

7.2 KiB

Xamarin Apps

{% hint style="success" %} Leer & oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Leer & oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Support HackTricks
{% endhint %}

Basiese Inligting

Xamarin is 'n oopbron platform wat ontwerp is vir ontwikkelaars om toepassings vir iOS, Android en Windows te bou met behulp van die .NET en C# raamwerke. Hierdie platform bied toegang tot talle gereedskap en uitbreidings om moderne toepassings doeltreffend te skep.

Xamarin se Argitektuur

  • Vir Android integreer Xamarin met Android en Java namespaces deur .NET bindings, wat binne die Mono uitvoeringsomgewing werk saam met die Android Runtime (ART). Managed Callable Wrappers (MCW) en Android Callable Wrappers (ACW) fasiliteer kommunikasie tussen Mono en ART, wat albei op die Linux-kern gebou is.
  • Vir iOS loop toepassings onder die Mono runtime, wat volle Ahead of Time (AOT) kompilering benut om C# .NET kode in ARM assembly taal om te skakel. Hierdie proses loop saam met die Objective-C Runtime op 'n UNIX-agtige kern.

.NET Runtime en Mono Raamwerk

Die .NET raamwerk sluit assemblies, klasse en namespaces in vir toepassingsontwikkeling, met die .NET Runtime wat kode-uitvoering bestuur. Dit bied platformonafhanklikheid en agterwaartse kompatibiliteit. Die Mono Raamwerk is 'n oopbron weergawe van die .NET raamwerk, wat in 2005 begin is om .NET na Linux uit te brei, nou ondersteun deur Microsoft en gelei deur Xamarin.

Omgekeerde Ingenieurswese van Xamarin Toepassings

De-kompilering van Xamarin Assemblies

De-kompilering transformeer gecompileerde kode terug na bronkode. In Windows kan die Modules venster in Visual Studio modules vir de-kompilering identifiseer, wat direkte toegang tot derdeparty kode moontlik maak en die ekstraksie van bronkode vir analise toelaat.

JIT vs AOT Kompilering

  • Android ondersteun Just-In-Time (JIT) en Ahead-Of-Time (AOT) kompilering, met 'n Hybride AOT-modus vir optimale uitvoeringsnelheid. Volle AOT is eksklusief vir Enterprise lisensies.
  • iOS gebruik slegs AOT kompilering weens Apple se beperkings op dinamiese kode-uitvoering.

Uittreksel van dll Lêers uit APK/IPA

Om toegang te verkry tot die assemblies in 'n APK/IPA, ontpak die lêer en verken die assemblies gids. Vir Android kan gereedskap soos XamAsmUnZ en xamarin-decompress dll lêers ontcompress.

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

In gevalle waar dit moontlik is om die onbekend/assemblies/ gids met die .dll lêers daarin te sien na dekompilering van die APK, is dit moontlik om dnSpy direk oor die .dlls te gebruik om dit te analiseer.
Echter, soms word die assemblies.blob en assemblies.manifest lêers binne die onbekend/assemblies/ gids gevind. Die hulpmiddel pyxamstore kan gebruik word om die assemblies.blob lêer in Xamarin-apps uit te pak, wat toegang tot die .NET assemblies vir verdere analise moontlik maak:

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

iOS dll-lêers is maklik beskikbaar vir dekompilasie, wat beduidende gedeeltes van die toepassingskode onthul, wat dikwels 'n gemeenskaplike basis oor verskillende platforms deel.

Statiese Analise

Sodra die .dlls verkry is, is dit moontlik om die .Net-kode staties te analiseer met behulp van gereedskap soos dnSpy of ILSpy wat sal toelaat om die kode van die app te wysig. Dit kan baie nuttig wees om die toepassing te manipuleer om beskermings te omseil, byvoorbeeld.
Let daarop dat jy die app weer moet saampak en weer moet teken na die wysigings.

Dinamiese Analise

Dinamiese analise behels die nagaan van SSL-pinning en die gebruik van gereedskap soos Fridax vir tydrenwysigings van die .NET-binary in Xamarin-apps. Frida-skripte is beskikbaar om worteldetektering of SSL-pinning te omseil, wat analise vermoëns verbeter.

Ander interessante Frida-skripte:

Hertekening

Die gereedskap Uber APK Signer vereenvoudig die teken van verskeie APK's met dieselfde sleutel, en kan gebruik word om 'n app weer te teken nadat daar wysigings aan gemaak is.

Verdere inligting

{% hint style="success" %} Leer & oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Leer & oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Ondersteun HackTricks
{% endhint %}