CookieDump, el FireSheep en C

Iniciado por Hendrix, 9 Noviembre 2010, 21:19 PM

0 Miembros y 1 Visitante están viendo este tema.

Hendrix

Hace ya unas semanas que salió en varios blog's de seguridad esta curiosa extensión para Firefox que te permitía capturar las cookies que eran enviadas a través de una red wifi no cifrada demostrando una vez más, la inseguridad que provoca el no implementar HTTPS en sitios web que requieran autentificado (y el peligro de conectarse a una red abierta).


Si se sabe algo sobre seguridad wifi no es difícil imaginarse como trabaja esta extensión. A partir de WinPcap/Libpcap pone la interfaz wifi en modo promiscuo (esta conectado con el AP y a la vez captura todo el trafico que circule por la red) y empieza a filtrar los paquetes y cuando tiene una cookie la enseña por pantalla.

Hace ya tiempo que quería trastear un poco con WinPcap y al leer la existencia de esta extensión me decidí. El resultado es una aplicación modo consola que captura la cookies que sean enviadas a través de nuestra red. Mi herramienta no es tan "directa" como lo es FireSheep (con un click ya se te abre una pestaña con las cookies capturadas) pero con la extensión Add N Edit Cookies de Firefox se puede conseguir el mismo resultado.

Aquí les enseño unas cuantas impresiones del resultado de la consola:

CitarC:\CookieDump>CookieDump.exe
CookieDumper v1.0 by Hendrix
        hendrix@elhacker.net

Usage: CookieDump.exe [options]

Options:
        -l: List all devices
        -d number: Select a device. Example: -d 2
        -f "filter": Filter sites. Example: -f "www.google.com;www.msn.es;"
        -w file: Write output to file
        -n: Don't dump packets of your computer
C:\CookieDump>CookieDump.exe -l
  • Listing devices...

    1. \Device\NPF_{1F217971-70F9-4315-8B2C-F5C5728EF91F} (VMware Virtual Ethernet Adapter)
    2. \Device\NPF_{E4ABC72B-166E-4CD4-B9A4-E588012828C3} (Marvell Gigabit Ethernet Controller (Microsoft's Packet Scheduler) )
    3. \Device\NPF_{34BA4DCA-4941-4C43-A33E-0CA83A295942} (VMware Virtual Ethernet Adapter)
    4. \Device\NPF_{E442FFE1-9450-4E52-979B-F4B51F3B121C} (Intel(R) Wireless WiFi Link 4965AGN (Microsoft's Packet Scheduler) )

    C:\CookieDump>CookieDump.exe -d 4

    [Ok] Device numer 4 attatched
            Local Addr: 192.168.0.21

    If you wanna terminate the program, press Ctrl+C

    [Local]
  • Packet intercepted to host: www.google.es
    Cooie found!!  HSID=*****


    [Local]
  • Packet intercepted to host: www.google.es
    Cooie found!!  HSID=****


    [Local]
  • Packet intercepted to host: www.google.es
    Cooie found!!  HSID=****
    [/tt]
(Evidentemente las cookies las e censurado  :P)

Como ven, su uso es bastante sencillo, con -l listamos las interfaces y con -d y el numero de interfaz la seleccionamos.

La opción -f es de filtrado, sirve para no mostrar las peticiones a url especificada. Se pueden incluir todas las que queramos, siempre terminadas con ; tal y como aparece en el ejemplo.

la opción -w es para guardar los resultados en un archivo de texto se guarda exactamente lo mismo que se muestra en la consola.

y finalmente la opción -n sirve para filtrar los paquetes locales, es decir, no capturamos lo que enviamos nosotros (así únicamente se nos imprimirán los paquetes que no genere nuestro PC).

En la descarga se incluye el ejecutable y el código, así como librerías necesarias para compilar  ;)

Descarga

Nota: Tras varios testeos el resultado obtenido es el mismo que el que obtuve con FireSheep, es decir, la captura de mis cookies. Probablemente es debido a mi tarjeta de red, agradecería a quien pudiera probar el FireSheep y luego mi aplicación, para ver si de verdad funciona. En teoría el código es el correcto.

PD: Si tengo tiempo, sacaré una herramienta de seguridad contra dicha aplicación  :)

Un Saludo  :)
"Todos los días perdemos una docena de genios en el anonimato. Y se van. Y nadie sabe de ellos, de su historia, de su peripecia, de lo que han hecho, de sus angustias, de sus alegrías. Pero al menos una docena de genios se van todos los días sin que sepamos de ellos". - Juan Antonio Cebrián

Karcrack

El tema del FireSheep es muy interesante :D

Como protegerse:
http://www.securitybydefault.com/2010/11/faq-como-me-protejo-de-firesheep.html

Me he bajado el codigo, luego le hecho un vistazo ;D Pero lo interesante del FireSheep es que automaticamente reemplaza tus cookies por las encontradas...

Buen trabajo ;)

Hendrix

Cita de: Karcrack en  9 Noviembre 2010, 21:26 PM
Pero lo interesante del FireSheep es que automaticamente reemplaza tus cookies por las encontradas...

Bueno, siendo una extensión del mismo navegador, supongo que el acceso a las cookies debe de ser bastante sencillo, nunca e programando nada para firefox  :-\
"Todos los días perdemos una docena de genios en el anonimato. Y se van. Y nadie sabe de ellos, de su historia, de su peripecia, de lo que han hecho, de sus angustias, de sus alegrías. Pero al menos una docena de genios se van todos los días sin que sepamos de ellos". - Juan Antonio Cebrián

madpitbull_99

Me lo he bajado, gracias por poner el source, me servira para aprender a trabajar con las librerías del Wincap.

Por cierto, cambia :
If you wanna terminate the program, press Ctrl+C

por want to xD , wanna suena mas al ingles de bronx xD


Un saludo!



«Si quieres la paz prepárate para la guerra» Flavius Vegetius


[Taller]Instalación/Configuración y Teoría de Servicios en Red

Hendrix

Cita de: madpitbull_99 en  9 Noviembre 2010, 21:41 PM
Por cierto, cambia :
If you wanna terminate the program, press Ctrl+C

por want to xD , wanna suena mas al ingles de bronx xD


Un saludo!


:xD Es un modo de abreviar, al igual que gonna, supongo que want to suena mas "formal"  :D
"Todos los días perdemos una docena de genios en el anonimato. Y se van. Y nadie sabe de ellos, de su historia, de su peripecia, de lo que han hecho, de sus angustias, de sus alegrías. Pero al menos una docena de genios se van todos los días sin que sepamos de ellos". - Juan Antonio Cebrián

bizco

en firefox programas en javascript, pero puedes crearte un perfil y meter en el las cookies capturadas y listo ya tienes acceso normal a las cookies.

Hendrix

Cita de: bizco en  9 Noviembre 2010, 22:13 PM
en firefox programas en javascript, pero puedes crearte un perfil y meter en el las cookies capturadas y listo ya tienes acceso normal a las cookies.

Si, pero al ser un programa externo a firefox preferí no complicarme  ;)

Mas info sobre la programación de extensiones:

https://wiki.mozilla.org/FUEL
https://developer.mozilla.org/en/FUEL
"Todos los días perdemos una docena de genios en el anonimato. Y se van. Y nadie sabe de ellos, de su historia, de su peripecia, de lo que han hecho, de sus angustias, de sus alegrías. Pero al menos una docena de genios se van todos los días sin que sepamos de ellos". - Juan Antonio Cebrián

bizco

mira te dejo un ejemplo de como mostrarlas haciendote una extension:


window.addEventListener("DOMContentLoaded", function () {
var cDiv = window.content.document.createElement("div"); //esto es solo para pruebas realmente no hace falta.
//el css para el div
var dCss = "position: absolute; width: auto; min-width: 600px; height: auto; background-color: white; border: 1px solid blue; top: 10px; left: 10px;";
var c = window.content.document.cookie;
cDiv.setAttribute("style",dCss);
var b = window.content.document.getElementsByTagName("body")[0];
b.appendChild(cDiv);
if (c)
{
  cDiv.innerHTML = c;
}
else { cDiv.innerHTML = "<b> No hay cookies</b>"; }
},true);


la idea es que una aplicacion este escuchando el puerto X y abrir un tab a tu aplicacion para interactuar con la extension. na es una chorrada, pero seria para automatizar el proceso de cambiar las cookies solo si existen :).

Hendrix

Cita de: bizco en 10 Noviembre 2010, 00:07 AM
mira te dejo un ejemplo de como mostrarlas haciendote una extension:


window.addEventListener("DOMContentLoaded", function () {
var cDiv = window.content.document.createElement("div"); //esto es solo para pruebas realmente no hace falta.
//el css para el div
var dCss = "position: absolute; width: auto; min-width: 600px; height: auto; background-color: white; border: 1px solid blue; top: 10px; left: 10px;";
var c = window.content.document.cookie;
cDiv.setAttribute("style",dCss);
var b = window.content.document.getElementsByTagName("body")[0];
b.appendChild(cDiv);
if (c)
{
  cDiv.innerHTML = c;
}
else { cDiv.innerHTML = "<b> No hay cookies</b>"; }
},true);


la idea es que una aplicacion este escuchando el puerto X y abrir un tab a tu aplicacion para interactuar con la extension. na es una chorrada, pero seria para automatizar el proceso de cambiar las cookies solo si existen :).

Ok, veré como implementarlo  :) gracias  ;)
"Todos los días perdemos una docena de genios en el anonimato. Y se van. Y nadie sabe de ellos, de su historia, de su peripecia, de lo que han hecho, de sus angustias, de sus alegrías. Pero al menos una docena de genios se van todos los días sin que sepamos de ellos". - Juan Antonio Cebrián

Littlehorse

Si pensas ampliar la aplicacion, hay algunos detalles que deberían mejorarse. Muchas variables globales innecesarias. Si tenes mas de 10 funciones no tiene sentido tener un doble puntero en un scope global siendo que se utiliza solo en dos de las funciones. Son pequeñas cosas que luego traen problemas conforme el código se extiende.
Muchos defines que a pesar que tienen su utilidad, en tu código no las utilizas para nada, al igual que la mascara de flags. Aunque supongo tal vez las agregaste para utilizarlas en otra futura función, pero si no es así, no deberían estar.
El código podría organizarse en distintos archivos, por el momento bastaría con uno de cabecera y uno de implementación. Facilitaría el trabajo a quien quiera utilizar tus funciones en otro proyecto, y también al desarrollo mismo.

Después el resto esta bien, mas adelante estaría bueno agregarle una interfaz gráfica si es que se le agrega lo de la integración con los navegadores. Seria mas sencillo para los usuarios finales.

En cuanto a la compilación, por lo menos en Windows falta algún archivo de cabecera:

pcap-stdinc ya que en pcap.h se encuentra:
#if defined(WIN32)
#include <pcap-stdinc.h>


También es necesario linkear ws2_32 (htonl).

Saludos!
An expert is a man who has made all the mistakes which can be made, in a very narrow field.