viernes, 4 de abril de 2014

ARP

Address Resolution Protocol. No voy a entrar en detalle a explicar el protocolo. Para ello, os dejo las siguientes referencias, que son bastantes claras y sin muchos rodeos:



Ya en IPv6 no tenemos ARP, sino su equivalente, NDP (Neighbor Discovery Protocol).

Lo que sí me gustaría destacar de ARP es lo siguiente:

  1) Consiste simplemente en mensajes de solicitud-respuesta (request-reply). El request siempre es en modo broadcast, preguntando por la MAC address del host destino.



El reply es en modo unicast, donde el host destino responde con su MAC address al host origen.



  2) Los sistemas guardan una caché ARP para no estar enviando requests todo el rato. Para las entradas de tipo dinámico, una vez expira el periodo de timeout predeterminado, el sistema eliminaría dicha entrada, la cual solo se volvería a añadir en el caso de recibir el reply correspondiente.



  3) ARP es un protocolo sin estado. Independientemente de si se ha enviado un request o no, si se recibe un reply, se actualiza dicha entrada en la caché. Tampoco existe autenticación alguna, así que cualquiera podría enviar replies "spoofeados", conocido como gratuitous ARP.


Básicamente, de estas características se aprovecha el ARP spoofing, que luego se puede usar para sniffing, man-in-the-middle, DoS o mac flooding. Dicho ésto, os pongo los siguientes enlaces:



Como ya hemos dicho, en IPv6 tenemos NDP, y por lo tanto, su ataque equivalente:


Existen propuestas para mitigar estos ataques, como puede ser el cifrado de la comunicación ARP, trabajar con entradas estáticas, la existencia de un servidor ARP central en lugar de mantener una caché en cada host; o mantener una correlación de solicitudes y respuestas, o monitorización de tramas ARP mediante SNMP en los switches, pero creo que ninguna se ha implementado a gran escala debido a los costos añadidos que tiene.

También tenemos herramientas como:

  • PatriotNG - permite la monitorización de cambios en la caché ARP (en entornos Windows).