什么是ARP?
ARP即地址解析协议(Address Resolution Protocol),是在仅知道主机的IP地址时确定其物理地址的一种协议。
其主要用作将IP地址翻译为以太网的MAC地址,从IP地址到物理地址的映射有两种方式:表格方式和非表格方式。
ARP具体说来就是将网络层(IP层,也就是相当于OSI的第三层)地址解析为数据连接层(MAC层,也就是相当于OSI的第二层)的MAC地址。
例如: 计算机A的IP为192.168.1.1,MAC地址为00-11-22-33-44-01;
计算机B的IP为192.168.1.2,MAC地址为00-11-22-33-44-02;
ARP工作原理
在TCP/IP协议中,A给B发送IP包,在包头中需要填写B的IP为目标地址,但这个IP包在以太网上传输的时候,还需要进行一次以太包的封装,在这个以太包中,目标地址就是B的MAC地址.
计算机A是如何得知B的MAC地址的呢?
解决问题的关键就在于ARP协议。
在A不知道B的MAC地址的情况下,A就广播一个ARP请求包,请求包中填有B的IP(192.168.1.2),以太网中的所有计算机都会接收这个请求,而正常的情况下只有B会给出ARP应答包,包中就填充上了B的MAC地址,并回复给A。
A得到ARP应答后,将B的MAC地址放入本机缓存,便于下次使用。本机MAC缓存是有生存期的,生存期结束后,将再次重复寻址过程。
ARP协议并不只在发送了ARP请求才接收ARP应答。当计算机接收到ARP应答数据包的时候,就会对本地的ARP缓存进行更新,将应答中的IP和MAC地址存储在ARP缓存中。
因此,当局域网中的某台机器B向A发送一个自己伪造的ARP应答,而如果这个应答是B冒充C伪造来的,即IP地址为C的IP,而MAC地址是伪造的,则当A接收到B伪造的ARP应答后,就会更新本地的ARP缓存,这样在A看来C的IP地址没有变,而它的MAC地址已经不是原来那个了。
由于局域网的网络流通不是根据IP地址进行,而是按照MAC地址进行传输。所以,那个伪造出来的MAC地址在A上被改变成一个不存在的MAC地址,这样就会造成网络不通,导致A不能Ping通C!
这就是一个简单的ARP欺骗。
类似网络执法官等网络管理软件,其控制目标机器上网限制亦是采用了ARP原理,向其发送一个假的网关IP地址对应的MAC,使其找不到网关真正的MAC地址,这样即可禁止其上网。
常见ARP欺骗方式
常见的ARP欺骗有2种目的,一种是病毒,通过ARP欺骗的形式来获取一些敏感信息或者对局域网的攻击故意让局域网瘫痪。还有一种是正规的网络管理软件,通过ARP欺骗的方式来达到对网络控制的目的.
欺骗网关
欺骗网关就是终端电脑通过伪造ARP应答报文告诉网关错误的MAC地址,导致网关到终端的数据包到达错误.
常见的表现是:部分电脑可以上网,个别电脑不能上网.
假设局域网内有
路由器(网关) (IP:192.168.1.1,MAC:00-11-22-33-44-FF)
电脑A (IP:192.168.1.11,MAC:00-11-22-33-44-01)
电脑B (IP:192.168.1.12,MAC:00-11-22-33-44-02)
如果电脑B中了ARP病毒,通过发送ARP应答包给路由器(网关)告诉路由器,192.168.1.11 这个IP 地址的 MAC地址是 00-11-22-33-44-02(也就是电脑B冒充了电脑A), 那么路由器就会将所有到A的数据包都发到电脑B去。这样会导致电脑A 无法上网.
欺骗终端
中毒的终端电脑通过伪造网关的ARP应答报文,发送给局域网内所有的电脑,告诉它们网关的MAC地址是自己
这样,所有的其他电脑发往网关的数据包都会先经过中毒的那台电脑.
常见的表现是:所有电脑都上网慢或者上不了网.(P2P终结者就是利用此原理进行限速控制)
假设局域网内有
路由器(网关) (IP:192.168.1.1,MAC:00-11-22-33-44-FF)
电脑A (IP:192.168.1.11,MAC:00-11-22-33-44-01)
电脑B (IP:192.168.1.12,MAC:00-11-22-33-44-02)
电脑B通过发送ARP应答包给电脑A,告诉A,192.168.1.1 的MAC地址是 00-11-22-33-44-02 (也就是电脑B冒充网关), 那么A要上网,发给网关的数据包其实都发送给了电脑B。
这种ARP欺骗通常的目的是通过一台PC来控制局域网内的其他PC的网络访问,包括网速控制,P2P禁止,聊天记录,网址记录等等。
像局域网终结者、一些不用安装到网关就可以实现网络管理等功能的软件都是通过这种ARP欺骗的方式来实现对网络管理的目的的。
如何防范ARP欺骗
网吧环境
网吧防范ARP欺骗的最好办法就是做双向的静态ARP绑定.
在每台电脑都设置正确的网关的MAC地址。
操作方法是,在命令行下输入命令:
arp -s 192.168.1.1 00-aa-00-62-c6-09
上述命令 arp -s 后面的第一个参数是网关的IP地址,第2个参数是网关的MAC地址.
可将命令输入到批处理文件,在电脑启动时加载.
在路由器的ARP表里面预先将局域网内所有的网卡MAC地址与IP地址都先输入.
在路由器管理界面对客户机做静态MAC绑定
小区网络环境
小区网络环境由于不可能知道下面每个用户的IP,MAC地址,所以不能采用静态MAC绑定的方式来防范ARP病毒
小区防范ARP病毒的方法是通过PPPoE拨号的方式上网 .
通过PPPOE拨号的方式上网之后的用户,彼此之间都是隔离的.