miércoles, 18 de julio de 2012

CAFE-BABE v0.2

CAFE-BABE es la tool que programé hace un par de días durante una noche de insomnio xD Ya les hablé de ella y para que sirve en el post anterior:

http://alguienenlafisi.blogspot.com/2012/07/scapy-arp-y-cafe-babe.html

Bueno, le hice algunos arreglos y la he puesto en Google code. Puden descargarla desde este link:

http://code.google.com/p/cafe-babe/downloads/list

Además hice un vídeo para mostrar su funcionamiento y compararlo con el funcionamiento de una herramienta clásica como es arpspoof de la suit dsniff. Para nada se trata de cual herramienta es mejor que otra, solo se muestran las ventajas y desventajas de cafe-babe.





En resumen...

Forma de uso:

./cafe-babe.py <target> <host> <iface> [fake_ip]

<target> es la IP de la victima.

<host> es la IP del host que quieres suplantar. Usualmente el router.

<iface> tu interface de red (eth0, wlan0, etc..)

[fake_ip] (recomendado) es opcional. Se trata de una IP (de preferencia que no exista) que se usará para hacer un ARP Request y averiguar la MAC del "target" y el "host" pero sin dejar nuestra IP en sus caché. Si no se pone se usará la IP real del atacante.

Ventajas:

  • No deja tu IP o MAC en la caché ARP de la víctima.
  • No provoca el envío de mensajes ICMP Redirect a la víctima.
  • No requiere forwarding (yo siempre me olvido de activarlo xD)


Desventajas:

  • Envía los mensajes a broadcast así que podría saturar la red. Totalmente desaconsejado su uso para atacar varios hosts al mismo tiempo.
  • Usa threads en python por lo que no es muy veloz.
  • Aún no se como hacer para que finalice el proceso. Así que hay que detenerlo con kill -9 y el pid xD

Dudas, comentarios, sugerencias, bugs, etc. en los comentarios.

Gracias por los likes en el post anterior ;)

Saludos.

13 comentarios:

  1. MaN no sabia que manejabas tan bien el Python ... interesante ... codigo vro.

    Y con java no salia??? o es ke t basaste en algun codigo de ejemplo

    ResponderEliminar
    Respuestas
    1. Hola Mox

      Ni tanto.. que llevo poco tiempo con python y aún no se como hacer para detener los threads xD

      Usé python para aprovechar lo fácil que es construir paquetes con Scapy. En la documentación de Scapy hay muchos ejemplos, solo es darse un tiempo y tener algún pretexto para aprenderlo...

      http://www.secdev.org/projects/scapy/doc/usage.html

      La otra opción es usar Libnet y Libpcap y programarlo en C. De hecho tengo pensado pasar la tool a C para hacerla más eficiente :)

      Con java... en realidad no sé... supongo que si se debe poder, pero sería igual de ineficiente que con python así que prefiero ir por el camino de C

      Saludos...

      Eliminar
  2. Man consulta ... lo probe en wifi y tiene algunos inconvenientes...

    lo has probrado en wifi asociados a un ap .

    ResponderEliminar
    Respuestas
    1. De hecho lo he probado contra mis virtuales pero usando mi interface wifi.

      Mas o menos que tipo de inconvenientes presenta?

      Saludos...

      Eliminar
    2. Hola de nuevo...

      Ya hice las pruebas en hosts reales y detecte el problema. El problema se produce cuando el atacante está conectado via wireless. La herramienta spoofea la direccion mac origen de la trama y al parecer el AP valida esto de alguna manera y descarta la trama por lo que nunca le llega al host victima.

      La solución es desactivar el spoofing de la mac origen cuando el ataque se hace desde una interface wifi. Trabajaré en ello.

      Gracias por el feedback :)

      Saludos...

      Eliminar
  3. hola, por favor es urgente, necesito contactarme con Uds para un trabajo, por favo magokorowokimini@gmail.com

    ResponderEliminar
    Respuestas
    1. Hola Harley...

      Con todo respeto, si el trabajo se trata de "recuperar" correos, facebooks, etc... NO estas en el lugar correcto.

      Saludos.

      Eliminar
    2. Hey tío, en python se puede importar las funciones de SO, claro que eso c te quitaría portabilidad, pero en w$ existe la función TerminateThread, para terminar los hilos, en linux también debe haber una función parecida, siempre la hay.

      Saludos,
      Nox.

      Eliminar
    3. Gracias Nox :) Revisaré eso también xD

      Por lo pronto estoy haciendo pruebas on hosts y switchs reales... y no todo va tan bien como con las virtuales... :/

      Espero sacar pronto una actualización y corregir los problemas...

      Saludos.

      Eliminar
  4. Buenos días, llevo todo el fin de semana dándole vueltas a tu programa. Es más, estaba escribiendo un articulo debido a que la idea me parecía brillante. Utilizar la dirección de broadcast, para emitir paquetes. Según estaba escribiendo, pensaba en como debería funcionar la aplicación, para poder hacer el articulo correctamente. Y -discúlpame si me equivoco-, creo que no funcionaría la aplicación. Tiene un fallo de concepto, en cuanto que un router, siempre descartará los paquetes emitidos de esta manera. Un hub, quizá -y sin apostar mucho-, un switch, podría reenviar un tráfico destinado a broadcast, pero un router, por política lo tiene que descartar. Si no está en su tabla ARP, no existe. Si no existe, lo descarta.

    Es decir, la aplicación podría, es más seguro que funciona, en entornos muy controlados -véase las máquinas de prueba que usas-, una red empresarial bajo un hub, pero no funcionaría en una red local casera normalita, ni si quiera en una empresa medianamente grande. No sé si me explico, si quieres te expongo por correo los detalles.

    ResponderEliminar
    Respuestas
    1. Es cierto, no funciona en un entorno real. Cuando hice pruebas con mis maquinas virtuales, funcionó. Sin embargo luego realicé pruebas con un router DSL casero y no funciona. Imagino que en una red empresarial, con switchs cisco y eso... con mayor razón aún.

      He realizado algunas modificaciones al script para tratar de sobrellevar algunos problemas... pero siempre aparecen nuevos. El que mencionas creo que sería definitivo xD

      Me interesa saber tu explicación sobre el comportamiento de los routers con este tipo de mensajes. Si gustas puedes escribirme a csar.1603 @ gmail.com.

      Gracias por el aporte.

      Saludos.

      Eliminar
  5. ¡Claro amigo! Busco un hueco para escribirte, y te explico los motivos por los que pienso no podría funcionar. E incluso, los entornos en los que sí podría funcionar. Vaya por delante, que está genial que tengas tanta iniciativa, y sepas darle una vuelta de tuerca a las cosas. Si finalmente, no hay una forma coherente de hacerlo funcionar, espero sepas quedarte con la parte de "lo he intentado", ya que te aseguro es la parte más importante.

    Mucho ánimo, que seguiré el blog, y espero me vuelvas a sorprender con este u otro proyecto ;)

    ResponderEliminar
  6. oye! y con este ataque de MITM se pueden leer las conversaciones del MSN en una red local? o estan encriptados?

    por que veo que con el Follow TCP Stream sacas bien facil el texto plano...

    como se le podria hacer? estudiarse el formato de los packetes que transmite el msn?

    ResponderEliminar