jueves, diciembre 04, 2014

Android, iOS & OS X vulnerables a ataques de Man in the Middle con ICMP Redirect: Double Direct. ¡Cuidado!

Dentro de la especificación del protocolo ICMP - y de ICMPv6 - existe la posibilidad de enviar desde los routers cambios para tablas de enrutamiento a los clientes mediante un paquete llamado ICMP Redirect. De esta forma, la puerta de enlace de un determinado equipo de la red de que para ir a un destinatario concreto es más rápido ir por otro de los routers de la red.

Figura 1: Android, iOS & OS X vulnerables a ataques de Man in the Middle con ICMP Redirect

Esto es conocido desde hace mucho tiempo, y por supuesto un usuario de la red malicioso podría utilizarlo para hacer un ataque de man in the middle. Hace un par de semanas se ha liberado una herramienta que lo hace fácilmente desde plataformas de pentesting con Kali Linux

Android, iOS & OS X Vulnerables

Para que el ataque funcione, el cliente debe ser vulnerable a este ataque permitiendo aceptar los mensajes de ICMP redirect. Para comprobar si tu Android es vulnerable a este ataque, necesitas tener una conexión de terminal y verificarlo con el comando siguiente:

# cat /proc/sys/net/ipv4/conf/all/accept_redirects

Si te ha salido un valor de 1, entonces es que eres vulnerable al ataque y cualquiera te puede hacer un ataque de man in the middle con un paquete de ICMP Redirect.

Figura 2: Un Android Samsung Galaxy S4 aceptando paquetes ICMP Redirects

Por desgracia, a pesar de que la mayoría de los sistemas GNU/Linux y Windows no los aceptan desde hace tiempo por seguridad, la mayoría de las versiones de los sistemas operativos iOS, OS X y Android  los aceptan, por lo que los hacen carne de cañón en redes compartidas o redes WiFi, algo que es altamente peligroso.

En los sistemas OS X, tanto OS X 10.10 Yosemite como OS X 10.9 Mountain Lion son vulnerables, y lo puedes probar en tu propio equipo con el siguiente comando de consola:
sysctl net.inet.icmp.drop_redirect | grep ": 0" && echo "DoubleDirect: VULNERABLE" ||echo "DoubleDirect: SAFE" 
Como se puede ver en la siguiente imagen, en uno de mis equipos con OS X se puede comprobar cómo es vulnerable a este ataque al aceptar ICMP Redirects.

Figura 3: Por defecto OS X acepta paquetes ICMP Redirects

Para cambiarlo es necesario modificar el valor de net.inet.icmp.drop_redirect como Administrador para que se tiren todos los intentos de cambios de rutas.

Figura 4: OS X configurado para no aceptar paquetes ICMP Redirect

La Prueba de Concepto de ICMP Redirect

Si la víctima es vulnerable, con esta herramienta que han publicado en Zimperiun para enviar ICMP Redirects con las direcciones IP que se quiera influir se puede hacer un man in the middle a cualquier dirección IP de destino. Por supuesto, lo más interesante es cambiar el redirect de los servidores DNS de Internet que se tenga configurados la víctima, para poder manipular el resto de conexiones a dominios.

Figura 5: Prueba de Concepto de DoubleDirect la herramienta para hacer mitm con ICMP Redirect

Este ataque también funciona en IPv6, por lo que, si no estás haciendo uso de este protocolo, entonces aquí tienes cómo desactivar IPv6 en Windows y cómo desactivar IPv6 en OS X. Así te quitas de todos los ataques que implementa Evil Foca, que a día de hoy no implementa el ICMP Redirect, pero seguro que en breve lo hace. Tienes más información de este tipo de ataques en el libro de Ataques de red en IPv4/IPv6

Saludos Malignos!

6 comentarios:

  1. Carlos Barbudo4/12/14 11:25 a. m.

    El blog de Zimperium ha actualizado su post para indicar que la solución que dan (y que calcas aquí) para OSX no es persistente:

    «Edit: This fix is not persistent – you need to add this line to your startup scripts to be safe after a reboot. (thanks Jon Schwenn for pointing this out)»

    Haces un gran trabajo con este blog y se te agradece muchísimo, pero este post se acerca peligrosamente el plagio. Si la próxima vez vas a hacer una traducción de la entrada de otro blog, avísalo al comienzo.

    Abrazos.

    ResponderEliminar
  2. Carlos Barbudo4/12/14 11:53 a. m.

    ¡¡Mil disculpas!! La crítica por plagio no debía ir aquí, era para otro blog. Lo siento mucho.

    Eso sí, lo de la solución para OSX sigue siendo válido.

    Para que el rechazo de paquetes ICMP Redirect sea permanente hay que añadir al fichero /etc/sysctl.conf :

    net.inet.icmp.drop_redirect=1


    Saludos y disculpas

    ResponderEliminar
  3. @Calos Barbudo, gracias. Lo del cambio es cierto. Para que sea permanente debes configurar el fichero de arranque del sistema.

    Saludos!

    ResponderEliminar
  4. Entonces, aunque sepamos que nuestro smartphone es vulnerable a este tipo de ataques en conexiones "WiFi", no se puede hacer nada para evitarlo (¿sin rootear el terminal?)

    ResponderEliminar
  5. Y cual es la solucion para IOS .

    ResponderEliminar
  6. Para iOS es igual pero yo no he conseguido que funcione dentro del sysctl.conf en etc por lo que habria que ejecutarlo cada vez que inicias el telefono desde el terminal con root

    ResponderEliminar