首页 > 代码库 > arp

arp

一.arp - 基本简介  摘自、整理于互动百科

地址解析协议,即ARP(Address Resolution Protocol),是根据IP地址获取物理地址的一个TCP/IP协议。

主机发送信息时将包含目标IP地址的ARP请求广播到网络上的所有主机,并接收返回消息,以此确定目标的物理地址;

收到返回消息后将该IP地址和物理地址存入本机ARP缓存中并保留一定时间,下次请求时直接查询ARP缓存以节约资源。

地址解析协议是建立在网络中各个主机互相信任的基础上的,网络上的主机可以自主发送ARP应答消息,其他主机收到应答报文时不会检测该报文的真实性就会将其记入本机ARP缓存;

由此攻击者就可以向某一主机发送伪ARP应答报文,使其发送的信息无法到达预期的主机或到达错误的主机,这就构成了一个ARP欺骗。

ARP命令可用于查询本机ARP缓存中IP地址和MAC地址的对应关系、添加或删除静态对应关系等。相关协议有RARP、代理ARP。NDP用于在IPv6中代替地址解析协议。

二.工作原理

在每台安装有TCP/IP协议的电脑里都有一个ARP缓存表,表里的IP地址与MAC地址是一一对应的,如附表所示。附表我们以主机A(192.168.1.5)向主机B(192.168.1.1)发送数据为例。当发送数据时,主机A会在自己的ARP缓存表中寻找是否有目标IP地址。如果找到了,也就知道了目标MAC地址,直接把目标MAC地址写入帧里面发送就可以了;如果在ARP缓存表中没有找到相对应的IP地址,主机A就会在网络上发送一个广播,目标MAC地址是“FF.FF.FF.FF.FF.FF”,这表示向同一网段内的所有主机发出这样的询问:“192.168.1.1的MAC地址是什么?”网络上其他主机并不响应ARP询问,只有主机B接收到这个帧时,才向主机A做出这样的回应:“192.168.1.1的MAC地址是00-aa-00-62-c6-09”。这样,主机A就知道了主机B的MAC地址,它就可以向主机B发送信息了。同时它还更新了自己的ARP缓存表,下次再向主机B发送信息时,直接从ARP缓存表里查找就可以了。ARP缓存表采用了老化机制,在一段时间内如果表中的某一行没有使用,就会被删除,这样可以大大减少ARP缓存表的长度,加快查询速度。 ARP攻击就是通过伪造IP地址和MAC地址实现ARP欺骗,能够在网络中产生大量的ARP通信量使网络阻塞,攻击者只要持续不断的发出伪造的ARP响应包就能更改目标主机ARP缓存中的IP-MAC条目,造成网络中断或中间人攻击。ARP攻击主要是存在于局域网网络中,局域网中若有一个人感染ARP木马,则感染该ARP木马的系统将会试图通过“ARP欺骗”手段截获所在网络内其它计算机的通信信息,并因此造成网内其它计算机的通信故障。

三.查看缓存

ARP缓存表是可以查看的,也可以添加和修改。在命令提示符下,输入“arp -a”就可以查看ARP缓存表中的内容了,如附图所示。
用“arp -d”命令可以删除ARP表中所有的内容;
用“arp -d +空格+ ” 可以删除指定ip所在行的内容
用“arp -s”可以手动在ARP表中指定IP地址与MAC地址的对应,类型为static(静态),此项存在硬盘中,而不是缓存表,计算机重新启动后仍然存在,且遵循静态优于动态的原则,所以这个设置不对,可能导致无法上网.

四.攻击现象

ARP欺骗木马的中毒现象表现为:使用局域网时会突然掉线,过一段时间后又会恢复正常。比如客户端状态频频变红,用户频繁断网,IE浏览器频繁出错,以及一些常用软件出现故障等。如果局域网中是通过身份认证上网的,会突然出现可认证,但不能上网的现象(无法ping通网关),重启机器或在MS-DOS窗口下运行命令arp -d后,又可恢复上网。ARP欺骗木马只需成功感染一台电脑,就可能导致整个局域网都无法上网,严重的甚至可能带来整个网络的瘫痪。该木马发作时除了会导致同一局域网内的其他用户上网出现时断时续的现象外,还会窃取用户密码。如盗取QQ密码、盗取各种网络游戏密码和账号去做金钱交易,盗窃网上银行账号来做非法交易活动等,这是木马的惯用伎俩,给用户造成了很大的不便和巨大的经济损失。

五.防护方法

防止ARP攻击是比较困难的,修改协议也是不大可能。但是有一些工作是可以提高本地网络的安全性。 
首先,你要知道,如果一个错误的记录被插入ARP或者IP route表,可以用两种方式来删除。 
a. 使用arp –d host_entry 
b. 自动过期,由系统删除 
这样,可以采用以下的一些方法: 
1). 减少过期时间 
#ndd –set /dev/arp arp_cleanup_interval 60000 
#ndd -set /dev/ip ip_ire_flush_interval 60000 
60000=60000毫秒 默认是300000 
加快过期时间,并不能避免攻击,但是使得攻击更加困难,带来的影响是在网络中会大量的出现ARP请求和回复,请不要在繁忙的网络上使用。 
2). 建立静态ARP表 
这是一种很有效的方法,而且对系统影响不大。缺点是破坏了动态ARP协议。可以建立如下的文件。 
test.nsfocus.com 08:00:20:ba:a1:f2 
user. nsfocus.com 08:00:20:ee:de:1f 
使用arp –f filename加载进去,这样的arp映射将不会过期和被新的ARP数据刷新,除非使用arp –d才能删除。但是一旦合法主机的网卡硬件地址改变,就必须手工刷新这个arp文件。这个方法,不适合于经常变动的网络环境。 
3).禁止ARP 
可以通过ipconfig interface –arp 完全禁止ARP,这样,网卡不会发送ARP和接受ARP包。但是使用前提是使用静态的ARP表,如果不在apr表中的计算机 ,将不能通信。这个方法不适用与大多数网络环境,因为这增加了网络管理的成本。但是对小规模的安全网络来说,还是有效可行的。 

但目前的ARP病毒层出不穷,已经不能单纯的依靠传统的方法去防范,比如简单的绑定本机ARP表,我们还需要更深入的了解ARP攻击原理,才能够通过症状分析并解决ARP欺骗的问题。

六.常见问题

1. 什么是ARP
ARP (Address Resolution Protocol) 是个地址解析协议。最白的说法是:在IP-以太网中,当一个上层协议要发包时,有了节点的IP地址,ARP就能提供该节点的MAC地址。
2. 为什么要有ARP?
OSI 模式把网络工作分为七层,彼此不直接打交道,只通过接口(layer interface). IP地址在第三层,MAC地址在第二层。协议在发生数据包时,得先封装第三层 (IP地址),第二层 (MAC地址)的报头,但协议只知道目的节点的IP地址,不知道其地址,又不能跨第二、三层,所以得用ARP的服务。
3. 什么是ARP cache
ARP cache 是个用来储存(IP,MAC)地址的缓冲区。当ARP被询问一个已只IP地址节点的MAC地址时,先在ARP cache 查看,若存在,就直接返回MAC地址,若不存在,才发送ARP request向局域网查询。
4. ARP 有什么命令行?
常用的包括:(格式因操作系统、路由器而异,但作用类似)   - 显示ARP cache: show arp;arp -a   - 清除ARP cache:arp -d
5. 路由器有ARP cache吗
有的。路由器若有接口连接到局域网,就会有ARP cache。如果路由器的接口都是点对点的接口(serial interface),就不会有ARP cache.
6. 路由器怎么使用ARP cache
路由器在转发数据包到下一站时,得用下一站的MAC地址来封装链路报头 (Link header),它向ARP查询这个地址。如果ARP cache里没有这个地址,路由器的ARP会发送ARP Request去查询。
7. ARP 和Ping 有什么关系?
Ping是个常用的网络工具,检查远程主机、路由器是否在线。从源主机到目的主机,一路上ping可能被几个路由器转发,只要有一个ARP cache里没有下一站的MAC地址,路由器就会把ping丢弃 (称为ARP Miss)。由于ARP Miss而掉包,是个常见的掉包原因。

arp