lunes, octubre 29, 2012

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

El protocolo IPv6 lleva ya mucho tiempo entre nosotros, y aunque aún mucha gente se empeña en revisar las configuraciones IPv4 en una red de empresa, lo que realmente está funcionando en las conexiones SMB, DNS o incluso web de la Intranet, es protocolo IPv6. Conocer su funcionamiento es fundamental para la protección de una red, ya que muchos de los sistemas de protección IDS están configurados para detectar la mayoría de los ataques en redes IPv4, pero no hacen lo mismo con los ataques IPv6.

En este artículo voy a explayarme un poco hablando de este protocolo que debería haber entrado hace mucho tiempo en nuestra vida cotidiana, y sin embargo sigue siendo un gran desconocido para muchos técnicos, a pesar de que al realizar un ipconfig salga esa dirección fe80:: al principio de todo.

Figura 1: Dirección IPv6 de enlace local en una configuración por defecto

Antes de comenzar con los ataques IPv6 es necesario familiarizarse con todos los conceptos fundamentales de este protocolo, así que habrá que asentar algunas cosas al principio.

Configuración básica de IPv6 en sistemas Microsoft Windows

Si entramos en las propiedades del protocolo IPv6 de un sistema Microsoft Windows, lo primero que encontraremos es una pantalla de configuración más o menos similar a la de IPv4, con la única diferencia de que las direcciones IP serán de 128 bits, que se escriben en hexadecimal separadas en grupos de 16 bits, es decir, cuatro valores hexadecimales. Esto hace que las direcciones IPv6 queden escritas de una forma similar a fe80:123:0000:0000:0000:0000:0000:1ab0. Es un poco más raro, pero no tanto, 8 grupos de 4 valores hexadecimales.

Para que sea más fácil de escribir y recordar, cuando hay una lista de grupos de cuatro ceros seguidos, se puede utilizar el acortador ::, reduciendo la dirección anterior a algo como: fe80:123::1ab0. Esta reducción se puede utilizar una única vez por cada dirección IPv6 y solo para grupos de 4 ceros consecutivos. Es por eso que será muy común encontrar cosas como fc00::1 en una dirección IPv6 de una red privada.

Figura 2: Ejemplo de configuración de IPv6 en Windows

En segundo lugar, aunque no se llama máscara de red, tenemos algo muy similar llamado Prefijo de Subred. Este termino se ha cambiado debido a las cantidades de problemas que causó en muchos usuarios e implementaciones de IPv4 el uso de subnetting, supernetting o la asignación de máscaras de red del tipo 255.0.124.255, algo que fue permitido por el estándar - y por tanto en algunas implementaciones -, pero que no acababa de tener mucho sentido y volvía loco a muchos técnicos cuando descubrían su existencia.

En IPv6 el prefijo tiene la misma función, gestionar la visibilidad de red y utilizarse para hacer subnetting y supernetting, pero todos los unos van seguidos y al principio por definición en el estándar. De esta forma, si tuviéramos dos direcciones IPv6 - sin utilizar una Puerta de Enlace en la red - tales como estas:
A: fc00::2000:0001/96
B: fc00::2001:0001/112
Al hacer un ping en IPv6 de A a B obtendríamos un Time-Out y al hacer un ping de B a A tendríamos una respuesta de Host inaccesible, debido a que A no entra dentro de la misma red que B, pero B si está dentro de la misma red que A.

Para interconectar las redes IPv6, igual que en IPv4, hay que utilizar una Puerta de Enlace o Gateway, que se configura en las propiedades del protocolo de red, igual que los servidores IPv6 que se van a utilizar para la resolución de nombres. Estos servidores DNS no son los que se van a utilizar para resolver los nombres a direcciones IPv6 sino que serán los servidores DNS que se utilizarán para resolver todo cuando se utilice el protocolo IPv6, es decir, también se utilizarán estos servidores cuando haya que resolver un registro DNS de tipo A cuando se utilice en la red local el protocolo IPv6.

Direcciones de Vínculo o Enlace Local en IPv6

Conocidos los parámetros a configurar, hay que entender también que en IPv6, tanto si se realiza una configuración manual de las direcciones IPv6 como si se deja en Automático - configuración por defecto en equipos Windows y Mac OS X - las tarjetas de red con soporte para IPv6 tendrán asociada una dirección de vínculo local.

Figura 3: Configuración por defecto en Mac OS X

Esta dirección se genera automáticamente y es anunciada por la red para evitar duplicidad de la misma usando el protocolo NDP (Neighbor Discovery Protocol). Esta duplicidad de direcciones no debería darse de forma habitual, ya que el algoritmo de generación de la misma depende de la dirección MAC de la tarjeta, pero para evitar cualquier situación indeseada se hace uso de un sistema que garantice su unicidad y que resuelva estos conflictos.

Esta dirección es del rango fe80::/10 y es equivalente al rango 169.254.1.X - 169.254.254.X de IPv4. La única diferencia es que en la práctica las direcciones 169.254.X.X no se suelen utilizar en IPv4 y en IPv6 estas direcciones se van a utilizar con mucha frecuencia.

Por supuesto, estas direcciones no son enrutables, pero sí que son utilizadas para comunicarse con el router o cualquier servidor de la organización que se encuentre en la red local. Si no has tocado nada de la configuración por defecto, tendrás una de estas direcciones asociadas y podrás utilizarla para hacer ping a cualquier equipo de tu red local con una dirección IPv6 de Enlace-Local.

Figura 4:  Ping a un nombre NETBios utilizando direcciones IPv6 de Vínculo Local

Direcciones Well-Known en IPv6

Además de las direcciones de Enlace o Vínculo Local, en IPv6 hay una buena cantidad de direcciones que deben ser conocidas, así que toca describir las más importantes aquí para entender luego los entornos de ataque:
::/128: Es una dirección con todos los bits a 0. Es la dirección IPv6 indefinida.
::/0: Es la dirección de red IPv6 para describir la ruta por defecto en una tabla de enrutamiento. Es equivalente a la dirección IPv4 0.0.0.0.
::1/128: Localhost en IPv6. Equivalente a 127.0.0.1 (IPv4).
fe80::/10: Direcciones de vínculo o enlace local. No son enrutables pero generan una red local efectiva en el rango fe80::/64. La parte de Host se suele calcular a partir de la dirección MAC de la tarjeta.
ff02::/16: Direcciones de redes IPv6 Multicast. Equivalentes a las  (224.X) en redes IPv4.
fc00::/7: Son las direcciones para redes IPv6 privadas. Estas direcciones tampoco son enrutables en Internet y son equivalentes a 10.X, 172.16.X y 192.168.X en redes IPv4
::ffff:0:0/96: Direcciones IPv4 mapeadas en IPv6. Se utilizan para conversiones e interconexiones de protocolos IPv4 e IPv6.
64:ff9b::/96: Direcciones IPv6 generadas automáticamente a partir de IPv4. Se utilizan para cuando sea necesario hacer nuevas direcciones IPv6 y se quiera generar a partir de la dirección IPv4 de la máquina.
2002::/16: Indica que es una red 6 to 4 mapeada y utilizará la dirección IPv4 192.88.99.X como gateway para la interconexión.
Además de estas direcciones, hay algunas reservadas para propósitos especiales, como son las siguientes:
2001::/32: Usado por el protocolo de túneles Teredo que permite hacer tunneling IPv6 sobre redes IPv4 en Internet. Este sistema es el que se utiliza a la hora de implementar Direct Access en Windows Server 2008 R2 y Windows 7.
2001:2::/48: Asignado a Benchmarking Methodology Working Group (BMWG) para comparativas (benchmarking) en IPv6 (similar a la red 198.18.0.0/15 para comparativas en IPv4). 
2001:10::/28: ORCHID (Overlay Routable Cryptographic Hash Identifiers). Direcciones IPv6 no-enrutables usadas para identificadores criptográficos Hash. 
2001:db8::/32: Direcciones utilizadas para documentación o ejemplos IPv6. Similar a las redes 192.0.2.0/24, 198.51.100.0/24 y 203.0.113.0/24 en IPv4.
Hasta aquí esta primera tanda de conceptos básicos. Ya seguiremos viendo más cosas en la segunda parte. Mientras tanto ve estudiando y probando esto, que te va a hacer falta para continuar con las siguientes partes. Si quieres aprender más, ya sabes que puedes comprar el libro de Ataques en redes de datos IPv4 & IPv6.

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 ***************************************************************************************************

7 comentarios:

Anónimo dijo...

Lo primero que hice esta mañana...desactivar IPv6 xDD

masticover dijo...

Excelente. Un poco de práctica ahora ¿no? XD

PD. El libro está genial. Un "must have" de referencia para cualquier profesional IT

infogris dijo...

muy bueno, preparado para noconname jeje, nos vemos allí a ver que cosicas explicas xdd

Unknown dijo...

Hola, una pregunta: En la dirección ::/128 dices que todos los bits están a 0, ¿no es todos los bits a 1?
Saludos perversos

Maligno dijo...

@unknown, gracias! fixed!

discipuloosho dijo...

Ayer me precipité sobre la dirección ::/128. Lo que quisiste decir es que todos los bits de la dirección ipv6 están en 0. Lo entendí por el lado del prefijo de red.

Maligno dijo...

@discipuloosho... joder. ¡qué me lias y me dejo liar! }:))

Entradas populares