Ich möchte eine Schwachstellenuntersuchung für Produkte durchführen, die auf einer Vielzahl von Geräten ausgeführt werden, indem deren HTTPS-Verkehr abgefangen wird. Ich möchte die Geräte jedoch nicht ändern, außer ein benutzerdefiniertes Zertifikat zu installieren .
Es scheint, dass SSLsplit das tut, was ich will, da es ermöglicht, dass " Verbindungen transparent über eine Netzwerkadressübersetzungs-Engine abgefangen und zu SSLsplit umgeleitet werden ". Soweit ich weiß, müssen diese NAT-Regeln nicht auf dem Gerät definiert werden, auf dem die Anwendung ausgeführt wird, auf der MITM ausgeführt wird, und ich kann iptables anpassen , um den Routerverkehr über SSLsplit auf einem Gerät umzuleiten, auf dem Fruity Wifi oder OpenWRT ausgeführt wird .
Ist SSLsplit mit geänderten iptables-Regeln ausreichend und ein vernünftiger Weg, dies zu tun , oder müsste ich auch andere Teile des Linux-Netzwerksystems ändern?
ANMERKUNG: Für das System, das ich erstellen möchte, muss auf Geräten ein Zertifikat im vertrauenswürdigen Stammspeicher installiert sein, damit Sie sich für dieses Abfangen "anmelden" können. Ich versuche nicht, ein System aufzubauen, um beliebigen Verkehr von unwilligen Geräten abzufangen.
Antworten:
Sie haben hier zwei Teile: Das SSLsplit, mit dem die Webserver-Clients eine Verbindung herstellen, und NAT, das die Zieladressen in Paketen austauscht, um sie an den SSLsplit-Server umzuleiten.
NAT muss auf dem Router eingerichtet werden, den die Clientgeräte verwenden, und die Zieladresse der Pakete vom tatsächlichen Zielserver auf den SSLsplit-Server ändern.
Dann kann SSLsplit die Verbindung aufnehmen und seine Sache tun: Verbindung zum fremden Host herstellen (verfügbar im TLS-Handshake) und Weiterleiten der Antwort.
Aus Netzwerksicht ist das Einzige, dass Sie sicherstellen müssen, dass Clients solche Netzwerkoptionen erhalten, dass ihr Standard-Gateway auf einen Router verweist, der das NAT ausführt.
quelle
Kurz gesagt, ja, es kann das richtige Tool sein, aber in der Tat macht es keine Chancen, wenn Sie SSLStrip , SSLSplit , Mitmproxy oder ein anderes Tool verwenden, das Ihre Arbeit erledigen kann. Sie sollten sich nur vor der Funktionsweise hüten.
Wie @Quantim erwähnt hat, ist dies nicht möglich, ohne ein benutzerdefiniertes Zertifikat / eine benutzerdefinierte Zertifizierungsstelle im Gerät hinter dem Router zu installieren / zu haben, da eine benutzerdefinierte Zertifizierungsstelle als Man-in-the-Middle für SSL-Verbindungen erforderlich ist und in der Lage sein muss, und zu generieren Bescheinigungen, denen das Opfer vertraut . Dabei muss das Opfer das Stammzertifizierungsstellenzertifikat des Angreifers in seinem Vertrauensspeicher haben. Die Erklärung, wie Zertifizierungsstellen funktionieren und wie Sie mit den genannten Tools das gewünschte Ergebnis erzielen können, geht über den Rahmen dieser Antwort hinaus. Je nach Clienttyp - Desktop-Browser oder Mobiltelefon - sollten Sie jedoch beachten, dass sich die Installation der Stammzertifikate etwas unterscheidet.
SSLsplit funktioniert ganz ähnlich wie andere transparente SSL-Proxy-Tools - wie Mitmproxy, das mehr Funktionen bietet und komplexer ist. Es fungiert als Man-in-the-Middle zwischen dem Client und dem eigentlichen Server. Vorausgesetzt, der Datenverkehr wird auf den Server umgeleitet, auf dem SSLsplit ausgeführt wird und abgehört wird, indem das Standard-Gateway , ARP-Spoofing , das Fälschen von DNS-Einträgen oder andere Mittel geändert werden . Mit anderen Worten, wie Sie vielleicht vermutet haben, nimmt SSLsplit SSL-Verbindungen auf eine Weise auf, die vorgibt, der eigentliche Server zu sein, mit dem der Client eine Verbindung herstellt und mit dem er kommunizieren möchte. Tatsächlich generiert es dynamisch ein Zertifikat und signiert es mit dem privaten Schlüssel eines CA-Zertifikats, dem der Client vertrauen muss - wird.
Um Ihre Frage zu beantworten: " Ist SSLsplit das richtige Tool, um HTTPS-Verkehr auf einem WLAN-Router abzufangen und neu zu verschlüsseln? ", Kann dies der Fall sein, aber wissen Sie genug, um dies zu tun? Wenn ja, knacken Sie den Jackpot mit Ihren Recherchen.
Und um zu antworten: " Ist SSLsplit mit geänderten iptables-Regeln ausreichend und ein vernünftiger Weg, dies zu tun, oder müsste ich auch andere Teile des Linux-Netzwerksystems ändern? ", Sollte ich sagen, wenn Sie Ihre IPTables korrekt konfiguriert haben Regelsätze und NAT / DNAT-Regeln, und wenn Ihre Clients das CA-Zertifikat als vertrauenswürdig betrachten können, ist dies ausreichend - mit geänderten iptables-Regelsätzen und der Umleitung des Client-Datenverkehrs zum Server werden Sie die Clients abfangen 'Verkehr weiter, wie bereits erwähnt. Übrigens müssen Sie beachten, dass das Wort " transparent " beim Rechnen bedeutet (eines Prozesses oder einer Schnittstelle), dass es funktioniert, ohne dass der Benutzer sich seiner Anwesenheit bewusst ist.
Auszug aus der Originaldokumentation:
Umleitung
Da das OP wissen muss, wie Anforderungen an SSLsplit umgeleitet werden, aber keinen Proxy einrichten möchte - wie in den Kommentaren erwähnt -, werde ich einen kurzen Einblick in diese Vorgehensweise geben und hoffe, dass dies helfen wird:
Achten Sie darauf, den Wert
net.ipv4.ip_forward
auf 1 zu setzen. Der Befehl, den ich oben verwendet habe,sysctl -w
ist nicht permanent. Wenn Sie es dauerhaft festlegen möchten, sollten Sie die Datei bearbeiten, in der/etc/sysctl.conf
Sie eine Zeile mit hinzufügen könnennet.ipv4.ip_forward = 1
.Standardmäßig ist bei den meisten Linux-Distributionen die IP-Weiterleitung deaktiviert. Und meiner Meinung nach ist dies eine gute Idee, da die meisten Benutzer sie nicht benötigen. Da Sie jedoch einen Linux-Router / Gateway einrichten, der auch für VPN-Server (pptp oder ipsec) nützlich ist, müssen Sie die Weiterleitung aktivieren. Dies kann auf verschiedene Arten geschehen, wie ich Ihnen gezeigt habe.
quelle
Dies ist nicht möglich, ohne ein benutzerdefiniertes Zertifikat / eine benutzerdefinierte Zertifizierungsstelle auf dem Gerät hinter dem Router zu installieren. In anderen Fällen können Sie als beliebiger Netzwerkdienst fungieren. SSLsplit generiert nur ein eigenes Zertifikat oder verwendet eines, für das Sie einen privaten Schlüssel angeben
Quelle
In beiden Fällen erhält ein Client ohne Ihr benutzerdefiniertes Zertifikat / Ihre benutzerdefinierte Zertifizierungsstelle einen ungültigen Fehler beim Ausstellen des Zertifikats
Transparentes Abfangen bedeutet, dass Sie nicht jeden Host angeben müssen, den Sie abfangen möchten, und den gesamten Datenverkehr abfangen können. Dies ist jedoch immer noch MitM Attact unter SSL
quelle