19.3.09

ARP Poisoning


Este ataque tan d moda esta bastante explicado en la parte d la puesta en practica, se pueden encontrar x toda la red tutoriales con titulos como “Como hackear contraseñas de Hotmail, Gmail, etc” o “Sea juacker en 3 rapidas lecciones”, con capturas d pantalla e instrucciones paso a paso d como sniffar redes, hacer ataques mitm, etc. Eso si... lo unico q c explica es “abri esto”, hace click alla, después en el otro lado... y asi... je

Lo q no esta tan explicado es la teoria, en consecuencia hay cantidad d gente x ahí mandando paquetes arp sin saber mucho d lo q hacen realmente... y aunq consigan su objetivo, siempre es bueno saber como y xq funcionan las cosas.

Para los q quieren enterarse 1 poco voy a tratar d explicar d manera facil d entender como funciona el tema. Proximamente en otra entrada, para no ser menos, 1 poco d practica con Ettercap o Cain.




ARP, NIC, MAC... y todo eso…

Como todos sabemos el dispositivo d red tiene 1 direccion IP (Internet Protocol) q es la q lo diferencia d los demas y nos brinda la forma d ubicarlo dentro d la red. La ip es unica e irrepetible y blah blah blah... hasta ahí llegamos con eso xq c supone q saben lo q es 1 IP. Para el q no lo sepa q empiece leyendo aca:

http://es.wikipedia.org/wiki/Direcci%C3%B3n_IP

IP es 1 sistema bastante bueno en muchos sentidos pero tiene el problema d q las direcciones pueden ser tanto estaticas como dinamicas y las estaticas tambien pueden ser cambiadas en algun momento... las dinamicas, según el leasing q otorgue el DHCP d nuestra red y la cantidad d peticiones, podriamos llegar a desconectar el cable y tener 1 nueva direccion al reconectar... como entonces podemos reconocer 1 dispositivo sin temor a equivocarnos?

Ahí entra en juego la MAC (Media Access Control). 1 dispositivo d red tiene 2 direcciones, la IP (d la q hablábamos), y la MAC, q es la dirección física, la cual tambien es unica para cada dispositivo o NIC (Network Interface Card).

La MAC viene d fabrica grabada en 1 chip, a diferencia d la IP q es asignada ya sea x DHCP o el SO, y “teóricamente” es imposible d cambiar. Digo teóricamente xq en la practica no lleva mucho + q 3 o 4 clicks en win y 1 linea d consola en *nix. X supuesto q sigue teniendo la misma dir y es el SO el q emula 1 distinta, aunque para todo efecto se cambio y la vieja ya no existe en la red, pero eso es otro tema...

Esta dirección esta compuesta x 6 campos d 1 byte d longitud (FFh) d los cuales los 3 1eros corresponden al fabricante y son asignados x la IEEE Standards Association. Este codigo es llamado OUI (Organizationally Unique Identifier) y se puede consultar en esta dirección:

http://standards.ieee.org/

los ultimos campos son la identificación unica del dispositivo, la cual queda a criterio del fabricante.

Como c puede ver la MAC es algo mucho + estatico q la IP y x lo tanto tiene la desventaja d no poderse ordenar en rangos o subredes como podemos hacer fácilmente con las IPs. Ademas d q una MAC no es routeable y x lo tanto no sirve para protocolos d internet, solamente comunicación d hardware a nivel d red local, x esa razon todos estos ataques sirven solamente en 1 LAN (Local Area Network) o “red local”... perfecto para empresas, escuelas, etc.

Lo unico q nos faltaria ahora para identificar “sin temor a confundirnos” 1 dispositivo es poder asociar 1 direccion con la otra y para eso tenemos justamente el protocolo ARP (Address Resolution Protocol).




ARP

En la capa física de la red solo tenemos NICs q c comunican unos con otros a traves d su MAC. Para llegar a esto, como deciamos anteriormente, necesitamos asociar la dirección IP (d la capa d red) con la MAC address. D eso justamente c ocupa el protocolo ARP.

La mejor explicación q recuerdo d lo q hace este protocolo es 1 maestra en la escuela tomando lista d asistencia el 1er dia d clases. Va diciendo los nombres 1 x 1, todos escuchan la lista pero solo responden al suyo, la maestra mientras tanto asocia nombres con caras.

Ahora supongamos q la PC1 quiere mandar 1 archivo a la PC2, lo 1ero q obtiene PC1 (digamos q tiene la dir 192.168.0.90) es la IP de PC2 (192.168.1.100). A partir d este dato tira 1 paquete ARP request a toda la red (FF:FF:FF:FF:FF:FF) diciendo:

- Soy la MAC xx:xx:xx:xx:xx:xx con la ip 192.168.0.90. Quien tiene la IP 192.168.1.100?

Todos los dispositivos hacen caso omiso salvo PC2 que responde con 1 ARP reply algo como:

- Yo tengo esa IP y mi MAC es yy:yy:yy:yy:yy:yy.

Con esto PC1 puede enviar los datos directamente al hardware de PC2. Ademas PC2 d ahora en adelante “recuerda” la MAC de PC1. Esto sucede gracias a que cada vez q 1 dispositivo c relaciona con otro estos datos quedan almacenados en el cache ARP. Este cache es 1 segmento de memoria q el sistema usa para almacenar la tabla de direcciones q ya conoce para no tener q repetir el procedimiento. D manera q si PC1 tiene q mandar alguna otra cosa a PC2 no es necesario q repita todo el proceso xq simplemente ya conoce su dirección física.

Todo parece muy bueno y eficiente, pero en realidad tiene varios problemas este sistema. Para empezar cada dispositivo tiene su propia tabla ARP, no es algo unificado x la red, y no todos los dispositivos renuevan su información con la misma frecuencia (como los routers x ej q son + lentos para refrescar) d manera q podemos llegar a estar mandando info a 1 dispositivo q ya no existe o a 1 equivocado o... montones d cosas, pero hay mas... je

El protocolo ARP no cuenta con ningun metodo d autenticacion, o sea q el dispositivo q hace el requerimiento “confia” en q la replica viene d la pc q tiene q venir... y no solo eso, sino q puede aceptar replicas sin haber hecho ningun requerimiento antes... xD

A esta altura, para los q tienen 1 poco d imaginación, ya esta bastante claro como trabaja el envenenamiento. En este escenario podriamos mandar replies ARP a cualquier dispositivo haciendole creer q la MAC q c nos ocurra esta asociada con la IP q nos convenga.

Esto nos lleva a multiples tipos d ataque, el mas facil y directo seria 1 D.O.S. (Denial of Service o Denegación de Servicio). Seria muy facil x ej envenenar la tabla d la victima para hacerle creer q la MAC del router q lo saca a internet pertenezca a X pc o a 1 q ni siquiera exista, con lo cual seguiría teniendo conexión con la LAN pero sin salida al exterior. O hacer lo mismo con 1 impresora o el dispositivo q sea para evitar la comunicación. X supuesto hay q estar constantemente mandando replicas ya q la tabla c renueva periódicamente y vuelve a la normalidad.

1 ataque como este podemos practicarlo con utilidades como Nemesis (disponible tanto para sistemas win como *nix):

http://nemesis.sourceforge.net/manpages/nemesis-arp.1.html

pero vamos a ver cosas + interesantes q 1 simple denegacion d servicio... ;)




M.I.T.M. (Man In The Middle)

Teniendo conocimiento d esta tecnica podriamos interceptar el trafico entre 2 dispositivos. Supongamos q la maquina q queremos interceptar tiene la IP 192.168.0.50 y el router la 192.168.0.1. Podriamos enviar replies ARP al router (sin q este haya solicitado nada como vimos antes) asociando la 192.168.0.50 con nuestra MAC y luego a la victima asociando a su vez la ip del router (192.168.0.1) tambien con nuestra MAC. D esta manera la victima nos estaria enviando todos los datos creyendo q somos el router y x medio d “IP forwarding” redirigimos todo el trafico hacia allí.

En el grafico siguiente podemos ver arriba el flujo normal d informacion y debajo el q seguiria durante el ataque:



X supuesto q en medio d todo esto vemos todas las claves d texto plano (ftp, telnet, etc) q manda la victima hacia fuera. El problema lo tendriamos en conexiones SSL (Secure Sockets Layer) donde c requiere 1 certificado para validar la sesion, pero utilidades como Ettercap o Cain nos dan la posibilidad d crear 1 falso certificado para engañar a la victima. El browser da aviso d q es “sospechoso”, pero como todos sabemos el user comun siempre hace click en “next”... je



Creo q con eso es suficiente como para aunque sea tener idea d lo q c hace cuando c practica este tipo d ataque. Esto no pretende ser mas que 1 explicacion algo “casera” d lo q es arp y arp poisoning, si a alguien le interesa profundizar en el tema hay muchas publicaciones profesionales donde leer y es 1 tema bastante interesante.



2 comentarios:

Ni0 dijo...

:o mira vos! mi viejo me habia dicho q esos numeros internos de los componentes (casi todas las cosas "importantes" tienen un numerito irrepetible grabado) eran soldaduras fisicas, diodos soldados al integrado, que para modificar esos numeros habia que simplemente agarrar un martillo y romper el integrado o bien agarrar un microscopio * 10000, tener la cura para el parquinson, un soldador que la punta sea de 1/10 milimetros y modificar esos diodos xD
igual mi viejo esta mas con la parte electronica de microprocesaodres e integrados en general, sobre cosas de la PC no esta profundizado

salu2!

|_ocutus dijo...

jajj... en realidad tiene razon tu viejo hablando del "fierro" en si. pero como ves es muy facil emular 1 distinta desde + arriba.

tambien t podes cambiar tu propia mac desde las propiedades d la placa d red en win o con ifconfig en linux sin usar nada absolutamente.


saludos