CASSLE: Herramienta para verificar que los certificados SSL TLS de un sitio web son verdaderos
TLS (Transport Layer Security) es el protocolo que se encarga de añadir seguridad de tránsito a nuestra comunicaciones a través de Internet. Decimos de tránsito porque si nuestros sistemas están comprometidos de poco nos servirá esta capa de protección que se encuentra en la capa de transporte de TCP/IP. Durante estos años, TLS ha tenido el foco de la comunidad de seguridad por sus numerables ataques, hoy os presentamos la herramienta CASSLE para verificar que los certificados del sitio web son verdaderos.
¿Qué hace la herramienta CASSLE?
Un vector de ataque que ha sufrido TLS últimamente ha sido en la autenticación, la arquitectura de clave pública -PKI-. Alguno de estos ataques fueron: DigiNotar y ANSSI.
Debido a que estos problemas son cada día más frecuentes, y que además es un grave problema para la seguridad de las comunicaciones, Enrique de la Hoz me propuso la idea de desarrollar CASSLE para verificar mejor los certificados que se intercambian en el handshake de TLS para autenticar contra la otra entidad.
Para verificar los certificados, la herramienta que propongo (CASSLE) es un sniffer que escucha la red para extraer los certificados. Una vez que ya tenemos el certificado en la herramienta, se compruebe con una pila de verificadores. Estos verificadores son diferentes técnicas que se usan actualmente para comprobar que un certificado digital de un sitio web es legítimo (Pinning, DANE, Certificate Transparency) cuya finalidad es la de intentar obtener una mejor respuesta sobre la autenticación de nuestras comunicaciones TLS.
Una vez detectado un problema, el usuario podría definir qué acción realizar. Nosotros como ejemplo, emitimos una notificación para el sistema operativo Mac OS X, pero se podrían desarrollar otro tipos de avisos como por ejemplo enviar un email a la cuenta del administrador del sistema e incluso redirigir el navegador a una página web creada por la propia herramienta a modo de aviso.
La idea del proyecto es el principio de lo que podría ser una herramienta más completa, pues una vez detectada la amenaza habría diferentes salidas, como por ejemplo, detectar qué proceso es el que ha sufrido un ataque Man In The Middle (MITM) y terminarlo. O si nos metemos en la tecnología SDN, una vez detectada una amenaza se podría aislar el flujo de datos de la máquina víctima para seguir analizando la causa e implicaciones sin comprometer el resto de la red.
Demostración de cómo funciona CASSLE
Lo primero que tenemos que hacer es descargarnos mi herramienta de GitHub, a continuación debemos cumplir cada uno de los requisitos que se necesitan para ejecutarla como por ejemplo Python, libpcap-python, pymongo y otras aplicaciones necesarias para su correcto funcionamiento.
En este vídeo se puede ver como Google Chrome da por válido certificados revocados y, ante un ataque de MITM usando un certificado expedido por una CA de confianza es indetectable pues a nivel de protocolo es todo correcto, ya que el nuevo certificado sigue estando firmando por una entidad de confianza. Gracias a la herramienta y usando diferentes técnicas somos consciente de estos fallos.
Conclusiones
La herramienta se podría etiquetar por ahora como una PoC (Prueba de Concepto) que intenta demostrar la necesidad de estas herramientas para verificar correctamente los certificados ya que el software que usamos a diario tiene cierta restricciones para implementar nuevas tecnologías. Gracias a esta herramienta, nosotros tenemos la flexibilidad de añadir una seguridad adicional.
Próximos pasos en CASSLE
A esta herramienta quedaría por añadir.
- Integrar DNSSEC para verificar la respuesta de DANE.
- Añadir soporte para verificar el SCT de la tecnología de Certificate Transparency.
- Añadir procesamiento paralelo pues por ahora todo es serializado.
Una vez añadida estas mejoras a CASSLE se podría empezar a plantear los siguientes pasos que, como he comentado anteriormente, sólo depende de la imaginación del lector. Aquí tendrían cabida las propuestas anteriormente mencionadas o incluso emplear este software como base para la creación de un sistema distribuido, a la manera de la aproximación de notarios, para intercambiar información sobre lo que debería estar viendo en la red, por ejemplo.
Artículo realizado por Álvaro Felipe para RedesZone.net