Realizando un DNS Spoofing - BoomerNiX

lunes, 26 de marzo de 2018

Realizando un DNS Spoofing


En este tutorial se hablará de cómo hacer un DNS spoofing, que nos servirá para engañar a una víctima en sus peticiones web, por ejemplo, si navega a facebook, nosotros le podremos mandar una página hecha a nuestra medida, si está bien hecho la víctima no se dará cuenta.

Antes de continuar leyendo si se desconoce que es el protocolo de sistema de nombres de dominio (DNS) es conveniente consultarlo, se puede ver en la wikipedia.

¿Cuándo es de utilidad está técnica? Por ejemplo, cuando alguien sin permiso se conecte a nuestra red, están en nuestra "casa", ;). Desde BoomerNiX no se alienta a hacer un uso irresponsable de esta técnica.

Tenemos muchas herramientas en la red para hacer esta tarea, aquí se va a utilizar arpspoof y dnsspoof en Kali Linux, además se necesitará un servidor web corriendo en nuestra máquina (aquí usaremos algo rápido y con Django valdrá). Vamos a comenzar.

Comprobar y activar ip_forward

Lo primero que tenemos que hacer es comprobar si está activo el IP forwarding, para que nos permita reenviar paquetes, para ello ejecutaremos:

sysctl net.ipv4.ip_forward

Si nos sale 0, está deshabilitado, si es 1 ya lo tenemos activado, en la siguiente imagen se ve la salida de ejecutar el comando:


Para activarlo ejecutaremos el siguiente comando:

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

Después podemos volver a comprobar si ya tenemos el 1.

Envenenar tabla ARP

Para continuar tenemos que envenenar la tabla ARP de la víctima, para que así está piense que somos el punto de acceso, para ello usamos arpspoof (no usar las comillas, ver imagen):

arpspoof -i eth0 -t “IP víctima” “IP router”
arpspoof -i eth0 -t “IP router” “IP víctima”

-i sirve para indicar la interfaz a usar (aquí eth0), -t define la dirección de la víctima, se deja captura de uno de los comandos.


Para saber la IP de la víctima podemos entrar en el panel de control de nuestro router (caso indicado al inicio, de que alguien haga mal uso de nuestra red) o usar nmap, en este caso es un entorno de pruebas por lo que obtener la IP es tan fácil como usar ipconfig (nuestra "víctima" es Windows).

Usar dnsspoof para realizar la PoC

Ahora, necesitaremos crear un fichero con nuestra información de hosts antes de usar dnsspoof, vamos a ver uno sencillo en el que resolveremos las peticiones a twitter y facebook hacía nuestro servidor, el archivo le vamos a llamar host.txt, y tendrá el siguiente contenido:

192.168.0.194 *facebook*
192.168.0.194 *twitter*

Se procede a ejecutar dnsspoof de la siguiente manera:

dnsspoof -i eth0 -f host.txt

-i es de nuevo la interfaz a utilizar, y -f el fichero que creamos antes, del que se servirá para resolver las peticiones a los dominios que se encuentran, si visita otro se dirigirá al correcto.

En este instante, si desde el ordenador de la víctima visitamos facebook, tendremos la siguiente salida en la terminal de nuestra máquina:


Y en el navegador de la máquina víctima nuestra página:



Aquí se redirige a la página que por defecto nos lanza Django, y no hay nada interesante que ver, pero  en este punto se podrían conseguir muchas cosas, como por ejemplo, conseguir los datos almacenados en sessionStorage o localStorage, puedes visitar w3schools para leer sobre estos datos.

Nota: si las pruebas os dirige a la página original, revisa los paquetes con un sniffer como Wireshark, para comprobar si la primera resolución nombre-IP es tu DNS. Para solucionarlo se puede usar IPTABLES para redirigir el tráfico y evitar que llegue a la víctima.

Hasta aquí llega el tutorial de DNS spoofing, hasta la próxima entrada.

2 comentarios:

  1. Espectacular no todos llegan a necesitar o entender este nivel y en español no es facil conseguir informacion,mil gracias. Felicidad y salud

    ResponderEliminar
  2. Una pregunta, ¿Cómo puedo redireccionar el tráfico al puerto 80 en vez del puerto 53, al momento de usar dnsspoof me indica el puerto destino en 53.

    ResponderEliminar