hacktricks/mobile-pentesting/xamarin-apps.md

84 lines
6.5 KiB
Markdown
Raw Normal View History

# Applications Xamarin
{% hint style="success" %}
Apprenez et pratiquez le 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">\
Apprenez et pratiquez le 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>Soutenir HackTricks</summary>
* Consultez les [**plans d'abonnement**](https://github.com/sponsors/carlospolop) !
* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe telegram**](https://t.me/peass) ou **suivez-nous sur** **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Partagez des astuces de hacking en soumettant des PR aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) dépôts github.
</details>
{% endhint %}
Ceci est un résumé de l'article de blog [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)
## **Informations de base**
Xamarin est une **plateforme open-source** conçue pour que les développeurs **créent des applications pour iOS, Android et Windows** en utilisant les frameworks .NET et C#. Cette plateforme offre un accès à de nombreux outils et extensions pour créer des applications modernes de manière efficace.
### Architecture de Xamarin
- Pour **Android**, Xamarin s'intègre avec les espaces de noms Android et Java via des liaisons .NET, fonctionnant dans l'environnement d'exécution Mono aux côtés de l'Android Runtime (ART). Les Managed Callable Wrappers (MCW) et les Android Callable Wrappers (ACW) facilitent la communication entre Mono et ART, tous deux basés sur le noyau Linux.
- Pour **iOS**, les applications s'exécutent sous l'environnement d'exécution Mono, utilisant une compilation complète Ahead of Time (AOT) pour convertir le code C# .NET en langage d'assemblage ARM. Ce processus fonctionne aux côtés de l'Objective-C Runtime sur un noyau de type UNIX.
### Environnement d'exécution .NET et Framework Mono
Le **framework .NET** comprend des assemblies, des classes et des espaces de noms pour le développement d'applications, avec l'environnement d'exécution .NET gérant l'exécution du code. Il offre une indépendance de la plateforme et une compatibilité ascendante. Le **Framework Mono** est une version open-source du framework .NET, initiée en 2005 pour étendre .NET à Linux, maintenant soutenue par Microsoft et dirigée par Xamarin.
### Ingénierie inverse des applications Xamarin
#### Décompilation des assemblies Xamarin
La décompilation transforme le code compilé en code source. Sous Windows, la fenêtre Modules dans Visual Studio peut identifier les modules pour la décompilation, permettant un accès direct au code tiers et l'extraction du code source pour analyse.
#### Compilation JIT vs AOT
- **Android** prend en charge la compilation Just-In-Time (JIT) et Ahead-Of-Time (AOT), avec un mode hybride AOT pour une vitesse d'exécution optimale. La compilation complète AOT est exclusive aux licences Enterprise.
- **iOS** utilise uniquement la compilation AOT en raison des restrictions d'Apple sur l'exécution de code dynamique.
### Extraction des fichiers dll à partir d'APK/IPA
Pour accéder aux assemblies dans un APK/IPA, décompressez le fichier et explorez le répertoire des assemblies. Pour Android, des outils comme [XamAsmUnZ](https://github.com/cihansol/XamAsmUnZ) et [xamarin-decompress](https://github.com/NickstaDB/xamarin-decompress) peuvent décompresser les fichiers dll.
```bash
python3 xamarin-decompress.py -o /path/to/decompressed/apk
```
Pour les blobs d'assemblage dans Android, [pyxamstore](https://github.com/jakev/pyxamstore) peut les décompresser.
```bash
pyxamstore unpack -d /path/to/decompressed/apk/assemblies/
```
Les fichiers dll iOS sont facilement accessibles pour la décompilation, révélant des portions significatives du code de l'application, qui partagent souvent une base commune à travers différentes plateformes.
### Analyse Dynamique
L'analyse dynamique implique de vérifier le SSL pinning et d'utiliser des outils comme [Fridax](https://github.com/NorthwaveSecurity/fridax) pour les modifications en temps réel du binaire .NET dans les applications Xamarin. Des scripts Frida sont disponibles pour contourner la détection de root ou le SSL pinning, améliorant ainsi les capacités d'analyse.
D'autres scripts Frida intéressants :
* [**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)
## Informations supplémentaires
* [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/)
{% 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 %}