There is something I do not understand about arp spoofing, and no article I read so far seems to explain it:
Assume the following setting:
We have three hosts A,B,C with ip addresses 192.168.178.{10,11,12}, all hosts are connected to each other by a single switch. Now host A wants to communicate with hosts B and hence sends out an arp request to get the MAC address of 192.168.178.11. Host C wants to intercept the connection and so he sends out an arp package relating 192.168.178.11 with his MAC address.
I guess C strictly has to wait after B responded, because if the package of C would arrive first then B's response would still reach A after that and then the arp cache of A would replace the MAC address send by C with the MAC address send by B because the latter is newer (maybe I already got something wrong here?).
But now to the actual problem:
Even if C sends out his arp package after B, then this package would still be addressed to a broadcast MAC address, and so it should also reach B who now reads an arp package from which he can conclude that either
- his ip address is not unique or
- someone is trying to arp spoof him
either way the attack would be noticed.
So my question is: How can an arp spoofing be effective if the fact that arp packages are send by broadcast always implies that the victim can be aware of the attack?
Possible explanations I have thought of so far:
- arp packages can be addresses to a single MAC address, so that be could make sure that only A gets the faked package and not B (but wouldn't the header reveal to B that this certain arp package was not send to an broadcast address and hence should be treated with suspicion)
- the OS could notice all of that, it just is not programmed to do so