Comprometiendo IPV6

Cuando se creó IPv4 no se atisbó a imaginar la extensión que la Red   alcanzaría. Desde febrero de 2011, sus 232 direcciones IP ya no son suficientes.
Es aquí donde entró en juego el  protocolo IPV6.
 
IPv6 nació de manos de Steve Deering y Craig Mudge para paliar las deficiencias de IPv4 y sentar las bases del futuro de Internet, proporcionando un sistema más sólido y eliminando la posibilidad de un escenario en el que se produzca un nuevo colapso gracias a sus 2128 direcciones. Además de este notable aumento, IPv6 introduce modificaciones en el formato de la cabecera de los paquetes, que promete un enrutamiento más eficiente, y mejoras en la seguridad. IPv6 fue adoptado por la Internet engineering task Force (IetF) en 1994 y está definido en el RFC 2460.

Al margen de otras cosas, este hecho a nosotros "los chicos malos" o nos supone un nuevo handicap o, por el contrario, si somos capaces de ver el vaso medio lleno en vez de medio vacío, nos da mas alternativas a la hora de atacar o poner en evidencia la seguridad de algún sistema, más aún ahora que ipv6 convive con ipv4 y no se sabe por cuanto tiempo (seguro que muchísimo)...

En esta ocasión nos vamos a poner las pilas con este protocolo de la mano de los chicos de The Hackers Choice y su completa suite THC-IPV6, cuya versión 2.0 fue liberada el mes pasado.

Vamos a abordar esta entrada desde el punto de vista practico:


Nos colocamos en la carpeta /home o donde queramos y nos bajamos el software desde la consola:

wget www.thc.org/thc-ipv6/thc-ipv6-2.0.tar.gz

O, si lo preferimos, podemos ir a su página y descargarlo con el navegador desde la siguiente dirección: http://www.thc.org/thc-ipv6/

Una vez descargada la suite atenderemos sus dependencias:
apt-get install libpcap-deb openssl libssl-deb

Ahora procedemos a la instalación:

make


y si todo va bien:


make install


Con esto habremos instalado la suite.


Dentro de esta suite encontramos las siguientes herramientas:

  • Parasite6: anuncio spoofer, se encarga de hacer el arpspoof.
  • Alive6: un escaner eficaz , que detectará todos los sistemas que estén en su rango de red.
  • Dnsdict6:  permite enumerar las entradas DNS de un dominio. Utiliza un archivo de diccionario si se le proporciona o, en caso contrario, uno propio.
  • Fake_router6: para anunciarse como un router en la red, con la más alta prioridad.
  • Redir6: redirección del tráfico hacia nosotros de forma inteligente (man-in-the-middle).
  • Toobig6: reductor mtu con la misma inteligencia que redir6.
  • Detect-new-ip6: detecta nuevos dispositivos ip6 que se unen a la red.
  • Dos-new-ip6: detecta nuevos dispositivos ip6 y dice que hay conflito de red  (DoS).
  • Trace6: traceroute6 muy rápido con soportes icmp6, solicitud de eco y TCP -SYN.
  • Flood_router6: inundación de un objetivo con anuncios de enrutador al azar.
  • Flood_advertise6: inundación de un objetivo con anuncios de neighbor al azar.
  • Exploit6: prueba las vulnerabilidades conocidas IPv6 contra un blanco.
  • Denial6: una colección de ensayos de denegación de servicio contra un objetivo.
  • Fuzz_ip6: fuzzer para ipv6.
  • Implementation6: lleva a cabo diversos controles de aplicación sobre ipv6.
  • Implementation6d: Pone en modo demonio implementation6.
  • Fake_mld6: para anunciarse en un grupo multicast de su elección en la red.
  • Fake_mld26: lo mismo pero para MLDv2.
  • Fake_mldrouter6 : falsos mensajes de router MLD.
  • Fake_mipv6: robar una IP móvil si IPSEC no es necesario para la autenticación.
  • Fake_advertiser6: para anunciarse en la red.
  • Smurf6: smurfer local
  • Rsmurf6: smurfer remoto, se sabe que por el momento funciona sólo contra linux.
  • Sendpees6: una herramienta de willdamn(at)gmail.com, que genera peticiones a vecinos con un montón de CGAs (cripto cosas;-) para mantener la CPU ocupada.
  • Thcping6: envía un paquete ping6 modificado a mano.
 Y otras 25 que dejamos para que vosotros las descubráis (/usr/local/bin#).

Como veis son un buen puñado de herramientas que esta suite pone a nuestro alcance en un solo paquete, que desde mi punto de vista es "impepinable" tenerlo instalado en nuestros sistemas.

Enumeración de la red:


Bueno, ahora a pasar a la acción... Como en un ataque convencional a ipv4, lo primero que haríamos sería enumerar la red.  Una forma típica de actuar sería utilizar una herramienta como Nmap para buscar las direcciones de las máquinas en la subred a atacar. Con Ipv6, la secuencia de acciones sería similar, pero debido al enorme rango de direcciones válidas dentro de una subred (264), el tiempo que nos llevaría sería excesivo...


Como remedio con IPv6, las fuentes de información principales (y por tanto uno de los objetivos clave) serán los servidores DNS...

Normalmente, todas las máquinas necesitan tener registros en los servidores DNS privados con la finalidad de que los administradores no se vuelvan locos.

Para este fin tenemos una de las herramientas incluidas en Thc­IPv6: alive6.

alive6 "nuestra interfaz de red"

 
La respuesta obtenida serán las X direcciones de las interfaces de red locales.
En nuestro ejercicio serán A y V. 

Los errores de seguridad típicos que se pueden encontrar (y aprovechar), en su mayoría son debidos a descuidos o malas implementaciones.


Ataque man-in-the-middle


Sin la aplicación de IPSec, cualquier ataque que utiliza las técnicas "Man in the middle" tendrá la misma probabilidad en IPv6 que en IPv4.


Si tenemos en cuenta que IPSec está fuertemente ligado a IPv6, su uso sería suficiente para evitar cualquier problema con respecto a los intentos de un secuestro de la conexión. Por desgracia, la práctica dominante que vemos hoy en términos de despliegue de IPv6 ya existentes es que los operadores de red no hacen ningún uso de IPSec. El uso de los certificados también puede proporcionar la autenticación necesaria de extremo a extremo en el nivel de aplicación (por ejemplo, servidores web). Sin tales mecanismos de seguridad, un secuestro "Man in the middle " es una posibilidad.


En nuestro ejemplo anterior hemos visto la dirección ipv6 de dos maquinas :

A: fe80::21d:xxxx:xxxx:xxxx [ICMP echo-reply]

V: fe80::e60:xxxx:xxxx:xxxx [ICMP echo-reply]

Una vez apuntado ésto, nos disponemos a desarrollar un ataque archi-conocido man-in-the-middle.

La realización de este tipo de ataque en IPv4 se basa en el funcionamiento de las peticiones de ARP (para obtener la MAC correspondiente a una dirección IP) y mensajes DHCP (para asignar direcciones IP dinámicamente), enviados ambos a la dirección de broadcast de la subred. Por tanto, cualquiera puede responder a estos mensajes, falseando así la información. En IPv6 no se añade una seguridad especial a lo anterior, la diferencia radica en que se utiliza ICMP6 para realizar estas peticiones y se utilizan direcciones multicast (pues en IPv6 no hay direcciones de broadcast).

En ipv6 cuando la máquina A quiere comunicar con B , A emite una petición ICMP6 (para solicitar la MAC de B), a todos los nodos de la subred (dirección multicast). 

El atacante puede utilizar la herramienta parasite6 para enviar una respuesta afirmando que la MAC solicitada se corresponde con su dirección IP.

parasite6 [-lRFHD] interface [fake-mac]


-l loops and resends the packets per target every 5 seconds.  -R will also try to inject the destination of the solicitation -F fragment (used to bypass network security)-H hop-by-hop (used to bypass network security)-D large destination header (used to bypass network security)


interface nuesta el interface de red y MAC la mac a donde queremos redirigir el tráfico. Si la omitimos, por defecto será la nuestra o, si no existe, mandaremos los paquetes a Parla.

Suponiendo que entre A y V haya un trafico o conversión bajo IPV6, en condiciones normales no podríamos "meter el moco". Veamos que pasa al realizar el ataque:

Podemos ver que hemos interceptado perfectamente la conversión. Para verlo más claro os pongo la captura de wireshark:

Escaneando puertos en IPV6:

La verdad no es muy distinto de lo que estamos acostumbrados con IPV4 :


nmap -6 -PN 'dirección ipv6'%'interfaz red'




Veamos otro ataque:


Fake_route6


Este ataque funciona como un "man in the middle"  con esteroides. Se aprovecha de el hecho de que los sistemas operativos como Windows 7 aceptan casi ciegamente los anuncios del enrutador que reciben, sin requerir ningún tipo de autenticación por defecto. El atacante enviará a las asociaciones y tratará de establecer su PC como router por defecto para los dispositivos de red. Esto hará que los clientes envíen tráfico de red para el atacante, y el atacante sólo tiene que abrir Wireshark para empezar a esnifar todos los sabrosos paquetes de cada uno de los clientes.


Preparación:


Para que el ataque funcione y no levantar sospechas, las víctimas no deben tener ni idea de que algo ha cambiado. Por lo tanto, un atacante tiene que ser capaz de enviar datagramas hacia y desde un router legítimo que permite a las víctimas seguir utilizando los recursos de red.




Podemos configurar un túnel IPv6 gratis, cortesía de Hurricane Electric. 
Conectados al router a través de Fa0/1 están un cliente de Windows Vista, que representa a la víctima, y un cliente BackTrack 5, el atacante. La víctima está utilizando el router 2621 como puerta de enlace predeterminada, como resultado de los anuncios del enrutador que se envían desde ese router.

fake_router6 esencialmente sólo envía RA IPv6, y eso es todo. Es decir se anuncia como router principal de la red. Hay que tener en cuenta que para realizar un ataque exitoso, tenemos que mantener a la víctima conectada a los recursos de red. Por lo tanto, tenemos que convertir nuestro dispositivo en un router ataque improvisado, y tenemos que hacerlo antes de enviar el SAR para dirigir el tráfico a nosotros.


En primer lugar, tenemos que habilitar el reenvío IPv6 en nuestra máquina BackTrack. En una ventana de terminal, con el siguiente comando:


root@Bigben:# sysctl -w net.ipv6.conf.all.forwarding=1 4


Con esto redirigimos el trafico ipv6, no el ipv4.


El router 2621 es nuestra puerta de enlace predeterminada, y nos conecta a Internet. Si echamos un vistazo a la figura, preparamos la ruta con la dirección local de vínculo del interfaz Fa0/1 del router y la añadimos al sistema con la siguiente orden:


ip route add default via fe80::c200:15ff:fe70:d68f dev wlan0


Una vez tenemos lista nuestra cuartada en la red, es hora de hacernos pasar por el router dominante de la red y para esto utilizamos un simple comando:


fake_router6 wlan0 fe80::01/16


Por último, vamos a ver los efectos de un...


flood en ipv6:


Flood_router6 'interface'

















Con este ataque consumiremos el ancho de banda de la red 

bloqueandola dejándola inservible mientras dure el ataque..

Fuentes:
http://keepingitclassless.net/
http://portalipv6.lacnic.net/
http://www.gont.com.ar/ipv6/index.html
http://lacnic.net/sp/
http://www.level3.com/en/resource-library/

2 comentarios :