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
- Check the subscription plans!
- Join the 💬 Discord group or the telegram group or follow us on Twitter 🐦 @hacktricks_live.
- Share hacking tricks by submitting PRs to the HackTricks and HackTricks Cloud github repos.
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
- 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
{% 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
- Check the subscription plans!
- Join the 💬 Discord group or the telegram group or follow us on Twitter 🐦 @hacktricks_live.
- Share hacking tricks by submitting PRs to the HackTricks and HackTricks Cloud github repos.