Xamarin Apps

tip

Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Support HackTricks

Informaci贸n B谩sica

Xamarin es una plataforma de c贸digo abierto dise帽ada para que los desarrolladores crean aplicaciones para iOS, Android y Windows utilizando los frameworks .NET y C#. Esta plataforma ofrece acceso a numerosas herramientas y extensiones para crear aplicaciones modernas de manera eficiente.

Arquitectura de Xamarin

  • Para Android, Xamarin se integra con los espacios de nombres de Android y Java a trav茅s de enlaces .NET, operando dentro del entorno de ejecuci贸n Mono junto con el Android Runtime (ART). Los Managed Callable Wrappers (MCW) y Android Callable Wrappers (ACW) facilitan la comunicaci贸n entre Mono y ART, ambos construidos sobre el n煤cleo de Linux.
  • Para iOS, las aplicaciones se ejecutan bajo el entorno de ejecuci贸n Mono, utilizando una compilaci贸n completa Ahead of Time (AOT) para convertir el c贸digo C# .NET en lenguaje ensamblador ARM. Este proceso se ejecuta junto con el Objective-C Runtime en un n煤cleo similar a UNIX.

Entorno de Ejecuci贸n .NET y Framework Mono

El framework .NET incluye ensamblados, clases y espacios de nombres para el desarrollo de aplicaciones, con el .NET Runtime gestionando la ejecuci贸n del c贸digo. Ofrece independencia de plataforma y compatibilidad hacia atr谩s. El Framework Mono es una versi贸n de c贸digo abierto del framework .NET, iniciada en 2005 para extender .NET a Linux, ahora respaldada por Microsoft y liderada por Xamarin.

Ingenier铆a Inversa de Aplicaciones Xamarin

Decompilaci贸n de Ensamblados Xamarin

La decompilaci贸n transforma el c贸digo compilado de nuevo en c贸digo fuente. En Windows, la ventana de M贸dulos en Visual Studio puede identificar m贸dulos para decompilaci贸n, permitiendo el acceso directo al c贸digo de terceros y la extracci贸n del c贸digo fuente para an谩lisis.

Compilaci贸n JIT vs AOT

  • Android soporta la compilaci贸n Just-In-Time (JIT) y Ahead-Of-Time (AOT), con un modo h铆brido AOT para una velocidad de ejecuci贸n 贸ptima. La AOT completa es exclusiva para licencias Enterprise.
  • iOS emplea 煤nicamente la compilaci贸n AOT debido a las restricciones de Apple sobre la ejecuci贸n de c贸digo din谩mico.

Extracci贸n de archivos dll de APK/IPA

Para acceder a los ensamblados en un APK/IPA, descomprime el archivo y explora el directorio de ensamblados. Para Android, herramientas como XamAsmUnZ y xamarin-decompress pueden descomprimir archivos dll.

bash
python3 xamarin-decompress.py -o /path/to/decompressed/apk

En casos donde despu茅s de descompilar el APK es posible ver la carpeta unknown/assemblies/ con los archivos .dll dentro, es posible usar dnSpy directamente sobre los .dll para analizarlos.
Sin embargo, a veces se encuentran los archivos assemblies.blob y assemblies.manifest dentro de la carpeta unknown/assemblies/. La herramienta pyxamstore se puede usar para descomprimir el archivo assemblies.blob en aplicaciones Xamarin, permitiendo el acceso a los ensamblajes .NET para un an谩lisis posterior:

bash
pyxamstore unpack -d /path/to/decompressed/apk/assemblies/

Los archivos .dll de iOS son f谩cilmente accesibles para la descompilaci贸n, revelando porciones significativas del c贸digo de la aplicaci贸n, que a menudo comparte una base com煤n en diferentes plataformas.

An谩lisis Est谩tico

Una vez que se obtienen los .dll, es posible analizar el c贸digo .Net de forma est谩tica utilizando herramientas como dnSpy o ILSpy que permitir谩n modificar el c贸digo de la aplicaci贸n. Esto puede ser muy 煤til para manipular la aplicaci贸n y eludir protecciones, por ejemplo.
Ten en cuenta que despu茅s de modificar la aplicaci贸n necesitar谩s empaquetarla nuevamente y firmarla de nuevo.

An谩lisis Din谩mico

El an谩lisis din谩mico implica verificar el pinning de SSL y utilizar herramientas como Fridax para modificaciones en tiempo de ejecuci贸n del binario .NET en aplicaciones Xamarin. Los scripts de Frida est谩n disponibles para eludir la detecci贸n de root o el pinning de SSL, mejorando las capacidades de an谩lisis.

Otros scripts de Frida interesantes:

Re-firmado

La herramienta Uber APK Signer simplifica la firma de m煤ltiples APKs con la misma clave, y se puede utilizar para volver a firmar una aplicaci贸n despu茅s de que se hayan realizado cambios en ella.

M谩s informaci贸n

tip

Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Support HackTricks