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.