0x01 嗅探之前,我们有必要先来大致回顾下arp和rarp的基本通信流程,假设现在交换机中的mac地址表中暂时还没有任何对应关系A机器想和B机器进行通信
1 2 3 4 5
| arp 地址解析协议,即通过ip找对应的mac: 首先,A会先发arp请求[广播],向同一交换机下的所有其它机器询问,谁有B的这个ip 当B收到这条消息时,就会再用arp响应给A,说,我有这个ip,我的mac是多少... 当完成第一次正常通信之后就会在交换机的mac地址表中记录下这层指向对应关系 后续就直接按照mac地址表中已有的指向来通信,而不再用广播询问,这就是一次极为常规的arp通信过程
|
1 2 3 4
| rarp 反向地址解析协议,即通过mac找对应的ip: 理解完arp以后,我们再来看rarp,同样是先发请求,这个请求简单来讲也是一个广播,不过,在此广播中声明了自己的mac 并请求任何收到此请求的rarp服务器分配一个ip,当同网段的rarp服务器收到此请求后会检查自己的rarp列表找到该mac对应的ip 如果此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之间的所有明文通信数据,即实现了所谓的监听
|