
Proxy et enregistreur HTTP/HTTPS MITM.
Hyperfox est un outil d'audit de sécurité qui proxy et enregistre le trafic HTTP et HTTPS entre deux points.
Vous pouvez installer la dernière version de hyperfox dans /usr/local/bin avec la commande suivante (nécessite des privilèges administrateur) :
curl -sL 'https://raw.githubusercontent.com/malfunkt/hyperfox/master/install.sh' | sh
Si vous préférez ne pas accepter de bonbons gratuits de cette camionnette, vous pouvez aussi récupérer une version depuis notre page des versions et l'installer manuellement.
hyperfox depuis les sourcesPour compiler hyperfox depuis les sources, vous aurez besoin de Go et d'un compilateur C :
Utilisez go install pour compiler et installer :
hyperfoxgo install github.com/malfunkt/hyperfox
Hyperfox crée un serveur proxy HTTP transparent et le lie au port 1080/TCP sur localhost (-addr 127.0.0.1 -http 1080). Le serveur proxy lit les requêtes HTTP en clair et les redirige vers la destination cible (l'en-tête Host est utilisé pour identifier la destination). Lorsque la destination cible répond, Hyperfox intercepte la réponse et la transmet au client d'origine.
Toutes les communications HTTP entre l'origine et la destination sont interceptées par Hyperfox et enregistrées dans une base de données SQLite créée automatiquement. À chaque démarrage d'Hyperfox, une nouvelle base de données est créée (par exemple : hyperfox-00123.db). Vous pouvez modifier ce comportement en fournissant explicitement un nom de base de données (par exemple : -db traffic-log.db).
Lancez Hyperfox avec la configuration par défaut :
hyperfox
utilisez cURL pour demander n'importe quelle page HTTP, le paramètre -x indique à cURL d'utiliser hyperfox comme proxy :
curl -x http://127.0.0.1:1080 example.com
vous devriez voir un journal de la page demandée dans la sortie d'Hyperfox :
...
127.0.0.1:44254 - - [11/Apr/2020:19:19:48 -0500] "GET http://example.com/ HTTP/1.1" 200 -1
-ui)
Utilisez le paramètre -ui pour activer l'interface utilisateur d'Hyperfox qui s'ouvrira dans une nouvelle fenêtre de navigateur :
hyperfox -db records.db -ui
La commande ci-dessus crée un serveur web qui se lie à 127.0.0.1:1984. Si vous souhaitez modifier l'adresse ou le port, utilisez le commutateur -ui-addr :
hyperfox -db records.db -ui -ui-addr 127.0.0.1:3000
Changer l'adresse du serveur UI est particulièrement utile lorsqu'Hyperfox fonctionne sur un hôte distant ou sans tête et que vous souhaitez voir l'interface depuis un autre hôte.
L'activation de l'UI active également une API REST minimale (sur 127.0.0.1:4891) qui est consommée par l'application front-end.
Veuillez noter que l'API REST d'Hyperfox n'est protégée que par une clé générée aléatoirement qui change à chaque démarrage d'Hyperfox. Selon votre cas d'utilisation, cela pourrait ne pas être adéquat.
Lorsque le paramètre -ui-addr est différent de 127.0.0.1, Hyperfox affichera un code QR pour faciliter la connexion depuis des appareils mobiles :
hyperfox -db records.db -ui -ui-addr 192.168.1.23:1984
-ca-cert & -ca-key)Les connexions SSL/TLS sont sécurisées de bout en bout et protégées contre les écoutes clandestines. Hyperfox ne pourra rien voir de ce qui se passe entre un client et une destination sécurisée. Cela n'est valable que tant que la chaîne de confiance reste intacte.
Supposons que le client fasse confiance à un certificat d'autorité de certification racine connu par Hyperfox. Si cela se produit, Hyperfox pourra émettre des certificats qui seront approuvés par le client.
Des exemples de tels fichiers d'autorité de certification racine factices peuvent être trouvés ici :
vous pouvez aussi générer votre propre certificat et clé d'autorité de certification racine.
Il existe plusieurs façons d'installer les certificats d'autorité de certification racine, selon votre système d'exploitation.
Ce code QR peut être utile lors de l'installation du certificat racine d'Hyperfox sur un appareil mobile :
Certificat d'autorité de certification racine Hyperfox
Utilisez les flags -ca-cert et -ca-key pour fournir à Hyperfox le certificat et la clé d'autorité de certification racine que vous souhaitez utiliser :
hyperfox -ca-cert rootCA.crt -ca-key rootCA.key
la commande ci-dessus crée un serveur spécial et le lie à 127.0.0.1:10443. Ce serveur attend une connexion SSL/TLS. Lorsqu'une nouvelle connexion SSL/TLS arrive, Hyperfox utilise l'extension SNI pour identifier le serveur de noms de destination et créer un certificat SSL/TLS pour celui-ci. Ce certificat est signé avec la clé d'autorité de certification racine fournie.
Lancez Hyperfox avec les paramètres TLS appropriés et -http 443 (le port 443 nécessite des privilèges administrateur).
sudo hyperfox -ca-cert ./ca/rootCA.crt -ca-key ./ca/rootCA.key -https 443
Utilisez cURL pour construire une requête HTTPs vers example.com : l'option -resolve indique à cURL d'ignorer la vérification DNS et d'utiliser 127.0.0.1 comme s'il s'agissait de l'adresse légitime pour example.com, tandis que le paramètre -k indique à cURL d'accepter n'importe quel certificat TLS.
curl -k -resolve example.com:443:127.0.0.1 https://example.com
vous devriez voir un journal de la page demandée dans la sortie d'Hyperfox :
127.0.0.1:36398 - - [11/Apr/2020:19:36:56 -0500] "GET https://example.com/ HTTP/2.0" 200 -1
/etc/hosts sur localhostAjoutez l'hôte que vous souhaitez inspecter à votre fichier /etc/hosts :
example.com 127.0.0.1
Exécutez Hyperfox avec les options que vous souhaitez, rappelez-vous simplement que vous devez utiliser les ports 80 pour HTTP et 443 pour HTTPS, ce qui nécessite des privilèges administrateur. En plus de -http et -https, utilisez le paramètre -dns avec un résolveur DNS valide :
sudo hyperfox -ui -http 80 -dns 8.8.8.8
Cela fera en sorte qu'Hyperfox ignore le résolveur DNS du système d'exploitation et en utilise un alternatif (rappelez-vous que example.com pointe vers 127.0.0.1).
Utilisez maintenant cURL et essayez d'atteindre la destination :
curl http://example.com
Hyperfox capturera la requête et l'affichera dans sa sortie :
127.0.0.1:41766 - - [11/Apr/2020:19:43:30 -0500] "GET http://example.com/ HTTP/1.1" 200 -1
Choisissez un problème, corrigez-le et envoyez une pull request.
Copyright (c) 2012-aujourd'hui José Nieto, https://xiam.io
La permission est accordée, gratuitement, à toute personne obtenant une copie de ce logiciel et des fichiers de documentation associés (le "Logiciel"), de traiter le Logiciel sans restriction, y compris sans limitation les droits d'utiliser, copier, modifier, fusionner, publier, distribuer, sous-licencier et/ou vendre des copies du Logiciel, et de permettre aux personnes à qui le Logiciel est fourni de le faire, sous réserve des conditions suivantes :
L'avis de copyright ci-dessus et cet avis d'autorisation doivent être inclus dans toutes les copies ou parties substantielles du Logiciel.
LE LOGICIEL EST FOURNI "EN L'ÉTAT", SANS GARANTIE D'AUCUNE SORTE, EXPRESSE OU IMPLICITE, Y COMPRIS MAIS SANS S'Y LIMITER LES GARANTIES DE QUALITÉ MARCHANDE, D'ADÉQUATION À UN USAGE PARTICULIER ET DE NON-CONTREFAÇON. EN AUCUN CAS LES AUTEURS OU TITULAIRES DU COPYRIGHT NE SERONT RESPONSABLES DE TOUTE RÉCLAMATION, DOMMAGE OU AUTRE RESPONSABILITÉ, QUE CE SOIT DANS LE CADRE D'UNE ACTION CONTRACTUELLE, DÉLICTUELLE OU AUTRE, DÉCOULANT DE, OU EN RELATION AVEC LE LOGICIEL OU SON UTILISATION OU D'AUTRES INTERACTIONS AVEC LE LOGICIEL.