ARP(Address Resolution Protocol),地址解析协议,把IP地址解析成MAC地址
如:192.168.1.1->00-1E-37-44-86-5E,电脑在局域网内通讯时用数据帧通讯的,数据帧的头部就包含MAC地址信息
看下面这张图:
PC1想向PC2发送数据,就必须得知道PC2的IP地址和MAC地址,为什么呢?请再看下图:
任何的一个网络都是以OSI参考模型做参考的。发送数据都是要进行卦装的
所以,PC1想向PC2发送数据,就一定要知道PC2的MAC地址!
那要怎样PC1才可以知道呢?
当PC1想发送数据到PC2,会先对照自己的ARP表,如果发现没有IP与MAC对应时,就会由PC1,发送一个广播的ARP请求
这个ARP请求的内容包括:源IP192.168.1.2,源MAC:0C.E1.12……,目IP192.168.1.3,目MAC:00.00.00.00
什么是广播?也就是"我PC1要找PC2的MAC地址,请问谁是?",同一网络内的机子都收得到此广播
因为是广播的形式,所以PC3也一样可以接收!PC3接收了之后就开始解卦装,到达网络层时发现自己不是192.168.1.3,丢弃!
PC2也接到同样的请求,在网络层时发现自己的IP与请求的IP相同,PC2就发送一个ARP应答
这个应答来告诉PC1我是192.168.1.3的MAC地址:F2.A0.12……。PC1收到后就把IP192.168.1.3对应的MAC保存在ARP表中
这时,PC1就可以对PC2发送信息了!
㈡ 代理ARP
先看下图:
代理简单的理解是本来有由C来做这件事情的,现在由router来做
当A ping C,主机A首先做的事情就是查自己的ARP表
此时,发现没有主机C的MAC!没有对应目标的MAC,A就广播
主机B接收了广播,通过解封装,发现目的IP与自己的IP不配,丢弃此包!
广播是在同一个网段里,而router的E1口也是属于该网段,所以E1口一样接收到广播
当router接收到广播时,同样也解封装,然后查看自己的路由表,些时就发现地址172.16.1.2是在E0口的172.16.1.0网段下
这时候,router就代替主机C发送了ARP应答并附上E1口的MAC地址给主机A!
这样,在主机A的ARP表里就存在了172.16.1.2所对就的MAC(注意这个MAC是routerE1口的)!
其实这个router的应答是一种欺骗,它欺骗了主机A,只不过是正面的欺骗
然后,主机A就可以向主机C发送数据了。主机A发送一个数据通过查看自己ARP表就把该数据发送到E1口
router接收到数据后通过表看自己的路由表,把数据进行转发到主机C
㈢ ARP攻击
类似于我明明是Think,但是我给所有同学发短信说“我是Dave,这是我的新号码”
这样同学们给Dave发的短信以后就全部回到我这儿来,Dave就没办法“上网”了,我就完成了一次欺骗
ARP欺骗就是黑客在局域网内的欺骗,让其他PC和路由器将IP对应到错误的MAC
ARP的攻击主要有以下几种方式 :
① 简单的欺骗攻击
这是比较常见的攻击,通过发送伪造的ARP包来欺骗路由和目标主机,让目标主机认为这是一个合法的主机,便完成了欺骗
这种欺骗多发生在同一网段内,因为路由不会把本网段的包向外转发
当然实现不同网段的攻击也有方法,便要通过ICMP协议来告诉路由器重新选择路由
② 交换环境的嗅探
在最初的小型局域网中我们使用HUB来进行互连,这是一种广播的方式
每个包都会经过网内的每台主机,通过使用软件,就可以嗅谈到整个局域网的数据
现在的网络多是交换环境,网络内数据的传输被锁定的特定目标.既已确定的目标通信主机
在ARP欺骗的基础之上,可以把自己的主机伪造成一个中间转发站来监听两台主机之间的通信.
③ MAC Flooding
这是一个比较危险的攻击,可以溢出交换机的ARP表,使整个网络不能正常通信
④ 基于ARP的DOS
这是新出现的一种攻击方式,D.O.S又称拒绝服务攻击
当大量的连接请求被发送到一台主机时,由于主机的处理能力有限,不能为正常用户提供服务,便出现拒绝服务
这个过程中如果使用ARP来隐藏自己,在被攻击主机的日志上就不会出现真实的IP.攻击的同时,也不会影响到本机
防护方法:
① IP+MAC访问控制
单纯依靠IP或MAC来建立信任关系是不安全,理想的安全关系建立在IP+MAC的基础上
这也是我们校园网上网必须绑定IP和MAC的原因之一
② 静态ARP缓存表
每台主机都有一个临时存放IP-MAC的对应表,ARP攻击就通过更改这个缓存来达到欺骗的目的
使用静态的ARP来绑定正确的MAC是一个有效的方法.在命令行下使用arp -a可以查看当前的ARP缓存表
以下是本机的ARP表 :
C:\Users\asus>arp -a
接口: 192.168.1.101 --- 0xe
Internet 地址 物理地址 类型
192.168.1.1 29-cd-6e-88-6f-ba 动态
192.168.1.100 35-56-97-bc-7c-11 动态
其中"动态" 代表动态缓存,即收到一个相关ARP包就会修改这项.如果是个非法的含有不正确的网关的ARP包,这个表就会自动更改
这样我们就不能找到正确的网关MAC,就不能正常和其他主机通信
静态表的建立用ARP -S IP MAC.
执行"arp -s 210.31.197.94 00-03-6b-7f-ed-02"后,我们再次查看ARP缓存表:
C:\Users\asus>arp -a
接口: 192.168.1.101 --- 0xe
Internet 地址 物理地址 类型
210.31.197.94 00-03-6b-7f-ed-02 静态
此时"类型"项变成了"静态",静态类型.这个状态下,是不会在接受到ARP包时改变本地缓存的
从而有效的防止ARP攻击.静态的ARP条目在每次重启后都要消失需要重新设置.
③ ARP 高速缓存超时设置
在ARP高速缓存中的表项一般都要设置超时值,缩短这个这个超时值可以有效的防止ARP表的溢出
④ 主动查询
在某个正常的时刻,做一个IP和MAC对应的数据库,以后定期检查当前的IP和MAC对应关系是否正常
定期检测交换机的流量列表,查看丢包率.
更多的arp命令请查看 arp /?
C:\Users\asus>arp /?
显示和修改地址解析协议(ARP)使用的“IP 到物理”地址转换表。
ARP -s inet_addr eth_addr [if_addr]
ARP -d inet_addr [if_addr]
ARP -a [inet_addr] [-N if_addr] [-v]
-a 通过询问当前协议数据,显示当前 ARP 项。
如果指定 inet_addr,则只显示指定计算机
的 IP 地址和物理地址。如果不止一个网络
接口使用 ARP,则显示每个 ARP 表的项。
-g 与 -a 相同。
-v 在详细模式下显示当前 ARP 项。所有无效项
和环回接口上的项都将显示。
inet_addr 指定 Internet 地址。
-N if_addr 显示 if_addr 指定的网络接口的 ARP 项。
-d 删除 inet_addr 指定的主机。inet_addr 可
以是通配符 *,以删除所有主机。
-s 添加主机并且将 Internet 地址 inet_addr
与物理地址 eth_addr 相关联。物理地址是用
连字符分隔的 6 个十六进制字节。该项是永久的。
eth_addr 指定物理地址。
if_addr 如果存在,此项指定地址转换表应修改的接口
的 Internet 地址。如果不存在,则使用第一
个适用的接口。
示例:
> arp -s 157.55.85.212 00-aa-00-62-c6-09.... 添加静态项。
> arp -a .... 显示 ARP 表。
转载于:http://blog.itpub.net/26515977/viewspace-1207991/