6.2 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.
This is a summary of the blog post https://www.appknox.com/security/xamarin-reverse-engineering-a-guide-for-penetration-testers
Informazioni di base
Xamarin è una piattaforma open-source progettata per gli sviluppatori per creare app per iOS, Android e Windows utilizzando i framework .NET e C#. Questa piattaforma offre accesso a numerosi strumenti ed estensioni per creare applicazioni moderne in modo efficiente.
Architettura di Xamarin
- Per Android, Xamarin si integra con i namespace Android e Java tramite binding .NET, operando all'interno dell'ambiente di esecuzione Mono insieme all'Android Runtime (ART). Managed Callable Wrappers (MCW) e Android Callable Wrappers (ACW) facilitano la comunicazione tra Mono e ART, entrambi costruiti sul kernel Linux.
- Per iOS, le applicazioni vengono eseguite sotto il runtime Mono, utilizzando una compilazione completa Ahead of Time (AOT) per convertire il codice C# .NET in linguaggio assembly ARM. Questo processo si svolge insieme all'Objective-C Runtime su un kernel simile a UNIX.
Runtime .NET e Framework Mono
Il framework .NET include assembly, classi e namespace per lo sviluppo di applicazioni, con il Runtime .NET che gestisce l'esecuzione del codice. Offre indipendenza dalla piattaforma e compatibilità retroattiva. Il Framework Mono è una versione open-source del framework .NET, avviato nel 2005 per estendere .NET a Linux, ora supportato da Microsoft e guidato da Xamarin.
Reverse Engineering delle App Xamarin
Decompilazione delle Assemblies Xamarin
La decompilazione trasforma il codice compilato di nuovo in codice sorgente. In Windows, la finestra Moduli in Visual Studio può identificare i moduli per la decompilazione, consentendo l'accesso diretto al codice di terze parti e l'estrazione del codice sorgente per l'analisi.
Compilazione JIT vs AOT
- Android supporta la compilazione Just-In-Time (JIT) e Ahead-Of-Time (AOT), con una modalità ibrida AOT per una velocità di esecuzione ottimale. La compilazione completa AOT è esclusiva per le licenze Enterprise.
- iOS utilizza esclusivamente la compilazione AOT a causa delle restrizioni di Apple sull'esecuzione di codice dinamico.
Estrazione di file dll da APK/IPA
Per accedere alle assembly in un APK/IPA, decomprimi il file ed esplora la directory delle assembly. Per Android, strumenti come XamAsmUnZ e xamarin-decompress possono decomprimere i file dll.
python3 xamarin-decompress.py -o /path/to/decompressed/apk
Per i blob di assembly in Android, pyxamstore può estrarli.
pyxamstore unpack -d /path/to/decompressed/apk/assemblies/
i file dll di iOS sono facilmente accessibili per la decompilazione, rivelando porzioni significative del codice dell'applicazione, che spesso condivide una base comune tra diverse piattaforme.
Analisi Dinamica
L'analisi dinamica comporta il controllo per SSL pinning e l'uso di strumenti come Fridax per modifiche in tempo reale del binario .NET nelle app Xamarin. Gli script Frida sono disponibili per bypassare il rilevamento del root o SSL pinning, migliorando le capacità di analisi.
Altri interessanti script Frida:
Ulteriori informazioni
- https://www.appknox.com/security/xamarin-reverse-engineering-a-guide-for-penetration-testers
- https://thecobraden.com/posts/unpacking_xamarin_assembly_stores/
{% hint style="success" %}
Impara e pratica AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Supporta HackTricks
- Controlla i piani di abbonamento!
- Unisciti al 💬 gruppo Discord o al gruppo telegram o seguici su Twitter 🐦 @hacktricks_live.
- Condividi trucchi di hacking inviando PR ai HackTricks e HackTricks Cloud repos github.