明辉手游网中心:是一个免费提供流行视频软件教程、在线学习分享的学习平台!

ARP以及怎么防范ARP欺骗技术

[摘要]首先还是得说一下什么是ARP。 如果你在UNIX Shell下输入 arp -a (9x下也是), 你的输出看起来应该是这样的:   Interface: xxx.xxx.xxx.xxx ...

首先还是得说一下什么是ARP。 如果你在UNIX Shell下输入 arp -a (9x下也是), 你的输出看起来应该是这样的:

  Interface: xxx.xxx.xxx.xxx

  Internet Address Physical Address Type

 

  xxx.xxx.xxx.xxx 00-00-93-64-48-d2 dynamic

  xxx.xxx.xxx.xxx 00-00-b4-52-43-10 dynamic

  ...... ......... ....

这里第一列显示的是ip地址, 第二列显示的是和ip地址对应的网络接口卡的硬件地址(MAC), 第三列是该ip和mac的对应关系类型。

可见, arp是一种将ip转化成以ip对应的网卡的物理地址的一种协议, 或者说ARP协议是一种将ip地址转化成MAC地址的一种协议。 它靠维持在内存中保存的一张表来使ip得以在网络上被目标机器应答。

为什么要将ip转化成mac呢?简单的说, 这是因为在tcp网络环境下, 一个ip包走到哪里, 要怎么走是靠路由表定义。 但是, 当ip包到达该网络后, 哪台机器响应这个ip包却是靠该ip包中所包含的mac地址来识别。 也就是说, 只有机器的mac地址和该ip包中的mac地址相同的机器才会应答这个ip包。 因为在网络中, 每一台主机都会有发送ip包的时候。 所以, 在每台主机的内存中, 都有一个 arp--> mac 的转换表。 通常是动态的转换表(注意在路由中, 该arp表可以被设置成静态)。 也就是说, 该对应表会被主机在需要的时候刷新。 这是由于以太网在子网层上的传输是靠48位的mac地址而决定的。

通常主机在发送一个ip包之前, 它要到该转换表中寻找和ip包对应的mac地址。 如果没有找到, 该主机就发送一个ARP广播包, 看起来象这样子:

  "我是主机xxx.xxx.xxx.xxx , mac是xxxxxxxxxxx ,ip为xxx.xxx.xxx.xx1的主机请告之你的mac来"

  ip为xxx.xxx.xxx.xx1的主机响应这个广播, 应答ARP广播为:

  "我是xxx.xxx.xxx.xx1,我的mac为xxxxxxxxxx2"

于是, 主机刷新自己的ARP缓存, 然后发出该ip包。

了解这些常识后, 现在就可以谈在网络中如何实现ARP欺骗了, 可以看看这样一个例子:

一个入侵者想非法进入某台主机, 他知道这台主机的防火墙只对192.0.0.3(假设)这个ip开放23口(telnet),而他必须要使用telnet来进入这台主机, 所以他要这么做:

1、他先研究192.0.0.3这台主机, 发现这台95的机器使用一个oob就可以让他死掉。

2、于是, 他送一个洪水包给192.0.0.3的139口, 于是, 该机器应包而死。

3、这时, 主机发到192.0.0.3的ip包将无法被机器应答, 系统开始更新自己的arp对应表。 将192.0.0.3的项目搽去。

4、这段时间里, 入侵者把自己的ip改成192.0.0.3

5、他发一个ping(icmp 0)给主机, 要求主机更新主机的arp转换表。

6、主机找到该ip, 然后在arp表中加入新的ip-->mac对应关系。

7、防火墙失效了, 入侵的ip变成合法的mac地址, 可以telnet了。

现在, 假如该主机不只提供telnet, 它还提供r命令(rsh,rcopy,rlogin等)那么, 所有的安全约定将无效, 入侵者可以放心的使用这台主机的资源而不用担心被记录什么。

有人也许会说, 这其实就是冒用ip嘛。 是冒用了ip,但决不是ip欺骗, ip欺骗的原理比这要复杂的多, 实现的机理也完全不一样。

上面就是一个ARP的欺骗过程, 这是在同网段发生的情况。 但是, 提醒注意的是, 利用交换集线器或网桥是无法阻止ARP欺骗的, 只有路由分段是有效的阻止手段。 (也就是ip包必须经过路由转发。 在有路由转发的情况下, ARP欺骗如配合ICMP欺骗将对网络造成极大的危害。 从某种角度讲, 入侵者可以跨过路由监听网络中任何两点的通讯, 如果设置防火墙, 请注意防火墙有没有提示过类似“某某IP是局域IP但从某某路由来”等这样的信息。


上面是电脑上网安全的一些基础常识,学习了安全知识,几乎可以让你免费电脑中毒的烦扰。