Estaba intentando usar dnsspoof pero no funcionó como se esperaba. Estos son los pasos que seguí:
- Establecer IP hacia adelante en el kernel a 1
-
arpspoof -i eth0 -t 192.168.1.39 -r 192.168.1.1
yarpspoof -i eth0 -t 192.168.1.1 -r 192.168.1.39
. Comprobado conarp -a
y funciona - Crea un archivo.txt con:
137.222.0.38 *.hello.com
-
dnsspoof -i eth0 -f file.txt
Desde la computadora víctima 192.168.1.39
, navego a www.hello.com
y se redirige al sitio real. La salida de dnsspoof
es:
dnsspoof: listening on eth0 [udp dst port 53 and not src 192.168.1.35]
192.168.1.39.1113 > 8.8.8.8.53: 3864+ A? www.hello.com
192.168.1.39.1113 > 8.8.8.8.53: 3864+ A? www.hello.com
He comprobado en Wireshark
y parece que la víctima está recibiendo respuestas de la misma IP con el enrutador MAC (primero) y con el atacante MAC (segundo). He vaciado el DNS y he intentado nuevas solicitudes, aunque esto no debería ser necesario en teoría. Mis preguntas son:
1) ¿Por qué esto no funciona? Alguien ha sugerido usar iptables
para bloquear paquetes del enrutador, pero parece extraño que dnsspoof
no lo haga. hágalo solo, y ninguno de los tutoriales que he revisado ( 1 , 2 , 3 , 4 ) requiere este paso. Además, no puedo obtener la regla iptables
correcta para que esto funcione correctamente.
2) Muchos tutoriales parecen usar dnsspoof
sin arpspoof
. ¿Es este último realmente necesario? Lo menciono porque una vez (por casualidad) la falsificación del DNS pareció funcionar en otra computadora que no estaba "protegida".
3) ¿Cómo funciona dnsspoof
? ¿Solo escuchando las solicitudes de DNS en toda la LAN y luego devolviendo la resolución?
EDIT
Con el comando iptables
comando iptables -D FORWARD --match string --algo kmp --hex-string '|68 65 6c 6c 6f|' --jump DROP
, el enrutador no se consulta y solo se envía el DNS falsificado. Sin embargo, el navegador de la víctima sigue cargando para siempre y finalmente dice que no puede acceder al sitio (?). Sin el comando iptables
puedo ver cómo funciona la solicitud de esta manera:
victim --> attacker --> router
y respuesta: router --> attacker --> victim
Y justo después de esto, el atacante envía dos veces el DNS falsificado a la víctima. Una vez más, todavía estoy confundido acerca de este comportamiento y todavía no he respondido ninguna de mis tres preguntas. Creo que la respuesta para (2) es que dnsspoof
suplantó a toda la red, pero solo si lo hizo arpspoof
antes de poder garantizar que el paquete falsificado llegará a la víctima antes que el legítimo. Sin embargo, en mi caso, esto no funciona porque la petición se reenvía.
EDIT
Esta es una captura de red con el mismo ejemplo en otra red (10.10.10.0). El DNS legítimo se reenvía primero y, más tarde, el DNS falsificado. En este ejemplo, hubo otras peticiones en medio de ambas respuestas, pero a menudo recibo los paquetes uno tras otro.