Cómo auditar y prevenir WinShock, la falla en Schannel de Windows

Iniciado por r32, 23 Noviembre 2014, 01:53 AM

0 Miembros y 1 Visitante están viendo este tema.

r32



Las vulnerabilidades en los sistemas operativos y aplicaciones ya son moneda corriente en la actualidad, por lo que es habitual encontrarse con actualizaciones constantes que corrigen estas fallas. La vulnerabilidad WinShock reportada la semana pasada radica en un complemento de Microsoft Secure Channel, que implementa los protocolos SSL y TLS. Este error se produce por no filtrar adecuadamente los paquetes especialmente mal formados, permitiendo a un atacante inyectar tráfico malicioso, obteniendo como resultado la ejecución de código arbitrario.

El equipo de investigación de seguridad informática de IBM encontró que el problema afectaba a los sistemas desde Windows 95, es decir, que ha estado presente en la plataforma durante los últimos 19 años. Por su parte, Microsoft ha emitido la correspondiente actualización que corrige esta falla (CVE 2014-6321) excluyendo a Windows XP, ya que el pasado 8 de abril dejó de brindar soporte para esta versión.

Teniendo en cuenta que Schannel puede ser usado en cualquier componente que usa SSL/TLS, por ejemplo Active Directory, Windows Update, Exchange e Internet Explorer inclusive, esta falla facilita ataques remotos mediante la ejecución de un código en navegadores Internet Explorer a partir de su versión 3.0 en adelante. Como mencionamos anteriormente, esto afecta a todas las versiones de Windows, tanto clientes como servidores.

Cabe remarcar que The Verge indicó que el bug tiene calificación de 9.3 sobre 10 por la CVSS. Esto significa que es importantísimo descargar el parche que corrige este problema de seguridad.

¿Cómo saber si necesitas parchear?

Desde que se supo sobre esta falla de gran magnitud en sistemas Windows, muchos investigadores han comenzado a experimentar con ella. Johannes B. Ullrich publicó un experimental escáner en Bash, muy útil para verificar si el servicio necesita ser parcheado o no.

En sí, el escáner no busca vulnerabilidades, sino que comprueba que el servicio analizado posee soporte para los cuatro cifrados nuevos que se agregaron en la actualización MS14-066. Este script bash usa OpenSSL sobre *Nix. Aquí veremos el escáner por dentro:



Tal como se muestra en el primer recuadro rojo, se debe establecer la ruta donde se encuentra instalado OpenSSL en el sistema, en este caso es dentro del directorio "/usr/bin/openssl". Seguido de esto, el recuadro rojo que le sigue marca los cifrados que la herramienta comprobará usando OpenSSL.

Más abajo se encuentra toda la parte de programación que respecta a los parámetros que recibirá por parte del usuario, es decir el host a escanear:



Como se ve en el recuadro amarillo, están los parámetros a ingresar por el usuario, tales como direcciones IP, o nombre del sitio a comprobar y puerto de destino. En el recuadro inferior rojo, podemos apreciar que cuando no encuentra el cifrado DHE-RSA-AES-256-SHA256, emite el aviso de que se tiene una versión no actualizada de OpenSSL, y recomienda instalar la versión 1.0.1h o superior.

Luego, realiza comprobación de compatibilidad SSL y TLS, como podemos ver a continuación




En el recuadro de color rojo superior se muestra cómo genera la comprobación de compatibilidad con SSL; mientras que en el recuadro inferior hace la misma comprobación pero respecto a TLS.

Una vez que crea la conexión al host a escanear y hace las respectivas comprobaciones de compatibilidad, comprueba el estado que genera el handshake. De acuerdo a si es positivo o negativo este handshake, determina si es soportado el cifrado o no, veamos el ejemplo en la captura:



Algo que podría ocurrir es que no permita ejecutar el script debido a falta de permisos, pero esto se soluciona con el siguiente comando:

Chmod +x [nombrescript.sh]

A continuación veremos dos ejemplos de resultados de escaneos, con cifrados soportados y no soportados:



En este primer análisis podemos ver que solo soporta dos de los nuevos cifrados implementados en la corrección de MS14-066. Mientras que en el ejemplo que vemos a continuación, se puede ver que tiene soporte para los cuatro cifrados nuevos:



Remarcamos que por motivos de seguridad escondemos las direcciones URL escaneadas. De todas maneras, como mencionamos anteriormente, este programa en Bash no busca vulnerabilidades, aunque igualmente sugerimos hacer un análisis proactivo del estado de los servicios con esta herramienta para conocer su estado.

Desde el Laboratorio de Investigación de ESET Latinoamérica, recomendamos como buena práctica habitual ante vulnerabilidades actualizar a la fecha los sistemas operativos y sus aplicaciones.

Créditos imagen: ©Joe Hall/Flickr

Autor Ignacio Pérez, ESET