ARP是地址转换协议(Address Resolution Protocol)的英文缩写,它是一个链路层协议,工作在OSI模型的第二层,在本层和硬件接口间进行联系,同时对上层(网络层)提供服务。
二层的以太网交换设备并不能识别32位的IP地址,它们是以48位以太网地址(就是我们常说的MAC地址)传输以太网数据包的。也就是说IP数据包在局域网内部传输时并不是靠IP地址而是靠MAC地址来识别目标的,因此IP地址与MAC地址之间就必须存在一种对应关系,而ARP协议就是用来确定这种对应关系的协议。
Windows操作系统,在命令行窗口输入"arp -a"命令可查看本机当前的ARP缓存表,ARP缓存表保存的就是IP地址与MAC地址的对应关系,如下图所示:
上图中,"Internet Address"指的就是IP地址,"Physical Address"指的就是MAC地址。
ARP数据包根据接收对象不同,可分为两种:
1. 广播包(Broadcast)。广播包目的MAC地址为FF-FF-FF-FF-FF-FF,交换机设备接收到广播包后,会把它转发给局域网内的所有主机。
2. 非广播包(Non-Broadcast)。非广播包后只有指定的主机才能接收到。
ARP数据包根据功能不同,也可以分为两种:
1. ARP请求包(ARP Request)。ARP请求包的作用是用于获取局域网内某IP对应的MAC地址。
2. ARP回复包(ARP Reply)。ARP回复包的作用是告知别的主机,本机的IP地址和MAC是什么。
广播的一般都是ARP请求包,非广播的一般都是ARP回复包。
假设局域网内有以下两台主机,主机名、IP地址、MAC地址分别如下:
主机名 IP地址 MAC地址
A 192.168.0.1 AA-AA-AA-AA-AA-AA
B 192.168.0.2 BB-BB-BB-BB-BB-BB
当主机A需要与主机B进行通讯时,它会先查一下本机的ARP缓存中,有没有主机B的MAC地址。如果有就可以直接通讯。如果没有,主机A就需要通过ARP协议来获取主机B的MAC地址,具体做法相当于主机A向局域网内所有主机喊一嗓子:“喂~谁是192.168.0.2?我是192.168.0.1,我的MAC地址是AA-AA-AA-AA-AA-AA
。你的MAC地址是什么,快告诉我”,这时候主机A发的数据包类型为:广播-请求。
当主机B接收到来自主机A的“ARP广播-请求”数据包后,它会先把主机A的IP地址和MAC地址对应关系保存/更新到本机的ARP缓存表中,然后它会给主机A发送一个“ARP非广播-回复”数据包,其作用相当于告诉主机A:“嘿,我是192.168.0.2,我的MAC地址是BB-BB-BB-BB-BB-BB”。当主机A接收到主机B的回复后,它会把主机B的IP地址和MAC地址对应关系保存/更新到本机的ARP缓存表中,之后主机A和B就可以进行通讯了。
从上述局域网主机通讯过程可以看出,主机在两种情况下会保存、更新本机的ARP缓存表,
1. 接收到“ARP广播-请求”包时
2. 接收到“ARP非广播-回复”包时
主机在两种情况下会保存、更新本机的ARP缓存表,
1. 接收到“ARP广播-请求”包时
2. 接收到“ARP非广播-回复”包时
从中我们可以看出,ARP协议是没有身份验证机制的,局域网内任何主机都可以随意伪造ARP数据包,ARP协议设计天生就存在严重缺陷。
假设局域网内有以下三台主机(其中GW指网关),主机名、IP地址、MAC地址分别如下:
主机名 IP地址 MAC地址
GW 192.168.0.1 01-01-01-01-01-01
PC02 192.168.0.2 02-02-02-02-02-02
PC03 192.168.0.3 03-03-03-03-03-03
在正常情况下,主机PC02与GW之间的数据流向,以及它们各自的ARP缓存表如下图所示:
当网络爱好者,主机PC03出现之后,他为了达到某种目的,于是决定实施一次ARP欺骗攻击。PC03首先向PC02发送了一个ARP数据包,作用相当于告诉PC02:“嘿,我是192.168.0.1,我的MAC地址是03-03-03-03-03-03”,接着他也向GW发送了一个ARP数据包,作用相当于告诉GW:“嘿,我是192.168.0.2,我的MAC地址是03-03-03-03-03-03”。于是,主机PC02与GW之间的数据流向,以及它们各自的ARP缓存表就变成如下图所示:
从上图我们可以看出,ARP欺骗之后,主机PC02与GW之间的所有网络数据都将流经PC03,即PC03已经掌控了它们之间的数据通讯。以上就是一次ARP欺骗的实施过程,以及欺骗之后的效果。
ARP欺骗根据欺骗对象的不用可以分为三种,1. 只欺骗受害主机。实施欺骗后效果如下:
2. 只欺骗路由器、网关。实施欺骗后效果如下:
3. 双向欺骗,即前面两种欺骗方法的组合使用。实施欺骗后的效果如下:
ARP欺骗带来的危害可以分为几大类,
1. 网络异常。具体表现为:掉线、IP冲突等。
2. 数据窃取。具体表现为:个人隐私泄漏(如MSN聊天记录、邮件等)、账号被盗用(如QQ账号、银行账号等)。
3. 数据篡改。具体表现为:访问的网页被添加了恶意内容,俗称“挂马”。
4. 非法控制。具体表现为:网络速度、网络访问行为(例如某些网页打不开、某些网络应用程序用不了)受第三者非法控制。
ARP欺骗根据发起个体的不同可以分为两类,
1. 人为攻击。人为攻击的目的主要是:造成网络异常、窃取数据、非法控制。
2. ARP病毒。ARP病毒不是特指某一种病毒,而是指所有包含有ARP欺骗功能的病毒的总称。ARP病毒的目的主要是:窃取数据(盗号等)、篡改数据(挂马等)。
从目前的情况来看,ARP欺骗(不管是人为的还是ARP病毒)大多数是在网络异常后被发现的
------------------------------------------------------------------------
ARP攻击现在经常发生,遇到这些问题怎么办呢?请看下面笔者给出的解决方法!
前段时间经常有用户打电话抱怨上网时断时续,有时甚至提示连接受限、根本就无法获得IP(我们单位用的是动态IP)。交换机无法ping通,而指示灯状态正常。重启交换机后客户机可以上网,但很快又涛声依旧!严重影响了用户使用,甚至给用户造成了直接经济损失,(我们单位很多人都在炒股、炒基金,由于无法及时掌握行情,该出手时无法出手。)
根据用户描述的情形和我们多次处理的经验,可以肯定是由于网络中存在ARP攻击(ARP欺骗)所致。至于什么是ARP攻击,我就不用再说了吧。知道了问题所在,但如何解决呢?
虽然可以采用在交换机绑定MAC地址和端口、在客户机绑定网关IP和MAC地址的“双绑”办法预防,但由于网管的工作量太大,且不能保证所有的用户都在自己的电脑上绑定网关IP和MAC地址,所以我们采取以下措施来预防和查找ARP攻击。
我们推荐用户在自己的电脑上安装ColorSoft开发的ARP防火墙(原名Anti ARP Sniffer),该软件通过在系统内核层拦截虚假ARP数据包以及主动通告网关本机正确的MAC地址,可以保障安装该软件的电脑正常上网;拦截外部对本机的ARP攻击和本机对外部的ARP攻击。
如果发现内部ARP攻击,直接处理本机就行了;如果发现外部ARP攻击,则根据实际情况通过攻击者的IP地址和/或MAC地址查找该攻击者电脑。
好了,让我们一起行动吧。
1、在同一网段的电脑下载ARP防火墙(WWW.AntiARP.COM)、安装、运行。第一天,一切正常,没发现攻击行为。第二天,开机不到半小时就发现了ARP攻击,如图1。
图1 ARP防火墙发现外部ARP攻击
2、为了不冤枉好人,进一步确认攻击者的MAC地址。进入核心交换机,查看该网段的MAC地址表。我们的核心交换机是华为的,键入命令“Display arp vlan xx”(xx为所要查找ARP攻击网段的VLAN号),回车。显示如图2所示结果。
图2 核心交换机上显示的MAC地址表
为了方便查看,我们将该数据拷贝到Word中并按MAC地址排序。在Word中,选中该数据,从“表格”菜单中选择“排序”菜单项,弹出“排序文字”窗口,“主要关键字”选“域 3”即MAC地址,如图3。
图3 排序MAC地址表
排序后很容易就可以看到有四个IP地址对应于同一个MAC地址(如表1)!我们知道MAC地址是全球唯一的,这与ARP防火墙检测到的结果相吻合,现在MAC地址0011-5b2d-5c03所对应的电脑肯定有问题了。这些IP中应该只有xxx. xxx. xx.92是真实的,其余的都是伪造的。由于我们的电脑一直在监测,该攻击者电脑刚对外攻击,就被检测到了,所以它伪造的IP地址还不多,我曾经发现过伪造了近10个IP地址的情形,而该网段总共有二十多台电脑。
表1 伪造的IP地址
xxx. xxx. xx.178 | 0011-5b9d-7246 |
xxx. xxx. xx.188 | 0011-5b9d-7246 |
xxx. xxx. xx.197 | 0011-5b9d-7246 |
xxx. xxx. xx.92 | 0011-5b9d-7246 |
3、查找ARP攻击者。
如果是静态IP,找出IP地址登记表,很容易就可找到发送ARP攻击的电脑。由于我们用的是动态IP,又没有每台电脑的MAC地址,所以虽然知道了攻击者的IP地址和MAC地址,但是万里长征还只迈出了第一步。
我们的DHCP服务器是基于Microsoft Windows 2003的,打开DHCP管理器,从地址租约里查看IP地址xxx. xxx. xx.92对应的计算机名,是随机的,没什么意义。(有时候根据计算机名,可以推断出该计算机的主人。)
登录到有所要查找网段VLAN的各接入层交换机上,逐一查看该交换机上的MAC地址表。
我们用的是安奈特的交换机,在Web界面下按VLAN查询MAC地址表,看是否有MAC地址为0011-5b9d-7246的记录。一直查到第15台交换机,才终于找到罪魁祸首,结果如图4,可以看出该MAC地址对应于交换机的第16口。别的厂家的可网管交换机也都有查看MAC地址的功能。
图4 接入层交换机上的MAC地址表
4、剩下工作的就简单了,先将该交换机的第16口Disable,然后查找用户上网登记信息,通知该用户处理自己的电脑。
不知道本文是否对您有所帮助。最后,推荐几点防范ARP攻击的措施:
1、在交换机上划分VLAN,这样即使网络中存在ARP攻击,也仅影响该VLAN的用户,缩小受影响范围和查找范围。
2、要求用户安装ARP防火墙。既可防止来自外部的ARP攻击,也可防止本机向外发送ARP攻击。一旦发现攻击及时与网管联系