hacktricks/mobile-pentesting/xamarin-apps.md
2024-02-10 13:03:23 +00:00

6.3 KiB

App Xamarin

Impara l'hacking di AWS da zero a eroe con htARTE (HackTricks AWS Red Team Expert)!

Altri modi per supportare HackTricks:

Questa è una sintesi dell'articolo del blog https://www.appknox.com/security/xamarin-reverse-engineering-a-guide-for-penetration-testers

Informazioni di base

Xamarin è una piattaforma open-source progettata per 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 di Android e Java tramite i binding .NET, operando all'interno dell'ambiente di esecuzione Mono insieme all'Android Runtime (ART). I Managed Callable Wrappers (MCW) e gli 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 la compilazione Ahead of Time (AOT) completa per convertire il codice C# .NET in linguaggio assembly ARM. Questo processo viene eseguito insieme all'Objective-C Runtime su un kernel simile a UNIX.

.NET Runtime e Mono Framework

Il framework .NET include assembly, classi e namespace per lo sviluppo di applicazioni, con il .NET Runtime che gestisce l'esecuzione del codice. Offre indipendenza dalla piattaforma e compatibilità all'indietro. Il Mono Framework è 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 Assemblee Xamarin

La decompilazione trasforma il codice compilato 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à AOT ibrida per una velocità di esecuzione ottimale. La compilazione AOT completa è esclusiva delle licenze Enterprise.
  • iOS utilizza esclusivamente la compilazione AOT a causa delle restrizioni di Apple sull'esecuzione di codice dinamico.

Estrazione dei file dll da APK/IPA

Per accedere alle assemblee in un APK/IPA, decomprimi il file ed esplora la directory delle assemblee. 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ò decomprimerli.

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 prevede il controllo del pinning SSL e l'utilizzo di strumenti come Fridax per le modifiche in tempo di esecuzione del binario .NET nelle app Xamarin. Sono disponibili script di Frida per bypassare la rilevazione del root o il pinning SSL, migliorando le capacità di analisi.

Altri script interessanti di Frida:

Ulteriori informazioni

Impara l'hacking di AWS da zero a eroe con htARTE (HackTricks AWS Red Team Expert)!

Altri modi per supportare HackTricks: