mirror of
https://github.com/carlospolop/hacktricks
synced 2024-12-23 19:43:31 +00:00
94 lines
7.4 KiB
Markdown
94 lines
7.4 KiB
Markdown
|
# Xamarin Apps
|
||
|
|
||
|
{% hint style="success" %}
|
||
|
Aprenda e pratique Hacking AWS:<img src="../.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../.gitbook/assets/arte.png" alt="" data-size="line">\
|
||
|
Aprenda e pratique Hacking GCP: <img src="../.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||
|
|
||
|
<details>
|
||
|
|
||
|
<summary>Support HackTricks</summary>
|
||
|
|
||
|
* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)!
|
||
|
* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||
|
* **Compartilhe truques de hacking enviando PRs para os repositórios do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||
|
|
||
|
</details>
|
||
|
{% endhint %}
|
||
|
|
||
|
## **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](https://github.com/cihansol/XamAsmUnZ) e [xamarin-decompress](https://github.com/NickstaDB/xamarin-decompress) podem descomprimir arquivos dll.
|
||
|
```bash
|
||
|
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**](https://github.com/dnSpy/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](https://github.com/jakev/pyxamstore) pode ser usada para descompactar o arquivo `assemblies.blob` em aplicativos Xamarin, permitindo o acesso aos assemblies .NET para análise adicional:
|
||
|
```bash
|
||
|
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 `.dll`s são obtidos, é possível analisar o código .Net estaticamente usando ferramentas como [**dnSpy**](https://github.com/dnSpy/dnSpy) **ou** [**ILSpy**](https://github.com/icsharpcode/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](https://github.com/NorthwaveSecurity/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:
|
||
|
|
||
|
* [**xamarin-antiroot**](https://codeshare.frida.re/@Gand3lf/xamarin-antiroot/)
|
||
|
* [**xamarin-root-detect-bypass**](https://codeshare.frida.re/@nuschpl/xamarin-root-detect-bypass/)
|
||
|
* [**Frida-xamarin-unpin**](https://github.com/GoSecure/frida-xamarin-unpin)
|
||
|
|
||
|
### Reassinar
|
||
|
|
||
|
A ferramenta [Uber APK Signer](https://github.com/patrickfav/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
|
||
|
|
||
|
* [https://www.appknox.com/security/xamarin-reverse-engineering-a-guide-for-penetration-testers](https://www.appknox.com/security/xamarin-reverse-engineering-a-guide-for-penetration-testers)
|
||
|
* [https://thecobraden.com/posts/unpacking\_xamarin\_assembly\_stores/](https://thecobraden.com/posts/unpacking\_xamarin\_assembly\_stores/)
|
||
|
* [https://medium.com/@justmobilesec/introduction-to-the-exploitation-of-xamarin-apps-fde4619a51bf](https://medium.com/@justmobilesec/introduction-to-the-exploitation-of-xamarin-apps-fde4619a51bf)
|
||
|
|
||
|
{% hint style="success" %}
|
||
|
Learn & practice AWS Hacking:<img src="../.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../.gitbook/assets/arte.png" alt="" data-size="line">\
|
||
|
Learn & practice GCP Hacking: <img src="../.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||
|
|
||
|
<details>
|
||
|
|
||
|
<summary>Support HackTricks</summary>
|
||
|
|
||
|
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
|
||
|
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||
|
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||
|
|
||
|
</details>
|
||
|
{% endhint %}
|