ARP 攻击是针对以太网地址解析协议(ARP) 的一种攻击技术。 ARP 攻击可让攻击者取得局域网上的数据封包甚至可窜改封包, 可让网络上特定计算机(或所有计算机) 无法正常连接。
1. ARP 的工作过程
ARP (Address Resolution Protocol, 地址解析协议) 是一个位于TCP/IP 协议栈中的底层协议, 对应于链路层, 负责将某个IP 地址解析成对应的MAC 地址。 主机发送信息时, 将包含目标IP 地址的ARP 请求广播到网络上的所有主机, 并接收返回消息, 以此确定目标的物理地址; 主机收到返回消息后, 将该IP 地址和物理地址存入本机ARP 缓存, 并保留一定时间, 下次请求时, 就直接查询ARP 缓存。 地址解析协议建立在网络中各主机互相信任的基础上, 网络上的主机可以自主发送ARP 应答消息, 其他主机收到应答报文时不会检测该报文的真实性就将其记入本机ARP 缓存。 因此, 攻击者可以向某一主机发送伪ARP 应答报文, 使其发送的信息无法到达预期的主机或到达错误的主机, 这就构成了一个ARP 欺骗。ARP 命令可用于查询本机ARP 缓存中IP 地址和MAC 地址的对应关系、 添加或删除静态对应关系等。
接下来, 举例进行说明。
主机A 的IP 地址为192.168.1.1, MAC 地址为0A-11 -22 -33 -44 -01; 主机B 的IP地址为192.168.1.2, MAC 地址为0A-11 -22 -33 -44 -02。 当主机A 要与主机B 通信时,地址解析协议可以将主机B 的IP 地址(192.168.1.2) 解析成主机B 的MAC 地址。 工作流程如下:
第1 步, 根据主机A 的路由表内容, 确定用于访问主机B 的转发IP 地址是192.168.1.2。 然后主机A 在本机ARP 缓存中检查是否有主机B 的匹配MAC 地址。
第2 步, 如果主机A 在ARP 缓存中没有找到映射, 那么它将询问192.168.1.2 的硬件地址, 从而将ARP 请求帧广播到本地网络上的所有主机。 源主机A 的IP 地址和MAC 地址都包括在该ARP 请求中。 本地网络上的每台主机都接收到ARP 请求, 并检查是否与自己的IP 地址匹配。 如果收到请求的主机发现请求的IP 地址与自己的IP 地址不匹配, 它将丢弃ARP 请求。
第3 步, 主机B 确定ARP 请求中的IP 地址与自己的IP 地址匹配, 则将主机A 的IP 地址和MAC 地址映射添加到本地ARP 缓存。
第4 步, 主机B 将包含其MAC 地址的ARP 回复消息直接发回主机A。
第5 步, 当主机A 收到从主机B 发来的ARP 回复消息时, 会用主机B 的IP 地址和MAC 地址映射更新ARP 缓存。
本机缓存是有生存期的, 生存期结束后, 将再次重复上面的过程。 一旦确定主机B 的MAC 地址, 主机A 就能向主机B 发送IP 通信了。
ARP 缓存是用来储存IP 地址和MAC 地址的缓冲区, 其本质就是一个IP 地址与MAC 地址的对应表, 表中的每个条目分别记录网络上其他主机的IP 地址和对应的MAC 地址。 每个以太网或令牌环网络适配器都有自己单独的缓存表。 当地址解析协议被询问一个已知IP 地址结点的MAC 地址时, 先在ARP 缓存中查看, 若存在, 就直接返回与之对应的MAC 地址,若不存在, 就发送ARP 请求, 向局域网查询。
为使广播量最小, ARP 维护IP 地址到MAC 地址映射的缓存, 以便将来使用。 ARP 缓存可以包含动态项目和静态项目。 动态项目随时间推移来自动添加和删除。 每个动态ARP缓存项的潜在生命周期是10 min。 新加到缓存中的项目带有时间戳, 如果某个项目添加后2 min内没有再使用, 则此项目过期并从ARP 缓存中删除; 如果某个项目已在使用, 则增加2 min 的生命周期; 如果某个项目始终在使用, 则会另外增加2 min 的生命周期, 一直增加到10 min 的最长生命周期。 静态项目一直保留在缓存中, 直到重新启动计算机。
2. ARP 欺骗攻击
ARP 欺骗攻击就是通过伪造IP 地址和MAC 地址来实现ARP 欺骗, 其能够在网络中产生大量ARP 通信量使网络阻塞, 攻击者只要持续不断地发出伪造的ARP 响应包, 就能更改目标主机ARP 缓存中的IP-MAC 条目, 造成网络中断或中间人攻击。
在每台主机都有一个ARP 缓存表, 缓存表中记录了IP 地址与MAC 地址的对应关系,而局域网数据传输依靠的是MAC 地址。
ARP 欺骗存在两种情况: 一种是欺骗主机作为“中间人”, 被欺骗主机的数据都经过它中转一次, 这样欺骗主机就可以窃取到被其欺骗的主机之间的通信数据; 另一种是让被欺骗主机直接断网。(www.daowen.com)
假设主机A (192.168.1.2)、 B (192.168.1.3)、 C (192.168.1.4)、 网关G (192.168.1.1)在同一局域网, 主机A、 B 通过网关G 相互通信, 就好比A 和B 两个人写信, 由邮递员G送信, C 永远都不会知道A 和B 之间说了些什么话。 但是, 事实没有想象中的那么安全。在ARP 缓存表机制中存在一个缺陷, 就是当请求主机收到ARP 应答包后, 不会去验证自己是否向对方主机发送过ARP 请求包, 就直接把这个返回包中的IP 地址与MAC 地址的对应关系保存进ARP 缓存表, 如果缓存表中已有相同IP 对应关系, 则原有的会被替换。 这样,C 就有了偷听A 和B 的谈话的可能。
继续思考上面的例子: C 假扮邮递员, 首先要告诉A: “我就是邮递员。” (主机C 向主机A 发送构造好的返回包, 源IP 地址为192.168.1.1, 源MAC 地址为C 自己的MAC 地址), A 轻易就相信了, 直接把“C 是邮递员” 这个信息记在了脑子里; C 再假扮A, 告诉邮递员: “我就是A。” (C 向网关G 发送构造好的返回包, 源IP 地址为192.168.1.2, 源MAC 地址为自己的MAC 地址), 邮递员就此相信了, 以后就把B 的来信送给了C, C 当然就可以知道A 和B 之间聊了些什么。
这个故事就是ARP 双向欺骗的原理。
ARP 单向欺骗就更好理解了, C 只向A 发送一个返回包, 告诉A: 192.168.1.1 的MAC地址为5c-63 -bf -79 -1d -fa (一个错误的MAC 地址)。 A 把这个信息记录在缓存表中,而G 的缓存表不变, 也就是说, A 把数据包给了C, 而G 的包还是给A, 这样就是ARP 单向欺骗了。
3. ARP 攻击的防御
目前, 对于ARP 攻击的防护问题出现得最多是绑定IP 地址和MAC 地址, 以及使用ARP 防护软件。 此外, 还出现了具有ARP 防护功能的路由器。
1) 静态绑定
最常用的方法就是静态绑定, 即在网内把主机和网关都做IP 地址和MAC 地址绑定。 由于欺骗是通过ARP 的动态实时规则来欺骗内网机器, 因此只要把ARP 全部设置为静态, 就可以解决对内网机器的欺骗, 同时在网关进行IP 地址和MAC 地址的静态绑定, 这样双向绑定才比较保险。 对每台主机进行IP 地址和MAC 地址静态绑定可通过命令“arp -s” 来实现。 例如:
arp -s 192.168.10.1 AA-AA-AA-AA-AA-AA
如果设置成功, 在计算机执行“arp -a” 命令就可以看到以下相关提示:
Internet Address Physical Address Type
192.168.10.1 AA-AA-AA-AA-AA-AA static
说明: 这种静态绑定, 在计算机每次重启后都必须重新再绑定。 由于网络中有很多主机, 如果对每台都做静态绑定, 工作量将非常大。
2) 防护软件
目前较常用的ARP 工具有欣向ARP 工具、 Antiarp 等。 它们本身能检测出ARP 攻击外,其防护的工作原理是以一定频率向网络广播正确的ARP 信息。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。