hacktricks/mobile-pentesting/xamarin-apps.md

6.3 KiB

Aplicativos Xamarin

Aprenda hacking AWS do zero ao herói com htARTE (HackTricks AWS Red Team Expert)!

Outras maneiras de apoiar o HackTricks:

Este é um resumo do post do blog https://www.appknox.com/security/xamarin-reverse-engineering-a-guide-for-penetration-testers

Informações Básicas

Xamarin é uma plataforma open-source projetada para desenvolvedores construírem aplicativos para iOS, Android e Windows usando os frameworks .NET e C#. Esta plataforma oferece acesso a numerosas ferramentas e extensões para criar aplicativos modernos de forma eficiente.

Arquitetura do Xamarin

  • Para Android, o Xamarin integra namespaces do Android e Java por meio de ligações .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 no kernel Linux.
  • Para iOS, os aplicativos são executados sob o tempo de execução Mono, utilizando a compilação Ahead of Time (AOT) completa para converter o código C# .NET em linguagem de montagem ARM. Esse processo é executado ao lado do Objective-C Runtime em um kernel semelhante ao UNIX.

.NET Runtime e Mono Framework

O framework .NET inclui assemblies, classes e namespaces para o desenvolvimento de aplicativos, com o .NET Runtime gerenciando a execução de código. Ele oferece independência de plataforma e compatibilidade com versões anteriores. O Mono Framework é uma versão open-source do framework .NET, iniciada em 2005 para estender o .NET para o Linux, agora suportada pela Microsoft e liderada pela Xamarin.

Engenharia Reversa de Aplicativos Xamarin

Decompilação de Assemblies Xamarin

A decompilação transforma o código compilado de volta em código-fonte. No Windows, a janela Módulos no Visual Studio pode identificar módulos para decompilação, permitindo acesso direto ao código de terceiros e extração do 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 AOT híbrido para velocidade de execução otimizada. O AOT completo é exclusivo para licenças Enterprise.
  • iOS emprega exclusivamente a compilação AOT devido às restrições da Apple sobre a execução de código dinâmico.

Extração de 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

Para montar blobs no Android, o pyxamstore pode desempacotá-los.

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

Os arquivos dll do iOS são facilmente acessíveis para descompilação, revelando partes significativas do código do aplicativo, que frequentemente compartilha uma base comum em diferentes plataformas.

Análise Dinâmica

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

Outros scripts interessantes do Frida:

Mais informações

Aprenda hacking AWS do zero ao herói com htARTE (HackTricks AWS Red Team Expert)!

Outras maneiras de apoiar o HackTricks: