Saltar al contenido

MITM Ataque Man In The Middle

Un ataque Man In The Middle, en español Hombre en el Medio, consiste en interceptar las comunicaciones entre dos o más equipos de una red en la que hemos logrado conectarnos para que todo el tráfico pase por nosotros y poder así desencriptar sus datos, contraseñas, etc.

Es muy común este tipo de ataques en redes wifi abiertas de establecimientos comerciales, donde nos conectamos de forma anónima, pudiendo obtener las contraseñas del resto de usuarios, por lo que este tipo de redes son bastante peligrosas para sus usuarios.

También puede ser llevado a cabo por un auditor cuando accede a una red empresarial, obteniendo diferentes credenciales de los empleados para las aplicaciones corporativas.

La forma de efectuar este ataque consiste en desviar el tráfico entre una víctima y un equipo de red, ya sea el router o un servidor concreto. Lo que hace el atacante, es engañar a ambos equipos, de forma que la víctima crea que somos el destino de su comunicación, y que el destino crea que somos el origen, permaneciendo en medio.

Para este ejemplo de ataques vamos a utilizar dos máquinas virtuales; para la víctima utilizaremos un Windows XP y como atacante usaremos Kali Linux.

Si alguien tiene alguna duda de como instalar VirtualBox con Kali Linux o un Windows puede darle un vistazo a estos enlaces:

En primer lugar abriremos la máquina virtual de Windows XP y haremos un ipconfig para comprobar qué IP nos ha asignado. Esto es importante porque ambas máquinas deben estar dentro del mismo rango. Para ello, dentro de la configuración de cada máquina en VirtualBox, en la opción Red, elegiremos para ambas máquinas la opción Adaptador Puente que hará que el router nos asigne una IP de su rango mediante el DHCP. Con NAT nos asigna la IP 10.0.2.15 en todas las máquinas, no viéndose entre ellas. Es importante también al poner Adaptador Puente, seleccionar en el desplegable la tarjeta de red que esté usando el equipo anfitrión, si conectamos por cable, debemos poner la ethernet, ya que si seleccionamos la tarjeta wifi no tendremos conexión en la máquina virtual.

En mi caso, se puede ver como la IP de windows es la 192.168.1.68 y la del router la 192.168.1.1

El siguiente paso será abrir la máquina virtual de Kali Linux y hacer el mismo proceso pero en el caso de Linux para ver la IP se usa ifconfig. Podemos ver la interfaz es eth0 y que la IP que nos ha asignado es la 192.168.1.67 por lo que ambas máquinas tienen el mismo rango:

Ahora en Kali Linux, dentro del menú Husmeando, abriremos Ettercap en modo gráfico:

También podríamos ejecutar Ettercap desde la misma terminal utilizando el comando:

ettercap -C

Y veríamos esto:

En mi caso he ejecutado ettercap en modo gráfico:

Aquí le daremos a esnifar “Unified sniffing”:

y seleccionamos la interfaz de red que en mi caso hemos visto que era eth0:

le pediremos que escanee los host:

En mi caso la respuesta es que no ha encontrado ningún host. Lo normal es que encuentre todos los que están activos pero si nos encontramos en esta situación lo primero sería verificar que tenemos el firewall desactivado y si el problema persiste nos iremos a la opción Profiles y le diremos que los convierta a la lista de host:

Ahora elegiremos la dirección IP del router y la añadiremos como Target1:

Y la de la máquina víctima como Target2:

Con esto, nos iremos al menú de ettercap y en la opción Mitm elegimos como tipo de ataque ARP poisoning:

En los parámetros opcionales le indicamos que esnife las conexiones remotas:

Ahora le damos a Start sniffing:

En este punto ya estaríamos en medio de la conexión. Para comprobarlo podemos ir a la máquina víctima (Windows) y escribimos:

arp -a

Donde antes podíamos ver que la Mac del router terminaba en 7a y la de la máquina Kali que terminaba en 77:

Ahora veremos que la dirección física del router ha cambiado y es la misma que la de la máquina atacante (Kali Linux):

Windows, ahora piensa que la máquina atacante es el router y el router piensa que la máquina atacante es el Windows.

Una vez engañada la víctima nos volvemos a la terminal de Kali Linux y escribiremos:

nano iptables.sh

Cuando lo abramos con el editor (por ejemplo yo he usado nano) aparecerá un archivo vacío que tendremos que rellenar con lo siguiente para modificar las iptables del firewall de Linux:

echo 1 > /proc/sys/net/ipv4/ip_forward

iptables -F

iptables -X

iptables -Z

iptables -t nat -F

iptables -P FORWARD ACCEPT

iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE

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

iptables-save > /etc/iptables.up.rules

En este punto puede que de un error. El motivo más frecuente es por escribir el iptables en Windows y pasarlo a Linux. En muchas ocasiones nos mete lo que se llama retorno de carro, que son unos caracteres que aunque no se vean nos causarán errores en Linux. Para evitar esto, lo mejor es escribir el iptables en Linux directamente.

Es importante asegurarnos que en la línea de PREROUTING esté nuestra interfaz de red. Yo, en mi caso, he cambiado eth1 por eth0:

Con esto le estamos diciendo que todo el trafico web que llegue por la interfaz eth0 con el puerto de destino 80 sea redireccionado al puerto 10000 (podría ser cualquier otro puerto que esté libre pero he usado este que por defecto suele estar libre).

Para guardarlo damos a Crtl+O, le damos a enter y luego Crtl+X para salir.

Si hacemos ls para listar el contenido vemos que ha creado el archivo iptables.sh:

Ahora tendremos que darle permisos al archivo. Para no tener problemas le daremos permisos totales con:

chmod 777 iptables.sh

seguidamente lo ejecutamos con:

./iptables.sh

y ya tendríamos funcionando el firewall:

Hay muchas páginas que funcionan con ssl, es decir https, por lo que vamos a utilizar una aplicación llamada sslstrip que redirecciona el tráfico ssl que por defecto va por el puerto 443 para que lo pase por el puerto que nosotros queremos. Ejecutaremos la aplicación con:

sslstrip -f -l 10000

donde 10000 es el puerto que habíamos puesto en las iptables:

Una vez que le demos a intro veremos que ya está funcionando:

Ahora nos vamos al equipo víctima (Windows), abrimos el navegador y accedemos a una página como por ejemplo la de facebook para iniciar sesión. Ponemos un usuario y una contraseña que en este caso no existe ya que me la he inventado para hacer la prueba:

Lógicamente nos dirá que el usuario no existe ya que me lo acabo de inventar para la prueba pero si ahora nos vamos a la máquina atacante, Kali Linux, y observamos ettercap nos muestra los datos que hemos puesto en la máquina víctima (email y password introducidos):

Con esto muchas webs seguras deben funcionar, pero algunas seguirán sin capturar las credenciales. Esto es debido a un sistema de protección llamado HSTS, que es una cabecera web al navegador de los visitantes, que una vez visitada su web, les obliga a usar el tráfico por SSL durante un tiempo determinado en dicha cabecera web. Este es un sistema relativamente reciente implantado en algunas webs, cada vez en más. Para hacer las pruebas os recomiendo no visitar antes la web original o usar otro navegador diferente cuando realicéis el ataque, así no tendrá cacheada esta cabecera.