hacktricks/mobile-pentesting/xamarin-apps.md

7.1 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
{% endhint %}

Osnovne Informacije

Xamarin je platforma otvorenog koda dizajnirana za programere da prave aplikacije za iOS, Android i Windows koristeći .NET i C# okvire. Ova platforma nudi pristup brojnim alatima i ekstenzijama za efikasno kreiranje modernih aplikacija.

Arhitektura Xamarina

  • Za Android, Xamarin se integriše sa Android i Java imenskim prostorima putem .NET veza, radeći unutar Mono izvršnog okruženja zajedno sa Android Runtime (ART). Managed Callable Wrappers (MCW) i Android Callable Wrappers (ACW) olakšavaju komunikaciju između Mono i ART, koji su oba izgrađena na Linux kernelu.
  • Za iOS, aplikacije se izvršavaju pod Mono runtime-om, koristeći potpunu Ahead of Time (AOT) kompilaciju za konverziju C# .NET koda u ARM asembler jezik. Ovaj proces se odvija zajedno sa Objective-C Runtime na UNIX-sličnom kernelu.

.NET Runtime i Mono Okvir

.NET okvir uključuje asambleje, klase i imenske prostore za razvoj aplikacija, pri čemu .NET Runtime upravlja izvršavanjem koda. Nudi nezavisnost od platforme i unazad kompatibilnost. Mono Okvir je verzija .NET okvira otvorenog koda, pokrenuta 2005. godine kako bi se proširio .NET na Linux, sada podržana od strane Microsoft-a i vođena od strane Xamarina.

Reverzno Inženjerstvo Xamarinskih Aplikacija

Dekompilacija Xamarinskih Asambleja

Dekompilacija transformiše kompajlirani kod nazad u izvorni kod. U Windows-u, prozor Moduli u Visual Studio-u može identifikovati module za dekompilaciju, omogućavajući direktan pristup kodu trećih strana i ekstrakciju izvornog koda za analizu.

JIT vs AOT Kompilacija

  • Android podržava Just-In-Time (JIT) i Ahead-Of-Time (AOT) kompilaciju, sa hibridnim AOT režimom za optimalnu brzinu izvršavanja. Potpuna AOT je ekskluzivna za Enterprise licence.
  • iOS koristi isključivo AOT kompilaciju zbog Apple-ovih ograničenja na dinamičko izvršavanje koda.

Ekstrakcija dll Fajlova iz APK/IPA

Da biste pristupili asamblejama u APK/IPA, raspakujte fajl i istražite direktorijum asambleja. Za Android, alati poput XamAsmUnZ i xamarin-decompress mogu dekompresovati dll fajlove.

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

U slučajevima kada nakon dekompilacije APK-a može da se vidi folder unknown/assemblies/ sa .dll datotekama unutar njega, moguće je koristiti dnSpy direktno na .dll datotekama za analizu.
Međutim, ponekad se unutar foldera unknown/assemblies/ nalaze datoteke assemblies.blob i assemblies.manifest. Alat pyxamstore može se koristiti za raspakivanje datoteke assemblies.blob u Xamarin aplikacijama, omogućavajući pristup .NET skupovima za dalju analizu:

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

iOS dll datoteke su lako dostupne za dekompilaciju, otkrivajući značajne delove koda aplikacije, koji često dele zajedničku osnovu na različitim platformama.

Staticka analiza

Kada se dobiju .dll datoteke, moguće je statički analizirati .Net kod koristeći alate kao što su dnSpy ili ILSpy koji omogućavaju modifikaciju koda aplikacije. Ovo može biti veoma korisno za manipulaciju aplikacijom kako bi se zaobišle zaštite, na primer.
Imajte na umu da nakon modifikacije aplikacije, biće potrebno ponovo je spakovati i ponovo potpisati.

Dinamička analiza

Dinamička analiza uključuje proveru SSL pinovanja i korišćenje alata kao što je Fridax za runtime modifikacije .NET binarnih datoteka u Xamarin aplikacijama. Frida skripte su dostupne za zaobilaženje detekcije root-a ili SSL pinovanja, poboljšavajući mogućnosti analize.

Druge zanimljive Frida skripte:

Ponovno potpisivanje

Alat Uber APK Signer pojednostavljuje potpisivanje više APK-ova sa istim ključem, i može se koristiti za ponovno potpisivanje aplikacije nakon što su izvršene izmene.

Dodatne informacije

{% 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
{% endhint %}