Frida CodeShare – La bibliothèque communautaire du reverse engineering
Si vous êtes dans le reverse engineering sur mobile et que vous ne connaissez pas encore Frida CodeShare, préparez-vous à découvrir votre nouveau terrain de jeu préféré les amis ! Faut imaginer un GitHub ultra spécialisé où les développeurs du monde entier déposent leurs meilleurs scripts Frida, prêts à être utilisés en une seule commande.
Comme ça, au lieu de réinventer la roue à chaque fois que vous voulez contourner un SSL pinning ou tracer des appels de méthodes, vous piochez directement dans une bibliothèque de scripts éprouvés.
Pour ceux qui découvrent, Frida est un toolkit d’instrumentation dynamique qui vous permet d’injecter du JavaScript dans n’importe quel processus, sans avoir besoin du code source. Ça fonctionne sur Windows, macOS, Linux, iOS, Android, et même FreeBSD. Le truc magique, c’est que Frida injecte QuickJS directement dans le processus cible, ce qui vous donne un accès total à la mémoire et la possibilité de hooker des fonctions natives.
Frida a la capacité à fonctionner dans trois modes différents : Injected (le plus courant), Embedded et Preloaded via le Frida Gadget. Sur Android, vous pouvez même l’utiliser sans être root en utilisant frida-gadget sur une app debuggable.
Pour iOS, l’histoire est un peu différente mais tout aussi cool car Frida supporte les modes jailed et jailbroken, avec évidemment plus de possibilités sur un appareil jailbreaké. Sur iOS 13 et plus récent, vous pouvez par exemple utiliser Frida en mode jailed avec des builds debuggables, ce qui ouvre la porte à l’analyse même sur des appareils non-jailbreakés.
Les bindings disponibles montrent aussi la versatilité de l’outil puisque vous pouvez l’utiliser depuis Node.js (npm), Python (PyPI), Swift, .NET, Qt/Qml, Go, ou directement via l’API C. Cette diversité permet à chaque développeur de travailler dans son environnement préféré.
Maintenant, ce qui rend CodeShare puissant, c’est en réalité son intégration native avec Frida. Pas besoin de télécharger manuellement les scripts, il suffit de lancer :
frida --codeshare <author>/<script-name> -f <package-name>
.
Par exemple, pour bypasser le SSL pinning d’une app Android, vous tapez juste
frida --codeshare akabe1/frida-multiple-unpinning -f com.example.app -U
… et boom, vous interceptez le trafic HTTPS comme si de rien n’était.
Les scripts les plus populaires sur la plateforme sont tous les scripts de contournement SSL (un véritable cauchemar pour les développeurs qui pensent que leur certificate pinning est inviolable) mais aussi les scripts pour observer toutes les méthodes d’une classe spécifique, tracer les appels JNI, ou même désactiver la vérification TLS de Flutter, et j’en passe…
Pour les développeurs Android, l’écosystème est particulièrement riche. Le dépot frida-codeshare-scripts rassemble par exemple une collection impressionnante de scripts utiles, organisés par catégorie. Vous y trouvez par exemple des scripts pour dumper la mémoire avec Fridump (python3 fridump.py -U -o memory_dump <app-name>
), tracer les accès au système de fichiers, ou même observer les communications réseau en temps réel.
D’autres outils complémentaires enrichissent encore plus l’écosystème. Je pense par exemple à Medusa, un excellent wrapper Frida avancé avec une base de données de scripts utiles exécutables par commande. Il y a aussi des interfaces web user-friendly qui rendent le filtrage et l’exécution de scripts beaucoup plus simple qu’en ligne de commande. Et frida-rust maintient des sessions persistantes avec les applications, augmentant la vitesse d’exécution de plusieurs fois par rapport aux méthodes traditionnelles.
Maintenant, si vous voulez commencer avec CodeShare, le plus simple est de cloner quelques repositories de référence comme hyugogirubato/Frida-CodeShare. Chaque script est dans son propre répertoire avec un README qui explique son utilisation. C’est parfait pour comprendre comment les scripts fonctionnent et les adapter à vos besoins spécifiques.
Bref, je trouve que cette histoire de CodeShare sont vraiment cool car ça démocratise le reverse engineering en plus de faire gagner du temps. Plus besoin d’être un expert en assembleur ARM pour analyser une app Android par exemple.
Source : korben.info