Xamarin Apps

Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE) Aprenda e pratique Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)

Support HackTricks

Informações Básicas

Xamarin é uma plataforma de código aberto projetada para desenvolvedores construírem aplicativos para iOS, Android e Windows usando os frameworks .NET e C#. Esta plataforma oferece acesso a inúmeras ferramentas e extensões para criar aplicações modernas de forma eficiente.

Arquitetura do Xamarin

  • Para Android, o Xamarin se integra com namespaces Android e Java através de bindings .NET, operando dentro do ambiente de execução Mono ao lado do Android Runtime (ART). Managed Callable Wrappers (MCW) e Android Callable Wrappers (ACW) facilitam a comunicação entre Mono e ART, ambos construídos sobre o kernel Linux.

  • Para iOS, as aplicações rodam sob o runtime Mono, utilizando compilação completa Ahead of Time (AOT) para converter código C# .NET em linguagem de montagem ARM. Este processo ocorre ao lado do Runtime Objective-C em um kernel semelhante ao UNIX.

Runtime .NET e Framework Mono

O framework .NET inclui assemblies, classes e namespaces para desenvolvimento de aplicações, com o Runtime .NET gerenciando a execução do código. Ele oferece independência de plataforma e compatibilidade retroativa. O Framework Mono é uma versão de código aberto do framework .NET, iniciado em 2005 para estender o .NET ao Linux, agora suportado pela Microsoft e liderado pelo Xamarin.

Engenharia Reversa de Aplicativos Xamarin

Decompilação de Assemblies Xamarin

A decompilação transforma código compilado de volta em código-fonte. No Windows, a janela de Módulos no Visual Studio pode identificar módulos para decompilação, permitindo acesso direto ao código de terceiros e extração de código-fonte para análise.

Compilação JIT vs AOT

  • Android suporta compilação Just-In-Time (JIT) e Ahead-Of-Time (AOT), com um modo híbrido AOT para velocidade de execução ideal. A compilação completa AOT é exclusiva para licenças Enterprise.

  • iOS utiliza exclusivamente a compilação AOT devido às restrições da Apple sobre a execução de código dinâmico.

Extraindo arquivos dll de APK/IPA

Para acessar os assemblies em um APK/IPA, descompacte o arquivo e explore o diretório de assemblies. Para Android, ferramentas como XamAsmUnZ e xamarin-decompress podem descomprimir arquivos dll.

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

Nos casos em que, após descompilar o APK, é possível ver a pasta unknown/assemblies/ com os arquivos .dll dentro dela, é possível usar dnSpy diretamente sobre os .dlls para analisá-los. No entanto, às vezes, são encontrados os arquivos assemblies.blob e assemblies.manifest dentro da pasta unknown/assemblies/. A ferramenta pyxamstore pode ser usada para descompactar o arquivo assemblies.blob em aplicativos Xamarin, permitindo o acesso aos assemblies .NET para análise adicional:

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

Arquivos .dll do iOS são facilmente acessíveis para descompilação, revelando porções significativas do código do aplicativo, que muitas vezes compartilha uma base comum entre diferentes plataformas.

Análise Estática

Uma vez que os .dlls são obtidos, é possível analisar o código .Net estaticamente usando ferramentas como dnSpy ou ILSpy que permitirão modificar o código do aplicativo. Isso pode ser super útil para adulterar o aplicativo e contornar proteções, por exemplo. Note que, após modificar o aplicativo, você precisará empacotá-lo novamente e assiná-lo novamente.

Análise Dinâmica

A análise dinâmica envolve verificar o SSL pinning e usar ferramentas como Fridax para modificações em tempo de execução do binário .NET em aplicativos Xamarin. Scripts Frida estão disponíveis para contornar a detecção de root ou SSL pinning, aprimorando as capacidades de análise.

Outros scripts Frida interessantes:

Reassinar

A ferramenta Uber APK Signer simplifica a assinatura de múltiplos APKs com a mesma chave e pode ser usada para reassinar um aplicativo após alterações terem sido realizadas nele.

Mais informações

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

Support HackTricks

Last updated