FREAK es una vulnerabilidad en la gestión del nivel del cifrado de conexion SSL/TLS que podría permitir a atacantes maliciosos la negociación de un cifrado débil en la comunicación de manera éste pudiera descifrar el tráfico y obtener las claves de cifrado de una forma relativamente simple, permitiendo a usuarios no autorizados acceder a la información que envíen y reciban estos servidores, llegando incluso a poder suplantarlos.
FREAK ya ha sido encontrada siendo utilizada desde el primer dia de su descubrimiento, tanto en servidores Linux, Windows como Mac.
Aunque todos los fabricantes ya se han puesto manos a la obra para ofrecer actualizaciones que solucionen esta vulnerabilidad, a día de hoy, casi 100000 dominios .es aún son vulnerables.
Se puede consultar si un servidor es vulnerable de diferentes formas, accediendo a páginas creadas especificamente para tal fin, como http://www.nagios.com/freak-vulnerability-tester o https://tools.keycdn.com/freak, o directamente desde nuestro Linux con el comando:
openssl s_client -cipher EXPORT -connect [DOMINIO]:443 < /dev/null 2>/dev/null | grep SSL-Session -c |
Si este comando devuelve "1" es que el sistema podria ser vulnerable, a través de su puerto 443 (https).
Existen un total de 1763357 dominios .es registrados y activos (a fecha del pasado jueves 12 de Marzo), y este listado completo se puede solicitar a Red.es.
A lo largo de los ultimos días, he estado lanzando el anterior comando contra los puertos 443 de los 1763357 dominios .es registrados hasta la fecha. Los resultados han sido que aproximadamente el 5.4% de estos dominios aun son vulnerables.
Aunque la cifra puede parecer pequeña, esto significa que aproximadamente 95000 dominios son vulnerables (a través de las conexiones a su puerto 443, no se ha probado conectando a otros puertos típicos como el 8443 o similares).
Para realizar este estudio se utilizaron los siguientes tres shell scripts:
root@kali:~/tmp# cat full_check.sh #!/bin/bash FILE=/tmp/Full_listing_es_domains TOT=`wc -l $FILE | awk '{ print $1 }'` k=0 j=0 while [ $k -lt $TOT ] do next=`echo "100000 * $j" | bc` filename="list_$k_$next" head -$next $FILE | tail -100000 > $filename; k=`echo "$k + 100000" | bc` j=`echo "$j + 1" | bc` /tmp/check_100000.sh $filename & done |
Este era el script principal, que divide fichero inicial en 18 partes de 100000 (o menos) dominios y lanza 18 procesos que procesarán cada uno 100000 dominios.
Este segundo script recorre los 100000 dominios que le tocan y lanza un openssl para cada dominio. No deja haya más de 500 openssl lanzado simultáneamente en memoria:
root@kali:~/tmp# cat check_100000.sh #/bin/bash for i in `cat $1 | cut -d'|' -f 1 | sed 's/"//g'` do /tmp/check_server.sh $i $1_output.txt & if [ `ps -ef | grep openssl | wc -l` -gt 500 ] then sleep 10 fi done |
El tercer script es el que lanza el openssl y solo comprueba la vulnerabilidad contra un dominio en concreto:
root@kali:~/tmp# cat check_server.sh #!/bin/bash NOMBRE=`echo -n $1 ":"` VALOR=`openssl s_client -cipher EXPORT -connect $1:443 < /dev/null 2>/dev/null | grep SSL-Session -c` echo $1 ":" $VALOR >> $2 |
Por supuesto esto es infinitamente mejorable. En python por ejemplo podría hacerse mejor. Sin embargo, asi me ha funcionado y asi lo dejo por si alguien quiere repetir el proceso.
Resultados
Aunque el proceso aún no ha terminado, se han procesado hasta el momento 1.300.280 dominios '.es'. De los cuales se han detectado un total de 70026 vulnerables. Esto significa que en estos momentos son un 5.4% del total, lo que, extrapolando al numero total de 1.7 millones de dominios '.es' son mas de 95000 los que a día de hoy serían vulnerables.
Algunos de los dominios que actualmente son vulnerables:
Por desgracia España aun no dispone de un servidor whois público por lo que resulta difícil poder comunicar este problema a los encargados de cada dominio. Red.es proporciona un servicio whois utilizando un cliente Java (!!!) con un máximo de 10 solicitudes por minuto.
L atarea de comunicar a las distintas empresas la vulnerabilidad en sus servidores Web deberá ser realizada por un organismo púbico como INCIBE.
PS: El listado final se redujo hasta los 92862 dominios vulnerables. Lo que significa un 5,26% de todos los dominios. Como este estudio se produjo a los largo de varios dias, he vuelto a lanzar los scripts unicamente sobre los 92862 positivos para conocer la evolución en los últimos 3 días y 1164 dominios han resuelto el problema en sus servidores. Esta vez el script tardo apenas unas horas porque solo ha comprobado esos 92000 dominios. Sin embargo aún quedan al menos 91698 servidores vulnerables. Iré actualizando esta entrada para ver cómo evoluciona el parcheado ante esta vulnerabilidad.
No hay comentarios:
Publicar un comentario