https://www.roe.ch/sslsplit
SSLSPLIT es una herramienta para los ataques de Man-in-the-Middle contra las conexiones de red cifradas SSL/TLS. Está destinado a ser útil para forense de red, análisis de seguridad de aplicaciones y pruebas de penetración.
SSLSPLIT está diseñado para terminar de manera transparente las conexiones que se redirigen con un motor de traducción de direcciones de red. SSLSPLIT luego termina SSL/TLS e inicia una nueva conexión SSL/TLS a la dirección de destino original, mientras registra todos los datos transmitidos. Además de la operación basada en NAT, SSLSPLIT también admite destinos estáticos y utilizando el nombre del servidor indicado por SNI como destino aguas arriba. SSLSPLIT es puramente un proxy transparente y no puede actuar como un proxy HTTP o calcetines configurado en un navegador.
SSLSPLIT admite conexiones SLL, SSL, HTTP y HTTPS simples a través de IPv4 e IPv6. También tiene la capacidad de actualizar dinámicamente TCP simple a SSL para admitir genéricamente los inicio SMTP y mecanismos de actualización similares. SSLSPLIT admite completamente la indicación del nombre del servidor (SNI) y puede trabajar con las claves RSA, DSA y ECDSA y las suites de cifrado DHE y ECDHE. Dependiendo de la versión de OpenSSL construida contra, SSLSPLIT admite SSL 3.0, TLS 1.0, TLS 1.1 y TLS 1.2, y opcionalmente también SSL 2.0.
Para las conexiones SSL y HTTPS, SSLSPLIT genera y firma los certificados X509V3 forjados sobre la marcha, imitando el asunto DN del certificado del servidor original, la extensión del nombre de sujeción y otras características. SSLSPLIT tiene la capacidad de usar certificados existentes de los cuales la clave privada está disponible, en lugar de generar los falsificados. SSLSPLIT admite certificados CN NULL-PREFIX pero de lo contrario no implementa exploits contra vulnerabilidades específicas de verificación de certificados en las pilas SSL/TLS.
SSLSPLIT implementa una serie de defensas contra mecanismos que normalmente evitarían los ataques MITM o los dificultarían más. SSLSPLIT puede negar las solicitudes de OCSP de manera genérica. Para las conexiones HTTP y HTTPS, los encabezados de mangles SSLSPLIT para evitar la fijación de clave pública instruida por el servidor (HPKP), evitar restricciones de seguridad de transporte estrictas (HST), evitar la aplicación de transparencia de certificados (esperanza-CT) y evitar el cambio a QUIC/SPDY, HTTP/2 o websockets (actualización (actualización, protocolas alternativas). La compresión HTTP, las codificaciones y el mantenimiento de la vida están desactivados para hacer que los registros sean más legibles.
Las opciones de registro incluyen archivos tradicionales de registro de contenido y conexión SSLSPLIT, así como archivos PCAP y reflejando el tráfico descifrado en una interfaz de red. Además, se pueden registrar certificados, secretos maestros e información del proceso local.
Consulte la página manual SSLSPLIT (1) para obtener detalles sobre el uso de SSLSPLIT y configurar los diversos motores NAT.
SSLSPLIT depende de las bibliotecas OpenSSL, LibEvent 2.x, LibPCAP y Libnet 1.1.x de forma predeterminada; LibpCap y Libnet no son necesarios si se omite la función de reflejo. La construcción depende de GNU y un entorno POSIX.2 en PATH . Si está disponible, PKG-Config se usa para localizar y configurar las dependencias. Las pruebas unitarias opcionales dependen de la biblioteca de verificación.
SSLSPLIT actualmente admite los siguientes sistemas operativos y mecanismos NAT:
El soporte para la información del proceso local ( -i ) está actualmente disponible en Mac OS X y FreeBSD.
Las características y la compatibilidad de SSL/TLS dependen en gran medida de la versión de OpenSSL vinculada. Para obtener resultados óptimos, use una versión reciente de OpenSSL o Libressl.
Con los requisitos anteriores disponibles, ejecute:
make
make test # optional unit tests
make sudotest # optional unit tests requiring privileges
make install # optional install
Las dependencias se autoconfiguran utilizando PKG-Config. Si las dependencias no se recogen y arreglan PKG_CONFIG_PATH no ayuda, puede especificar sus ubicaciones respectivas manualmente configurando OPENSSL_BASE , LIBEVENT_BASE , LIBPCAP_BASE , LIBNET_BASE y/o CHECK_BASE en los prefijos respectivos.
Puede anular el prefijo de instalación predeterminado ( /usr/local ) configurando PREFIX . Para obtener más opciones de compilación y valores predeterminados de tiempo de compilación, consulte GNUmakefile y defaults.h .
Consulte las páginas manuales sslsplit(1) y sslsplit.conf(5) para la documentación del usuario. Consulte NEWS.md para las notas de la versión que enumera cambios significativos entre los comunicados y SECURITY.md para obtener información sobre la divulgación de vulnerabilidad de seguridad.
SSLSPLIT se proporciona bajo una licencia BSD de 2 cláusulas. SSLSPLIT contiene componentes licenciados bajo las licencias MIT y APSL. Consulte LICENSE , LICENSE.contrib y LICENSE.third , así como los respectivos encabezados de archivo fuente para obtener más detalles.
Consulte AUTHORS.md para la lista de contribuyentes.
SSLSPLIT se inspiró en mitm-ssl por Claes M. Nyberg y sslsniff por Moxie Marlinspike, pero no comparte ningún código fuente con ellos.