Xamarin Apps
Last updated
Last updated
Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE) Aprenda e pratique Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
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.
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.
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.
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.
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.
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.
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:
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.
Uma vez que os .dll
s 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.
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:
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.
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)