networking - tipos - tabla mac de un switch
Detectar otro host con la misma dirección MAC (4)
¿Cómo puedo detectar si otro host está usando la misma dirección MAC que el host actual, por ejemplo, porque el otro host es spoofing?
Estoy trabajando en un entorno incrustado, por lo que busco respuestas a nivel de protocolo, en lugar de "usar tal y tal herramienta".
Editar : RARP no resuelve este problema. Para que RARP obtenga cualquier respuesta, debe haber al menos un host en el segmento que admita RARP. Como RARP es obsoleto, los sistemas operativos modernos no lo admiten. Además, todo lo que RARP puede hacer es decirle su propia dirección IP: la respuesta no será diferente si hay otro host en el segmento con el mismo MAC, a menos que ese host haya usado una dirección IP diferente.
¡Esta pregunta es demasiado interesante para dejarla! Después de varios comienzos en falso, comencé a pensar en los componentes esenciales del problema y busqué asesoramiento en los RFC. No he encontrado una respuesta definitiva, pero aquí está mi proceso de pensamiento, con la esperanza de que ayude:
La pregunta original pregunta cómo detectar otro dispositivo con su dirección MAC. Suponiendo que estás en una red IP, ¿qué se requiere para lograr esto?
El método pasivo sería simplemente escuchar el tráfico y buscar cualquier paquete que no haya transmitido pero que tenga su dirección MAC. Esto puede ocurrir o no, por lo tanto, aunque puede decirle definitivamente si existe un duplicado, no puede decirle definitivamente que no.
Cualquier método activo requiere que transmita un paquete que obligue a un impostor a responder. Esto elimina inmediatamente cualquier método que dependa de protocolos opcionales .
Si otro dispositivo lo está engañando, debe (por definición) responder a los paquetes con su dirección MAC como destino. De lo contrario, es fisgoneo pero no spoofing .
La solución debe ser independiente de la dirección IP e involucrar solo la dirección MAC.
Así que la respuesta, parece, sería transmitir un paquete de difusión (ethernet) o un paquete con su dirección MAC como destino, que requiere una respuesta. La llave inglesa es que una dirección IP generalmente está involucrada, y usted no lo sabe.
¿Qué tipo de protocolo se ajusta a esta descripción?
Respuesta fácil:
- Si su red es compatible con BOOTP o DHCP, habrá terminado, ya que esto vincula de forma autoritaria una dirección MAC a una dirección IP. Envíe una solicitud BOOTP, obtenga una dirección IP e intente hablar con ella. Es posible que necesite ser creativo para forzar el paquete en el cable y evitar que responda (estoy pensando en el uso juicioso de iptables y NAT).
Respuestas no tan fáciles:
Un protocolo que es independiente de IP: ya sea uno que no utiliza la capa IP o uno que permite transmisiones. Ninguno viene a la mente.
Envíe cualquier paquete que normalmente generaría una respuesta suya, evite que responda y busque una respuesta de otro dispositivo. Parecería sensato usar su dirección IP como destino, pero no estoy convencido de eso. Lamentablemente, los detalles (y, por lo tanto, la respuesta) se dejan como un ejercicio para el OP ... pero espero que la discusión haya sido útil.
Sospecho que la solución final implicará una combinación de técnicas, ya que ningún enfoque único parece garantizar una determinación confiable.
Parte de la información está disponible en http://en.wikipedia.org/wiki/ARP_spoofing#Defenses
Si todo lo demás falla, puede disfrutar esto: http://www.rfc-editor.org/rfc/rfc2321.txt
Por favor, publique un seguimiento con su solución, ya que estoy seguro de que será útil para otros. ¡Buena suerte!
Dos hosts que usan la misma dirección MAC en un solo segmento de red probablemente harán que los switches se vuelvan locos y probablemente puedas detectarlo teniendo una conexión de red extremadamente poco confiable (ya que los switches enviarían una parte de los paquetes que pertenecen a tu host a la segunda, dependiendo de cuál de ustedes envió el último paquete en su dirección).
Esto es muy tarde y no responde, pero quería seguir con exactamente lo que hice en caso de que alguien más esté interesado.
Estaba trabajando con un hardware incrustado muy extraño que no tiene una dirección MAC asignada en la fabricación. Eso significa que necesitábamos asignar uno en el software.
La solución obvia es hacer que el usuario elija una dirección MAC que saben que está disponible en su red, preferiblemente del rango administrado localmente, y eso es lo que hice. Sin embargo, quería elegir un valor predeterminado razonablemente seguro y también intentar advertir al usuario si ocurría un conflicto.
Al final, recurrí a elegir un valor predeterminado aleatorio en el rango administrado localmente, elegido al hacer algunas lecturas de hardware que tienen una entropía moderada. Deliberadamente excluí el principio y el final del rango suponiendo que es más probable que se elijan manualmente. Lo más probable es que solo haya uno de estos dispositivos en una red dada, y ciertamente menos de 20, por lo que las posibilidades de un conflicto son muy bajas, aunque no tan bajas como podrían ser debido a los números aleatorios, algo predecibles.
Dadas las pocas posibilidades de que haya un problema, ya pesar de las excelentes respuestas anteriores, decidí prescindir de la detección de conflictos y conformarme con una advertencia para que el usuario tenga en cuenta los problemas de conflicto de MAC.
Si decidiera implementar la detección de conflictos, dado que controlo toda la pila de red, probablemente buscaría paquetes desconocidos o faltantes excesivos, y luego activaría un cambio de dirección MAC o avisaría al usuario cuando eso ocurra.
Espero que eso ayude a alguien más en algún lugar, ¡pero probablemente no!
Puede enviar una solicitud ARP para cada posible IP en la subred . Por supuesto, la dirección de origen de la solicitud ARP debe ser ff: ff: ff: ff: ff: ff ; de lo contrario, es posible que no vea la respuesta.
Forjé un paquete como este con bittwiste y lo reproduje con PReplay y todos los hosts de la red obtuvieron la respuesta. (No sé si estos paquetes ARP falsificados son legales o no ... algunos sistemas operativos podrían ignorarlos)
Así es como se veía el paquete falsificado:
Así es como se veía la respuesta:
Si observa las respuestas y ve su dirección MAC en uno de los paquetes (en el rectángulo rojo), entonces alguien tiene la misma dirección MAC que usted ...
Desgraciadamente, no pude probar la teoría por completo porque ninguna de mis máquinas (de Windows) se preocupa por mí tratando de establecer la dirección MAC de la nic ...