6.2 KiB
Xamarin Apps
{% hint style="success" %}
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Support HackTricks
- Check the subscription plans!
- Join the 💬 Discord group or the telegram group or follow us on Twitter 🐦 @hacktricks_live.
- Share hacking tricks by submitting PRs to the HackTricks and HackTricks Cloud github repos.
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 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
Para blobs de assembly no Android, pyxamstore pode descompactá-los.
pyxamstore unpack -d /path/to/decompressed/apk/assemblies/
iOS dll files são facilmente acessíveis para decompilação, revelando porções significativas do código do aplicativo, que muitas vezes compartilha uma base comum entre diferentes plataformas.
Análise Dinâmica
A análise dinâmica envolve verificar a pinagem SSL 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 a pinagem SSL, aprimorando as capacidades de análise.
Outros scripts Frida interessantes:
Mais informações
- https://www.appknox.com/security/xamarin-reverse-engineering-a-guide-for-penetration-testers
- https://thecobraden.com/posts/unpacking_xamarin_assembly_stores/
{% hint style="success" %}
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Support HackTricks
- Check the subscription plans!
- Join the 💬 Discord group or the telegram group or follow us on Twitter 🐦 @hacktricks_live.
- Share hacking tricks by submitting PRs to the HackTricks and HackTricks Cloud github repos.