Boîte à outils de rétro-ingénierie mitmproxy pour les applications API sur iOS

mitmproxy, développé par le projet Mitmproxy, est un proxy d'interception puissant et interactif prenant en charge SSL/TLS et fournissant une interface console pour gérer le trafic HTTP/1, HTTP/2 et WebSocket. Cet outil est particulièrement utile pour capturer et analyser toutes les données échangées entre votre appareil iOS et des serveurs externes, ce qui en fait une ressource précieuse pour la rétro-ingénierie des API privées au sein des applications.
Key Takeaways
- mitmproxy prend en charge non seulement HTTP, HTTP/2, HTTP/3, mais également d'autres protocoles Web tels que WebSocket, DNS, proxy TCP/TLS générique et proxy UDP/DTLS générique.
- L'API Python vous permet d'écrire des modules complémentaires et des scripts avec une API qui offre un contrôle total sur mitmproxy et permet d'implémenter vos propres commandes.
- L'un des principaux objectifs de mitmproxy est la possibilité de rétroconcevoir l'API privée des applications iOS avec un chiffrement par attaque de l'homme du milieu (MITM).
- mitmproxy est un outil de ligne de commande, accompagné de mitmweb, qui fournit une interface Web intuitive similaire aux DevTools de Chrome pour surveiller le trafic réseau.
Télécharger
mitmproxy peut être installé sur toutes les plateformes de bureau courantes, notamment Windows, Linux et macOS. Pour les deux premières, vous pouvez utiliser un installateur dédié. Il est recommandé d'installer mitmproxy pour macOS via Brew, le gestionnaire de paquets manquants pour macOS.
Aperçu
Mitmproxy est une boîte à outils complète pour la rétro-ingénierie des API des applications fonctionnant sur les appareils iOS. Elle comprend trois modules clés : mitmproxy, mitmdump et mitmweb. Le module mitmdump fonctionne comme l'équivalent en ligne de commande de mitmproxy, comparable à tcpdump pour HTTP. De son côté, mitmweb offre une interface web conviviale pour une interaction fluide avec les fonctionnalités de mitmproxy.
L'un des principaux avantages de mitmproxy est sa capacité à générer un certificat SSL racine pouvant être installé sur votre iPhone. Cette fonctionnalité unique vous permet de déchiffrer les communications HTTPS, permettant ainsi une analyse complète de toutes les connexions des applications aux serveurs.
Cette transparence est particulièrement avantageuse pour la rétro-ingénierie des API privées, car elle facilite une compréhension approfondie des protocoles de communication sous-jacents. De plus, mitmproxy peut être utilisé pour découvrir les données privées spécifiques transmises par l'application à des serveurs externes, telles que la localisation GPS, le type d'appareil, la version d'iOS, etc.

Une autre fonctionnalité remarquable de mitmproxy est sa capacité à intercepter et modifier les requêtes avant leur envoi ou leur réception par le serveur. Cette fonctionnalité est particulièrement précieuse dans le cadre des tests d'intrusion, car elle permet aux utilisateurs d'injecter du code personnalisé dans les requêtes. Cette modification dynamique des requêtes offre un moyen pratique d'évaluer la résilience du système face à diverses vulnérabilités de sécurité et aide à identifier les faiblesses potentielles exploitables. La flexibilité de mitmproxy dans la modification des requêtes renforce son utilité en tant qu'outil puissant dans l'arsenal des professionnels et des chercheurs en sécurité.
Mitmproxy a joué un rôle crucial en tant qu'outil principal utilisé par les chercheurs en sécurité de Kaspersky lors de l'opération Triangulation . Ses capacités ont permis de déchiffrer le trafic HTTPS, permettant ainsi aux chercheurs de suivre et d'analyser le malware Messages, auto-installé sur les appareils iOS et conçu pour prendre le contrôle de l'iDevice sans laisser de trace.
Info : mitmproxy prend en charge les appareils Windows, macOS, Linux, iOS et Android.
De plus, mitmproxy facilite la surveillance et la modification en temps réel des requêtes, permettant ainsi des ajustements dynamiques à la volée pendant le processus d'interception. Il est toutefois important de noter que l'installation d'un certificat SSL racine ne permet pas d'intercepter le trafic HTTPS provenant des services Apple, y compris iMessage. Cette limitation est due à l'implémentation de l'épinglage SSL par iOS pour des mesures de sécurité renforcées.
[[highlight h2="Nouveautés" color="#d9d9d9" text="Ajout de la prise en charge de la modification de fichiers non texte dans un éditeur hexadécimal.|Ajout d'un hook server_connect_error déclenché en cas d'échec de la connexion.|Ajout d'une section dans mitmweb pour le rendu, l'ajout et la suppression d'un commentaire.|Correction de l'inutilisabilité de la vue du contenu du formulaire en plusieurs parties.|Améliorations de la documentation sur la génération de certificats d'autorité de certification.|Permet la lecture des flux depuis l'entrée standard avec mitmweb.|Mise à jour de la dépendance aioquic vers >= 1.0.0, < 2.0.0.|Correction d'un bug où les gestionnaires asynchrones client_connected plantaient mitmproxy.|Ajout d'un bouton pour fermer le panneau de détails du flux.|Ignorer les signaux SIGPIPE en cas de trafic important. Les erreurs de socket sont gérées directement et ne nécessitent pas de signaux supplémentaires générant du bruit.|Ajout de l'interception et de la modification de sockets web primitifs.|Ajout de la prise en charge de l'exportation des messages websockets lors de l'utilisation de l'exportation « raw ».|La fonctionnalité « sauvegarde du corps » inclut désormais également Messages WebSocket. |Correction de la compatibilité avec les anciennes versions de cryptographie et désactivation d'un avertissement d'obsolescence sur Python <3.11. |Correction d'un bug lors du proxy de domaines Unicode.
Mitmproxy permet d'intercepter les requêtes et réponses HTTP et HTTPS, permettant ainsi des modifications dynamiques en temps réel. Les utilisateurs peuvent enregistrer des conversations HTTP entières pour une relecture ultérieure et une analyse approfondie. L'outil prend également en charge la relecture côté client d'une conversation HTTP et peut reproduire les réponses HTTP d'un serveur précédemment enregistré. De plus, mitmproxy dispose d'un mode proxy inverse pour transférer le trafic vers un serveur.
Sous macOS et Linux, il offre un mode proxy transparent. Pour les modifications scriptées du trafic HTTP, mitmproxy prend en charge Python, permettant ainsi aux utilisateurs d'effectuer des modifications personnalisées. De plus, les certificats SSL/TLS pour l'interception sont générés à la volée, améliorant la flexibilité et l'adaptabilité de l'outil à divers scénarios de sécurité. Le code source est disponible sur le dépôt GitHub .

Mitmweb sert d'interface utilisateur web à mitmproxy, offrant une plateforme interactive pour l'analyse et la modification du trafic HTTP. À la différence de mitmdump, mitmweb conserve tous les flux en mémoire, ce qui le rend particulièrement adapté à la capture et à la manipulation d'échantillons.
Mitmdump est l'équivalent en ligne de commande de mitmproxy, offrant des fonctionnalités similaires à tcpdump. Cet outil permet d'observer, d'enregistrer et de modifier le trafic HTTP par programmation. Pour une documentation complète, consultez la sortie générée par l'option --help.
Comment installer mitmproxy sur macOS
La méthode privilégiée pour installer mitmproxy sur macOS est Homebrew. Vous pouvez également télécharger des binaires autonomes de mitmproxy pour macOS depuis le site web officiel mitmproxy.org. Veuillez noter que Rosetta est requis pour Apple Silicon.
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" brew install mitmproxy