https://www.roe.ch/sslsplit
SSLSPLIT est un outil pour les attaques d'homme dans le milieu contre les connexions réseau cryptées SSL / TLS. Il est destiné à être utile pour la criminalistique du réseau, l'analyse de la sécurité des applications et les tests de pénétration.
SSLSPLIT est conçu pour terminer de manière transparente les connexions qui sont redirigées vers elle à l'aide d'un moteur de traduction d'adresses réseau. SSLSPLIT met ensuite fin à SSL / TLS et initie une nouvelle connexion SSL / TLS à l'adresse de destination d'origine, tout en enregistrant toutes les données transmises. Outre l'opération basée sur NAT, SSLSPLIT prend également en charge les destinations statiques et l'utilisation du nom du serveur indiqué par SNI comme destination en amont. SSLSPLIT est purement un proxy transparent et ne peut pas agir comme un proxy HTTP ou SOCKS configuré dans un navigateur.
SSLSPLIT prend en charge les connexions Plain TCP, PLAIN SSL, HTTP et HTTPS sur IPv4 et IPv6. Il a également la capacité de mettre à niveau dynamiquement un TCP simple vers SSL afin de prendre en charge génériquement SMTP startTLS et de mécanismes de mise à niveau similaires. SSLSPLIT prend en charge l'indication du nom du serveur (SNI) et est capable de travailler avec les clés RSA, DSA et ECDSA et les suites DHE et ECDHE Cipher. Selon la version d'OpenSSL construite contre, SSLSPLIT prend en charge SSL 3.0, TLS 1.0, TLS 1.1 et TLS 1.2, et éventuellement SSL 2.0.
Pour les connexions SSL et HTTPS, SSLSPLIT génère et signe des certificats X509V3 forgés à la volée, en imitant le sujet DN sujet du certificat de serveur d'origine, l'extension subjectealtname et d'autres caractéristiques. SSLSPLIT a la possibilité d'utiliser des certificats existants dont la clé privée est disponible, au lieu de générer des certificats. SSLSPLIT prend en charge les certificats Null-Prefix CN mais autrement n'implémente pas les exploits par rapport aux vulnérabilités de vérification des certificats spécifiques dans les piles SSL / TLS.
SSLSPLIT met en œuvre un certain nombre de défenses contre les mécanismes qui empêcheraient normalement les attaques MITM ou les rendraient plus difficiles. SSLSPLIT peut refuser les demandes OCSP de manière générique. Pour les connexions HTTP et HTTPS, les en-têtes SSLSPLIT Mangles pour empêcher la clé publique inscrit au serveur épinglent (HPKP), évitez les restrictions de sécurité des transports strictes (HSTS), évitez l'application de transparence du certificat (Expect-CT) et empêchez la commutation vers Quic / SPDY, HTTP / 2 ou les colocules (Upgrade, le protocols alternatif). La compression HTTP, les encodages et la main-d'œuvre sont désactivés pour rendre les journaux plus lisibles.
Les options de journalisation incluent les fichiers traditionnels SSLSPlit Connect et le contenu ainsi que les fichiers PCAP et la miroir décryptée du trafic vers une interface réseau. De plus, les certificats, les secrets maîtres et les informations de processus locaux peuvent être enregistrés.
Voir la page manuelle SSLSPLIT (1) pour plus de détails sur l'utilisation de SSLSPLIT et la configuration des différents moteurs NAT.
SSLSPLIT dépend des bibliothèques OpenSSL, LiBevent 2.x, LibPCAP et Libnet 1.1.x par défaut; libpcap et libnet ne sont pas nécessaires si la fonction de mise en miroir est omise. La construction dépend de la marque GNU et d'un environnement POSIX.2 dans PATH . Si disponible, PKG-Config est utilisé pour localiser et configurer les dépendances. Les tests unitaires en option dépendent de la bibliothèque de chèques.
SSLSPLIT prend actuellement en charge les systèmes d'exploitation suivants et les mécanismes NAT:
La prise en charge des informations sur les processus locaux ( -i ) est actuellement disponible sur Mac OS X et FreeBSD.
Les fonctionnalités SSL / TLS et la compatibilité dépendent considérablement de la version d'OpenSSL liée. Pour des résultats optimaux, utilisez une version récente d'OpenSSL ou de Libressl.
Avec les exigences ci-dessus disponibles, exécutez:
make
make test # optional unit tests
make sudotest # optional unit tests requiring privileges
make install # optional install
Les dépendances sont automatiquement fimirées à l'aide de PKG-Config. Si les dépendances ne sont pas ramassées et fixement PKG_CONFIG_PATH n'aide pas, vous pouvez spécifier leurs emplacements respectifs manuellement en définissant OPENSSL_BASE , LIBEVENT_BASE , LIBPCAP_BASE , LIBNET_BASE et / ou CHECK_BASE aux préfixes respectifs.
Vous pouvez remplacer le préfixe d'installation par défaut ( /usr/local ) en définissant PREFIX . Pour plus d'options de construction et de défauts de construction par défaut, voir GNUmakefile et defaults.h .
Voir les pages manuelles sslsplit(1) et sslsplit.conf(5) pour la documentation utilisateur. Voir NEWS.md pour les notes de publication énumérant des changements importants entre les versions et SECURITY.md pour des informations sur la divulgation de la vulnérabilité de sécurité.
SSLSPLIT est fourni en vertu d'une licence BSD à 2 clauses. SSLSPLIT contient des composants autorisés en vertu des licences MIT et APSL. Voir LICENSE , LICENSE.contrib et LICENSE.third ainsi que les en-têtes de fichiers source respectifs pour plus de détails.
Voir AUTHORS.md pour la liste des contributeurs.
SSLSPLIT a été inspiré par mitm-ssl par les Claes M. Nyberg et sslsniff par Moxie Marlinspike, mais ne partage aucun code source avec eux.