Xamarin Apps
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
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.
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.
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.
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.
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.
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.
In casi in cui, dopo aver decompilato l'APK, è possibile vedere la cartella unknown/assemblies/ con i file .dll
al suo interno, è possibile utilizzare direttamente dnSpy sui .dll
per analizzarli.
Tuttavia, a volte, si trovano i file assemblies.blob
e assemblies.manifest
all'interno della cartella unknown/assemblies/. Lo strumento pyxamstore può essere utilizzato per estrarre il file assemblies.blob
nelle app Xamarin, consentendo l'accesso alle assembly .NET per ulteriori analisi:
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.
Una volta ottenuti i .dll
, è possibile analizzare il codice .Net in modo statico utilizzando strumenti come dnSpy o ILSpy che permetteranno di modificare il codice dell'app. Questo può essere molto utile per manomettere l'applicazione per bypassare le protezioni, ad esempio.
Nota che dopo aver modificato l'app dovrai impacchettarla di nuovo e firmarla nuovamente.
L'analisi dinamica comporta il controllo del 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 il SSL pinning, migliorando le capacità di analisi.
Altri interessanti script Frida:
Lo strumento Uber APK Signer semplifica la firma di più APK con la stessa chiave e può essere utilizzato per ri-firmare un'app dopo che sono state apportate modifiche.
Impara e pratica il Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE) Impara e pratica il Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)