dsniff en la práctica: Ataque MITM | Algo de Linux

lunes, 15 de septiembre de 2008

dsniff en la práctica: Ataque MITM

Vamos a ver cómo hacer un ataque MITM utilizando la suite dsniff en la práctica.

Para empezar, recordemos que dsniff requiere privilegios de administrador, con lo que si queremos usarlo, tendremos que ser root o tener una cuenta de administrador.

Supongamos que queremos capturar las contraseñas en nuestra propia máquina. Pues bien, no tenemos que hacer es abrir un terminal y ejecutar:
# dsniff -i interfaz

Sustituyendo interfaz por la interfaz concreta en la que queremos capturar el tráfico.

Por ejemplo, si nuestra interfaz de red es eth0, haremos:
# dsniff -i eth0

Ahora bien, si tuviéramos dos interfaces de red: una ethernet (eth0) y otra wifi (wlan0) y salimos a internet por wlan0, podemos hacer:
# dsniff -i wlan0

Una vez lanzado el comando dsniff, abrimos el navegador y entramos en el correo web de terra, por ejemplo. Una vez que introduzcamos nuestro nombre de usuario y nuestra contraseña, nos vamos a la ventana donde tenemos lanzado dsniff y comprobaremos cómo las contraseñas se transmiten en claro (sin cifrar).

Todo esto está muy bien, pero no parece muy útil snifar contraseñas en nuestro propio equipo.
A menos que sea para comprobar la seguridad de nuestra propia máquina y los servicios que utilizamos, lo que todo el mundo quiere saber es snifar contraseñas en otros equipos de la red.
Para ello, antes de ejecutar el dsniff, lo primero que tenemos que hacer es realizar un ataque MITM.

Veamos un ejemplo: Imaginemos que tenemos una red en la que:
  • El router tiene la dirección IP 192.168.1.1.
  • El equipo al que queremos atacar tiene la IP 192.168.1.33.
  • Y nosotros (el atacante) tenemos asignada la IP 192.168.1.34.
Y queremos interceptar las comunicaciones entre el router (192.168.1.1) y la víctima (192.168.1.33).

Lo primero que hacemos es ponernos como root y activar el ip_forwarding en nuestra máquina, ejecutando el siguiente comando en un terminal:
# echo 1 > /proc/sys/net/ipv4/ip_forward

¿Qué conseguimos con ésto? Simplemente no interrumpir la comunicación entre el router y la víctima. Cuando nuestra máquina reciba un paquete que no es para ella, lo reenviará para que el destinatario lo reciba.

En la misma consola ejecutamos el comando :
# arpspoof -i eth0 -t 192.168.1.1 192.168.1.33

Con -i indicamos en qué interfaz de red estamos snifando.
Con -t 192.168.1.1 estamos indicando el equipo cuya tabla ARP estamos envenenando.
Con 192.168.1.33 estamos indicando el host para el que estamos interceptando paquetes.

Abrimos otra consola y ejecutamos el comando:
# arpspoof -i eth0 -t 192.168.1.33 192.168.1.1

Si nos damos cuenta, con este segundo comando estamos haciendo arpspoofing al otro sentido de la comunicación.

Y ya está. Una vez ejecutados los tres comandos anteriores, ya estamos en el medio, interceptando las comunicaciones entre el router y la víctima y la víctima y el router, consiguiendo hacer creer al router que somos la víctima y a la víctima que somos el router.

Una vez que tenemos el ataque MITM en marcha, ya podemos lanzar ataques que nos permitan descubrir contraseñas, espiar conversaciones de messenger, capturar mensajes de correo, matar determinadas conexiones abiertas....

Por ejemplo, si ahra lanzamos:
# dsniff -i eth0

Obtendremos todas las contraseñas en claro que se transmitan entre la víctima y el router.

16 comentarios:

Anónimo dijo...

esta muy bueno esto yo ya lo tengo instalado dsniff en ubuntu pero tengo una duda como saber que ip tiene la victima lo demas mas o menos ahi voy soy nuevo en esto :)

Esteban M. Navas Martín dijo...

No sé exactamente lo que quieres hacer, pero si quieres por ejemplo averiguar qué máquinas están encendidas en la red, puedes usar nmap de la siguiente manera:

nmap -sP rangoaescanear

Yo lo uso a veces en la red para ver si hay usuarios que han dejado máquinas encendidas fuera del horario de trabajo y con qué fines.

También lo uso para detectar máquinas encendidas y encender las que esten apagadas.
Ejemplo: Si quiero ver que máquinas están encendidas en toda la subred de clase C 192.168.1.0, ejecutaré:

# nmap -sP 192.168.1.*

También se suele usar el parámetro -O o -A para averiguar el sistema operativo de una IP concreta:

# nmap -O 192.168.1.128

o

# nmap -A 192.168.1.128

La opción -A nos dá más detalles.

Si en tu red local hay un servidor de dns, puedes utilizar el comando host para averiguar el nombre de la máquina objetivo:

# host 192.168.1.128

Anónimo dijo...

gracias por la información me sirvió mucho ademas esta nmap no lo tenia instalado solo puse

# sudo apt-get install nmap

y rápido corrió gracias por la información y si era quien mas esta conectado en la red muchas gracias

saludos

Osoluche! dijo...

Si deseas identificar redes graficamente y con descripcion de puertos abiertos, te recomiendo Autoscan-network, para usuarios de linux y ubuntu por igual, recupera la ip de cada maquina asi como su nombre y si tiene puertos abiertos, similar a un nmap pero en modo grafico

Esteban M. Navas dijo...

La herramienta autoscan-network está muy bien para ver qué máquinas hay activas en la red y los puertos que tienen abiertos.
Además, te permite almacenar las máquinas conocidas de manera que puedes ver cuando aparece una extraña a tu red. Yo la uso en Debian. Lo que pasa es que en servidores, lo normal es que no haya entornos gráficos y tengas que recurrir a herramientas de línea de comandos, como nmap.
Como esta situación ee frecuente, por regla general, los administradores preferimos trabajar en línea de comandos. Puede parecer árido. Pero cuando te acostumbras, no te cuesta trabajar así. Además, puedes usar las herramientas no gráficas en scripts.

Anónimo dijo...

Saludos, muy buen manual.
Existe la posibilidad de averiguar la IP del router al que me conecto via WIFI ?
Si alguien sabe como hacerlo sería genial que comparta el como.
:D

Anónimo dijo...

Hola
No es por nada ni por criticar a nadie, pero que haceis con programas como el dsniff si ni siquiera sabeis identificar (ips de una red local) que es lo mas basico que hay... lo siento, no tengo la intencion de ofender a nadie pero me mosquea las personas que esperan a que los demas les digan como hacer las cosas sin ellos esforzarse y como es el caso del comentario que no sabe buscar la ip de un router, ni siquiera se ha dado cuenta que en comentarios de mas arriba tiene la respuesta. Empezar la casa por el tejado no es una buena opcion.
Saludos

Anónimo dijo...

"Una vez lanzado el comando dsniff, abrimos el navegador y entramos en el correo web de terra, por ejemplo. Una vez que introduzcamos nuestro nombre de usuario y nuestra contraseña, nos vamos a la ventana donde tenemos lanzado dsniff y comprobaremos cómo las contraseñas se transmiten en claro (sin cifrar)."

Estás seguro?

gerard dijo...

hola broer mira cuando ejecuto
dsniff -i eth1
me sale esto
dsniff: listening on eth1
y se queda ahy.. ya hice todo lo demas .. estoy en mi propia red ( yo uso wifi y mi hijo red cableada )pero no consigo darle chekeo de lo q esta haciendo... como te menciono se qda en ese estado. te dire q las ips son las mismas de tu ejemplo solo vario eth1

alguna idea.

Anónimo dijo...

Hola, y sabes como desactivar el Ip_forward? es que usaba el dsniff para lo mismo, pero usando fragrouter lo hacia asi porque sin el forward podias hacer ataque DOS, pero ahora como le active en el sistema el forward, no puedo volver a hacerlo :S

Esteban M. Navas dijo...

Puedes activar el ip forward haciendo:

sysctl -w net.ipv4.ip_forward=1

Y desactivarlo:

sysctl -w net.ipv4.ip_forward=0

Anónimo dijo...

Interesante entrada! No conocía esta herramienta aunque claro, todavía soy algo nuevo en esto así que... :)

Una pregunta, yo lo he probado con mi red y me funciona, pero ahora me preguntaba si era posible hacerlo fuera de mi red, o sea, con otra ip. Por ejemplo, la ip de un amigo o vecino, ¿cómo lo haría?

Un saludo y muchas gracias :)

Anónimo dijo...

Amigo esto no sirve si las secciones se inician con https verdad? como pasa con facebook hotmail twitter

Anónimo dijo...

Amigo esto no sirve si las secciones se inician con https verdad? como pasa con facebook hotmail y twitter

Anónimo dijo...

álguien que me ayude, estoy realizando paso por paso, pero una vez que culmino todo, el problema es que la victima se queda sin internet y no capturo tráfico, que puede ser? yo estoy trabajando en una máquina virtual, lo que me llama la tensión es que no se me levanta la interfaz wlan0 solo la eth0

Anónimo dijo...

la mayoria no tiene idea de lo que es un host y prentende hacer un "man in the middle"

nunca leer un man o un --help al menos... claro que no campeon!, quien lee man-pages?? si yo hago click aqui y soy todo un hacker!!

Apuesto que sos buenos tambien hackeando una WEP.

Hax0rs clickeadores de Scripts.. hacen mi dia! :D saludos!