0x01 嗅探之前,我们有必要先来大致回顾下arp和rarp的基本通信流程,假设现在交换机中的mac地址表中暂时还没有任何对应关系A机器想和B机器进行通信
1
2
3
4
5arp 地址解析协议,即通过ip找对应的mac:
首先,A会先发arp请求[广播],向同一交换机下的所有其它机器询问,谁有B的这个ip
当B收到这条消息时,就会再用arp响应给A,说,我有这个ip,我的mac是多少...
当完成第一次正常通信之后就会在交换机的mac地址表中记录下这层指向对应关系
后续就直接按照mac地址表中已有的指向来通信,而不再用广播询问,这就是一次极为常规的arp通信过程
1 | rarp 反向地址解析协议,即通过mac找对应的ip: |
0x02 关于arp欺骗最核心的细节1
2
3
4
5假设同一交换机下有三台机器,分别为 A , B , C,正常情况下B和C的通信数据,A是不可能看到的
但在ARP缓存表机制中存在一个缺陷,就是当请求主机收到ARP应答包后,不会去验证自己曾经是否向对方主机发送过ARP请求
就直接就把这个应答包中的IP与MAC地址的对应关系更新到自己本地的ARP缓存表中,这时就直接导致原有IP的对应关系被恶意替换
通俗点儿理解,也就是说,我强制刷新了对方的arp缓存对应关系,把原来ip的指向现在换成了我自己的地址
导致现在B和C的通信都要先经过A,那么,我们在A上自然就可以顺利的看到C和B之间的所有明文通信数据,即实现了所谓的监听