浅谈网络协议之ARP协议原理及应用
------ 关于ARP欺骗攻击技术简析和防范
您是否遇到局域网内频繁性区域或整体掉线,重启计算机或网络设备后恢复正常?您的网速是否时快时慢,极其不稳定,但单机进行光纤数据测试时一切正常?您是否时常听到身边人的网上银行密码、游戏及QQ账号频繁丢失的消息?……
这些问题的出现有很大一部分要归功于ARP攻击,那么什么是ARP协议?ARP是如何攻击的呢?又该怎样防御呢?
一.ARP协议及其基本原理
ARP( Address Resolution Protocol),中文名为地址解析协议,它工作在数据链路层,在本层和硬件接口联系,同时对上层提供服务。
IP数据包常通过以太网发送,以太网设备并不识别32位IP地址,它们是以48位以太网地址传输以太网数据包。因此,必须把IP目的地址转换成以太网目
的地址。在以太网中,一个主机要和另一个主机进行直接通信,必须要知道目标主机的MAC地址。但这个目标MAC地址是如何获得的呢?它就是通过地址解析协议获得的。ARP协议用于将网络中的IP地址解析为的硬件地址(MAC 地址),以保证通信的顺利进行。
如图即为ARP报头结构:
下面介绍一下ARP协议的工作原理。我们知道每台主机都会在自己的ARP 缓冲区(ARP Cache)中建立一个存放有本局域网上的各主机和路由器的IP地址到硬件地址的映射表,这些都是主机目前知道的一些地址。
假设有三台主机:
A: IP地址192.168.0.1 硬件地址AA:AA:AA:AA:AA:AA
B: IP地址192.168.0.2 硬件地址BB:BB:BB:BB:BB:BB
C: IP地址192.168.0.3 硬件地址CC:CC:CC:CC:CC:CC
当主机A需要将一个数据包要发送到本局域网上的某个目的主机B时,会首先检查自己ARP列表中是否存在该主机B的IP地址,如果有﹐就在ARP高速缓存中查出其对应的硬件地址,再把这个硬件地址写入MAC帧,然后通过局域网把该MAC帧发往此硬件地址;如果查不到主机B的IP地址的项目,在这种情况下主机A就向本地网段发起一个ARP请求的广播包,查询此目的主机B 对应的MAC地址。此ARP请求数据包里包括主机A的IP地址、硬件地址、以及目的主机B的IP地址。“我是192.168.0.1,我的硬件地址是"
AA:AA:AA:AA:AA:AA ".请问IP地址为192.168.0.2的MAC地址是什么?”
网络中所有的主机收到这个ARP请求后,会检查数据包中的目的IP是否和自己的IP地址一致。如果不相同就忽略此数据包;如果相同,该主机就给主机A发送一个ARP响应数据包,告诉对方自己是它需要查找的MAC地址“我是192.168.0.2,硬件地址是BB:BB:BB:BB:BB:BB”,并把发送端的MAC地址和IP 地址添加到自己的ARP列表中,如果ARP表中已经存在该IP的信息,则将其覆盖。主机A收到这个ARP响应数据包后,将得到的目的主机B的IP地址和MAC地址添加到自己的ARP列表中,并利用此信息开始数据的传输。如果主机A一直没有收到ARP响应数据包,则表示ARP查询失败。
二.ARP攻击
ARP攻击是指通过伪造IP地址和MAC地址实现ARP欺骗,能够在网络中产生大量的ARP通信量使网络阻塞,攻击者只要持续不断的发出伪造的ARP响应包就能更改目标主机ARP缓存中的IP-MAC条目,造成网络中断或中间人攻击。
它主要是存在于局域网网络中,局域网中若有一个人感染ARP木马,则感染该ARP木马的系统将会试图通过“ARP欺骗”手段截获所在网络内其它计算机的通信信息,并因此造成网内其它计算机的通信故障。
其中“恶意窃听”病毒是“ARP欺骗”系列病毒中影响和危害最为恶劣的。它不会造成局域网的中断,仅仅会使网络产生较大的延时,但是中毒主机会截取局域网内所有的通讯数据,并向特定的外网用户发送所截获的数据,对局域网用户的网络使用造成非常非常严重的影响,直接威胁着局域网用户自身的信息安全。
那么是如何实现ARP欺骗的呢?
如上图所示,ARP协议并不只在发送了ARP请求才接收ARP应答。当计算机接收到ARP应答数据包的时候,就会对本地的ARP缓存进行更新,将应答中的IP和MAC地址存储在ARP缓存中。
因此,在上例中如果主机A发出ARP请求找寻主机C的IP和MAC 地址,而此时主机B向主机A发送一个自己伪造的ARP应答,这个应答中的数据为发送方IP地址是C的IP地址,MAC地址是DD-DD-DD-DD-DD-DD (C的MAC地址本来应该是33-33-33-33-33-33,这里被伪造了)。当主机A 接收到主机B伪造的ARP应答,就会更新本地的ARP缓存,将本地的IP-MAC对应表更换为接收到的数据格式,由于这一切都是A的系统内核自动完成的,A却不知道被伪造了,而且A不知道其实是从B发送过来的。这样A这里只有C的IP地址和无效的DD-DD-DD-DD-DD-DD MAC地址。这就实现了ARP欺骗。
这样主机A上的关于主机C的MAC地址已经错误了,所以即使以后从A 计算机访问C计算机这个1.1.1.3、24这个地址也会被ARP协议错误的解析成MAC地址为DD-DD-DD-DD-DD-DD的。
下面介绍两种不同类型的ARP欺骗:
(1)同一网段的ARP欺骗
如图所示,三台主机
A: IP地址192.168.0.1 硬件地址AA:AA:AA:AA:AA:AA
B: IP地址192.168.0.2 硬件地址BB:BB:BB:BB:BB:BB
C: IP地址192.168.0.3 硬件地址CC:CC:CC:CC:CC:CC
一个位于主机B的入侵者想非法进入主机A,可是这台主机上安装有防火墙。通过收集资料知道这台主机A的防火墙只对主机C有信任关系(开放23端口(telnet))。而他必须要使用telnet来进入主机A,这个时候他应该如何处理呢?
我们这样考虑,入侵者必须让主机A相信主机B就是主机C,如果主机A 和主机C之间的信任关系是建立在IP地址之上的。如果单单把主机B的IP地址改的和主机C的一样,那是不能工作的,至少不能可靠地工作。如果你告诉以太网卡设备驱动程序,自己IP是192.168.0.3,那并不能达到目标。我们可以先研究C这台机器,如果我们能让这台机器暂时当掉,在机器C当掉的同时,将机器B的IP地址改为192.168.0.3,这样就可以成功的通过23端口telnet到机器A上面,而成功的绕过防火墙的限制。
上面的这种想法在下面的情况下是没有作用的,如果主机A和主机C之间的信任关系是建立在硬件地址的基础上。这个时候还需要用ARP欺骗的手段让主机A把自己的ARP缓存中的关于192.168.0.3映射的硬件地址改为主机B的硬件地址。
我们可以人为的制造一个ARP的应答,发送给想要欺骗的主机(如上文的例子所示),可以指定ARP包中的源IP、目标IP、源MAC地址、目标MAC地址。
这样你就可以通过虚假的ARP响应包来修改主机A上的动态ARP缓存达到欺骗的目的。
下面是具体的步骤:
1.首先研究19
2.168.0.3这台主机,发现这台主机的漏洞。
2.根据发现的漏洞使主机C当掉,暂时停止工作。
3.这段时间里,入侵者把自己的IP改成192.168.0.3
4.他用工具发一个源IP地址为192.168.0.3源MAC地址为BB:BB:BB:BB:BB:BB的包给主机A,要求主机A更新自己的ARP转换表。