sábado, julio 03, 2010

Crackear conexiones VPN PPTP MS-CHAPv2 (I de III)

***********************************************************************************************
- Crackear conexiones VPN PPTP con MS-CHAPv2 (I de III)
- Crackear conexiones VPN PPTP con MS-CHAPv2 (II de III)
- Crackear conexiones VPN PPTP con MS-CHAPv2 (III de III)
Autores: Juan Luis G. Rambla MS MVP Security & Chema Alonso
***********************************************************************************************

PPP, L2TP, PPTP

El termino VPN , va unida desde su origen a la de seguridad. Sin embargo este axioma no se cumple en todas su facetas. La conexión de redes virtuales privadas, definen eso, una conexión “segura” a través de un medio inseguro como puede ser Internet. Pero ¿cuál es verdaderamente la seguridad que ofrecen?

En los sistemas tradicionales que han soportado los escenarios Microsoft para clientes VPN, el encapsulamiento se realizaba a través del protocolo de capa 2 Point to Point Protocol (PPP). La realización del túnel se realizaba mediante los protocolos Point to Point tunneling Protocol (PPTP, propietario de Microsoft) o Layer 2 Tunneling Protocol (L2TP, estándar IETF). Ni PPTP ni L2TP describen mecanismos de cifrado o autenticación, dejando esta tarea al protocolo PPP.

De cara a la autenticación, PPP depende de los protocolos de autenticación implementables. Para escenarios Microsoft, los mecanismos admitidos son: PAP, SPAP, CHAP, MS-CHAP / MS-CHAPv2 y EAP-TLS. Excepto para el último, que implica una solución con infraestructura PKI, existen ataques conocidos que permiten recuperar una autenticación de usuario y contraseña, mediante la implementación de diferentes ataques.

L2TP, inicialmente, no ofrece mejoras ostensibles con respecto a PPTP, por lo que no aportaba ninguna solución adicional de seguridad que las planteadas ya inicialmente. La gran diferencia entre PPTP y L2TP es que el primero, utiliza como protocolo de enrutado a GRE mientras que el segundo utiliza IP. Es decir, si hay una conexiónn PPTP o L2TP/IP no se autentica a nivel de máquina, por lo que el tráfico podría ser manipulado con ataques MITM haciendo que pasara por máquinas de atacantes. Este escenariio deja toda la seguridad de la conexión en manos de la robustez del cifrado a nivel PPP y de la fortaleza del sistema de autenticación.

Consciente de este hecho, Microsoft decidió en su momento utilizar L2TP en su variante con IPsec, que garantizaba una mayor seguridad mediante encapsulamiento, cifrado y firmado en capa 3. El uso de IPSec, no en su variante Pre-Shared Key, para autenticar las máquinas de la conexión, impediría la manipulación del tráfico por medio de técnias de Man In The Middle, dificultando cualquier posible ataque. Sin embargo, el protocolo PPTP deposita la seguridad en PPP, que será el encargado de garantizar el proceso de autentificación y cidfrado y la autenticación no se hace a nivel de máquina.

Debilidades

Como ya se ha dicho, la conexión PPTP es susceptible a un ataque de Man in the Middle (MITM), lo que implicaría el posible robo del intercambio de información de autenticación que tuviera lugar al inicio de la conexión VPN. Puesto que PPP no ofrece ninguna garantía de cifrado al proceso de negociación de la autenticación, la seguridad recae sobre el mecanismo de autenticación elegido.

Los sistemas CHAP, PAP, SPAP cuentan, desde hace tiempo, con vulnerabilidades conocidas que permiten su explotación y sólo deben implementarse en entornos "legacy" como solución de compatibilidad y, por supuesto, tomando medidas de protección añadidas.

En el caso de sistemas MS-CHAPv2, Bruce Schneier, Mudge & David Wagner publicaron en 1999 un paper llamado "Cryptanalysis of Microsoft's PPTP Authentication Extensions (MS-CHAPv2) en el que se explican las debilidades de las implementaciones MS-CHAPv1 y MS-CHAPv2. Este trabajo fue continuado por Jochen Eisinger que publicó en 2010 "Exploiting known security holes in Microsoft's PPTP Authentication Extensions (MS-CHAPv2) en el que se describe el algoritmo que hay que implementar para realizar una ataque con éxito a un proceso de autenticación MS-CHAPv2 mediante una explotación offline. Es decir, una vez grabada la sesión.

Resumen del proceso MS-CHAPv2

MS-CHAPv2 proporciona autenticación mutua con la generación de claves de cifrado de datos iniciales más seguras para el Cifrado punto a punto de Microsoft (MPPE) y diferentes claves de cifrado para los datos enviados y los datos recibidos. La autenticación se basa en el método desafío respuesta:

1. El cliente solicita un desafío del servidor.

2. El servidor devuelve un desafío aleatorio de 16 bytes.

3. El cliente genera un número de 16 bytes aleatorio denominado "Peer Authenticator Challenge".

4. El cliente genera una clave de 8 bytes partiendo del desafio recibido previamente del servidor, el generado por el equipo cliente y la cuenta de usuario.

5. La respuesta de 24 bytes, es generada utilizando la funcoón del hash NT de Windows y la clave generada en el paso 4.

6. El servidor utiliza el hash de la contraseña del usuario almacenada en la base de datos para descifrar la respuesta. Si el bloque descifrado coincide con el desafío, el cliente es autenticado.

7. El servidor utiliza la clave de 16 bytes del cliente y el hash de la contraseña para crear una respuesta del autenticador de 20 bytes.

8.- El cliente procesa una respuesta del autenticador. Si la respuesta procesada coincide con la respuesta recibida, el servidor es autenticado.

Puesto que PPP no aporta un sistema de cifrado adicional al proceso de negociación de la autenticación, este procedimiento del intercambio de claves puede ser interceptado mediante una ataque MITM para realizar un ataque offline a posteriori.

Una contraseña corta y débil podrá ser obtenida con mayor eficacia que una contraseña más larga y compleja. El mejor algoritmo basado exclusivamente en usuario y contraseña es MS-CHAPv2, pero incluso éste es susceptible a un ataque basado en diccionario.

***********************************************************************************************
- Crackear conexiones VPN PPTP con MS-CHAPv2 (I de III)
- Crackear conexiones VPN PPTP con MS-CHAPv2 (II de III)
- Crackear conexiones VPN PPTP con MS-CHAPv2 (III de III)
Autores: Juan Luis G. Rambla MS MVP Security & Chema Alonso
***********************************************************************************************

3 comentarios:

  1. Teniendo en cuenta que cualquier protocolo de seguridad que encabece su nombre con MS deja de perder de inmediato su faceta de seguridad...

    "Bromas" a parte, me alegro de volver a ver por aquí posts que no sean de extremaantigoogle.

    Saludos.

    ResponderEliminar
  2. Hola,

    como me he pegado con esto hace poco, un par de comentarios de esos quisquillosillos :-/:

    -yo entiendo que tanto pptp como l2tp trabajan sobre IP, lo que pasa es pptp sobre IP usa GRE, y sobre GRE PPP, mientras que l2tp usa UDP sobre IP (¿se ha entendido algo? me temo que no)
    -el proceso de autenticación que habéis descrito es el de MS-CHAPv1, no el de MS-CHAPv2.

    Sólo eso, que hoy tengo más ganas de incordiar que de costumbre, pero en cualquier caso el post tiene buena pinta.

    Saludos!!

    ResponderEliminar
  3. @ramandi, eres un crack! Mil gracias, ya está arreglado.

    Saludos!

    ResponderEliminar