Jugando en redes LAN: ARP Spoofing, DHCP Spofing, DNS Spoofing y ataques homográficos

Se viene una nueva serie de artículos denominados «Jugando en redes LAN» en estos post pretendo enseñar en que consisten las técnicas mencionadas en el titulo con el fin de dar a conocer como un atacante mal intencionado puede llegar a atacarnos si estamos en la misma red que el, sea una wifi publica de una cafetería o un intruso en nuestra propia red. Para explicar el alcance de los daños que pueda causar un atacante me pondré el sombrero negro por esta ocasión y simulare los pasos que seguiría.

ARP Spoofing

ARP es un protocolo que funciona en las capas 2 y 3 (capas de enlace y de Red) y tiene la función de asociar las direcciones MAC, direcciones que identifican univocamente una tarjeta de red de un dispositivo o dispositivo de red con las direcciones IP, direcciones que identifican de manera lógica un dispositivo que esta en una red. Un atacante puede enviar mensajes ARP falsos con el fin de asociar su MAC con otro nodo IP de la red, por lo que cualquier tráfico dirigido a esa dirección IP será erróneamente enviado al atacante en lugar de a su destino real.

El protocolo ARP almacena en una tabla local las correspondencias entre las direcciones a esta tabla se le conoce con el nombre de “caché ARP”. Con el comando arp -a podemos ver la tabla ARP, en mi caso el ejemplo es realizando un arp spoofing sobre un dispositivo android.

Existen bastantes programas que nos permiten realizar un ARP spoofing algunos de los más conocidos son Cain&abel, Bettercap, mimtf, ettercap, arpspoof. Podéis usar el que queráis, yo para este ejemplo empleare arpspoof. Veamos que podemos hacer con más en detalle:

Lo primero es permitir el reenvió de paquetes, en caso de que no lo habilitemos lo que conseguiremos al hacer el ARP spoofing es una denegación de servicios, ya que los paquetes llegaran al equipo atacante pero no se reenviaran al equipo objetivo.

  • Ejemplo de denegación de servicio:

Ejecutamos el siguiente comando con el reenvió de paquetes deshabilitado:

arpspoof -i wlan0 -t <target ip> -r <router>
  • Man in the middle (MITM):

El hombre en el medio o man in the middle es una técnica en la que un atacante se sitúa en el medio de una comunicación interceptando los mensajes enviados entre ambas partes, suplantando la identidad de al menos una de ellas.

Para realizar esta técnica basandonos en ARP Spoofing los pasos a seguir son los siguientes:

  1. Habilitar el reenvió de paquetes:
echo 1 > /proc/sys/net/ipv4/ip_forward

2.Interceptamos los paquetes de la víctima:

arpspoof -i <interfaz> -t <target ip> <router>

Este proceso monitoreará el flujo de paquetes desde la víctima al router

3. Interceptamos los paquetes del router a la víctima, para ello sin cerrar el proceso anterior en otra ventana escribimos:

arpspoof -i <interfaz> -t <router> <target ip> 

Observemos de nuevo las tablas ARP. Como podemos ver en la imagen la MAC del router ha cambiando pasando a ser la misma que la del equipo atacante para ese dispositivo

Ya tenemos el Mitm hecho, ahora podemos capturar el trafico utilizando wireshark sobre la interfaz utilizada. Como podemos ver la ip destino de los mensajes es la 192.168.0.105 que es la IP del dispositivo atacado

Hasta aquí funciona bien si el protocolo es HTTP, pero ¿cómo haríamos si quisiéramos ver el trafico HTTPS? Aquí es cuando se complica la cosa, una primera aproximación seria emplear sslstrip, para lo cual antes que nada sera necesario configurar las iptables para redirigir el tráfico del puerto 80 a otro puerto

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

Una vez añadida esta regla, volvemos a hacer el MITM y con sslstrip escuchamos el puerto al que redirigimos el trafico.

sslstrip -l 8080

Sslstrip básicamente reemplaza los enlaces HTTPS en los resultados del motor de búsqueda con enlaces HTTP.Cosa que funciona a medias, ya que si los sitios web de destino tienen la cabecera de Strict-Transport-Security (a menudo abreviado como o HSTS) en la primera conexión que se ha establecido con el sitio, se evitará que el navegador establezca conexiones solo HTTP. Existen webs que dada su importancia tienen HSTS harcodeado en el navegador,de forma que solo admiten conexiones HTTPS. Podemos consultar la lista de webs que se encuentran con HSTS precargado en el siguiente enlace https://hstspreload.org/. Existen formas de saltarnos HSTS pero eso queda a para otro post.

Para ver el trafico capturado por sslstrip, tenemos que consultar el fichero sslstrip.log que se encuentra en nuestro directorio home.

Contramedidas:

Como contramedida podemos utilizar software como Arpwatch, el cual genera un log con las asociaciones de IP y MACs junto a un timestamp permitiendo así detectar ataques como el arp spoofing

DHCP Spofing

DHCP (Dynamic Host Client Configuration Protocol) es un protocolo de red utilizado por los clientes para obtener su dirección IP de forma automática gracias a este protocolo es por lo que al conectarnos a una red wifi no necesitamos especificar una ip de forma manual. Funciona de la siguiente forma:

  1. El cliente de DHCP se comunica con el servidor de DHCP mediante un mensaje de difusión en el área local (envía un mensaje de broadcast). Es el mensaje DHCPDISCOVER que el cliente envía para descubrir si hay algún servidor DHCP a la escucha
  2. Los servidores que están a la escucha, ofertan una dirección IP. Para ello envían al cliente un mensaje DHCPOFFER. El cliente elige la “mejor” de ellas
  3. Si el cliente puede aceptar esta concesión, envía una DHCPREQUEST de broadcast, solicitando la dirección IP ofrecida. Esta solicitud también contendrá todas las opciones de configuración que el cliente de DHCP desea obtener. Los servidores no seleccionados utilizan el mensaje como notificación de que el cliente ha declinado su oferta.
  4. El servidor envía el mensaje DHCPACK aceptando la petición (si no la acepta, se envía un mensaje de denegación). El mensaje incluye la dirección MAC del cliente, la dirección IP y máscara de subred asignadas, la dirección IP del servidor y el período de validez de la concesión.

El DHCP spoofing consiste en enviar una configuración IP “desde un servidor DHCP” no autorizado en la red para ello se debe crear un servicio DHCP que compita con el del router, de forma que cuando se acabe el tiempo de concesión de una IP compita con el router por ser nuestro servidor quien pase a darle la nueva IP a ese equipo.

Para realizar este tipo de ataque el primer paso es montar un servidor DHCP, veamos como se hace:

1.Instalar el servidor DHCP

sudo apt-get install isc-dhcp-server

2.Configurar el servidor DHCP

Una vez instalado,tenemos que editar el archivo de configuración del servicio DHCP que se llama /etc/dhcp/dhcpd.conf. Un ejemplo de una configuración valida seria el siguiente

range: Rango de Ips del servidor dhcp.
option domain-name-servers: Servidor DNS a usar.
option subnet-mask: mascara de subred.
option router: IP del router.
option broadcast-address: la dirección de broadcast para la red.
default-lease-time: tiempo de concesión para clientes que no solicitan una duración
específica.
max-lease-time: duración máxima de la concesión.

Comprobamos que la configuración es correcta con sudo dhcpd -t

Ejecutamos el servicio DHCP escribiendo

 service isc-dhcp-server start

Podemos ver las concesiones que ha realizado nuestro servidor DHCP consultando el archivo /var/lib/dhcp/dhcpd.leases

Con esta técnica es posible:

  • Denegar el servicio al proporcionarle al cliente una configuración IP invalida (Ojo si hay otro servidor DHCP puede que no lo llegue a escoger al detectar que la configuración IP no es valida para la red dada)
  • Realizar un Man in the middle poniendo la ip de nuestra equipo en la opción del router y habilitando la redirección de puertos (Similar a lo visto en el ARP Spoofing)
  • Realizar un DNS spoofing al establecer en los clientes como servidor DNS un servidor DNS bajo nuestro control

Contramedidas:

Este método es fácilmente detectable mirando los servidores que responden a las peticiones de DHCPDISCOVER. Para ello solo necesitamos solicitar una ip nueva y ver con el wireshark el numero de servidores DHCP que responden.Desde windows liberamos nuestra ip con ipconfig /release y solicitamos una nueva IP con ipconfig /renew

Como podemos ver en la imagen, recibimos dos DHCPOFFER uno por parte del router 192.168.0.1 y otro por parte del equipo con el servidor DHCP 192.168.0.119

DNS Spoofing

El protocolo DNS (Domain Name System) es el encargado de traducir las direcciones IP en nombres y viceversa.Es gracias a este protocolo que para acceder por ejemplo a google podemos poner google.com y no necesitamos poner 172.217.17.14 que es la dirección IP asociada.

El DNS Spoofing consiste en alteran las direcciones IP de los servidores DNS de la víctima para que apunten a servidores maliciosos. Ya con el DHCP spoofing vimos una forma de realizar también un DNS Spoofing pero no es la única, otra forma más sencilla seria empleando la herramienta mimtf.

Mimtf se trata de una herramienta moderna para realizar ataques Man In The Middle, esta herramienta que contiene un servidor HTTP, DNS y SMB que pueden ser controlados y utilizados por varios de los plugins que incluye la herramienta, entre ellos sslstrip que nos permitirá realizar un bypass parcial de HSTS. 

0.Instalación de la herramienta mimtf:

apt-get install python-dev python-setuptools libpcap0.8-dev libnetfilter-queue-dev libssl-dev libjpeg-dev libxml2-dev libxslt1-dev libcapstone3 libcapstone-dev libffi-dev file

git clone https://github.com/byt3bl33d3r/MITMf
cd MITMf && git submodule init && git submodule update --recursive

pip install -r requirements.txt
  1. El primer paso seria configurar la cache DNS de mitmf, de forma que al resolver los dominios que especifiquemos apunte al servidor web de nuestro equipo atacante. Para ello debemos modificar el archivo mimtf.conf que se encuentra en el directorio config dento de la carpeta de instalación de mimtf.

Para este ejemplo he puesto dos registros DNS que apuntan exactamente a la misma dirección uno con facebook.com y otro para marca.com , configurandolos tanto por IPv4 como por IPv6. Si os preguntáis si es necesario configurarlo para IPv6 , la respuesta es que depende del escenario, en este caso mi target es un dispositivo Android y todas las versiones Android 5 en adelante usan IPv6 por defecto para la resolución DNS

2. Normalmente el DNS Spoofing se suele usar para la obtención de credenciales mediante phising, es decir, utilizar un clon de una web con la que suplantar una web real para obtener las credenciales aunque no es su unico uso, veamos un ejemplo de clonando la web de facebook.

Para ello podemos utilizar la herramienta de setoolkit de la siguiente manera: Social-Engineering attacks > Website attack vectors > Credential Harvester Attack Method > Site Cloner

3.Ahora que ya esta configurada la cache DNS y tenemos un servidor web corriendo una copia de facebook, lanzamos MITMF con las siguientes opciones:

python mimtf.py -i wlan0 --spoof --arp --dns --target <objetivo> --gateway <router>

Veamos que pasa si desde el objetivo accedemos a marca.com y facebook.com que recordemos apuntan exactamente a la misma dirección.

Como podemos ver el DNS Spoofing funciona mandandonos al ingresar marca.com al phising de facebook. Aunque fijo que os estaréis preguntando ¿cómo es posible que con marca.com funcione pero con facebook.com no? Pues tiene que ver con algo de lo que ya hemos hablado en este post,resulta que facebook se trata de una de esas paginas en las que el propio navegador tiene HSTS precargado (recordad podeis consultar la lista en https://hstspreload.org/ ). Y como ya dije antes que se me sale del objetivo de este post hablar sobre lo que se puede hacer con HSTS, así que voy a aprovechar esta ocasión para introducir un concepto del que los malos se aprovechan y esta muy relacionado con la resolución de nombres DNS, los ataques homográficos.

DNS Spoofing + Ingeneria social: Ataques homográficos

Ya hemos visto como con el dns spoofing se puede responder a una petición de una url con una web que no es la verdadera, pero claro si preguntamos por facebook y nos manda hacia otro lado casca y no se lo come. Entonces ¿qué podemos hacer? Una opción seria usar una url distinta y algo de ingenería social, aquí hay varias opciones desde acortadores de enlaces, usar otros dominios ej; http://www.facebook.priv.com aqui el dominio de segundo nivel seria priv mientras que facebook solo seria un subdominio de priv por lo cual se lo comería con patatas.

Otra opción seria jugar con los parecidos y justo en eso consiste un ataque homográfico, lo explicare con ejemplos si en vez de acceder a google.com , ponemos qoogle.com o en vez de facebook.com a faceboooķ.com, si no nos fijamos probablemente nos lo comamos. Pero ya no es solo que podamos cambiar una «g» por una «q», sino que podemos jugar con los caracteres unicode para crear un texto que en apariencia sea exactamente igual. Para ello podemeos usar paginas como la siguiente:

https://www.irongeek.com/homoglyph-attack-generator.php

Simbolos parecidos a nustro string en unicode

Ejemplo de URL homográfica que acabamos de generar:

http://www.facebооk.com

Como veis en apariencia es exactamente igual aunque como podréis comprobar al entrar al enlace cambia la codificación del texto convirtiéndose en http://www.xn--facebk-0qfa.com/ , por lo que debemos añadir esta url también a la cache DNS de mimtf

Y listo ahora al pulsar sobre ese enlace anterior que en apariencia es igual , nos lleva a nuestro phising de facebook

Aclaración: Algunos navegadores pueden detectar estos ataques homográficos, en mi caso todas las pruebas están realizadas con el navegador por defecto de mi dispositivo android (Mi browser)

Y hasta aquí este post! Como ya os habréis podido percatar estos 3 ataques están estrechamente relacionados entre si, ya que con DHCP Spoofing podemos conseguir un DNS Spoofing, para realizar el DNS Spoofing tenemos que pasar por realizar un ARP Spoofing. Es por ello que he querido tratar estas tres técnicas en conjunto dentro del mismo post.

Espero que os haya sido de utilidad , Bye 🙂

Referencias:

https://null-byte.wonderhowto.com/how-to/defeating-hsts-and-bypassing-https-with-dns-server-changes-and-mitmf-0162322/

Deja un comentario

Esta web funciona gracias a WordPress.com.

Subir ↑

Diseña un sitio como este con WordPress.com
Comenzar