hacktricks/mobile-pentesting/xamarin-apps.md

82 lines
6.5 KiB
Markdown

# Applications Xamarin
<details>
<summary><strong>Apprenez le piratage AWS de zéro à héros avec</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Expert en équipe rouge AWS de HackTricks)</strong></a><strong>!</strong></summary>
Autres façons de soutenir HackTricks :
* Si vous souhaitez voir votre **entreprise annoncée dans HackTricks** ou **télécharger HackTricks en PDF**, consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) !
* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
* Découvrez [**La famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFT**](https://opensea.io/collection/the-peass-family)
* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez** moi sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
* **Partagez vos astuces de piratage 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>
Il s'agit d'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 les développeurs afin de **créer des applications pour iOS, Android et Windows** en utilisant les frameworks .NET et C#. Cette plateforme offre l'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 aux 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 Android Callable Wrappers (ACW) facilitent la communication entre Mono et ART, tous deux étant construits sur le noyau Linux.
- Pour **iOS**, les applications s'exécutent sous le runtime Mono, utilisant une compilation Ahead of Time (AOT) complète pour convertir le code C# .NET en langage d'assemblage ARM. Ce processus s'exécute aux côtés de l'Objective-C Runtime sur un noyau de type UNIX.
### .NET Runtime et Mono Framework
Le **framework .NET** comprend des assemblies, des classes et des espaces de noms pour le développement d'applications, le Runtime .NET gérant l'exécution du code. Il offre une indépendance de plateforme et une compatibilité ascendante. Le **Mono Framework** 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.
### Rétro-ingénierie des applications Xamarin
#### Décompilation des assemblages Xamarin
La décompilation transforme le code compilé en code source. Sous Windows, la fenêtre Modules dans Visual Studio peut identifier les modules à décompiler, permettant un accès direct au code tiers et l'extraction du code source pour l'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. Le AOT complet est exclusif aux licences Enterprise.
- **iOS** utilise uniquement la compilation AOT en raison des restrictions d'Apple sur l'exécution de code dynamique.
### Extraction de fichiers dll à partir d'APK/IPA
Pour accéder aux assemblages dans un APK/IPA, décompressez le fichier et explorez le répertoire des assemblages. 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'assembly sur 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 partage souvent une base commune sur 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 des modifications en temps d'exécution 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 les capacités d'analyse.
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/)
<details>
<summary><strong>Apprenez le piratage AWS de zéro à héros avec</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Autres façons de soutenir HackTricks :
* Si vous souhaitez voir votre **entreprise annoncée dans HackTricks** ou **télécharger HackTricks en PDF**, consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop)!
* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
* Découvrez [**The PEASS Family**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez** moi sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
* **Partagez vos astuces de piratage en soumettant des PR aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>