https://www.roe.ch/sslsplit
SSLSPLIT ist ein Werkzeug für Angriffe von Man-in-the-Middle-Angriffen gegen SSL/TLS-verschlüsselte Netzwerkverbindungen. Es soll für die Netzwerk -Forensik, Anwendungssicherheitsanalyse und Penetrationstests nützlich sein.
SSLSPLIT ist so konzipiert, dass sie mithilfe einer Netzwerkadress -Übersetzungsmotor transparent Verbindungen beenden. SSLSPLIT endet dann SSL/TLS und initiiert eine neue SSL/TLS -Verbindung zur ursprünglichen Zieladresse, während alle übertragenen Daten protokolliert werden. Neben dem NAT -basierten Betrieb unterstützt SSLSPLIT auch statische Ziele und die Verwendung des von SNI als vorgelagerten Ziels angegebenen Servernamens. SSLSPLIT ist ein rein transparenter Proxy und kann nicht als HTTP- oder Socken -Proxy fungieren, der in einem Browser konfiguriert ist.
SSLSPLIT unterstützt einfache TCP-, einfache SSL-, HTTP- und HTTPS -Verbindungen über IPv4 und IPv6. Es hat auch die Möglichkeit, einfache TCP auf SSL dynamisch zu aktualisieren, um SMTP -Starttls und ähnliche Upgrade -Mechanismen generisch zu unterstützen. SSLSPLIT unterstützt die Servername -Indikation (SNI) vollständig und kann mit RSA-, DSA- und ECDSA -Keys sowie DHE- und ECDHE -Cipher -Suiten arbeiten. Abhängig von der Version von OpenSSL gegen SSLSPLIT unterstützt SSL 3.0, TLS 1.0, TLS 1.1 und TLS 1.2 sowie optional SSL 2.0.
Für SSL- und HTTPS-Verbindungen generiert SSLSPLIT und Zeichen gefälschte X509V3-Zertifikate im Fliege, wobei das Thema DN des ursprünglichen Serverzertifikats, die Erweiterung der SubjektALTNAME und andere Merkmale nachahmt. SSLSPLIT kann vorhandene Zertifikate verwenden, für die der private Schlüssel verfügbar ist, anstatt gefälschte zu generieren. SSLSPLIT unterstützt Null-Prefix-CN-Zertifikate, implementiert jedoch ansonsten keine Exploits gegen bestimmte Schwachstellen für Zertifikatverifizierungen in SSL/TLS-Stacks.
SSLSPLIT implementiert eine Reihe von Abwehrmechanismen gegen Mechanismen, die normalerweise MITM -Angriffe verhindern oder sie erschweren. SSLSPLIT kann OCSP -Anforderungen auf generische Weise verweigern. Für HTTP- und HTTPS-Verbindungen vermeiden SSLSPLIT-Header, um die serverstrukturierte öffentliche Schlüsselkleine (HPKP) zu verhindern, strenge Sicherheitsbeschränkungen (HSTs) zu vermeiden, und die Durchsetzung von Zertifikattransparenz (Erwartung) und verhindern Sie, dass sie zu Quic/Spdy, HTTP/2 oder Websockets (UPGrade, Alternate Protecol). HTTP-Komprimierung, Codierungen und Keep-Alive sind deaktiviert, um die Protokolle lesbarer zu machen.
Zu den Protokollierungsoptionen gehören herkömmliche SSLSPLIT -Verbindungsdateien und Inhaltsprotokolldateien sowie PCAP -Dateien und das Spiegelung entschlüsselter Datenverkehr auf eine Netzwerkschnittstelle. Darüber hinaus können Zertifikate, Master -Geheimnisse und lokale Prozessinformationen protokolliert werden.
Weitere Informationen zur Verwendung von SSLSPLIT und Einrichten der verschiedenen NAT -Motoren finden Sie in der manuellen Seite SSLSPLIT (1).
SSLSPLIT hängt standardmäßig von den OpenSSL-, LiBEvent 2.x, libpcap und libnet 1.1.x -Bibliotheken ab; LIBPCAP und Libnet werden nicht benötigt, wenn die Spiegelfunktion weggelassen wird. Der Build hängt von GNU Make und einer POSIX.2 -Umgebung im PATH ab. Wenn verfügbar, wird PKG-Config verwendet, um die Abhängigkeiten zu lokalisieren und zu konfigurieren. Die optionalen Unit -Tests hängen von der Check -Bibliothek ab.
SSLSPLIT unterstützt derzeit die folgenden Betriebssysteme und NAT -Mechanismen:
Die Unterstützung für lokale Prozessinformationen ( -i ) ist derzeit unter Mac OS X und FreeBSD verfügbar.
SSL/TLS -Funktionen und Kompatibilität hängen stark von der Version von OpenSSL ab, mit der sie verknüpft sind. Verwenden Sie für optimale Ergebnisse eine aktuelle Version von OpenSSL oder Libressl.
Mit den oben genannten Anforderungen rennen Sie:
make
make test # optional unit tests
make sudotest # optional unit tests requiring privileges
make install # optional install
Die Abhängigkeiten werden mit PKG-Konfiguration autokonfiguriert. Wenn Abhängigkeiten nicht aufgegriffen werden und die Behebung PKG_CONFIG_PATH nicht hilft, können Sie ihre jeweiligen Positionen manuell angeben, indem Sie OPENSSL_BASE , LIBEVENT_BASE , LIBPCAP_BASE , LIBNET_BASE und/oder CHECK_BASE an die jeweiligen Präfixes einstellen.
Sie können das Standard -Installationspräfix ( /usr/local ) überschreiben, indem Sie PREFIX einstellen. Weitere Build-Optionen und -Anleitungsausfälle finden Sie in GNUmakefile und defaults.h .
Die Benutzerdokumentation finden Sie in den manuellen Seiten sslsplit(1) und sslsplit.conf(5) . In NEWS.md finden Sie Release -Notizen mit erheblichen Änderungen zwischen Freisetzungen und SECURITY.md für Informationen zur Offenlegung von Sicherheitsanfälligkeit.
SSLSPLIT wird unter einer 2-Klausel-BSD-Lizenz bereitgestellt. SSLSPLIT enthält Komponenten, die unter den MIT- und APSL -Lizenzen lizenziert wurden. Siehe LICENSE , LICENSE.contrib und LICENSE.third sowie die jeweiligen Quelldatei -Header für Einzelheiten.
Siehe AUTHORS.md für die Liste der Mitwirkenden.
SSLSPLIT wurde von mitm-ssl von Claes M. Nyberg und sslsniff von Moxie Marlinspike inspiriert, teilt jedoch keinen Quellcode mit.