PDA

Ver la versión completa : Crackear conexiones VPN PPTP MS-CHAPv2



LUK
07-07-2010, 10:18
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 (http://en.wikipedia.org/wiki/Point-to-Point_Protocol)). La realización del túnel se realizaba mediante los protocolos Point to Point tunneling Protocol (PPTP (http://en.wikipedia.org/wiki/PPTP), propietario de Microsoft) o Layer 2 Tunneling Protocol (L2TP (http://en.wikipedia.org/wiki/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 (http://en.wikipedia.org/wiki/Challenge-handshake_authentication_protocol), MS-CHAP / MS-CHAPv2 (http://en.wikipedia.org/wiki/MS-CHAP) 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) (http://www.schneier.com/paper-pptpv2.pdf) 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) (http://penguin-breeder.org/pptp/download/pptp_mschapv2.pdf) 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.


Ataque con asleap + ettercap paso a paso

En este sentido la aplicación asleap (http://www.willhackforsushi.com/Asleap.html), creada originalmente para atacar los procesos de autenticación Wifi de Cisco para el protocolo LEAP, fue modificada en 2007 para poder atacar el proceso de autenticación MS-CHAP v2. Para esta demostración se hace uso de esta herramienta, junto con la aplicación Ettercap que se será la utilizada para la realización del ataque MITM. En todo este ejemplo se utiliza el LiveCD Backtrack (http://www.backtrack-linux.org/) que contiene, desde el año 2008, ambas herramientas. En este ejemplo se usará Backtrack 4.

El ataque es de tipo diccionario, por lo que es necesario crear previamente los ficheros de hashes e índices asociados al diccionario de terminos. Este diccionario es, simplemente,un fichero de texto plano que contendrá las palabras a probar. La generación del fichero de índices y hashes se construye con la utilidad genkeys que viene conjuntamente con asleap. La siguiente imagen muestra la generación de los ficheros de hashes e índices.



http://4.bp.blogspot.com/_Y2uWeGSk9Sw/TC3IXn1C4pI/AAAAAAAAGi0/8WPoXgGzMz4/s400/Figura1.png (http://4.bp.blogspot.com/_Y2uWeGSk9Sw/TC3IXn1C4pI/AAAAAAAAGi0/8WPoXgGzMz4/s1600/Figura1.png)
Figura 1: Generación de los ficheros de hash e índice con genkeys

Como se ha comentado previamente, el ataque de MITM se realizará mediante Ettercap. Esta herramienta dispone de un plugin que permite extraer el intercambio de desafío y respuesta de una conexión VPN PPTP. El procedimiento para la realización del ataque de hombre en medio sigue la secuencia habitual:

- Habilitar el sniffing.
- Seleccionar los equipos a envenenar.
- Iniciar el envenenamiento.

Las siguientes 4 imágenes muestran estos procesos.



http://4.bp.blogspot.com/_Y2uWeGSk9Sw/TC3IXTl_EDI/AAAAAAAAGis/5IbdNK2P5F0/s400/Figura2.png (http://4.bp.blogspot.com/_Y2uWeGSk9Sw/TC3IXTl_EDI/AAAAAAAAGis/5IbdNK2P5F0/s1600/Figura2.png)
Figura 2: Preparación ataque MITM



http://1.bp.blogspot.com/_Y2uWeGSk9Sw/TC3IXGwp-dI/AAAAAAAAGik/ZQBm5DRyLGc/s400/Figura3.png (http://1.bp.blogspot.com/_Y2uWeGSk9Sw/TC3IXGwp-dI/AAAAAAAAGik/ZQBm5DRyLGc/s1600/Figura3.png)
Figura 3: Selección de objetivos para el envenenamiento



http://4.bp.blogspot.com/_Y2uWeGSk9Sw/TC3OpXy380I/AAAAAAAAGjc/Q5SRhk48-ds/s400/Figura5.png (http://4.bp.blogspot.com/_Y2uWeGSk9Sw/TC3OpXy380I/AAAAAAAAGjc/Q5SRhk48-ds/s1600/Figura5.png)
Figura 4: activación de envenenamiento



http://4.bp.blogspot.com/_Y2uWeGSk9Sw/TC3IW14VMqI/AAAAAAAAGic/-xh9a-bwv88/s400/Figura4.png (http://4.bp.blogspot.com/_Y2uWeGSk9Sw/TC3IW14VMqI/AAAAAAAAGic/-xh9a-bwv88/s1600/Figura4.png)
Figura 4: ARP Poisoning en proceso


Antes del inicio de la comunicación, se comprueba que el único mecanismo de autenticación admitido por el cliente es MS-CHAP v2. Sería factible un ataque adicional en la que tanto el cliente como el servidos admitieran MS-CHAP y MS-CHAP v2generando una degradación de la autenticación a MS-CHAP v1, que es más sencillo. En el mismo, aunque la negociación cliente-servidor determinará que la mejor autenticación sería MS-CHAP v2 un atacante en medio podría re-negociar la comunicación entre ambos extremos para degradarlo a MS-CHAP, más vulnerable.



http://4.bp.blogspot.com/_Y2uWeGSk9Sw/TC3N135JF-I/AAAAAAAAGjU/6V1_tzIbTW4/s400/Figura6.png (http://4.bp.blogspot.com/_Y2uWeGSk9Sw/TC3N135JF-I/AAAAAAAAGjU/6V1_tzIbTW4/s1600/Figura6.png)
Figura 6: Selección de autenticación MS-CHAP v2

Al mismo tiempo que se produce el proceso de autenticación el atacante está recibiendo los datos del proceso de autenticación.



http://1.bp.blogspot.com/_Y2uWeGSk9Sw/TC3N1bWQ64I/AAAAAAAAGjM/kbc6CtICfSU/s400/Figura7.png (http://1.bp.blogspot.com/_Y2uWeGSk9Sw/TC3N1bWQ64I/AAAAAAAAGjM/kbc6CtICfSU/s1600/Figura7.png)
Figura 7: Conexión PPTP establecida

La información obtenida por Ettercap con los datos correspondientes a la autenticación del usuario administrator, se recogen en la Figura 8. En ella se ven los datos correspondientes al desafío y la respuesta derivada del hash NT de la contraseña de este usuario. En este caso la passrord es admin. No es utilizado en esta circunstancia el hash Lan Manager que, como se puede ver, aparece relleno con ceros.



http://1.bp.blogspot.com/_Y2uWeGSk9Sw/TC3N1LbZFaI/AAAAAAAAGjE/Ah0VMxauYO0/s400/Figura8.png (http://1.bp.blogspot.com/_Y2uWeGSk9Sw/TC3N1LbZFaI/AAAAAAAAGjE/Ah0VMxauYO0/s1600/Figura8.png)
Figura 8: Captura Hashes. Challenge y Response del usuario administrator


Crackeo de la password

Los datos recuperados se pueden utilizar para la realización del ataque de diccionario, con los ficheros creados previamente con Genkeys. Para ello además del fichero de hash y el de índice, se proporcionan los datos de desafío y respuesta tal y como pueden ver en la siguiente figura.



http://2.bp.blogspot.com/_Y2uWeGSk9Sw/TC3N00ynJ0I/AAAAAAAAGi8/9b7QQ67DuR4/s400/Figura9.png (http://2.bp.blogspot.com/_Y2uWeGSk9Sw/TC3N00ynJ0I/AAAAAAAAGi8/9b7QQ67DuR4/s1600/Figura9.png)
Figura 9: Ataque offline a la autenticación con asleap

Evidentemente la contraseña empleada, admin, es lo suficientemente débil para el ataque sea eficaz en poco tiempo. Otros tipos de contraseñas requerirían un esfuerzo desmesurado para obtenerlas.


Conclusiones

Los requistios de seguridad sobre las conexiones VPN son cada día mayores, así que para evitar esta debilidad se pueden utilizar la siguientes soluciones:

- PPTP-MSCHAPv2 con una contraseña robusta: Si no se puede cambiar la tecnología, debe utilizarse una contraseña que sea de gran longitud y complejidad para evitar ataques de diccionario o fuerza bruta. Intentar utilizar passphrases en lugar de passswords cortas.

- PPTP-EAP-TLS o PEAP-MSChapv2 [TLS-EAP-MSCHAPv2]: Otras alternativas para fortificar el proceso de negociación de credenciales es el uso de certificados digitales en el proceso de autenticación de usuarios [EAP-TLS] o cifrar el canal con TLS antes de la negociación de autenticación [Protected-EAP -> PEAP. Cunado se usa MSCHAPv2 después se llama PEAP-MSCHAPv2 o es también llamado TLS-EAP-MSCHAPv2].

- L2TP/IPSec: Para evitar la interceptación del tráfico que se genera en el momento de la negociación de la autenticación se puede utilizar IPSec (no IPSec-PSK) para cifrar y autenticar las máquinas.

- SSTP (Secure Socket Tunneling Prococol (http://en.wikipedia.org/wiki/Secure_Socket_Tunneling_Protocol)): Si hay problemas con la apertura de puertos en las conexiones desde hoteles, se puede utilizar el sistema SSTP, que cifra y autentica todo el tráfico con HTTP-s. En las máquinas clientes Windows está de serie desde Windows Vista Service Pack 1.

- DirectAccess (http://www.windowstecnico.com/archive/2009/12/14/c-243-mo-montar-un-escenario-de-directaccess-i.aspx): Establece VPNs utilizando IPv6, viene de serie con Windows Server 2008 R2 y Windows 7.

- EndPoint Security: En el caso de querer una VPN que protega al servidor y la red central contra la conexión de máquinas inseguras, desprotegidas o no válida, se pueden implementar soluciones como MS Forefront Unified Access Gateway UAG 2010 (http://www.forefront-es.com/page/Microsoft-Forefront-Unified-Access-Gateway-UAG-2010.aspx) que implementa soluciones de comprobación de la salud del cliente y de redes de cuarentena, permitiendo establecer diferentes niveles de conexión. MS Forefront UAG 2010 (http://www.forefront-es.com/page/Microsoft-Forefront-Unified-Access-Gateway-UAG-2010.aspx) también implementa Direct Access.


Autores: Juan Luis G. Rambla MS MVP Security & Chema Alonso
Publicado en http://elladodelmal.blogspot.com/2010/07/crackear-conexiones-vpn-pptp-con-ms.html