实战:ARP攻击的攻、判、防的详细解析(1)

ARP攻击不是病毒-因而几乎所有的杀毒软件对之都无可奈何;但它却胜似病毒-因为它轻可造成通信变慢、网络瘫痪,重会造成信息的泄密。多年来,ARP攻击一直存在,却没有一个好的解决办法。很多网络用户深受其害,网管人员更是无从下手、苦不堪言。本实验从分析ARP协议和欺骗原理入手,介绍如何实施ARP攻击,如何判断正在遭受ARP攻击,如何防范和解决ARP攻击。

1.ARP协议及欺骗原理

(1)以太网的工作原理。以太网中,数据包被发送出去之前,首先要进行拆分(把大的包进行分组)、封装(在Network层添加源IP地址和目标的IP地址,在Data Link层添加源MAC地址和下一跳的MAC地址),变成二进制的比特流,整个过程如图I-1所示。数据包到达目标后再执行与发送方相反的过程,把二进制的比特流转变成帧,解封装(Data Link层首先比较目标的MAC是否与本机网卡的MAC相同或者是广播MAC,如相同则去除帧头,再把数据包传给Network层,否则丢弃;Network层比较目的地IP地址是否与本机相同,相同则继续处理,否则丢弃)。如果发送方和接收方位于同一个网络内,则下一跳的MAC就是目标的MAC,如发送方和接收方不在同一个网络内,则下一跳的MAC就是网关的MAC。从这个过程不难发现,以太网中数据的传速仅知道目标的IP地址是不够的,还需要知道下一跳的MAC地址,这需要借助于另外一下协议,ARP(地址解析协议)。


图I-1 数据的封装和解封装

2)ARP的工作原理。计算机发送封装数据之前,对比目标IP地址,判断源和目标在不在同一个网段,如在同一网段,则封装目标的MAC;如不在同一网段,则封装网关的MAC。封装之前,查看本机的ARP缓存,看有没有下一跳对应的IP和MAC映射条目,如有则直接封装;如没有则发送ARP查询包。ARP查询和应答包的格式如图I-2所示,查询包中 "以太网目的地址"为0xffffffffffff广播地址,"以太网源地址"为本机网卡的MAC地址,"帧类型"为0x0806表示ARP应答或请求,"硬件类型"为0x0001表示以太网地址,"协议类型"为0x0800表示IP地址,"OP"为ARP的请求或应答,ARP请求包的OP值为1,ARP应答包的OP值为2,"发送端以太网地址"为发送者的MAC地址,"发送端IP"为发送者的IP地址,"目的以太网地址"这里为0x000000000000,"目的IP"为查询MAC地址的IP。此包以广播形式发送到网络上,局域网中所有的计算机均收到此包,只有本机IP地址为"目的IP"的计算机对此数据包进行响应,并回复此数据包。当始发送端方收到此ARP应答包后,即获取到目标IP对应的MAC地址,然后就可进行数据包的封装了。


图I-2 ARP的查询和应答包格式

(3)ARP的欺骗。于TCP通过序列号和确认号字段不同,实施三次握手来保证数据传输的可靠性,ARP是一个无状态的协议,也就是说不管有没有发送ARP请求,只要有发往本机的ARP应答包,计算机都不加验证的接收,并更新自己的ARP缓存。了解ARP的工作原理后,只要有意图的填充图I-2中的某些字段,即可达到ARP攻击的效果:IP地址冲突、ARP欺骗、ARP攻击等。

P地址冲突。计算机检测本机IP地址是否在网上被使用的方法是用本机IP地址作为目的IP地址,发送ARP查询包,如果收到应答,则说明本IP地址已经在网上被使用,弹出IP地址被使用对话框,释放出本机的IP地址。ARP攻击者利用这一原理,用任意的MAC地址(非被攻击者真实的MAC地址)填充"发送端以太网地址"字段,用被攻击者的IP地址填充"发送端IP"字段,用被攻击者的真实MAC地址填充"目的以太网地址"字段,用被攻击者的IP地址填充"目的IP"字段,OP的值为"2",如图I-3所示。当被攻击者收到这样的ARP应答后,就认为本机的IP地址在网络上已经被使用,弹出IP地址冲突对话框。


图I-3 IP地址冲突的ARP应答包

ARP欺骗:如图I-4所示,PC1是攻击者,攻击的目的是"中断PC2与网关的通信"。PC1生成一个ARP应答信息包,"发送端的IP"填写成网关的IP地址,"发送端以太网地址"填写一个非网关的MAC地址(这个地址可以随机生成),"目的IP"填写PC2的IP地址,"目的以太网地址"填入PC2的MAC地址。主机PC2收到这个最新的ARP应答信息包后,就会用这个不正确的网关的MAC地址更新自己的ARP缓存表,以后PC2后就这个错误的MAC地址进行封装,造成封装后的数据包无法正确到达网关;PC1类似的再发送一个不正确ARP应答包给网关,"发送端的IP"填写成PC2的IP地址,"发送端以太网地址"填写一个非PC2的MAC地址(这个地址可以随机生成),"目的IP"填写网关的IP地址。网关收到这样的ARP应答信息后,也在缓存中保存了错误的PC2映射条目。PC1周期性向网关和PC2发送这样的包,以免它们的ARP表老化,这样就达到了阻止它们通信的目的。


图I-4 ARP欺骗示意图

ARP攻击。以称为中间人攻击(Man-in-the-middle attack),与ARP欺骗类似,只是PC1发送ARP请求时,所填入的"发送端以太网地址"不是随机生成,而是替换成PC1本机的MAC地址,开启PC1的路由功能–修改(添加)注册表选项HKEY_LOCAL_ MACH INE SYSTEMCurrentControlSetServicesTcpipParametersIPEnableRouter = 0x1,同时在PC1上安装窃听软件,截获PC2与网关之间所有的通信包。

实验I ARP攻击的攻、判、防

2.如何实施ARP攻击

这里介绍两款ARP攻击软件的使用方法,拓扑如图I-5所示。


图I-5 ARP攻击

第一款软件主要用于攻击,破坏正常的网络通信,如图I-5所示,在虚拟机2上安装"网络执法官"软件,破坏虚拟机1和真实机之间的正常通信,实验步骤如下。

正确配置各计算机的IP地址。虚拟机1的网卡类型Bridged,IP地址是192.168.1.220,掩码255.255.255.0,网关192.168.1.1,DNS是218.2.135.1。虚拟机2的网卡类型Bridged,IP地址是192.168.1.210,掩码255.255.255.0,网关192.168.1.1,DNS是218.2.135.1。真实机的IP地址是192.168.1.200,掩码255.255.255.0,网关192.168.1.1,DNS是218.2.135.1。

在虚拟机2上安装WinPcap。解压缩"网络执法官.rar"文件,双击"WinPcap30.exe"文件,开始安装WinPcap。

在虚拟机2上安装网络执法官软件。双击"网络执法官2.8破解版.exe"文件开始安装网络执法官。

运行网络执法官。第一次运行执法官,打开如图I-6所示对话框,提示进行监控参数选择。


图I-6 监控参数选择

因为只有一块网块,选中最上面的网卡复选框,单击"确定"按钮。打开如图I-7所示的监控范围选择对话框,在指定监控范围中列出网卡所在子网的所有可用IP地址,单击图中的"添加/修改",把范围加入后,单击"确定"按钮。


图I-7 监控范围选择

攻击前测试。在虚拟机1上,打开DOS窗口,输入ping 192.168.1.200 -t,持续的ping真实机的IP地址,可以发现是通的。不要关闭该窗口。

开始攻击。网络执法官软件可以监测到同一个子网中所有在线的主机,在网络执法官的管理界面中,右键单击真实机,从快捷菜单中选择"手工管理",如图I-8所示。


图I-8 执法官管理界面

在如图I-9所示的对话框中,选中第三个选项"禁止与所有其他主机…",单击"开始",此时可以发现虚拟机1和真实机之间的ping测试开始提示"Request timed out",通信中断了。实际环境中,还可以只选中"禁止与关键主机连接…",然后单击"关键主机",加入网关的地址,这样被攻击计算机只会中断与网关的连接,和局域网内计算机之间的通信不会中断。

图I-9 手工管理计算机


第二款软件主要用于窃取有用信息,如图I-5所示,在虚拟机1上安装"Cain & Abel"软件,破坏虚拟机1和真实机之间的正常通信,实验步骤如下。