martes, 5 de agosto de 2014

Conceptos IPv6 para Ataque en redes de datos (II de II) y Sin Pardillos 12

Este es la segunda parte de este artículo sobre IPv6 que empecé a escribir hace dos días, debido a la importancia de estas direcciones y el desconocimiento de gente que está bastante gente que es técnico y al no controlarlo ocurre lo que ocurre con empresas como CISCO o Kaspersky Labs. Pero una cosa que ocurre en los equipos es que conviven tanto las direcciones IPv4 como IPv6 y claro ahora la pregunta más frecuente es la siguiente: "si en mi equipo tengo configurado tanto IPv4 como IPv6 ¿ cuál de las dos va a usar mi sistema?". Pues la cosa es sencilla como que si en en los dos equipos convivan tato IPv6 como IPv4, incluso puede que alguna dirección más, por eso el sistema es el que va a elegir cuál usar IPv6 y hacerlo con el que es más conocido  IPv4 según las normas marcadas. Estas normas se definen mediante un algoritmo de precedencia en el RFC 3484 y en el más reciente que es el de septiembre de 2012 RFC 6724, con el nombre de "Default Addres Selection for Internet Protocol version 6 (IPv6)" que se explican unas normas para elegir IPv6 o IPv4 en un entorno mixto de comunicación.

Figura 3: RFC 6724

En este documento se explican dos algoritmos basados en las direcciones de origen y dirección de destino para elegir un protocolo u otro. Estos algoritmos tienen en cuenta cosas como si hay Puerta de Enlace configuradas en cada protocolo, porque podría ser que fuese el origen un IPv4, el destino también otra IPv4-siempre que existiese una puerta de enlace para IPv6- y se podría elegir un encapsulado de direcciones IPv4 sobre la dirección IPv6 para mandar todo el tráfico hasta el destinatario del "paquete".

Esta configuración en un sistema Windows, es posible consultarlo en todo momento gracias a la "pantallita negra" y con el comando netsh interface ipv6 show prefix, donde mostraran un tabla con prioridades con unos valores similares a los que se dan a continuación.

Figura 4: Tabla de precedencias en Windows 8.1

Es posible establecer una comunicación con el algoritmo de precedencia a IPv6 sobre IPv4, pero se puede modificar en cualquier momento con otros comandos de la "familia" netsh.

          -Netsh interface ipv6 show preficpolicies: Muestra la tabla local de políticas
          -Netsh interface ipv6 add prefixpolicies: Añade nuevas entradas a la tabla
          -Netsh interface ipv6 set prefixpolicies: Configura entradas en la tabla
          -Netsh interface ipv6 delete prefixpolicies: Elimina entradas en la tabla

Esto simplemente es una regla de comportamiento y no interfiere en la elección que se haya realizado anteriormente una aplicación o un usuario de forma explícita.

A la hora en la que un sistema va a elegir entre IPv4 e IPv6, va a tener bastante peso la configuración de la red a la hora de buscar y resolver un nombre de un host. Por ejemplo, si el DNS busca de forma automática el nombre del equipo añadiendo el sufijo del dominio de la compañía y este servidor solo responde en IPv4, entonces se va a establecer con IPv4 ya que no se ha hecho el Discovery de IPv6.

Descubrimiento de vecinos con Neighbor Discovery Protocol

Cuando queremos descubrir a un vecino en una red IPv6, no existe ARP o RARP, todo se basa en mensajes ICMPv6. Y el protocolo para descubrir vecinos en una red IPv6 se llama Neighbor Discovery Protocol y puede implementar 5 tipos de mensajes distintos.

Figura 5. Descubriendo Vecinos con NS
El equivalente a ARP en este caso, serían los propios NS (Neighbor Solicitation), que se pide que se resuelva una dirección MAC que esté asociada a una dirección IPv6 y NA (Neighbor Advertisement), que se contesta con la dirección MAC que se buscaba para la dirección IPv6.

Aquí normalmente es que los mensajes sean enviados a una dirección Multicast y que solo se responda por aquel vecino que tenga esa misma IPv6 configurada-se busca por la red- aunque no implica que también puedan ser mensajes unicast y que se envíen a una dirección en concreto de la red a la que se interroga para saber si conoce o no al "vecino del quinto".

También decir que todas las direcciones MAC asociadas a sus correspondientes direcciones IPv6, van a quedar almacenadas en alguna parte del sistema para conocer la Tabla de Vecinos y que puede ser consultada en cualquier momento con nuestra "pantallita negra" y con el uso del comando netsh interface ipv6 show neighbor.


Figura 6: Tabla de vecinos en IPv6
Estos mensajes-como es de suponer- tendrán una gran importancia en ataques como man in the middle y D.O.S. (Denial Of Service).

Resolución de nombres a direcciones IP en ámbito local

En el caso de Windows, cuando se realiza la resolución de nombres para poder funcionar con IPv4 e IPv6, se incluyó el protocolo LLMNR (Local Link Multicast Name Resolution), descrito en el RFC 4785, que es un protocolo que usa multicast para resolver las direcciones IPv4 y/o IPv6 que están asociadas a un nombre de dominio. Permite realizar búsquedas locales o mediante uso de resolución de registros A y/o AAAA con un servidor DNS.

Figura 7: Resolución de srv LLMNR usando Multicast IPv6, IPv4 y DNS
Por eso se utiliza la resolución de nombres con LLMNR, ya que la búsqueda de direcciones MAC de vecinos con NDP y a la tabla de precedencia, los sistemas Windows construyen la comunicación entre equipos con IPv6.

Configuración de equipos IPv6 en la red

Podemos configurar el protocolo IPv6 de varias maneras, la primera es de una forma Estática o manual; en la que la dirección IPv6, la Puerta de Enlace y los servidores DNS de forma individual y manual-o mediante un script- en cada equipo.

La segunda forma de configurar es utilizar un servidor DHCPv6 para que podamos configurar todas las propiedades IPv6 de los equipos que están en ámbito de red IPv6. Al igual que se hacía en IPv4 se pueden configurar dirección IPv6, prefijo de red-o máscara o servidores DNS a utilizar. La tercera forma de configurar equipos IPv6 en la red, es mediante el protocolo Neighbor Discovery Protocol y los mensajes RS (Router Solicitation), RA (Router Advertisement) y Redirect, junto con el funcionamiento de SLAAC (Stateless Addres Auto Configuration) de los equipos, y que si no se hace bien; siempre se le podría aplicar un Man In The Middle como el que se le hizo en su día a "rafa1".

La idea es que un equipo se pueda conectarse automáticamente en una red con IPv6 si conoce algún Router de conexión, lo que viene siendo es que a través de la petición RS -que busca una puerta de enlace-, el Router pregunte "¡¿Eh hay algún Router en la sala?! Necesito Internet". Entonces le contestarán con un RA -que le da a SLAAC la información necesaria para tener conectividad- le dice "Router amigo, aquí un colega que te da Internet". Claro está que si hubiese más de un router en la "sala", y el equipo elige un router como primer salto erróneo, este le va a contestar con un NDP de tipo Redirect informándole de cuál es la mejor ruta, el mejor camino, para que utilice su tabla de enrutamiento.

Claro está, que tanto DHCPv6 y SLAAC van a poder ser utilizados para realizar ataques D.O.S y Man In The Middle en las redes de datos, este último caso, del ya más que hablado "rafa1".

DNS Autodiscovery

Ya para terminar con este macro-post con los conceptos básicos que toda persona y administrador de sistemas debe tener sobre IPv6, me queda hablar de cuando un equipo se conecta a la red IPv6 a través de una configuración SLAAC existe el problema de que los servidores DNS no se puedan conectar, por el cual todas las peticiones de resolución de nombres se reducen a LLMNR. Pero si el el servidor fuera externo, es necesario contar con un servicio de resolución de nombres DNS en la red IPv6. Por eso, cuando no se configura ningún servidor, los equipos Windows buscan tres direcciones IPv6 establecidas por el estándar IPv6 DNS Autodiscovery.

Figura 8: Direcciones IPv6 de los servidores DNS Autodiscovery
Ya para terminar, recordar que es importante tener na buena configuración de IPv6 en tu equipo, y si no se tiene, eliminarla. Porque entre que la gente se conecta a cualquier red wifi y la mala configuración de IPv6 que algunos tienen por el desconocimiento o por la propia Pereza, estamos expuesto; y el problema es que si estamos en la misma empresa y mi compañero lo tiene mal configurado, puede que le hagan un MITM como a "rafa1" o D.O.S, pero puede que mañana sea yo; y eso me preocupa. Por eso esta segunda y última parte dedicada a los conceptos de IPv6, he decidido hacer este Sin Pardillos, que es el 12, para recordaros una cosa malvada.

Figura 9: Sin Pardillos 12-manucariño recuerda la configuración de IPv6


Saludos Malvados!

No hay comentarios:

Publicar un comentario

Related Posts Plugin for WordPress, Blogger...

Entrada destacada

El server me sabe a poco.

Soy un fanático del Rock y de Debian . (Creo que voy a inventar Rockbian, que suena bien y todo xD) Llevaba tiempo queriendo unir estos 2 c...