miércoles, noviembre 29, 2006

Proteger una red Wireless (II de III)


***************************************************************************************************
Artículo publicado en PCWorld
- Proteger una red Wireless (I de III)
- Proteger una red Wireless (II de III)
- Proteger una red Wireless (III de III)
***************************************************************************************************

El artículo del mes anterior dejó a la gente un poco preocupada ya que en él no se habló de cómo securizar ninguna red wireless sino de lo sencillo que es, técnicamente hablando, para un atacante vulnerar la protección de nuestra red.

Riesgos

A pesar de esto la gente sigue pensando en que no hay demasiados riesgos, así que este mes, vamos a ver que puede realizar un hacker con una red wireless ajena.

Parásito

Al estilo de Venom, el traje alienigena de Spiderman, muchas de las redes Wireless de hoy en día tienen a su/s parásitos viviendo con ellos, es decir, ese o esos vecinos que alegremente se ahorran unos euros a base de utilizar tu conexión. Suele ser el menor de los problemas y a la vez el más incomodo, es como tener una dolencia crónica en nuestra conexión de Internet.

Ejecución de delitos

En este país existen diferentes grupos de investigación de delitos telemáticos dentro de los cuerpos de seguridad. Estos cuerpos se encargan de perseguir las intrusiones de los hackers de gorra negra, o los defacements (grafittis de páginas web) de los crackers o los ataques de denegación de servicio (DOS = Denial Of Service) o “doseos” de los crashers, o….. Su misión es encontrar evidencias de donde puede haber sido la procedencia del ataque y para ello se busca la dirección IP del atacante. Si el hacker ha utilizado técnicas de anonimato basadas en proxys anónimos o redes TOR (The Onion Routing), las direcciones IP serán de exóticos países que impedirán seguir fácilmente la investigación a los equipos de seguridad, pero,... esas técnicas de anónimato suelen ser lentas, la forma más cómoda es bajarse al parque, disfrutar del buen tiempo y usar la dirección IP del router wireless desprotegido de turno. Cuando la Policia y/o la Guardia Civil lleguen a casa del vecino y le precinten el ordenador ya se explicará. ¿Os imagináis que llegan a vuestra casa a precintaros el ordenador por algo que no habéis hecho? Luego a partir de ahí se realiza un análisis forense offline con alguna herramienta tipo Encase y … A lo mejor encuentran, por una tontería cosas que no deberían o… bueno, que me voy, sigamos.

Acceso a Información

Al estar en tu red Wireless, la conexión funciona como un hub, luego todas las comunicaciones que se emitan, si están en el radio de visibilidad de la señal, podrán ser capturadas por el atacante. Así, podrán verse conversaciones de MSN Messenger (que no van cifradas), las transferencias de ficheros que se hagan por estos programitas (fotos, documentos office, música, etc…) e incluso podrán grabar tus conversaciones de voz sobre IP en ficheros mp3 con programas con Ethereal (que graba en .au), orekaudio, el mismo Cain o vomit.


Imagen: Grabando una conversación con Ethereal en fichero .au


Robo de Identidades

Si están en vuestra red wireless ya pueden capturar todo el tráfico que se realice entre vuestro ordenador y el Acces Point, luego, si te conectas a Hotmail, o a un banco o a tu correo electrónico de la empresa o a cualquier sitio con credenciales, el atacante puede robar tus contraseñas con programitas como CAIN, que ya viene con la suite completa para el crackeo de las mismas en caso de que vayan cifradas.


Imágen: Robo de Contraseñas con un Cain “repletito”.


Vale, supongo que esta información ayudará a que queramos securizar las redes wireless y como hemos visto en la primera parte, el mes pasado, la utilización de WEP no es aceptable, así que sigamos viendo las alternativas.

WPA (Wireless Protected Access)

La Wifi Alliance, en el periodo mientras se aprobaba el estándar 802.11i que vendría a sustituir definitivamente a WEP proponía el uso de las siguientes tecnologías de seguridad que ya venían descritas en el borrador de lo que sería el estándar definitivo. José Manuel Alarcón escribió en PCW número 232 de Junio de este año un extenso artículo sobre WPA, así que aquí vamos a ir un poco más directos.

Cifrado WPA

El sistema de cifrado que se utiliza en WPA cambia respecto de WEP (RC4 con claves 64 y 128 bits) a usar TKIP (Temporal Key Integrity Protocol). TKIP sigue usando el protocolo RC4, pero en este caso se minimiza la exposición al ataque utilizando las siguientes modificaciones.

- El Vector de Inicialización (IV) es demasiado corto en WEP, de 24 bits. En TKIP se utilizan IVs de 48 bits. Esto, a priori solo alargaría el proceso, pero seguiría siendo válido el mismo tipo de ataque.
- Integridad datos. En WEP se podía modificar bits en los datos y cambiar el CRC32, es decir, se podían modificar los datos. Para ello se utiliza un nuevo protocolo “Michael” MIC (Messatge Integrity Code) que es cifrado con TKIP.
- WEP utiliza la clave principal para cifrar y autenticar. En TKIP se genera una Clave Maestra de 256 bits cuando el cliente se autentica que recibe el nombre de Pairwise Master Key (PMK). Usando PMK más la dirección MAC del AP, la dirección MAC del Cliente y dos números aleatorios, creados uno por el AP y otro por el cliente se generan las claves derivadas. En total TKIP utiliza 6 claves derivadas:
o Data Encryption Key: de 128 bits y utilizada para cifrar los mensajes.
o Date Integrity Key: de 128 bits y utilizada en el protocolo MIC para garantizar la integridad (no modificación) del mensaje.
o EAPOL-Key Encryption Key: Los mensajes EAPOL son los que se usan para autenticar la conexión, y cuando se realizan los procesos de autenticación se utilizan claves especiales.
o EAPOL-Key Integrity Key: De igual forma se utiliza una clave para MIC a parte en los mensajes de autenticación.
o Multicast Encryption Key: 128 bits para cifrar los datos multicast.
o Multicast Integrity Key: 128 bits para garantizar la integridad de los mensajes multicast.
- WEP siempre utiliza las mismas claves. En TKIP se genera un proceso de rekeying periódicamente para generar nuevas claves temporales.
- WEP no tiene protección contra Reinyección de paquetes. Es decir, un paquete puede ser capturado y reinyectado en la red, permitiendo aumentar el tráfico. En TKIP esto no se puede hacer porque se usa el IV como contador de protección.

Resumiendo TKIP

El funcionamiento de TKIP se puede resumir de la siguiente forma. Cuando el cliente se autentica se genera una Clave Maestra (PMK) de 256 bits. A partir de ella, utilizando las direcciones MAC del cliente, del AP y dos números aleatorios generados por el cliente y el AP, se determinan 6 claves temporales. Estas claves se usan para cifrar y garantizar los datos transmitidos y además se diferencia entre los mensajes de datos y los de control de autenticación. Cada vez que un cliente se vuelve a autenticar se genera una nueva PMK y periódicamente se cambian las claves derivadas. Además hay control de “replay” de paquetes usando el IV que se ha incrementado de 24 a 48 bits. Hasta aquí sería una fortificación del protocolo WEP, pero además la forma de cifrar y descifrar ha cambiado un poco.

Proceso de Cifrado

Paso 1: Con el IV, la dirección de destino y la Data Encryption Key se genera con un algoritmo de mezcla la Clave de Cifrado de Paquete (Per Packer Encryption Key).
Paso 2: Con la dirección de destino, la dirección de origen, la prioridad del paquete, los datos a enviar y la Data Integrity Key se calcula con el algoritmo Michael el MIC.
Paso 3: Se calcula el ICV (Integrity Check Value a partir del CRC-32).
Paso 4: Con el IV y la Clave de Cifrado de Paquete se genera, con el algoritmo RC4 PRNG el keystream de cifrado que será del mismo tamaño que los datos, el MIC y el ICV.
Paso 5: Se realiza XOR entre el RC4 Keystream y los datos, MIC e ICV para producir el mensaje cifrado.
Paso 6: Se añade el IV al paquete.

La principal diferencia es la utilización de una clave distinta por paquete, que es derivada de una clave temporal (que cambia periódicamente) que a su vez es derivada de la Clave Maestra, que se cambia en cada proceso de autenticación.

Proceso de Descifrado

Paso 1: Se extrae el IV y junto con la Dirección de Destino y la Data Encryption Key se genera la Clave de Cifrado de Paquete.
Paso 2: Con la Clave de Cifrado de Paquete y el IV se genera el RC4 Keystream
Paso 3: Se hace XOR entre el RC4 Keystream y el mensaje cifrado para obtener el mensaje descifrado.
Paso 4: Se calcula el ICV y se compara con el que venía en el paquete para aceptar o descartar el paquete.
Paso 5: Con la Dirección de Destino, la Dirección de Origen, los datos y la Data Integrity Key usamos Michael para calcular el MIC.
Paso 6: Se compara el MIC recibido y el MIC calculado. Si no son iguales se descarta el paquete.

El proceso de descifrado, como se puede ver, es simétrico al de cifrado.

Autenticación WPA

Para autenticar las conexiones Wireless vamos a tener 2 entornos diferenciados, un entorno doméstico y un entorno empresarial.

WPA-PSK

En entornos domésticos solemos tener únicamente un Punto de Acceso (AP) y uno varios clientes. No usamos servidores externos por lo que no vamos a desplegar una infraestructura compleja (¿o sí?). En este entorno utilizaremos una solución basada en clave compartida (Pre-Shared Key) que configuraremos en los clientes y en el Punto de Acceso.


Imagen: WPA en el AP


La elección de la Clave Compartida (PSK) debe ser lo más larga y aleatoria que se pueda (no como la que tenemos en la captura de la pantalla). Esta PSK deberá ser configurada en los clientes y se utilizará para autenticar las conexiones y para generar la Clave Maestra. Un atacante puede, a partir de un paquete de autenticación de un cliente aplicar un algoritmo de fuerza bruta obtener la PSK que le permitirá al usuario autenticarse, pero no le valdrá para obtener la información que está transmitiendo otro cliente ya que los datos de otro cliente irán cifrados por las claves temporales y por lo tanto tendría que averiguar las claves temporales para poder averiguar las claves por paquete y descifrar el tráfico. Estas claves temporales pueden ser averiguadas a posteriori y averiguar el tráfico que ha sido transmitido. Si utilizamos una clave de 63 caracteres aleatorios el tiempo de ruptura por fuerza bruta hace inviable este tipo de ataques. Si por el contrario la contraseña es corta, un atacante que capturase el paquete de autenticación (handsake o saludo) podría lanzar un ataque de diccionario o fuerza fruta con el programa AirCrack.


Imagen: Ataque de diccionario Aircrak a WPA-PSK


Configuración del Cliente WPA-PSK

Para configurar un cliente WPA-PSK en MS Windows XP bastará con configurar las propiedades de una nueva red inalámbrica seleccionando la opción WPA-PSK como sistema de autenticado, TKIP como sistema de cifrado y establecer la Clave Compartida en cada uno de los clientes:


Imagen: Cliente WPA PSK


EAP (Extensible Authentication Protocol)

EAP nació como una evolución de PPP (Point to Point Protocol) que permitiera negociar el sistema de autenticación entre el Cliente o también llamado Suplicante y el Servidor de Autenticación. A diferencia de PPP, en EAP primero se establece la conexión, después se negocia el método de autenticación (EAP Method) entre el Suplicante y el Servidor de Autenticación y por último se concede el acceso o se deniega la conexión. Esto permite que los clientes puedan ser autenticados de diferentes formas por un mismo servidor siempre y cunado ambos estén de acuerdo en el método de autenticación. EAP permite diversos métodos de autenticación pero los más comunes son:

- EAP – MD5 – CHAP: En este método utilizamos un desafío respuesta con la contraseña cifrada en MD5 y mecanismo CHAP. Este mecanismo no se suele utilizar en conexiones inseguras (redes públicas) y se reserva solo a líneas dedicadas y por motivos de compatibilidad con versiones antiguas debido a que CHAP ha sido vulnerado.
- EAP–TLS: Utilizamos como credencial de cliente un certificado de usuario. Así, cualquier usuario que quiera autenticarse no deberá presentar su contraseña sino un certificado digital.
- Protected EAP (PEAP): Con este método, previamente a la negociación EAP entre el cliente o suplicante y el servidor de autenticación se establece un canal seguro TLS, similar al que se utiliza en HTTPs, por lo que es necesario que nuestro Servidor de Autenticación posea un certificado de servidor. Una vez establecido ese canal se procederá a la sesión EAP, que podrá ser:
o PEAP–MSCHAP v2: Al igual que en el método anterior primero se establece un canal TLS entre el Suplicante y el Servidor de Autenticación y después comenzará una sesión desafío respuesta con MS CHAPv2 para autenticar al cliente.
o PEAP–TLS: De nuevo estamos ante un método que utiliza el canal seguro TLS antes de enviar la credencial del suplicante. En este caso la credencial que presentará el cliente será un certificado digital. En este método tendremos que utilizar un certificado de servidor para establecer el canal TLS previo a la sesión EAP y luego un certificado digital para el cliente para poder autenticarlo.

Estos son los métodos que podemos utilizar para autenticar nuestras conexiones, para cada uno de los que elijamos deberemos establecer los mecanismos adecuados, así, si utilizamos EAP–TLS deberemos instalar un certificado digital en cada uno de los Suplicantes para autenticarlos, si usamos PEAP-MSCHAPv2 tendremos que tener un certificado digital en el Servidor de Autenticación y si usamos PEAP-TLS serán necesarios certificados digitales en todos los participantes de la comunicación.

Servidor RADIUS (Remote Authentication Dial-In User Service)

RADIUS es un protocolo de autenticación que se ha convertido en un estándar de la industria para validad usuarios a través de diferentes métodos. Las transacciones en cada una de las comunicaciones entre el cliente y el servidor van cifradas con una clave compartida. Esta clave compartida nunca se envía por la red, así, cada petición de autenticación entre un cliente RADIUS y un Servidor RADIUS debe ir cifrada con esa clave compartida.

Cuando queremos establecer un sistema de autenticación de clientes Wireless a una red el cliente RADIUS será el Punto de Acceso y el Servidor RADIUS contendrá la base de datos de clientes que pueden conectarse. Para ello, en el Punto de Acceso deberemos configurar:

- La dirección IP del servidor RADIUS
- El puerto del Servidor RADIUS, generalmente el 1812.
- La Clave compartida.


Imagen: Configuración Servidor RADIUS en el AP


El Servidor RADIUS tendrá configurada la clave compartida para cada uno de los clientes que pueden realizar una petición RADIUS. En el mes que viene acabaremos de montar al infraestructura y veremos como se configura el Servidor Microsoft Internet Authentication Server (MS IAS), que es el servidor RADIUS de Microsoft.

802.1x

Para poder utilizar el sistema EAP en conexiones Wireless es necesario utilizar un protocolo que permita encapsular el tráfico desde la conexión inalámbrica al Servidor de Autenticación. En un entorno común tendremos un Servidor de Autenticación, que tendrá configurada la política de qué Suplicantes pueden o no conectarse a la organización, y que se encontrará dentro de una zona protegida de nuestra red. El Punto de Acceso Wireless tendrá conexión directa al Servidor de Autenticación y es el que demandará un proceso de Autenticación para un determinado Suplicante. 802.1x nace como forma de poder permitir a cualquier elemento de la red (switches, APs, ….) pedir un proceso de autenticación para una conexión que se acaba de producir. 802.1x utiliza EAPOL (EAP Over Lan) porque lo que va a realizar es una encapsulación del protocolo EAP sobre la red privada para llegar al Servidor de Autenticación. Así, como se ve en el gráfico, el proceso sería el siguiente:

Paso 1: Un cliente se asocia al AP utilizando el protocolo 802.11
Paso 2: El Suplicante inicia el proceso de autenticación 802.1x porque el AP no le concede acceso a la red y se elige el EAP-Method.
Paso 3: El Autenticador requiere la Identidad al Suplicante
Paso 4: El Suplicante le entrega la Identidad al Autenticador que retransmitirá al Servidor de Autenticación. Como se puede ver, el Servidor de Autenticación es un servidor RADIUS que pedirá las credenciales para esa identidad al Autentcador.
Paso 5: El Autenticador pide las Credenciales al Suplicante.
Pado 6: Suplicante entrega las Credenciales al Autenticador que se retransmiten al Servidor de Autenticación (Servidor RADIUS)
Paso 7: Servidor RADIUS valida las credenciales y Acepta la conexión.
Paso 6: El Autenticador entrega tras aceptar la conexión la EAPOL-Key que no es más que una secuencia de bits que utilizaremos como Clave Maestra en el proceso de cifrado del algoritmo TKIP. Así, cada vez que tenemos un proceso de autenticación o re-autenticación se genera una nueva Clave Maestra.


Imágen: Autenticación EAPOL


Resumen

Hasta el momento hemos visto los riesgos de seguridad que tiene una infraestructura basada en WEP, las características de WPA (Cifrado TKIP, Integridad Michael y autenticado mediante WPA PSK o mediante EAP, RADIUS y 802.1x). El mes que viene terminaremos de montar la infraestructura con el servidor IAS y veremos las características de WPA2 con AES.

***************************************************************************************************
Artículo publicado en PCWorld
- Proteger una red Wireless (I de III)
- Proteger una red Wireless (II de III)
- Proteger una red Wireless (III de III)
***************************************************************************************************

9 comentarios:

forense dijo...

....completisimo trabajo, si señor. Pero aún seguiremos estando sentados en un banco , relajadamente, y las redes compartidas, mientras los niños juegan en el parque; papa se divierte.
Saludos

silverhack dijo...

Joder!! Por fin un ratito libre!
Cada día vemos más y más noticias que corroboran estos artículos..

1) a las nenas de la erasmus les roban misteriosamente las fotos..

2) Los datos de la SGAE al descubierto.. Vale.. Fué la BD de la Web, pero su red WiFi está más abierta que el *##"!! de mi prima..

3) Cada día hay más empresas que utilizan estos conocimientos para subir peldaños y estar por delante de "los otros"..

Hermano chema.. Crees que con la LOPD (Hablando de Spain) se mitigarán estos errores? O será como la ley del tobacco.. Que sabemos que está ahí, pero que el dueño del bar comenta que si se aplica la ley en su bar, éste pierde "usabilidad"... :)

Peaso de artículo sacao de la manga!! :)

Maligno dijo...

Lo "triste" forense, es que siguen funcionando viejos trucos en los mismos sitios. Lo de securizar una Wireless, jope, no es tan complicado, ¿no? WPA,WPA2, IPSEc, VPNs,... formas hay, e incluso para no iniciados, pq un wpa-psk puede dificultar enormemente el hackearla. En fin.

Silverhack, no creo que la LOPD arregle todos los problemas, pero hay algunos sitios, que coño, en los que algo, al menos algo ayudará. Pq entre lo que tienen y la LOPD, me quedo con la LOPD

Netvicious dijo...

Completito y muy cercano a lo que comentais en la gira de seguridad ;-)

Añado una notilla: http://it.slashdot.org/article.pl?sid=06/06/09/1935202

Maligno dijo...

Gracce Netvicious, de hecho lo usamos para lo del messenger que vamos a hacer en Valencia el día 11!.

Saludos!

Marta Vera Pizarro dijo...

Te lo curras tela, eh?... Quería preguntarte a ver si puedes orientarme:
Después de recorrer mil y un foros para poder cojer redes ajenas con la simple intención de poder leer mi correo y poco más, opto por utilizar el programa WZCOOK, teniendo en cuenta que tengo xp prof service pack 2 y que todo el mundo dice que hay que cambiar varios bits para que funcione. Sin cambiar nada de nada, abro el programa y me resulta un archivo txt con las claves que son larguísimas, pongo esas claves y hago el intento pero no me conecto.
Si me pudieras dar alguna solución sencilla te lo agradecería.
Visita mi blog:
www.martaverapizarro.blogspot.com

Maligno dijo...

Hola Marta,

WZCook es un programa para sacar la clave de tu ordenador que tenga almacenado el Windows Zero Configuration. Si tienes una conexión WEP te la da, pero si tienes una conexión WPA te saca el PMK. Nunca de una WIFI remota, es de tu ordena. En la web de http://hwagm.elhacker.net/ lo explican debuti, justo en este link

Me gustó tu blog. ¿Sevilla? Bajamos allí mañana a dar una conferencia sobre hacking "etílico". ¿Has venido a alguna charla mía?

Saludos!

lkj23 dijo...

hola maligno que tal?? mi pregunta es la siguiente: Se puede obtener una clave wpa a partir de una pmk, es que tengo una pero por mas vueltas que le doy es imposible, gracias.
pd: muy buena pagina, se nota que sabes tela, un saludo

Maligno dijo...

Hola lkj23, la pmk la genera el servidor una vez autenticado el cliente y es aleatoria, a partir de ella se generan las claves de cifrado para TKIP. La clave WPA se utiliza (WPA-PSK) justo antes, cuando se autentica. No creo que la puedas sacar a partir de la pmk.

Salu2 y gracias por los comentarios!

Entradas populares