
Proxy e registratore MITM HTTP/HTTPS.
Hyperfox è uno strumento di auditing di sicurezza che funge da proxy e registra il traffico HTTP e HTTPS tra due punti.
Puoi installare l'ultima versione di hyperfox in /usr/local/bin con il seguente comando (richiede privilegi di amministratore):
curl -sL 'https://raw.githubusercontent.com/malfunkt/hyperfox/master/install.sh' | sh
Se preferisci non accettare caramelle gratis da questo furgone, puoi anche scaricare una release dalla nostra pagina delle release e installarla manualmente.
hyperfox dai sorgentiPer compilare hyperfox dai sorgenti avrai bisogno di Go e di un compilatore C:
Usa go install per compilare e installare hyperfox:
go install github.com/malfunkt/hyperfox
Hyperfox crea un server proxy HTTP trasparente e lo vincola alla porta 1080/TCP su localhost (-addr 127.0.0.1 -http 1080). Il server proxy legge le richieste HTTP in chiaro e le reindirizza alla destinazione target (l'header Host viene utilizzato per identificare la destinazione). Quando la destinazione target risponde, Hyperfox intercetta la risposta e la inoltra al client originale.
Tutte le comunicazioni HTTP tra origine e destinazione vengono intercettate da Hyperfox e registrate in un database SQLite creato automaticamente. Ogni volta che Hyperfox viene avviato, viene creato un nuovo database (ad esempio: hyperfox-00123.db). Puoi modificare questo comportamento fornendo esplicitamente un nome per il database (ad esempio: -db traffic-log.db).
Avvia Hyperfox con la configurazione predefinita:
hyperfox
usa cURL per richiedere qualsiasi pagina HTTP; il parametro -x indica a cURL di utilizzare hyperfox come proxy:
curl -x http://127.0.0.1:1080 example.com
dovresti vedere un log per la pagina richiesta nell'output di Hyperfox:
...
127.0.0.1:44254 - - [11/Apr/2020:19:19:48 -0500] "GET http://example.com/ HTTP/1.1" 200 -1
-ui)
Usa il parametro -ui per abilitare l'interfaccia utente di Hyperfox, che si aprirà in una nuova finestra del browser:
hyperfox -db records.db -ui
Il comando precedente crea un server web che si lega a 127.0.0.1:1984. Se desideri modificare l'indirizzo di bind o la porta, usa l'opzione -ui-addr:
hyperfox -db records.db -ui -ui-addr 127.0.0.1:3000
Modificare l'indirizzo del server UI è particolarmente utile quando Hyperfox è in esecuzione su un host remoto o headless e desideri visualizzare l'interfaccia da un altro host.
Abilitare l'interfaccia utente abilita anche una API REST minimale (su 127.0.0.1:4891) che viene consumata dall'applicazione front-end.
Tieni presente che l'API REST di Hyperfox è protetta solo da una chiave generata casualmente che cambia ogni volta che Hyperfox viene avviato; a seconda del tuo caso d'uso, questo potrebbe non essere adeguato.
Quando il parametro -ui-addr è diverso da 127.0.0.1, Hyperfox mostrerà un codice QR per semplificare la connessione da dispositivi mobili:
hyperfox -db records.db -ui -ui-addr 192.168.1.23:1984
-ca-cert e -ca-key)Le connessioni SSL/TLS sono sicure end-to-end e protette da intercettazioni. Hyperfox non sarà in grado di vedere nulla di ciò che accade tra un client e una destinazione sicura. Questo vale solo finché la catena di fiducia rimane intatta.
Supponiamo che il client si fidi di un certificato CA radice noto a Hyperfox; in tal caso, Hyperfox sarà in grado di emettere certificati che saranno accettati dal client.
Esempi di tali file CA contraffatti si trovano qui:
puoi anche generare il tuo certificato e chiave CA radice.
Esistono diversi modi per installare i certificati CA radice, a seconda del sistema operativo.
Questo codice QR può essere utile per installare il certificato CA radice di Hyperfox su un dispositivo mobile:
Certificato CA radice Hyperfox
Usa i flag -ca-cert e -ca-key per fornire a Hyperfox il certificato e la chiave CA radice che desideri utilizzare:
hyperfox -ca-cert rootCA.crt -ca-key rootCA.key
il comando precedente crea un server speciale e lo lega a 127.0.0.1:10443; questo server attende l'arrivo di una connessione SSL/TLS. Quando arriva una nuova connessione SSL/TLS, Hyperfox utilizza l'estensione SNI per identificare il nameserver di destinazione e crea un certificato SSL/TLS per esso; tale certificato viene firmato con la chiave CA radice fornita.
Avvia Hyperfox con i parametri TLS appropriati e -http 443 (la porta 443 richiede privilegi di amministratore).
sudo hyperfox -ca-cert ./ca/rootCA.crt -ca-key ./ca/rootCA.key -https 443
Usa cURL per effettuare una richiesta HTTPs a example.com: l'opzione -resolve dice a cURL di saltare la verifica DNS e usare 127.0.0.1 come se fosse l'indirizzo legittimo per example.com, mentre il parametro -k dice a cURL di accettare qualsiasi certificato TLS.
curl -k -resolve example.com:443:127.0.0.1 https://example.com
dovresti vedere un log per la pagina richiesta nell'output di Hyperfox:
127.0.0.1:36398 - - [11/Apr/2020:19:36:56 -0500] "GET https://example.com/ HTTP/2.0" 200 -1
/etc/hosts su localhostAggiungi l'host che desideri ispezionare al file /etc/hosts:
example.com 127.0.0.1
Esegui Hyperfox con le opzioni desiderate, ricordando che devi usare le porte 80 per HTTP e 443 per HTTPS, e che ciò richiede privilegi di amministratore. Oltre a -http e -https, usa il parametro -dns con un resolver DNS valido:
sudo hyperfox -ui -http 80 -dns 8.8.8.8
questo farà sì che Hyperfox salti il resolver DNS del sistema operativo e ne utilizzi uno alternativo (ricorda che example.com punta a 127.0.0.1).
Ora usa cURL e prova a raggiungere la destinazione:
curl http://example.com
Hyperfox catturerà la richiesta e la stamperà nel suo output:
127.0.0.1:41766 - - [11/Apr/2020:19:43:30 -0500] "GET http://example.com/ HTTP/1.1" 200 -1
Vedi Attacco MITM con Hyperfox e arpfox.
Scegli un issue, risolvilo e invia una pull request.
Copyright (c) 2012-oggi José Nieto, https://xiam.io
Con la presente viene concessa l'autorizzazione, a titolo gratuito, a qualsiasi persona che ottenga una copia di questo software e dei file di documentazione associati (il "Software"), di trattare il Software senza restrizioni, inclusi, senza limitazione, i diritti di utilizzare, copiare, modificare, unire, pubblicare, distribuire, concedere in sublicenza e/o vendere copie del Software, e di consentire alle persone a cui il Software è fornito di fare altrettanto, alle seguenti condizioni:
L'avviso di copyright sopra riportato e questo avviso di autorizzazione devono essere inclusi in tutte le copie o parti sostanziali del Software.
IL SOFTWARE VIENE FORNITO "COSÌ COM'È", SENZA GARANZIA DI ALCUN TIPO, ESPRESSA O IMPLICITA, INCLUSE MA NON LIMITATE ALLE GARANZIE DI COMMERCIABILITÀ, IDONEITÀ PER UN PARTICOLARE SCOPO E NON VIOLAZIONE. IN NESSUN CASO GLI AUTORI O I TITOLARI DEL COPYRIGHT POTRANNO ESSERE RITENUTI RESPONSABILI PER QUALSIASI RECLAMO, DANNO O ALTRA RESPONSABILITÀ, SIA IN UN'AZIONE CONTRATTUALE, EXTRACONTRATTUALE O ALTRIMENTI, DERIVANTE DA O IN CONNESSIONE CON IL SOFTWARE O L'USO O ALTRE OPERAZIONI CON IL SOFTWARE.