Xamarin Apps
Ovo je sažetak blog posta https://www.appknox.com/security/xamarin-reverse-engineering-a-guide-for-penetration-testers
Osnovne informacije
Xamarin je open-source platforma dizajnirana za razvoj aplikacija za iOS, Android i Windows koristeći .NET i C# framework-ove. Ova platforma pruža pristup brojnim alatima i ekstenzijama za efikasno kreiranje modernih aplikacija.
Xamarin-ova arhitektura
Za Android, Xamarin se integriše sa Android i Java namespace-ovima putem .NET veza, radeći unutar Mono izvršnog okruženja zajedno sa Android Runtime-om (ART). Managed Callable Wrappers (MCW) i Android Callable Wrappers (ACW) olakšavaju komunikaciju između Mono-a i ART-a, koji su oboje izgrađeni na Linux kernelu.
Za iOS, aplikacije se izvršavaju pod Mono runtime-om, koristeći potpunu Ahead of Time (AOT) kompilaciju za pretvaranje C# .NET koda u ARM asemblerski jezik. Ovaj proces se izvršava zajedno sa Objective-C Runtime-om na UNIX-sličnom kernelu.
.NET Runtime i Mono Framework
.NET framework uključuje skupove, klase i namespace-ove za razvoj aplikacija, pri čemu .NET Runtime upravlja izvršenjem koda. On nudi platformsku nezavisnost i kompatibilnost unazad. Mono Framework je open-source verzija .NET framework-a, pokrenuta 2005. godine da bi se .NET proširio na Linux, sada podržana od strane Microsoft-a i vođena od strane Xamarin-a.
Reverse inženjering Xamarin aplikacija
Dekompilacija Xamarin Assembly-ja
Dekompilacija transformiše kompilirani kod nazad u izvorni kod. Na Windows-u, prozor Moduli u Visual Studio-u može identifikovati module za dekompilaciju, omogućavajući direktni pristup kodu treće strane i izvlačenje izvornog koda radi analize.
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šenja. Potpuna AOT je ekskluzivna za Enterprise licence.
iOS isključivo koristi AOT kompilaciju zbog Apple-ovih ograničenja u vezi izvršavanja dinamičkog koda.
Izdvajanje dll fajlova iz APK/IPA
Da biste pristupili skupovima u APK/IPA fajlu, raspakujte fajl i istražite direktorijum skupova. Za Android, alati poput XamAsmUnZ i xamarin-decompress mogu dekompresovati dll fajlove.
Za skupove montaže u Androidu, pyxamstore može ih raspakovati.
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.
Dinamička analiza
Dinamička analiza uključuje proveru SSL pinning-a i korišćenje alata poput Fridax za izvršne modifikacije .NET binarnih fajlova u Xamarin aplikacijama. Frida skripte su dostupne za zaobilaženje detekcije root-a ili SSL pinning-a, poboljšavajući mogućnosti analize.
Druga interesantna Frida skripta:
Dodatne informacije
Last updated