「DHCP」- 仿冒攻击(中间人攻击,MITM Attack)

问题描述

攻击者利用 ARP 机制,让 Client 学习到 DHCP Server IP 与 Attacker MAC 的映射关系,又让 Server 学习到 Client IP 与 Attacker Mac 的映射关系。如此一来,Client 与 Server 之间交互的 IP 报文都会经过攻击者中转;

原因分析

从本质上讲,中间人攻击是一种 Spoofing IP/MAC 攻击,中间人利用虚假的 IP 地址与 MAC 地址之间的映射关系来同时欺骗 DHCP 的客户端和服务器;

如图所示,攻击者利用 ARP 机制,让 PC1 学习到 IP-S 与 MAC2 的映射关系,又让 Server 学习到 IP1 与 MAC2 的映射关系;
1)当 PC1 向 DHCP Server 发送 IP 报文时,目的 IP 地址为 IP-S,源 IP 地址为 IP1,而封装这个 IP 报文的帧的目的 MAC 地址为 MAC2,源 MAC 地址为 MAC1,所以这个帧会首先到达攻击者 PC2。攻击者收到这个帧后,将这个帧的目的 MAC 地址更换为 MAC-S,源 MAC 地址更换为 MAC2,然后将这个帧发往 Server。如此“偷梁换柱”,Server 是看不出任何破绽的;
2)当 DHCP Server 向 PC1 发送 IP 报文时,目的 IP 地址为 IP1,源 IP 地址为 IP-S,而封装这个 IP 报文的帧的目的 MAC 地址为 MAC2,源 MAC 地址为 MAC-S,所以这个帧也会首先到达攻击者 PC2。攻击者收到这个帧后,将这个帧的目的 MAC 地址更换为 MAC1,源 MAC 地址更换为 MAC2,然后将这个帧发往 PC1。同样,PC1 也是看不出任何破绽的;
3)由于往来于 PC1 与 DHCP Server 之间的 IP 报文都会经过攻击者(中间人)进行中转,攻击者便很容易窃取这些 IP 报文中的某些信息,并利用这些信息来进行其他的破坏行为。攻击者也可以很容易对往来于 PC1 与 DHCP Server 之间的 DHCP 消息(这些消息是封装在 UDP 报文中的,而 UDP 报文又是封装在 IP 报文中的)进行篡改,达到直接攻击 DHCP 的目的;

解决方案

为防御中间人攻击与 IP/MAC Spoofing 攻击,可使用 DHCP Snooping 的绑定表工作模式,当接口接收到 ARP 或者 IP 报文,使用 ARP 或者 IP 报文中的“SRC-IP + SRC-MAC”匹配 DHCP Snooping 绑定表。如果匹配就进行转发,如果不匹配就丢弃;

DHCP 中间人攻击本质上是一种 Spoofing IP/MAC 攻击。要想防止 DHCP 中间人攻击,其实就是要防止 Spoofing IP/MAC 攻击;

运行了 DHCP Snooping 的交换机会“侦听(Snooping)”往来于用户与 DHCP Server 之间的 DHCP 消息,并从中收集用户的 MAC 地址(这里的 MAC 地址是指 DHCP 消息中 CHADDR 字段的值)、用户的 IP 地址(这里的 IP 地址是指 DHCP Server 分配给相应 CHADDR 的 IP 地址)等信息,这些信息会集中存放在一个数据库中,该数据库也被称为 DHCP Snooping 绑定表。运行了 DHCP Snooping 的交换机会建立并动态维护 DHCP Snooping 绑定表,绑定表中除了包含了用户的 MAC 地址、用户的 IP 地址外,还包括 IP 地址租用期、VLAN ID 等等信息;

如图所示,假设 DHCP Server 给 PC1 分配了 IP 地址 IP1,给 PC2 分配了 IP 地址 IP2,那么 IP1 与 MAC1 就形成了绑定关系,IP2 与 MAC2 也形成了绑定关系,这种绑定关系都存放于 DHCP Snooping 绑定表中。攻击者为了让 Server 学习到 IP1 与 MAC2 的映射关系,会发送 ARP 请求报文(将 ARP 报文中的源 IP 地址填为 IP1,源 MAC 地址填为 MAC2)。交换机接收到 ARP 请求报文后,会检查该 ARP 请求报文中的源 IP 地址和源 MAC 地址,发现该 IP/MAC(IP1/MAC2)映射关系不能匹配 DHCP Snooping 绑定表中的条目,于是会丢弃该 ARP 请求报文,这样就有效地防止了 Spoofing IP/MAC 攻击;

如果需要使用上面所描述的防止 Spoofing IP/MAC 攻击(进而防止中间人)的方法,就必须在交换机下执行:[Huawei] arp dhcp-snooping-detect enable;

还能够通过 Dynamic ARP Incpetion 功能进行检测:[Huawei] arp anti-attack check user-bind enable