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
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 ThcIPv6: 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/
http://www.hackplayers.com