中间人攻击
黑客利用ARP缓存中毒来截获你的局域网中两台设备之间的网络信息。例如,我们假象黑客想要窃听你的计算机,192.168.0.12,和你的网络路由器 (即网关,译者注) ,192.168.0.1,之间的通信信息。黑客先发送一个恶意的ARP “响应” ( 因为在此之前根本没有请求) 到你的路由器,将他的计算机的MAC地址和192.168.0.12绑定 (如图3).
现在你的路由器以为这个黑客的计算机就是你的计算机了。
然后,黑客在发送一个恶意的ARP响应到你的计算机,将他的MAC地址和192.168.0.1绑定起来。(如图4).
现在你的机器以为黑客的计算机是你的路由器了。
最后,黑客开启一个叫IP转发的系统功能。这个功能让黑客能将所有来自你的计算机的网络信息转发到路由器 (如图5).
现在,只要你尝试上网,你的计算机就会将网络信息发送到黑客的机器上,然后黑客再将其转发到路由器。由于黑客仍然将你的信息转发到网络路由器,所以你并不会察觉到他已经截获了所有你的网络信息,或许还窃听了你的明文密码或者劫持了你曾经安全的网络会话。
MAC洪泛
MAC洪泛是一种旨在网络交换机的ARP缓存中毒技术。当这些交换机流量超载时它们常常进入到 “集线器” 模式。在 “集线器” 模式中,交换机由于太过繁忙而不能执行它的端口安全检测功能,而是仅仅向网络中的每一台计算机广播所有的网络数据。利用大量的假冒ARP响应数据包去洪泛一台交换机的ARP映射表,黑客能使大多数制造商的交换机超载,然后当交换机进入 “集线器” 模式时,就可以发送 (恶意的) 包去嗅探你的局域网。
害怕了?好,现在冷静下来!
这是可怕的东西。ARP缓存中毒能够利用一些微不足道的手段却造成网络的巨大危害。但是,当你进入到高度戒备状态时,注意到一个重要的缓解因素:只有也在局域网中的攻击者才能利用ARP的缺陷 (因为ARP协议只会在局域网(子网)中进行) 。黑客他要不是在你的网络中找个接口插入而连接上你的局域网,要不就是控制一个局域网内的机器,这样才能进行ARP缓存中毒攻击。ARP的缺陷不能在被远程利用。
那就是说,黑客会被知道他接入了这个网络。优秀的网络管理员应该能意识到ARP缓存中的技术。
由于ARP缓存中毒源于一个协议的缺陷,但是这个协议对于TCP/IP网络的运转又是必须的,你不能去修改它。但是你可以运用以下技术来防止ARP攻击。
面向小型网络
如果你管理着一个小型网络,你或许可以试试使用静态IP地址和静态ARP映射表。用命令行输入,比如在Windows中是 “ipconfig/all” ,在NIX中是 “ifconfig” ,你就可以查看在你的网络中的所有设备的IP地址和MAC地址了。然后使用 "arp-s" 命令,你可以为你所知道的设备添加静态ARP映射。“静态” 就是不会变化;这可以防止黑客的欺骗ARP进入你的网络设备中。你甚至可以创建一个登录脚本当它们启动时自动添加这些静态ARP到你的计算机中。
然而,静态ARP很难被维护;在大型网络中更是不可能。那是因为你每加入一台设备到你的网络中都需要你手动地编写ARP脚本或输入每台设备的ARP映射表。但是如果你是管理一个少于两打的设备,这个技术或许适合于你。
面向大型网络
如果你是管理着一个大型网络,好好去研究一下你的网络交换机的 “端口安全” 功能。有一个 “端口安全” 功能是允许你强制使你的交换机在每个端口只允许 (IP地址对应的) 一个MAC地址通过。这个功能会阻止黑客改变他机器的MAC地址或试图映射多个MAC地址到他的机器上。这种技术常常用于帮助防御基于ARP的中间人攻击。
面向所有网络
你最好的防御方法就是掌握ARP中毒的机制并监视它。我强烈建议安装一个ARP监视工具,比如ARPwatch,当有不正常的ARP通信时它会提醒你。这种警惕也是对付所有类型攻击的最有力武器——就如Robert Louis Stevenson所写的,“最残酷的谎言常常是悄无声息地说出来的”。