Esta es la primera entrega de una serie de artículos donde se estudiarán diversas técnicas de hacking sobre el protocolo IPv6 en entornos LAN.

Estas entradas pretenden ser una guía didáctica para comenzar a conocer algunos detalles prácticos del protocolo IPv6 con sus riesgos y amenazas. Siempre, por supuesto, desde un punto de vista de Hacking Ético.

Los distintos artículos se irán publicando periódicamente cada varios días. El índice de entradas es el siguiente:

————————————————————————-
# Hacking IPv6 I – Breve introducción al protocolo IPv6
# Hacking IPv6 II – Interceptación de tráfico mediante envenenamiento de caché (MITM) – (1ª parte)
# Hacking IPv6 III – Interceptación de tráfico mediante envenenamiento de caché (MITM) – (2ª parte)
# Hacking IPv6 IV – Redirección de tráfico IPv6 mediante el uso de mensajes Router Advertisment(RA)
# Hacking IPv6 V- DoS mediante mensajes Neighbor Solicitation (NS)
# Hacking IPv6 VI – Conclusiones
————————————————————————-

Todas las entradas (menos esta) tratarán de presentar la información de la forma más práctica posible, ya que creo que es la mejor forma de entender cómo funcionan las cosas. En estos artículos no se considerarán aspectos de seguridad relacionados con la tunelización de tráfico IPv6 e IPv4, el uso de IPsec, o SEcureNeighborDiscovery (SEND).

Comencemos pues con una introducción a los conceptos principales del protocolo.

  • Introducción a IPv6

En esta entrada me limitaré a presentar información sobre los conceptos necesarios para entender las entradas que se publicarán más adelante. Si en cualquier momento necesitáis más información sobre el protocolo, podéis encontrarla fácilmente en Internet en multitud de sitios donde se explica el protocolo en profundidad.

Todo apunta a que IPv6 podría empezar a desplegarse en breve en diferentes entornos, sobre todo debido al reciente agotamiento del rango de direcciones públicas IPv4 por parte de IANA. Es posible que con la ayuda de los fabricantes, las distintas operadoras comiencen pronto a usar este protocolo en entornos residenciales. Siendo así, no sería raro que dentro de unos meses comenzaran a distribuirse routers ADSL a los clientes con soporte IPv6 y que comenzara a asignarse direcciones públicas (o rangos de direcciones) IPv6 a estos clientes para aprovisionar sus conexiones. Otro entorno donde puede irrumpir pronto IPv6, es la red LAN de cualquier empresa o cualquier centro universitario que decida en un determinado momento, comenzar a implementar este protocolo. Antes o después, IPv6 acabará desplazando a IPv4, o al menos, esa es la idea.

De hecho, hoy en día, multitud de equipos ya soportan IPv6 para sus comunicaciones. Si vosotros mismos utilizáis un sistema operativo basado en Linux, es posible que ya tengáis una interfaz enviando tráfico IPv6. Y si utilizáis WindowsVista o Windows 7, en ese caso,vuestro equipo ya tiene soporte para IPv6 y estará enviando tráfico IPv6 aunque no lo sepáis.

Teniendo en cuenta los escenarios anteriores, vamos a comenzar con unos conceptos básicos sobre IPv6 que nos ayudarán a entender el resto de las entradas:

  • Direcciones IPv6

    Las direcciones IPv6 tienen una longitud de 128 bits. Ejemplo:

1000000000000001:0000110110111000:1010110000010000:1111111000000001:

0000000000000000:0000000000000000:0000000000000000:0000000000000001

Equivalente a: 2001:0DB8:AC10:FE01::1

Otros ejemplos:

  • Entorno Linux

  • Entorno Windows

  • Direcciones IPv6 de tipo unicast

    Este tipo de direcciones identifican de forma única a una sola interfaz. Por otra parte, en IPv6 una interfaz puede utilizar varias direcciones (de hecho, suele ser lo común).

  • Direcciones unicast de tipo link-local

    Este tipo de direcciones están pensadas para las comunicaciones en entornos de red local. En entornos IPv6, se exige que los sistemas operativos con soporte a IPv6 asignen una dirección de este tipo a todas las interfaces, aunque tengan otra dirección IPv6 enrutable. Las direcciones IPv6 de tipo link-local tienen el prefijo fe80::/10. Estas direcciones se utilizan, por ejemplo, durante el proceso de autoconfiguración de interfaces utilizando ICMPv6 (SLAAC).

  • Protocolo Neighbor Discobery (ND)

    ND es un protocolo que utiliza algunos mensajes ICMPv6 para la autoconfiguración de los equipos en entornos IPv6.

    Nota: El protocolo ND es a IPv6 lo que ARP a IPv4.

    Mensajes utilizados por ND:

    • Router Solicitation (RS): Mensaje enviado por una interfaz cuando ésta es activada. Se utiliza para solicitar a los routers de la red información sobre qué configuración a utilizar.
    • Router Advertisement (RA): Mensaje de respuesta enviado por los router ante mensajes de tipo RS. Estos mensajes también se suelen enviar de forma periódica cada cierto intervalo.
    • Neighbor Solicitation (NS): Mensajes enviados por los equipos para averiguar la dirección de capa de enlace de otro equipo. También se utiliza para verificar que el nodo vecino es alcanzable o para detectar direcciones IPv6 duplicadas.
    • Neighbour Advertisement (NA): Mensaje de respuesta a un NS.
    • Redirect: Mensajes enviados por los equipos de la red para informar de que existe una ruta mejor para llegar a un determinado destino.
  • SLAAC, StateLess Address AutoConfiguration – Autoconfiguración de direcciones

    La primera vez que un dispositivo se conecta a una red, el host envía un mensaje Router Solicitation (RS) para tratar de obtener información con la que configurarse automáticamente. Un router que escuche ese mensaje y esté configurado adecuadamente, contestará con un mensaje Router Advertisment (RA) donde enviará información con los parámetros de capa de enlace correspondientes.

  • Algunos comandos básicos de configuración de IPv6 (click para ampliar):

    Nota: El “id” de la interfaz en sistemas Windows se averigua ejecutando el comando “ipconfig” y mirando %n al final de la dirección IPv6.

Dentro de unos días se publicará la siguiente entrada donde se presentará el entorno donde ejecutar el primer ataque IPv6 que veremos: la interceptación de tráfico mediante envenenamiento de caché (Man In The Middle).