ARP欺骗攻击的检测和防御

 

以太网构建由 1500 个字节的块组成的数据帧。每个以太网数据帧头包括源 MAC 地址和
目的 MAC 地址。建造以太网数据帧,必须从 IP 数据包中开始。但在构建过程中,以太网并
不知道目标机器的MAC 地址,这就需要创建以太网头。唯一可用的信息就是数据包头中的目
标 IP地址。对于特定主机的数据包传输,以太网协议必须利用目标IP来查找目标MAC地址。
这就是 ARP地址解析协议。ARP用于定位与特定IP地址相关联的以太网地址。
地址解析协议(ARP 协议)是 RFC826 文档中定义的 TCP/ IP 标准。ARP 协议使用基于
TCP/IP 协议的软件将 IP 地址解析为局域网硬件使用的媒体访问控制地址即 MAC 地址。ARP
协议发送 ARP 数据包请求。ARP 则询问如下问题:“你的 IP地址是否是 x.x.x.x?如果是,
请将你的 MAC 地址返回”。这些数据包被广播到局域网中所有的计算机。每台计算机都会检
查该 ARP 请求,以确定其IP 地址是否相同,并返回包含 MAC 地址的 ARP 应答包。为了减少
ARP 广播请求的数量,操作系统会保存一份ARP 应答包的数据缓存。在发送广播请求之前,
发送请求的计算机要确保数据是否在ARP缓存中。如果是,则不需要广播ARP 请求,就可以
完成。检查 Windows、UNIX 或 Linux 操作系统中的缓存,必须使用 arp –a 命令。
ARP 表中条目通常保存一定时间,在超期后将再次通过发送ARP 应答被添加进来。当计算机
接收到 ARP应答时,则用新的IP / MAC协会更新ARP 缓存。

ARP 欺骗攻击
 
ARP是无状态的协议;如果操作系统在没有发送请求的情况下得到应答消息,那么大多
数操作系统都会更新其缓存。由于没有任何验证机制,网络上的任何主机都可以向目标主机
发送伪造的ARP应答,这样目标计算机就会将原本发送给计算机B的数据帧,发送给计算机
A。如果处理得当,计算机 A 并不会发现该变化过程。用伪造的条目更新目标计算机 ARP 缓
存的过程被称为“中毒”。通常,攻击者将其MAC地址与另一节点的IP地址(默认网关)关
联在一起(图2 所示)。该IP 地址(默认网关)的任何通信都会被错误地发送给攻击者。然

后攻击者就可以选择性地将数据流量转发至真正的默认网关或者在转发前修改数据。攻击者
还可以通过制造拒绝服务攻击,将不存在的MAC 地址与受害主机默认网关的IP 地址关联。

 

伪造的 ARP响应将会被定期地发送至受害主机,并且相比较受害者主机上的ARP缓存条
目的超时周期,欺骗响应的周期更短。这将确保受害者主机绝不会向那些攻击模仿其 IP 地
址的主机发送ARP 请求。
ARP 攻击嗅探
嗅探机制捕获网络中来自单一机器的所有或部分通信流量。地址解析协议(ARP)中毒
用于嗅探主机间的通信流量,如下图 3所示。攻击者用主机B 的 IP地址和 MAC 地址向主机
A 发送伪造的 ARP 数据包。攻击者还用主机 A 的 IP 地址和攻击者的 MAC 地址向主机 B 发送
伪造的 ARP数据包,那么主机 A和主机 B的所有通信都会流向攻击者,这样攻击者就可以嗅
探数据,而不是直接攻击受害主机。由于恶意用户扮演在两个目标主机之间传输的角色,所
以该攻击也称之为“中间人”攻击。

69
MAC洪水攻击 
这是另一种嗅探方法。该MAC 洪水攻击针对网络交换机的 ARP 缓存中毒技术。当某些交
换机超负荷运行时,则需要经常切换至“集线器“模式。在该模式中,交换机无法保证端口
安全性,并且只将所有的网络通信广播至每一个计算机。通过向交换机ARP表发送大量伪造
的 ARP应答,制造洪水攻击,那么攻击者就可以重载交换机,并且当交换机处于集线器模式
时,进行数据包嗅探任务。
广播
通过将目标地址设置为“FF:FF:FF:FF:FF:FF”,即广播MAC地址,数据帧可以被广播到
整个网络中。通过用伪造的ARP应答加载网络,该应答将网关的MAC 地址设置为广播地址,
所有的通信数据都将被广播,从而进行嗅探攻击。
拒绝服务攻击
用不存的 MAC 地址更新ARP缓存将导致数据帧的丢失。例如,攻击者可以发送一个ARP

应答,其将不存在的MAC地址与网络路由器的IP地址关联起来。然后,计算机就认为它们
将数据发送到了默认网关,但实际上却将数据发送到了本地网络中不存在的地址中。
劫持攻击
连接劫持攻击允许攻击者使用与中间人攻击相似的方法,控制两台计算机之间的连接。    

这种控制权的转移导致任何类型的会话都将被转移。例如,在目标计算机以管理员身份登录
至远程计算机以后,攻击者可以控制一个Telnet会话。
 
ARP 攻击实验方法
 
以下是 Jammu 大学的无线网络实验中进行的实验。选用网络中的 IP 地址
172.18.223.213 和 MAC 地址 00-21-00-59-1E-0F 作为实验节点。默认网关的 IP 地址是
192.170.1.1,其 MAC地址是 00-0D-ED-6C-F9-FF。该实验检查名为SniffLan 的ARP欺骗攻
击,为了将攻击者的MAC 地址与默认网关的IP 地址关联起来,实验中伪造的ARP 数据包都
被广播到局域网内所有计算机的欺骗ARP表中。因此,任何指向网关地址的通信都将被错误
地发送给攻击者。当进行攻击时,网络嗅探活动就可以确保攻击者查看所有目标计算机正在
查看的信息和内容。
a)第一步就是激活攻击者机器上的嗅探程序来捕获所有指向其的通信数据,这样就数
据包内容就会被检查。作者使用开源的数据包分析器 Wireshark(1.2.8 版本)进行分析。
Wireshark捕获网络数据包,并尽可能详细地显示数据包内容。它能够捕捉来自许多不同类
型网络媒体的数据,包括无线局域网,当然这依据设置情况而定。Wireshark安装在被选作
攻击者(172.18.223.213)的节点上。假设其为机器A.
安装 Wireshark
以下是安装Wireshark的步骤:
1)从网址http://www. wireshark.org/download.html下载Wireshark的安装程序包。 
2)在选择面板上选择将要安装的组件。
3)如果 Winpcap没安装的话,在Winpcap的页面中安装Winpcap。
4)点击安装Wireshark。
设置 Wireshark来捕获数据包
以下是使用Wireshark捕捉数据包步骤:
1)正确选择捕获数据包的网络接口。在“捕获”菜单中选择“接口”,以显示接口列表。
2)点击右侧接口上的开始按钮启动捕获操作,或者单击选项进行更多的设置。
3)在捕获过程中,作者使用了图4 显示的设置。
4)点击开始,启动捕获操作。

b)在二个步骤中,为了欺骗所有计算机的ARP表,必须将攻击者MAC 地址和默认网
关的 IP 地址关联起来,这样该网关的任何通信都被错误地发送至攻击者。用于显示并进行
测试操作的工具是 WinArpAttacker(3.50 版本)。WinArpAttacker 能够扫描数据,并显示
局域网上活动主机的程序,同时能够收集局域网上的所有数据包。在机器A上也安装了该工
具。WinArpAttacker基于wpcap工具,因此在 wpcap安装之前,必须安装WinArpAttacker。 
设置 WinArpAttacker
1)运行 WinArpAttacker.exe程序。
2)点击“选项”菜单进行相关配置,如选择网络接口、攻击执行的时间、是否选择自动扫
描、保存 ARP 数据包以便于进一步的分析以及使用代理等等设置。
3)点击扫描按钮,然后选择高级选项。在扫描对话框中对活动主机扫描整个局域网或者选
择一定范围的IP地址进行扫描。作者选择的IP范围172.18.223.0至 172.18.223.254(包
括攻击者主机在内)。由于局域网上攻击行为的危险性,该IP地址范围可以降低对子网节点
的影响。

4)点击 arpattack按钮选择snifflan,同时 ARP欺骗攻击将被启动。
c)现在所有主机之间和和网关间的通信都能被 Wireshark 所捕获。一旦发起攻击,就
会发送 gratuitous ARP应答(gratuitous ARP,用来探测网内是否有机器和自己的ip冲突,
或者用来更新工作站的 arp 缓存)。图 9给出了详细的 ARP 应答报文。尽管没有发送 ARP 请
求,但当接收到ARP 响应时,网络上所有设备都会更新其ARP缓存,即用攻击者的MAC地址
代替网关的MAC 地址。因此发送给网关的通信就会到达攻击者主机。图10 显示 ARP 欺骗攻
击之后,攻击者接收的数据包。
d)分析数据包:一旦捕获通信数据,那么就必须检查数据包内容以查看像密码、编码
之类的信息。右键点击需要被分析的数据包并选择以下 TCP 数据流。图 11 显示了 Jammu 大

学的无线网络用户的密码。

众所周知,在不影响工作效率的情况下,很难解决ARP 缓存中毒问题。唯一可行的防御
方法就是使用静态ARP 表项。为了防止欺骗攻击,ARP 表必须为网络上的所有机器分配静态
表项。部署这些表项以及保持正常使用的开销太大,并不现实。众所周知,如果有些操作系
统接收到 Gratuitous ARP 数据包,那么这些操作系统就会覆盖静态 ARP 表项。此外,这也
可以防止使用DHCP配置,该配置频繁改变MAC/IP关联数据。另一个有效方法是端口安全机
制,即端口绑定或MAC绑定。端口安全机制可保持交换机MAC表不变,除非由网络管理员手
动执行。但其并不适用于大型网络,或是使用 DHCP 的网络。下一步将讨论其它各种 ARP 欺
骗的预防机制和检测技术。
防御技术
a)安全地址解析协议:Bruschi、Ornaghi 和 Rosti推荐了一个ARP安全版本,该ARP
中每个主机都有一对公有/私有密钥,由局域网中的受信任方(扮演认证机构的角色)所认
证。为了防止欺骗信息的注入,信息由发送方进行数字签名。它提供了一个永久性解决ARP
欺骗的方法,但其最大的缺点是需要对所有主机的网络协议栈进行修改。此外S-ARP 使用数
字签名算法(DSA),这将导致额外的加密计算的开销。Goyal 和 Tripathy 建议修改基于数
字签名组合的机制之上的S-ARP,以及基于散列链的一次性密码技术(为了认证ARP的 MAC>映射)。该计划基于与S-ARP 相似的架构,但却更加巧妙地使用加密技术。

b)TARP:Lootah、Enck 和 McDaniel 展示了基于 Ticket 的地址解析协议(TARP),该
协议为加入网络的客户端实现了分布式集中生成的MAC/ IP地址的映射attestations机制,
即所谓的门票。主机用请求的IP 地址发送应答消息,同时附上之前获取的Ticket,Ticket
上的签名证明本地票务代理(LTA)已经将其发行。发送请求的主机接收Ticket,并用LTA

的公钥进行验证。如果签名有效,地址关联将得到认可;否则,将被忽略。随着TARP Ticket
的使用,对手就无法成功地伪造 TARP 的应答,因此,就不能使用 ARP 中毒进行攻击。但缺
点就是实现TARP 机制的网络很容易受到两类攻击:活动主机模拟攻击和通过Ticket进行的
拒绝服务攻击。此外,只要 Ticket 有效,攻击者就可以通过欺骗其 MAC 地址并应答被捕获
的门票消息,进而模拟受害主机。
c)部署虚拟专用网络(VPN)来进行身份验证,同时传输的数据的客户端对网关的安全
机制也提供了部分解决方案。尽管网络受VPN 保护,攻击者仍可以通过基于ARP的攻击对通
信进行重定向并被动地监视通信,但其只能访问加密的数据流。尽管通过将伪造的数据注入
客户端的 ARP 缓存,攻击者仍然能够制造拒绝服务攻击,但是数据 compromise 的问题将不
存在。 
d)使用中央 ARP 服务器:Taietal 建议使用改进的 ARP 技术,该 ARP 的请求数据包并
不广播,而是单播至ARP服务器,该服务器将获得所有连接至网络主机的映射集。
这大大降低了ARP 信号传输和处理的开销。为了获得所有主机的映射,网络中所有
主机之间通信数据包都被监听,并且这些数据包试图建立基于传输于主机和 DHCP 之间的
DHCP消息的 ARP 表。但是为防止机器IP地址的变化,并防止更新ARP缓存,就必须对 DHCP
消息进行不断地扫描。其主要缺点是,如果网络没有启动DHCP,就无法捕获任何主机的 MAC>映射。 

检测技术
1)请求应答不匹配算法:在该算法中嗅探器监听 ARP 数据包,并保存由 MAC 地址 key
的等待决定的请求表。如果匹配的应答超时到达,表中的表项将被删除。如果表中没有与应
答匹配的请求,那么就要通知管理员。该算法在小型网络中运行较好,但在大型网络中,这
种算法可能会被误认为攻击。这是一种被动检测技术,在该技术中网络上的 ARP 请求/
应答被嗅探去构建一个 MAC 地址到 IP 地址映射数据库中。如果未来ARP 通信映射表出现变
化,那么就会发出 ARP 欺骗攻击的警报。该类别中最常用的工具是 ARPWATCH。该被动式检
测技术的主要缺点就是学习地址映射与随后的攻击检测之间的时间延迟。倘若启动检测工具

之前,发生ARP欺骗攻击,该工具将在其IP地址映射数据库中学习伪造的应答。
2)主动检测:Ramachandran和Nandi提出了一个主动检测ARP欺骗的技术。基于主机
网络栈的正确行为准则(当接受数据包时),将过滤不一致的ARP数据包。然后将一个 TCP SYN
包发送给主机进行验证。由于欺骗检测引擎没有接收到任何针对该SYN 数据包的TCP响应数
据包,因此能够识别接收到的 ARP 响应报文的真实性。人们认为该技术比被动式技术更加快
速、智能化,并具有较强的可扩展性和可靠性。
3)通过 SNMP 检测交换机:Carnut和 Gondim使用路由器检测ARP 的不稳定性,如那些
通过端口的 ARP 数据包,该路由器由 SNMP 管理框架提供,包含许多流向交换机的输入输出
数据包和字节。由于攻击者几乎重发了所有流经接收端口的数据包,因此数量上基本相当。
那些最不稳定的发射器的主机决定了候选攻击者的身份,并且那些接收未应答数据包的主机
决定了候选受害者的身份。该算法很容易实现,但是当在真实网络环境中测试时,其误报率
非常高。
小结
  本文详细描述了ARP攻击方法。所有推荐的检测和防御方法具有不同的应用范围和其局限
性。要么不安全,要么对系统性能有无法接受的缺点。同时也提出了解决问题的技术,其能
够协助安全向导选择用于构建安全局域网的合适的解决办法。

你可能感兴趣的:(网络,算法,路由器,工具,vpn,活动)