Blog

Man in The Middle (MiTM), Suplantacion de DNS (DNS SPOOFING) y SET

Buenas a todos, en este post vamos a hablar sobre los ataques MiTM (Man in The Middle), que son y una de las formas mas básicas de realizarlos. Después en el próximo post veremos como podríamos crear una web falsa, haciendo una copia exacta de otra web con la herramienta SET (Social Engineer Toolkit) y ademas veremos como es posible redireccionar a las victimas del MiTM o a las victimas que se hayan conectado a nuestro Fake AP a la web falsa que hemos creado en vez de a la pagina real.

Entrando en materia, lo primero que vamos a hacer es definir que es un MiTM o un ataque de hombre en el medio. Es un ataque bastante común en el que el atacante es capaz de interceptar una comunicación entre dos maquinas sin que ninguna de ellas conozca lo que esta ocurriendo, esto va a permitir al atacante leer, inyectar o modificar cualquier tipo de información que sea transmitida entre ambas maquinas.

Es decir, el atacante estará en medio de la comunicación, por lo que cuando la victima envíe un paquete al servidor realmente lo estará enviando al atacante, y sera este el que se encargue de hacerle llegar el paquete al servidor como si fuera la victima. Ocurrirá lo mismo cuando el servidor mande paquetes a la victima, que antes de llegar a la victima pasaran por el atacante.

Main_the_middle

 

Antes de ver un ejemplo practico vamos a ver un poco la teoría de como se produce este tipo de ataques. Lo primero que tenemos que hacer para poder recibir los paquetes tanto de la victima como del servidor es realizar un ataque ARP Spoofing (necesario únicamente en redes switcheadas y no con hubs ya que en este caso todas las comunicaciones ya llegan a todos los host). Este ataque se basa en rellenar las tablas ARP tanto de la victima como del servidor engañandoles para que crean que nosotros (el atacante) es la maquina hacia la que quieren comunicarse. Vamos a ver un ejemplo:

 

Supongamos que nuestra MAC es 00:11:22:33:44:55

La tabla ARP de la victima (IP 192.168.1.2) antes del ataque seria…

Dirección IP 192.168.1.1 (Router) –> MAC: FA:54:DE:2C:37:99

La tabla ARP de la victima 2 (IP 192.168.1.1) que en este caso seria el router para poder interceptar las comunicaciones en una LAN, antes del ataque seria…

Dirección IP 192.168.1.2 (Victima 1) –> MAC: 3F:54:E2:CA:21:D3

 

Una vez ejecutado el ataque, las tablas ARP de las victimas serian las siguientes:

La tabla ARP de la victima (IP 192.168.1.2) seria…

Dirección IP 192.168.1.1 (Router) –> MAC: 00:11:22:33:44:55

La tabla ARP de la victima 2 (IP 192.168.1.1) seria…

Dirección IP 192.168.1.2 (Victima 1) –> MAC: 00:11:22:33:44:55

 

Como vemos ahora las maquinas victimas no enviaran los paquetes a nosotros, y ahora tendremos que redirigir esos paquetes para sus respectivos destinos, pudiendo modificar, leer o inyectar cualquier información que deseemos en la comunicación. Para que este ataque sea efectivo tendremos que estar mandando paquetes ARP maliciosos a ambas maquinas de forma continua para evitar que refresquen su tabla ARP con los valores correctos. Este tipo de ataques se puede hacer con infinidad de herramientas como CAIN, Ettercap, etc…

Ahora vamos a ver como podríamos realizar este ataque en un entorno real.

Lo primero que tenemos que hacer es abrir una consola he introducir: “echo 1 > /proc/sys/net/ipv4/ip_forward “, para activar el reenvió de paquetes.

Después introducimos: “iptables -t nat -A PREROUTING -p tcp –destination-port 80 -j REDIRECT –to-port 10000”, regla de IPTABLES para que se lleve a cabo la dirección.

Ahora vamos a realizar el ataque ARP Spoofing. Este lo podemos realizar a toda la red, de forma que todo pase por nosotros o podemos hacerlo únicamente entre dos maquinas. Las formas de hacerlo serian las siguientes:

A toda la red: “arpspoof -i INTERFAZ_RED IP_ROUTER”

Únicamente entre dos maquinas: “arpspoof -i INTERFAZ_RED -t IP_VICTIMA1 IP_VICTIMA2” y “arpspoof -i INTERFAZ_RED -t IP_VICTIMA2 IP_VICTIMA1” (En dos ventanas distintas para realizar el ataque en ambas maquinas)

En nuestro caso practico seria: “arpspoof -i wlan0 -t 192.168.1.1 192.168.1.10” y “arpspoof -i wlan0 -t 192.168.1.10 192.168.1.1”

1



Como vemos en la imagen hemos seguido todos los pasos, por lo que ahora mismo estaríamos en medio de la conexión entre el router y el equipo victima. Como vemos a continuación en el equipo victima hemos conseguido cambiar en la tabla ARP la dirección MAC del router, haciendo que sea la nuestra.

Dibujo

Dibujo3

 

Ahora si quisiéramos ver todo el trafico de la maquina victima que únicamente necesitaríamos abrir algún analizador de paquetes como wireshark y lo veríamos todo, como por ejemplo las claves en claro que introdujera la victima en alguna web (bajo HTTP, aunque mas adelante veremos como hacer lo mismo para HTTPS). En el próximos post hablaremos de como realizar un ataque DNS Poisoning ademas de ver como crear una web falsa mediante la herramienta SET.

Espero que os haya gustado!

Un saludo,

Eduardo – eduardo@highsec.es – @_Hykeos

  1. BTshell
    BTshell07-01-2013

    Muy bueno, para no variar, gracias Edu 😉

  2. Diego
    Diego07-02-2013

    Esta excelente, gracias me ayudó a comprender más este tipo de ataques.

    • mimenda
      mimenda02-02-2014

      HOLA, Gracias por el tuto, una preguntilla que quería hacer es que cuando hablas de abrir la consola evidentemente te referirás a Linux, los pobres que tenemos a Windows por castigo, tenemos alguna alternativa?.
      Un saludo.

      • Eduardo Arriols
        Eduardo Arriols02-03-2014

        Buenas! jajaj a ver para los que usan (y uso muchas veces xD) Windows, tenemos otras herramientas que nos lo ponen aun mas fácil. Para realizar la parte de MiTM y redireccionamiento podemos usar CAIN (Que es un tipico) o la Foca por ejemplo. Y para realizar un copiado exacto de una pagina podemos utilizar otros programas como HTTrack o cualquier otro, y una ver tengamos la web descargada nos la podemos montar en un servidor nuestro.

        Como ves se puede aunque de una forma distinta 😉

        Un saludo!

  3. Epsilon Minus
    Epsilon Minus02-08-2014

    Muy buen blog.. le estoy tratando de sacar el jugo. Tengo una consulta,

    Después introducimos: “iptables -t nat -A PREROUTING -p tcp –destination-port 80 -j REDIRECT –to-port 10000″, regla de IPTABLES para que se lleve a cabo la dirección.

    no entiendo esta regla de iptables, si la aplico ¿no estoy también redireccionando el trafico 80 de mi victima al puerto 10000 haciendo que vaya a ningun lado? ¿no faltaría otra regla del 10000 al 80? Puedo ver el trafico más allá de esta regla ¿cual sería el sentido?

    ¿alguién me puede explicar un poco mejor esta parte? Gracias!

    • Eduardo Arriols
      Eduardo Arriols02-10-2014

      Buenas Epsilon,

      La regla de IPTABLES lo que hace es que todo el trafico que este mandando la victima al servidor (Con puerto de destino 80, lo cual nos llegara a nosotros al puerto 80 al estar de MiTM) sea redirigido al nuestro puerto puerto 10000, una vez sale por el 10000 sigue su camino como si no hubiera pasado nada hacia el servidor. En cuanto el servidor recibe “nuestra petición” desde el puerto 10000, nos manda la respuesta a ese mismo puerto, y ya de forma automática esta respuesta pasa por nuestro sistema al puerto 80 por donde sale al mismo sistema que nos envió la petición.

      ¿Mas o menos entendido? 😉

      Un saludo!

  4. anonimo
    anonimo03-13-2014

    Hola
    en comando es:
    iptables -t nat -A PREROUTING -p tcp –destination-port 80 -j REDIRECT –to-port 10000

    NO
    iptables -t nat -A PREROUTING -p tcp –destination-port 80 -j REDIRECT –to-port 10000

    recomendaría lo siguiente:
    iptables -t nat -L <======= Ver el estado de la tabla
    iptables -t nat -A PREROUTING -p tcp –destination-port 80 -j REDIRECT –to-port 10000 <===== Agregar
    iptables -t nat -L <======= Ver el estado de la tabla

    Luego de jugar borrar con (se cambia la -A por -D):
    iptables -t nat -D PREROUTING -p tcp –destination-port 80 -j REDIRECT –to-port 10000
    iptables -t nat -L <======= Ver el estado de la tabla

    En caso de falla critica:
    iptables –t nat –F <======= Purga todo!!

  5. anonimo
    anonimo03-13-2014

    Ups por algún motivo no salio bien es
    iptables -t nat -A PREROUTING -p tcp –destination-port 80 -j REDIRECT –to-port 10000
    Delante de destination-port y de to-port hay dos guiones ( – – ) cortos y juntos

Leave a Reply

*

    No Twitter Messages