Xamarin Apps

Support HackTricks

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

Supporta HackTricks

Last updated