8 jul 2011

MiTM: Detectándolo

 

[caption id="" align="alignleft" width="329" caption="Tabla arp"][/caption]

Hoy hablaremos para los más linuxeros del lugar, pero siempre se puede extrapolar la idea a sistemas Windows. La idea que proponemos aquí son métodos para luchar contra el envenenamiento de la tabla ARP. Existen varias formas de evitar este tipo de ataque, unas más avanzadas que otras, pero intentaremos dar un visión global del asunto, problema y solución.

En primer lugar, ¿Qué es la tabla ARP? Según Wikipedia: "La filosofía es la misma que tendríamos para localizar al señor "X" entre 150 personas: preguntar por su nombre a todo el mundo, y el señor "X" nos responderá. Así, cuando a "A" le llegue un mensaje con dirección origen IP y no tenga esa dirección en su tabla ARP, enviará su trama ARP a la dirección broadcast (física), con la IP de la que quiere conocer su dirección física. Entonces, el equipo cuya dirección IP coincida con la preguntada, responderá a "A" enviándole su dirección física. En este momento "A" ya puede agregar la entrada de esa IP a su tabla ARP."

Primer avance

[caption id="" align="alignright" width="254" caption="Ejemplo MiTM"][/caption]

En primer lugar se tratará la siguiente cuestión, cualquier persona que utilice un equipo portátil estará un día en un sitio y otro día en otro, por lo que utilizará distintas redes para conectarse a Internet. Pero, en el equipo de sobremesa de una empresa o de nuestra propia casa si podemos fijar la dirección física del router a nuestro equipo. Con esto, ¿Qué ganamos? si marcamos de modo estático la entrada del router en la tabla ARP conseguiremos que si un atacante intenta envenenar nuestra tabla no podrá cambiar la auténtica entrada del router.

El problema es que si este método lo utilizáramos en un equipo portátil que viaja con nosotros pasando por distintas redes sería algo muy costoso el estar cambiando dicha entrada estática en nuestra tabla ARP. Por lo que es una medio solución para equipos de sobremesa, los cuales están conectados por cable o wifi siempre al mismo router.

Para lograr este efecto:

'sudo arp -s <dirección ip> <dirección física>'

Seguimos avanzando...

Ahora trataremos de ver que solución podemos tener al alcance de la mano con algún script que haga de 'chivato' si la dirección física o mac de nuestra tarjeta de red cambia. Podemos tomar diferentes políticas, evaluemos diferentes casos.

La primera opción sería si detecto que la entrada del router ha cambiado en mi tabla ARP lanzo un mensaje al usuario de alerta.

Script 1

#!/bin/bash

if [ $# -ne 1 ]

 

then

echo "Usage ./mitm.sh <dirección mac>"

exit

fi

mac=$1

while true

do

entradaRouter=$( arp -a | grep 192.168.1.1 | cut -d' ' -f4 )

if [ $mac != $entradaRouter ]

then

echo "Atento la Mac ha cambiado"

exit

fi

sleep 2

done

Para llamar a este script lo ejecutaríamos de dicha forma:

[caption id="attachment_3387" align="alignleft" width="245" caption="Ejemplo lanzamiento"][/caption]

El script mirará cada 2 segundos si la entrada de la tabla ARP 192.168.1.1, ésta puede ser cambiada en función de la IP del router, cambia o sigue siendo la misma... Es útil pasarle la Mac del router como parámetro, pero una modificación sería pasársela en un fichero por ejemplo, donde se almacenase.

Pasemos a una segunda aproximación, podemos hacer que en vez de mostrar un mensaje nos baje la interfaz de red, impidiendo que el tráfico siga saliendo hacia la máquina del atacante.

Script 2

Lo primero es cambiar cuando se detecta que la mac ha cambiado:

if [ $mac != $entradaRouter ]thenecho "Atento la Mac ha cambiado"exitfiLo cambiaremos por la siguiente orden:if [ $mac != $entradaRouter ]thenecho "Atento la Mac ha cambiado"ifconfig <dispositivo red, ejemplo eth0> downexitfi

Hay que tener en cuenta que ahora para ejecutar esa orden, debemos dejar ejecutado el script como administrador, es decir, sudo ./mitm.sh <dirección mac>.

Y para finalizar, también podemos hacer que cuando la mac nosotros la volvamos a cambiar. Sería utilizando el comando arp dentro del if que marca que la mac ha cambiado.

En la actualidad hay programas mucho mas avanzados que miden el número de paquetes ARP y su frecuencia, pero está manera es un método rápido y sencillo con el que conseguimos obtener rápidamente si estamos siendo envenenados o no. Para Windows hay que extrapolar estos scripts a PowerShell por ejemplo.

3 comentarios:

  1. bieeeen, era lo que faltaba; no solo envenenar la tabla ARP, sino lo que al final mas nos interesa, protegernos de este tipo de ataque. Muchas gracias, y un gran trabajo como siempre

    ResponderEliminar
  2. [...] solemos preferir utilizar nuestros propios scripts, como por ejemplo los siguientes para bash: http://www.flu-project.com/mitm-detectandolo.html, ¿os atrevéis a pasarlos a [...]

    ResponderEliminar
  3. [...] la tabla arp. De esto también hemos hablado con anterioridad, por lo que enlace al canto sobre la detección de MITM. Pero, si no tenemos maña con los scripts, que me lo den hecho, y para ello disponemos de la [...]

    ResponderEliminar