所有内容仅作为个人学习和实验使用,请勿用于非法用途,后果自负!
由于arp欺骗一方面针对客户端,另一方面针对网关,所以对于arp欺骗的防御也可以从这两个方面来看。
针对客户端
windows下可以通过设置永久静态的arp缓存表来防止arp被修改。
netsh interface ipv4 show interfaces
查看本地网卡对应的idx值
绑定ip/mac netsh -c interface ipv4 add neighbors idx ip mac store=persistent
然后通过arp -a
来查看是否绑定成功
删除绑定的ip/mac netsh -c interface ipv4 delete neighbors idx值
实验验证
win10 ip/mac:192.168.xx.1 00-xx-xx-xx-xx-08
win10虚拟机 ip/mac 192.168.xx.138 00-xx-xx-xx-xx-96
kali虚拟机 ip/mac 192.168.xx.140 00-xx-xx-xx-xx-a9
这里出现一个小插曲,两台机器,a可以ping通b,但是b不能ping同a,原因是a防火墙的原因,一气之下直接关了a的防火墙。
kali将192.168.xx.138
作为target1,将192.168.xx.1
作为target2开启arp欺骗
这时发现win10虚拟机中arp缓存表中192.168.xx.1 00-xx-xx-xx-xx-a9
很明显已经产生影响了。
这时去win10虚拟机添加arp静态缓存
netsh -c interface ipv4 add neighbors idx ip mac store=persistent
使用arp -a
查看 win10物理机mac变回去了。
再使用删除命令 netsh -c interface ipv4 delete neighbors idx值
几秒钟后,在看arp缓存表,发现win10物理机的mac又被欺骗。
linux系统
可以绑定arp映射 arp -s ip mac
删除arp映射 arp -d ip
针对服务器端
可以使用数字签名证书和公钥基础设施辅助来证明网站的真实性并且没有经过中间人。
对于https协议,hacker即使进行arp欺骗使数据包走hacker机也无法解开数据包中加密的数据,所以hacker如果想获取解密密钥就必须在服务器端给客户端server公钥
时截获下来并自己伪造一对公钥和私钥,并把hacker公钥
交给客户端。
当客户端发送信息时,hacker机再去截获用自己hacker私钥
解密才可以看到数据内容。
但是客户端这时如果用网站的数字签名对比一下就可以发现,客户端自己拿到的公钥和数字签名中的不一样,从而察觉自己已经被攻击。
但是如果网站的数字签名证书是假的怎么办,比如说这个网站的数字证书是hacker伪造的。那就需要一个证明这个数字证书的证书,那后面这个证书也有可能是假的,同样需要一个更高级的证书来证明其真伪性。
第一次老师讲到这里的时候我就想到这样不就没完没了了么,但是后来老师又补充道,存在着最高级root证书,这些证书都是直接放在浏览器中并不会错。这种一层层证明并且由root证书最终证明的管理系统就是公钥基础设施(PKI)。