martes, octubre 30, 2012

Hacking en redes de datos IPv6: Conceptos básicos IPv6 (2)

Una de las preguntas que debes realizarte es: "si en mi equipo tengo instalado IPv4 e IPv6 por defecto, ¿qué protocolo va a utilizar el sistema operativo? En este apartado vamos a responder a esa pregunta y a cómo se resuelven las direcciones de los integrantes de la comunicación.

Precedencia de protocolos

En los entornos actuales, lo más probable es que el protocolo IPv6 conviva junto con el protocolo IPv4 - y puede que incluso algún otro - así que el sistema operativo deberá elegir ente IPv4 según algunas normas. Estas normas se definen mediante un algoritmo de precedencia definido en el RFC 3484 y en el más reciente de Septiembre de 2012 RFC 6724, titulado "Default Address Selection for Internet Protocol version 6 (IPv6)" en el que se explica cuáles son las normas para elegir IPv6 o IPv4 en un entorno mixto.

Figura 5: RFC 6724

El documento explica dos algoritmos basados en la dirección de origen y la dirección de destino para elegir un protocolo u otro. Estos algoritmos tienen en cuenta cosas como la existencia o no de puertas de enlace, ya que puede que el origen sea una dirección IPv4, el destino sea una dirección IPv4, pero esta se encuentra en otra red y sólo existe una puerta de enlace para IPv6, por lo que se podría elegir un encapsulado de direcciones IPv4 sobre IPv6 para poder enrutar el tráfico.

En un sistema Microsoft Windows se puede consultar esta configuración en todo momento por medio del comando netsh interface ipv6 show prefix, donde se mostrará por pantalla una tabla de prioridades con valores similares a la que se puede ver a continuación.

Figura 6: Tabla de precedencia por defecto en un Microsoft Windows 7

El algoritmo de precedencia da prioridad a IPv6 sobre IPv4 si es posible establecer una comunicación con este protocolo, pero en cualquier momento se puede modificar este comportamiento haciendo uso de los siguientes comandos netsh.
netsh interface ipv6 show prefixpolicies: 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: Borra entradas en la tabla 
Ejemplo:

netsh interface ipv6 set prefixpolicies prefix=2001::/32 precedence=15 label=5

Además, este comportamiento no interfiere para nada en la elección que haya realizado anteriormente una  aplicación o un usuario de forma explícita, por lo que solo es una regla de comportamiento para cuando no se ha establecido una restricción previa.

Descubrimiento de vecinos con Neighbor Discovery Protocol

Para descubrir los vecinos de una red IPv6 no existe el protocolo ARP o RARP, y todo se basa en mensajes ICMPv6. El protocolo para descubrimiento de vecinos se llama Neighbor Discovery Protocol e implementa 5 tipos de mensajes distintos. De ellos, los equivalentes a ARP serían los mensajes Neighbor Solicitation (NS), donde se pide la resolución de una dirección MAC asociada a una dirección IPv6 y Neighbor Advertisement (NA), donde se contesta con la dirección MAC de la dirección IPv6 buscada.

Lo normal es que estos mensajes sean enviados a una dirección multicast y que conteste el vecino que tenga la dirección IPv6 que se busca, pero también pueden ser mensajes unicast enviados a una dirección concreta a la que se interroga.

Figura 7: Descubrimiento de vecinos con mensaje NS multicast y respuesta unicast NA

Todas las direcciones MAC asociadas a direcciones IPv6 quedarán almacenadas en una Tabla de vecinos que puede ser consultada con el comando netsh interface ipv6 show neighbor.

Figura 8: Tabla de vecinos en iPv6

Como os podréis imaginar ya, estos mensajes tendrán una gran importancia en varios de los ataques que vamos a describir en IPv6 de D.O.S. y Man in the middle.

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

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

Figura 9: Resolución de srv por LLMNR usando multicast IPv6, IPv4 y DNS

Utilizando la resolución de nombres con LLMNR, la búsqueda de direcciones MAC de vecinos con NDP y a la tabla de precedencia, los sistemas Microsoft Windows construyen la comunicación entre equipos con IPv6.

Configuración de equipos IPv6 en la red

Para configurar el protocolo IPv6 de los equipos de una red existen diferentes alternativas. La primera de ellas sería realizar una Configuración Estática o manual, en la que se configuran 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 configurar todas las propiedades IPv6 de los equipos de un ámbito de red IPv6. Estos servidores DHCPv6 están soportados en los servidores Windows Server 2008, Windows Server 2008 R2 y Windows Server 2012. Al igual que se hacía en IPv4 se pueden configurar dirección IPv6, prefijo de red - o máscara -, puerta de enlace por defecto o servidores DNS a utilizar.

Figura 10: Servidor DHCPv6 en Windows Server 2008. Configuración de DNS

La tercera forma de configurar equipos en la red es mediante el protocolo Neighbor Discovery Protocol y los mensajes RS (Router Solicitation), RA (Router Advertisiment) y Redirect, junto con el funcionamiento SLAAC (Stateless Address Auto Configurator) de los equipos. La idea es que un equipo puede conectarse automaticamente en una red con IPv6 si conoce algún router de conexión. Para ello, el equipo realiza una petición RS en busca de una puerta de enlace.

Todos los routers de la red le contestarán con un RA dándole a SLAAC la información necesaria para que el equipo se autoconfigure una dirección IPv6 que le permita tener conectividad a través del router. Si hay más de un router en la red, y el equipo elige un router como primer salto erróneo, este le contestará con un mensaje NDP de tipo Redirect informándole de cuál es la mejor ruta, para que actualice su tabla de enrutamiento.

Por supuesto, tanto DHCPv6 y SLAAC van a poder ser utilizados para realizar ataques D.O.S.Man in the middle en las redes IPv6, como veremos más adelante, con esquemas de Rogue DHCPv6 Servers o Rogue Routers.

DNS Autodiscovery

Cuando un equipo se conecta a la red IPv6 a través de una configuración SLAAC existe el problema de que no se pueden configurar los servidores DNS y todas las peticiones de resolución se reducen a LLMNR de tipo difusión en busca de posibles servidores en la red de vínculo local. Sin embargo, si el servidor fuera externo es necesario contar con un servicio de resolución de nombres DNS en la red IPv6. Para ello, cuando no se configura ningún servidor, los equipos Microsoft Windows buscan automáticamente tres direcciones IPv6 establecidas por el estándar IPv6 DNS Autodiscovery.

Figura 11: Direcciones IPv6 de los DNS Autodiscovery

Si una empresa no quiere usar DHCPv6, puede configurar un DNS en una de esas direcciones IPv6 y junto con un router IPv6 enviando mensajes RA para que los clientes se autoconfiguren, podrá tener la red funcionando.

Saludos Malignos!

***************************************************************************************************
- Hacking en redes de datos IPv6: Conceptos básicos IPv6 (1)
- Hacking en redes de datos IPv6: Conceptos básicos IPv6 (2)
- Hacking en redes de datos IPv6: Te hackearán por IPv6 por pensar que no lo usas
- Hacking en redes de datos IPv6: Neighbor Spoofing
- Hacking en redes de datos IPv6: Captura de SMB con Neighbor Spoofing
- Hacking en redes de datos IPv6: FC00::1 (Algunos) Ataques en redes de datos
- Hacking en redes de datos IPv6: Man in the middle en redes IPv4 usando IPv6
- Hacking en redes de datos IPv6: Desactivar IPv6 para evitar D.O.S. SLAAC
- Hacking en redes de datos IPv6: Topera - Scanner de puertos sobre IPv6
- Hacking en redes de datos IPv6: Predecir direcciones IPv6 Local-Link de OS X
- Hacking en redes de datos IPv6: Ataques en redes de datos IPv 4 e IPv6 ***************************************************************************************************

1 comentario:

  1. Una pregunta de principiante de IPv6: Si hago un ping a un nombre de host, por ejemplo : ping server01, en el caso que tenga en el DNS registro IPv4 y IPv6, tiene preferencia el registro IPv6. ¿Como se puede cambiar? También en el caso que la resolución de nombres se haga por Netbios sobre TCP/IP, ¿quien tiene preferencia IPv4 o IPv6?, ¿es posible cambiarlo?

    ResponderEliminar