Robando cookies de sesión con Wireshark en 15 pasos

Vamos a aprender cómo robar una cookie de sesión con Wireshark en una red local (LAN).
Primero que nada vamos a dar un poco de contexto.
  1. Una red local (LAN) implica que sí, será a través de Internet, pero deberás estar conectado a la misma red, ya sea inalámbrica o vía ethernet (por cable) que tu víctima.
  2. Cookies de sesión son los archivos "temporales" (en teoría deberían ser temporales) que se generan cuando alguien inicia sesión en una aplicación web.
  3. Vulnerabilidad aprovechada.- Vamos a aprovecharnos de varias vulnerabilidades: 
    1. La página web donde se inicie sesión va sobre HTTP y no HTTPS (aunque es posible hacerlo también sobre HTTPS).
    2. La cookie de sesión no tiene habilitadas las "banderas" secure ni httponly, las cuales impiden que la cookie pueda ser reutilizada en otro navegador.
    3. La página web donde se inicie sesión no hace uso de token de sesión, el cual sería un candado adicional para evitar el robo de cookies de sesión.
  4.   A nuestra víctima no le importa o no sabe nada sobre seguridad de la información, y considera una buena práctica iniciar sesión en una red gratuita, digamos una cafetería, porque le gusta trabajar cómodamente mientras disfruta de su bebida.
¿Qué necesitamos?
  1. Una máquina virtual con Kali Linux o con Parrot OS
  2. Tener la red de nuestra máquina virtual en modo bridge
  3. Conocer la dirección IP de la víctima
  4. Conocer el sitio web a atacar (la URL)
  5. Conocer la puerta de enlace predeterminada de la red a la que estamos conectados
  6. Estar conectados en la misma red que la víctima
  7. Un pasamontañas, por si quieres verte como los hackers que nos pintan en las televisoras 😋
Obteniendo nuestra IP
En nuestra máquina virtual, abrimos una terminal y ejecutamos el comando ifconfig para obtener nuestra dirección IP local:


Obteniendo la Puerta de Enlace Predeterminada
En esa misma terminal, ejecutamos el comando netstat -r 


Obteniendo el objetivo
Vamos a ejecutar nmap con algunas opciones para poder identificar nuestro objetivo y estar seguros de que no estamos atacando a la persona equivocada. Como estamos con un usuario que no es root, debemos solicitar los permisos necesarios para ejecutar nmap, por lo que vamos a solicitar la ejecución de nmap con permisos administrativos mediante el comando sudo, lo cual quedaría de la siguiente manera: 

sudo nmap -f --script smb-os-discovery -p 445 172.16.0.0/24 

Vamos a explicar el comando:
  • sudo nmap   Lo que hace ese ejecutar nmap con permisos de administrador
  • -f   Envía los paquetes de red "fragmentados", para evadir, en la medida de lo posible, firewalls, IDS e IPS.
  • --script smb-os-discovery   Utiliza el script smb os discovery para determinar el sistema operativo que está usando la víctima y su nombre de equipo
  • -p 445    Se especifica que utilice el puerto TCP 445 para obtener la información del punto anterior
  • 172.xx.xx.xx/24    Se especifica el segmento de red a escanear

Nota.- En ocasiones puede no salir información sobre el hostname, como se muestra en la siguiente pantalla, pero si investigamos más a fondo, podremos determinar si es o no el equipo que queremos atacar.

Realizando el ataque

Ya tenemos los datos de la víctima, es decir, la dirección IP y ahora vamos a realizar el ataque.

El tipo de ataque que haremos se conoce como MITM (Man In The Middle). A continuación les dejo un gráfico que les dejará más claro cómo funciona este tipo de ataques.
Como se puede apreciar, básicamente se trata de ponernos entre el usuario víctima y su conexión a Internet, con la finalidad de poder capturar su tráfico y así robar su cookie de sesión. Vamos entonces a realizar el ataque (ahora sí):

1.- En la consola que ya teníamos abierta, vamos a ejecutar el siguiente comando para iniciar nuestro MITM (si no nos permite hacerlo, habrá que cambiarnos a root con sudo su y luego ejecutar el comando): sudo echo 1 >> /proc/sys/net/ipv4/ip_forward

2.- Ahora, dentro de esa misma consola, vamos a iniciar arspoofing, lo que nos permitirá capturar el tráfico de la red local en la que estamos conectados: 

arpspoof -i [tu interfaz de red] -t [IP de la víctima] [puerta de enlace predeterminada]

En este ejemplo, el comando quedaría de la siguiente forma:

arpspoof -i eth0 -t 172.16.0.236 172.16.0.254

3.- Vamos a minimizar la terminal que acabamos de usar y vamos a abrir una nueva. En esta nueva terminal, vamos a ejecutar el siguiente comando (si no te deja, recuerda cambiarte a root con sudo su y luego ejecuta el comando):

arpspoof -i [su interfaz] -t [puerta de enlace predeterminada] [IP de su objetivo]

En este ejemplo, el comando quedaría de la siguiente forma:

arpspoof -i eth0 -t 172.16.0.254 172.16.0.236

4.- Vamos a minimizar esa segunda ventana y ahora, abrimos el navegador web en la máquina virtual de Parrot OS, o en Kali Linux. Una vez abierto nuestro navegador, debemos asegurarnos de tener instalado el complemento Cookies Manager+.

5.- Ahora vamos a abrir la página web de la que vamos a robar la sesión. Obviamente sin iniciar sesión, porque, aunque tengamos un usuario válido, lo que queremos es entrar en la sesión de otro usuario... duh!

6.- Ahora vamos a abrir una nueva terminal y vamos a iniciar wireshark, el cual nos permitirá capturar el tráfico de red de nuestra víctima y con el cual podremos ahora sí, robar la cookie de sesión. Recuerda que si tienes algún problema al ejecutar el comando wireshark, siempre puedes antecederlo de sudo, quedando como sudo wireshark, o bien, ejecútalo como root.


7.- Una vez abierto wireshark, vamos a dar doble clic sobre nuestra interfaz de red (eth0), para ver la captura de paquetes de red en esa interfaz, donde veremos el tráfico de red de nuestra víctima.

8.- Ya estamos por terminar... ahora solo resta hacer un filtro para obtener la cookie de sesión de nuestra víctima. Para esto, en wireshark vamos a escribir lo siguiente:

http.cookie_pair

Esto nos va a filtrar los paquetes capturados, para facilitarnos encontrar la cookie de sesión.

9.- Ya tenemos identificada la cookie de sesión, ahora solo resta copiarla y reemplazarla en nuestro navegador para iniciar sesión, sin conocer ni usuario ni contraseña válidos de la aplicación web. Para esto, vamos a dar clic derecho en la cookie mostrada en wireshark, en el menú que aparece vamos a copy y finalmente damos clic en ...as Printable Text. Esto copiará en el portapapeles la cookie de sesión válida de nuestra víctima.



10.- Vamos a nuestro navegador Firefox en la máquina virtual de Parrot OS o Kali Linux, y estando en la misma web de la que hemos robado ya la cookie de sesión, vamos Herramientas, luego a Cookies Manager+ y finalmente elegimos Cookies Manager+.

11.- En la ventana que aparece, vamos a filtrar por el dominio que estamos atacando para que nos muestre la cookie de sesión.


12.- Seleccionamos la cookie de sesión y luego clic en el botón Edit.

13.- Vamos a borrar lo que haya en el campo content y a pegar lo que teníamos copiado en el portapapeles, borrando desde el signo de = y todo a la izquierda.



14.-  Damos clic en Save y luego clic en Close.


15.- Finalmente, oprimimos la tecla F5 para actualizar la vista de nuestro navegador y ¡listo! Tenemos una sesión válida de la aplicación web en nuestro navegador.

Esto nos sirve durante las Pruebas de Intrusión para demostrar varias vulnerabilidades:
  • Cookies de sesión inseguras
  • Protocolos en texto claro (HTTP)
  • Session Hijacking
  • Manejo inadecuado de sesiones
Ahora bien, no faltará el hater que diga "para qué todo esto? con robarte el post ya tienes usuario y contraseña". Pues sí, pero todo esto es para que aprendan, los que no saben, sobre el tema de robo de cookies, mi estimado hater.
Así que en alguna publicación posterior, veremos eso del método post sobre HTTP y cómo robarnos usuario y contraseña para evitar todo este relajo de las cookies.

Hasta aquí llega el post de hoy. Espero les sea de utilidad.

Comentarios

Publicar un comentario