Xamarin Apps
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-se com os 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 ideal. 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 descompactar arquivos dll.
Para os blobs de assembly no Android, o pyxamstore pode desempacotá-los.
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
Last updated