You are on page 1of 5

------------------------------------------------------------------------------Publicado en Daemons Paradise ezine, numero 4 - <dp.set-ezine.

org> -------------------------------------------------------------------------------

/|\/|\/|\/|\/|\/|\/|\/|\/|\/|\/|\/|\/|\/|\/|\/|\/|\/|\/|\/|\ \|/ \|/ /|\ /|\ \|/ \|/ /|\ ARP Spoofing Ilustrado. /|\ \|/ ^^^^^^^^^^^^^^^^^^^^^^^ \|/ /|\ /|\ \|/ by CA0S \|/ /|\ /|\ \|/ caos@ezkracho.com.ar \|/ /|\ /|\ \|/\|/\|/\|/\|/\|/\|/\|/\|/\|/\|/\|/\|/\|/\|/\|/\|/\|/\|/\|/

0.

Introduccion.

El ARP Spoofing es una de las muchas variaciones del Spoof que aprovecha las vu lnerabilidades del TCP/IP. Esta es una tecnica muy interesante y que seguramente nos va a ser util en mas de una ocasion. La teoria de esta tecnica es muy simpl e, lo que no lo es tanto es conocer el funcionamiento del protocolo ARP para com prender que es lo que estamos haciendo; por eso primero empezaremos con una breve y clara (espero..) explicac ion del protocolo ARP y luego pasaremos a ver la tecnica del ARP Spoofing en si. Espero que disfruten de la lectura de este texto y les sirva como motivacion pa ra investigar mas sobre el TCP/IP y todas las cosas interesantes y divertidas que podemos hacer con el.. ;) 1. Protocolo ARP. Como todos saben el TCP/IP es lo que se llama una "su ite" de protocolos en el cual se encuentra el ARP(Address Resolution Protocol) e ntre otros. En el mundo TCP/IP nos identificamos con las direcciones IP(ej. 192.168.0.1), pero en una red LAN del tipo ethernet o token ring nos vamos a identificar con la direccion de hardware(ej. 00:E0:7D:77:4E:55) que cada placa de red posee; se usa este esquema de identificacion ya que por el mismo cable de la red pueden pasar distintos tipos de protocolos y una direccion IP solo tiene sentido en la suite TCP/IP. Si por ejemplo queremos establecer una conexion con un host de la red, lo que va a hacer el protocolo ARP es fijarse la direccion IP del host y encargarse de conseguirnos la direccion de hardware. Conexiones dial-up tipicas como las que hacemos a traves de la linea telefonica no necesitan usar ARP, ya que no hay en juego ninguna placa de red y por lo tanto direcciones de hardware que resolver. Si estamos usando Linu x y tenemos configurada una placa de red en nuestra PC, con el siguiente comando podremos ver su direccion de hardware: [root@ezkracho /]# ifconfig eth0

eth0

Link encap:Ethernet HWaddr 00:E0:7D:77:4E:55 inet addr:192.168.0.1 Bcast:192.168.0.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:100 Interrupt:5 Base address:0xbc00

La direccion de hardware es grabada en la placa de red por el fabricante y es unica; cada direccion de hardware es de 48 bits al contrario de las direcciones IP que son de 32 bits. Ahora que ya sabemos basicamente que es lo que hace ARP vamos a verlo un poco mas en detalle, pero sin complicarnos demasiado. Supongamos que armamos una peque~a red con unos amigos y queremos hacer un telnet a la computadora de uno de ellos que tiene de host el nombre "ezkracho". Antes que nada nuestro cliente de telnet va a convertir el nombre ezkracho en una direccion IP de 32 bits, esto lo puede hacer buscando en el archivo /etc/hosts o en un servidor DNS que hayamos instalado. Una vez que tenemos la direccion IP del host ezkracho el cliente de telnet le va a decir al TCP que se encargue de establecer una conexion con esa direccion de IP; aqui el TCP va a enviar un datagrama IP solicitando una conexion al host ezkracho. En nuestro ejemplo estamos en una red local comun por lo cual el datagrama IP puede ir directamente hacia ese host, pero en el caso de que quisieramos telnetear a un host en una red remota nuestro datagrama IP se rutearia directamente hacia la salida predeterminada de la red, como por ejemplo un router y de ahi seguiria hasta el proximo salto hasta llegar a destino. Como habiamos explicado en una red LAN nos debemos identificar con la direccion de hardware, por lo que ARP va a convertir nuestra direccion IP de 32 bits en nuestra direccion de hardware de 48 bits. Luego ARP va a enviar un pedido o lo que se llama un "ARP request" al broadcast, osea a cada host conectado en nuestra red, en el ARP request va incluido la direccion IP del host ezkracho y lo que hace es preguntar "si sos el due~o de esta direccion IP contestame con tu direccion de hardware". El host ezkracho va a recibir este broadcast con el ARP request preguntando por el y le va a contestar, esta respuesta se llama "ARP reply" y por supuesto que en ella va incluida su direccion de hardware. Una vez que se recibe el ARP reply con la direccion de hardware finalmente vamos a poder terminar de enviar el datagrama IP al host ezkracho para entablar la conexion. Y todo esto gracias a ARP :) Muy bien, ahora que ya comprendemos mejor el funcionamiento de ARP vamos a explicar que es lo que se conoce como "ARP Cache". Para hacer mas eficiente el trabajo de resolver cual es la direccion de hardware de un host cada vez que se la necesita averiguar, existe el ARP Cache. Cada vez que algun host resuelve una direccion de hardware de otro host, todos los demas guardan una copia en el cache para despues no tener que volver a hacer ese mismo trabajo. Cada direccion de hardware que entra al ARP Cache es guardada por unos 20 minutos(segun el OS), luego de ello se borra y si se la necesita se la tiene que volver a pedir a menos que ya otro host la haya pedido por lo cual vuelve a ingresar al cache y durara 20 minutos mas. En Linux tenemos el comando "arp" que nos sirve para manipular el arp cache de nuestro sistema. Si queremos ver el cache actual tenemos que hacer:

[root@ezkracho /]# arp -a ezkracho (192.168.0.1) at 00:E0:7D:77:4E:55 powertech (192.168.0.3) at 00:00:E8:57:82:6B La opcion "arp -a" nos muestra todas las entradas que hay en nuestro cache, como vemos primero aparece el host, luego la direccion IP y luego la direccion de hardware. Tenemos otras opciones del comando arp que tambien nos pueden ser muy utiles, por ejemplo la opcion "arp -d" que nos permite borrar cualquier entrada del cache pero esto solo puede ser hecho por el root. Hay otras opciones interesantes que las pueden investigar poniendo "man arp" en la consola. Hay muchas otras cosas que se pueden explicar sobre el protocolo ARP, pero al fin de este texto que es explicar el ARP Spoofing con esto nos alcanza.

2.

ARP Spoofing.

Llegamos a lo divertido! a esta altura los que estuvieron prestando atencion ya deben tener una idea de que se trata esto del ARP Spoofing, pero como siempre hay algunos resagados vamos a explicarlo un poco. Supongamos que yo le envio a un host victima un paquete con la direccion de hardware de mi placa de red pero con otra direccion IP de un host de la red, lo que va a suceder es que el host victima va a guardar esa informacion en su ARP Cache y a partir de ese momento va a creer que nosotros somos otro host de la red, porque cuando quiera enviarle algo al host que suplantamos va a buscar la direcion IP en su cache y va a enviar todo a la direccion de hardware que tenga asignada que por supuesto es la nuestra. Esta tecnica como ya lo dije antes es muy simple y los diferentes usos que se le pueda dar solo depende de nuestra imaginacion. Como anecdota, algo en lo que nos fue muy util esta tecnica fue cuando estabamos en una LAN en una reunion con gente de la scene Argentina y necesitabamos sniffear a una de las computadoras de la red, el problema era que en la LAN no habian hubs porque toda la interconexion era a traves de un switch por lo que el trafico de la red no pasaba por nosotros y simplemente no podiamos ponernos en modo promiscuo y comenzar a capturar paquetes. La solucion encontrada fue muy simple, le enviamos un paquete a nuestra victima con nuestra direccion de hardware pero con la direccion IP del gateway que nos daba salida a Internet, luego creamos un alias de la direccion IP del gateway pero en nuestra ethernet y luego lo forwardeamos al verdadero gateway. En si nuestra victima, que por cierto son unos chicos que se creen muy bromistas, estuvieron saliendo a Internet sin darse cuenta que primero pasaban por nosotros y que los estuvimos sniffeando toda la noche. Quiero aprovechar para saludar a dr_fdisk^ y airlink que nos dieron una gran mano esa noche ;) Hay muchos programas que sirven para hacer todo lo comentado pero les recomiendo el arp-fun de Ulandron(www.undersec.com) que es muy bueno y facil de usar. Veamos un ejemplo practico con el arp-fun: [root@ezkracho /]# arp-fun -i eth0 -s 192.168.0.10 -a 0A:0B:0C:0D:0E:0F // -d 192.168.0.3 -m 00:00:E8:57:82:6B -v -c 2 Attempting to send 2 packets Source ip: 192.168.0.10

Dest ip: 192.168.0.3 Everything fine, 'til now. Let's build the packet Looks nice, huh: 00 0000 57e8 6b82 0b0a 0d0c 0f0e 0608 0100 10 0008 0406 0200 0b0a 0d0c 0f0e a8c0 0a00 20 0000 57e8 6b82 a8c0 0300 Sent packet 1, waiting 0 seconds Sent packet 2, waiting 0 seconds Analizemos este ejemplo, aqui vemos que enviamos al host powertech que tiene la direccion IP 192.168.0.3 y la direccion de hardware 00:00:E8:57:82:6B, dos paquetes diciendole que somos el host cenobyte que tiene la direccion IP 192.168.0.10 y la direccion de hardware 0A:0B:0C:0D:0E:0F, el host cenobyte es el gateway a Internet de toda la LAN mediante una conexion dial-up, pero la direccion de hardware que pusimos para este host es inventada y no existe por lo que a partir de ahora nuestro amigo Powertech se va a quedar sin salida a Internet :P Este ejemplo de ARP Spoofing en particular no tiene mucha utilidad pero quien dice que no podemos divertirnos un poco... Las opciones del arp-fun como muchos otros ejemplos de ARP Spoofing los pueden encontrar en el README de este programa. Esto es todo amigos.

3.

Contacto

Para realizarme cualquier tipo de comentario, duda o critica me pueden escribir a: caos@ezkracho.com.ar Les recomiendo que visiten mi HomePage en la cual no encontraran nada util pero puede ser muy divertida ;) www.ezkracho.com.ar/caos Finalmente para despedirme quiero agradecer a Krip7ik por haberme invitado a escribir para Daemons Paradise, y espero que este solo sea el primero de muchos articulos mas escritos por mi en esta e-zine. Un gran saludo a todos y hasta la proxima!!

.g#S$$S$$S#n. $$$$$$ $$$$$$ $$$$$$ $$$$$$ $$$$$$ $$$$$$ $$$$$$ $$$$$$ $$$$$$ `S$$$$s$$$$S'

.g#S$$S$$S#n. .g#S$$S$$S#n. $$$$$$ $$$$$$ $$$$$$ $$$$$$ $$$$$$ $$$$$$ $$$$$$ $$$$$$ $$$$$$$$$$$$$ $$$$$$ $$$$$$ $$$$$$ $$$$$$ $$$$$$ $$$$$$ $$$$$$ $$$$$$ $$$$$$ $$$$$$ `S$$$s s$$$S' `S$$$$s$$$$S' - Ezkracho Team member -

.g#S$$S$$S#n. $$$$$$ s$$$S $$$$$$ $$$$$ $$$$$$ S$$$s $$$$$$ `S$$$$s$$$$S'

You might also like