
HTTP/HTTPS MITM-Proxy und Aufzeichner
Hyperfox ist ein Sicherheits-Audit-Tool, das HTTP- und HTTPS-Verkehr zwischen zwei Punkten proxyt und aufzeichnet.
Sie können die neueste Version von hyperfox mit folgendem Befehl nach /usr/local/bin installieren (erfordert Admin-Rechte):
curl -sL 'https://raw.githubusercontent.com/malfunkt/hyperfox/master/install.sh' | sh
Wenn Sie lieber keine kostenlosen Süßigkeiten aus diesem Lieferwagen annehmen möchten, können Sie auch ein Release von unserer Releases-Seite herunterladen und manuell installieren.
hyperfox aus dem Quellcode erstellenUm hyperfox aus dem Quellcode zu erstellen, benötigen Sie Go und einen C-Compiler:
Verwenden Sie go install, um hyperfox zu erstellen und zu installieren:
go install github.com/malfunkt/hyperfox
Hyperfox erstellt einen transparenten HTTP-Proxy-Server und bindet ihn an Port 1080/TCP auf localhost (-addr 127.0.0.1 -http 1080). Der Proxy-Server liest Klartext-HTTP-Anfragen und leitet sie an das Ziel weiter (der Host-Header wird verwendet, um das Ziel zu identifizieren). Wenn das Ziel antwortet, fängt Hyperfox die Antwort ab und leitet sie an den ursprünglichen Client weiter.
Die gesamte HTTP-Kommunikation zwischen Quelle und Ziel wird von Hyperfox abgefangen und in einer automatisch erstellten SQLite-Datenbank aufgezeichnet. Jedes Mal, wenn Hyperfox startet, wird eine neue Datenbank erstellt (z. B. hyperfox-00123.db). Sie können dieses Verhalten ändern, indem Sie explizit einen Datenbanknamen angeben (z. B. -db traffic-log.db).
Hyperfox mit Standardkonfiguration starten:
hyperfox
Verwenden Sie cURL, um eine beliebige HTTP-Seite anzufragen. Der Parameter -x teilt cURL mit, hyperfox als Proxy zu verwenden:
curl -x http://127.0.0.1:1080 example.com
Sie sollten in der Ausgabe von Hyperfox einen Logeintrag für die angefragte Seite sehen können:
127.0.0.1:44254 - - [11/Apr/2020:19:19:48 -0500] "GET http://example.com/ HTTP/1.1" 200 -1
-ui)
Verwenden Sie den Parameter -ui, um die Hyperfox-Benutzeroberfläche zu aktivieren, die in einem neuen Browserfenster geöffnet wird:
hyperfox -db records.db -ui
Der obige Befehl erstellt einen Webserver, der an 127.0.0.1:1984 gebunden ist. Wenn Sie die Bind-Adresse oder den Port ändern möchten, verwenden Sie den Schalter -ui-addr:
hyperfox -db records.db -ui -ui-addr 127.0.0.1:3000
Das Ändern der UI-Serveradresse ist besonders nützlich, wenn Hyperfox auf einem entfernten oder kopflosen Host läuft und Sie die UI von einem anderen Host aus sehen möchten.
Das Aktivieren der UI aktiviert auch eine minimale REST-API (unter 127.0.0.1:4891), die von der Frontend-Anwendung genutzt wird.
Bitte beachten Sie, dass die REST-API von Hyperfox nur durch einen zufällig generierten Schlüssel geschützt ist, der sich bei jedem Start von Hyperfox ändert. Je nach Anwendungsfall ist dies möglicherweise nicht angemessen.
Wenn der Parameter -ui-addr von 127.0.0.1 abweicht, gibt Hyperfox einen QR-Code aus, um die Verbindung von mobilen Geräten zu erleichtern:
hyperfox -db records.db -ui -ui-addr 192.168.1.23:1984
-ca-cert & -ca-key)SSL/TLS-Verbindungen sind Ende-zu-Ende verschlüsselt und vor Lauschangriffen geschützt. Hyperfox kann nichts sehen, was zwischen einem Client und einem sicheren Ziel passiert. Dies gilt nur, solange die Vertrauenskette intakt bleibt.
Nehmen wir an, der Client vertraut einem Root-CA-Zertifikat, das Hyperfox bekannt ist. In diesem Fall kann Hyperfox Zertifikate ausstellen, die vom Client als vertrauenswürdig eingestuft werden.
Beispiele für solche gefälschten Root-CA-Dateien finden Sie hier:
Sie können auch Ihr eigenes Root-CA-Zertifikat und Ihren eigenen Schlüssel erstellen.
Es gibt eine Reihe von Möglichkeiten, Root-CA-Zertifikate zu installieren, abhängig von Ihrem Betriebssystem.
Dieser QR-Code könnte bei der Installation des Hyperfox-Root-CA auf einem mobilen Gerät nützlich sein:
Hyperfox root CA certificate
Verwenden Sie die Flags -ca-cert und -ca-key, um Hyperfox das gewünschte Root-CA-Zertifikat und den zugehörigen Schlüssel bereitzustellen:
hyperfox -ca-cert rootCA.crt -ca-key rootCA.key
Der obige Befehl erstellt einen speziellen Server und bindet ihn an 127.0.0.1:10443. Dieser Server wartet auf eine eingehende SSL/TLS-Verbindung. Wenn eine neue SSL/TLS-Verbindung eintrifft, verwendet Hyperfox die SNI-Erweiterung, um den Ziel-Nameserver zu identifizieren und ein SSL/TLS-Zertifikat dafür zu erstellen; dieses Zertifikat wird mit dem bereitgestellten Root-CA-Schlüssel signiert.
Starten Sie Hyperfox mit den entsprechenden TLS-Parametern und -http 443 (Port 443 erfordert Admin-Rechte).
sudo hyperfox -ca-cert ./ca/rootCA.crt -ca-key ./ca/rootCA.key -https 443
Verwenden Sie cURL, um eine HTTPS-Anfrage an example.com zu stellen: Die Option -resolve teilt cURL mit, die DNS-Überprüfung zu überspringen und 127.0.0.1 zu verwenden, als wäre es die legitime Adresse für example.com, während der Parameter -k cURL anweist, jedes TLS-Zertifikat zu akzeptieren.
curl -k -resolve example.com:443:127.0.0.1 https://example.com
Sie sollten in der Ausgabe von Hyperfox einen Logeintrag für die angefragte Seite sehen können:
127.0.0.1:36398 - - [11/Apr/2020:19:36:56 -0500] "GET https://example.com/ HTTP/2.0" 200 -1
/etc/hosts auf localhostFügen Sie den Host, den Sie überwachen möchten, zu Ihrer /etc/hosts-Datei hinzu:
example.com 127.0.0.1
Führen Sie Hyperfox mit den gewünschten Optionen aus. Denken Sie daran, dass Sie für HTTP Port 80 und für HTTPS Port 443 verwenden sollten, was Admin-Rechte erfordert. Verwenden Sie zusätzlich zu -http und -https den Parameter -dns mit einem gültigen DNS-Resolver:
sudo hyperfox -ui -http 80 -dns 8.8.8.8
Dadurch wird Hyperfox den OS-DNS-Resolver überspringen und einen alternativen verwenden (denken Sie daran, dass example.com auf 127.0.0.1 zeigt).
Verwenden Sie nun cURL und versuchen Sie, zum Ziel zu gelangen:
curl http://example.com
Hyperfox wird die Anfrage erfassen und in seiner Ausgabe anzeigen:
127.0.0.1:41766 - - [11/Apr/2020:19:43:30 -0500] "GET http://example.com/ HTTP/1.1" 200 -1
Siehe MITM-Angriff mit Hyperfox und arpfox.
Wählen Sie ein Issue aus, beheben Sie es und senden Sie einen Pull-Request.
Copyright (c) 2012-heute José Nieto, https://xiam.io
Hiermit wird jeder Person, die eine Kopie dieser Software und der zugehörigen Dokumentationsdateien (die "Software") erhält, kostenlos die Erlaubnis erteilt, die Software ohne Einschränkung zu nutzen, einschließlich und ohne Ausnahme der Rechte zur Verwendung, Vervielfältigung, Änderung, Zusammenführung, Veröffentlichung, Verbreitung, Unterlizenzierung und/oder zum Verkauf von Kopien der Software, und um Personen, denen die Software zur Verfügung gestellt wird, dies unter den folgenden Bedingungen zu gestatten:
Der obige Urheberrechtshinweis und dieser Erlaubnishinweis müssen in allen Kopien oder wesentlichen Teilen der Software enthalten sein.
DIE SOFTWARE WIRD "WIE BESEHEN" ZUR VERFÜGUNG GESTELLT, OHNE IRGENDEINE GEWÄHRLEISTUNG, WEDER AUSDRÜCKLICH NOCH IMPLIZIT, EINSCHLIESSLICH, ABER NICHT BESCHRÄNKT AUF DIE GEWÄHRLEISTUNG DER MARKTGÄNGIGKEIT, DER EIGNUNG FÜR EINEN BESTIMMTEN ZWECK UND DER NICHTVERLETZUNG VON RECHTEN. IN KEINEM FALL SIND DIE AUTOREN ODER URHEBERRECHTSINHABER FÜR JEGLICHE ANSPRÜCHE, SCHÄDEN ODER ANDERE VERPFLICHTUNGEN HAFTBAR, SEI ES AUS VERTRAG, UNERLAUBTER HANDLUNG ODER ANDERWEITIG, DIE AUS ODER IM ZUSAMMENHANG MIT DER SOFTWARE ODER DER NUTZUNG ODER ANDEREN GESCHÄFTEN MIT DER SOFTWARE ENTSTEHEN.