查看: 948|回复: 1
|
什么是ARP?以及如何防范ARP欺骗技术
[复制链接]
|
|
<>什么是ARP?以及如何防范ARP欺骗技术</P>
<>首先还是得说一下什么是ARP。如果你在UNIX Shell下输入 arp -a (9x下也是),你的输出看起来应该是这样的: </P>
<> Interface: xxx.xxx.xxx.xxx </P>
<> Internet Address Physical Address Type </P>
<> xxx.xxx.xxx.xxx 00-00-93-64-48-d2 dynamic </P>
<> xxx.xxx.xxx.xxx 00-00-b4-52-43-10 dynamic </P>
<> ...... ......... .... </P>
<>这里第一列显示的是ip地址,第二列显示的是和ip地址对应的网络接口卡的硬件地址(MAC),第三列是该ip和mac的对应关系类型。 </P>
<>可见,arp是一种将ip转化成以ip对应的网卡的物理地址的一种协议,或者说ARP协议是一种将ip地址转化成MAC地址的一种协议。它靠维持在内存中保存的一张表来使ip得以在网络上被目标机器应答。 </P>
<>为什么要将ip转化成mac呢?简单的说,这是因为在tcp网络环境下,一个ip包走到哪里,要怎么走是靠路由表定义。但是,当ip包到达该网络后,哪台机器响应这个ip包却是靠该ip包中所包含的mac地址来识别。也就是说,只有机器的mac地址和该ip包中的mac地址相同的机器才会应答这个ip包。因为在网络中,每一台主机都会有发送ip包的时候。所以,在每台主机的内存中,都有一个 arp--> mac 的转换表。通常是动态的转换表(注意在路由中,该arp表可以被设置成静态)。也就是说,该对应表会被主机在需要的时候刷新。这是由于以太网在子网层上的传输是靠48位的mac地址而决定的。 </P>
<P>通常主机在发送一个ip包之前,它要到该转换表中寻找和ip包对应的mac地址。如果没有找到,该主机就发送一个ARP广播包,看起来象这样子: </P>
<P> "我是主机xxx.xxx.xxx.xxx , mac是xxxxxxxxxxx ,ip为xxx.xxx.xxx.xx1的主机请告之你的mac来" </P>
<P> ip为xxx.xxx.xxx.xx1的主机响应这个广播,应答ARP广播为: </P>
<P> "我是xxx.xxx.xxx.xx1,我的mac为xxxxxxxxxx2" </P>
<P>于是,主机刷新自己的ARP缓存,然后发出该ip包。 </P>
<P>了解这些常识后,现在就可以谈在网络中如何实现ARP欺骗了,可以看看这样一个例子: </P>
<P>一个入侵者想非法进入某台主机,他知道这台主机的火墙只对192.0.0.3(假设)这个ip开放23口(telnet),而他必须要使用telnet来进入这台主机,所以他要这么做: </P>
<P>1、他先研究192.0.0.3这台主机,发现这台95的机器使用一个oob就可以让他死掉。 </P>
<P>2、于是,他送一个洪水包给192.0.0.3的139口,于是,该机器应包而死。 </P>
<P>3、这时,主机发到192.0.0.3的ip包将无法被机器应答,系统开始更新自己的arp对应表。将192.0.0.3的项目搽去。 </P>
<P>4、这段时间里,入侵者把自己的ip改成192.0.0.3 </P>
<P>5、他发一个ping(icmp 0)给主机,要求主机更新主机的arp转换表。 </P>
<P>6、主机找到该ip,然后在arp表中加入新的ip-->mac对应关系。 </P>
<P>7、防火墙失效了,入侵的ip变成合法的mac地址,可以telnet了。 </P>
<P>现在,假如该主机不只提供telnet,它还提供r命令(rsh,rcopy,rlogin等)那么,所有的安全约定将无效,入侵者可以放心的使用这台主机的资源而不用担心被记录什么。 </P>
<P>有人也许会说,这其实就是冒用ip嘛。是冒用了ip,但决不是ip欺骗,ip欺骗的原理比这要复杂的多,实现的机理也完全不一样。 </P>
<P>上面就是一个ARP的欺骗过程,这是在同网段发生的情况。但是,提醒注意的是,利用交换集线器或网桥是无法阻止ARP欺骗的,只有路由分段是有效的阻止手段。(也就是ip包必须经过路由转发。在有路由转发的情况下,ARP欺骗如配合ICMP欺骗将对网络造成极大的危害。从某种角度讲,入侵者可以跨过路由监听网络中任何两点的通讯,如果设置防火墙,请注意防火墙有没有提示过类似“某某IP是局域IP但从某某路由来”等这样的信息。 </P>
<P>在有路由转发的情况下,发送到达路由的ip的主机其arp对应表中,ip的对应值是路由的mac。 </P>
<P>假设这个入侵者突然想到:我要经过一个路由才可以走到那台有防火墙的主机!!! </P>
<P>于是这个入侵者开始思考: </P>
<P>1、我的机器可以进入那个网段,但是,不是用192.0.0.3的IP。 </P>
<P>2、如果我用那个IP,就算那台正版192.0.0.3的机器死了,那个网络里的机器也不会把ip包丢到路由传给我。 </P>
<P>3、所以,我要骗主机把ip包丢到路由。 </P>
<P>通过多种欺骗手法可以达到这个目的。所以他开始这样做: </P>
<P>1、为了使自己发出的非法ip包能在网络上活久一点,开始修改ttl为下面的过程中可能带来的问题做准备。他把ttl改成255。 (ttl定义一个ip包如果在网络上到不了主机后在网络上能存活的时间,改长一点在本例中有利于做充足的广播) </P>
<P>2、他掏出一张软盘,这张软盘中有他以前用sniffer时保存的各种ip包类型。 </P>
<P>3、他用一个合法的ip进入网络,然后和上面一样,发个洪水包让正版的192.0.0.3死掉,然后他用192.0.0.3进入网络。 </P>
<P>4、在该网络的主机找不到原来的192.0.0.3的mac后,将更新自己的ARP对应表。于是他赶紧修改软盘中的有关ARP广播包的数据,然后对网络广播说"能响应ip为192.0.0.3的mac是我"。 </P>
<P>5、好了,现在每台主机都知道了,一个新的MAC地址对应ip 192.0.0.3,一个ARP欺骗完成了,但是,每台主机都只会在局域网中找这个地址而根本就不会把发送给192.0.0.3的ip包丢给路由。于是他还得构造一个ICMP的重定向广播。 </P>
<P>6、他开始再修改软盘中的有关ICMP广播包的数据,然后发送这个包,告诉网络中的主机:"到192.0.0.3的路由最短路径不是局域网,而是路由。请主机重定向你们的路由路径,把所有到192.0.0.3的ip包丢给路由哦。" </P>
<P>7、主机接受这个合理的ICMP重定向,于是修改自己的路由路径,把对192.0.0.3 的ip通讯都丢给路由器。 </P>
<P>8、入侵者终于可以在路由外收到来自路由内的主机的ip包了,他可以开始telnet到主机的23口,用ip 192.0.0.3。 </P>
<P>注意,这只是一个典型的例子,在实际操作中要考虑的问题还不只这些。 </P>
<P>现在想想,如果他要用的是sniffer会怎样? </P>
<P>可见,利用ARP欺骗,一个入侵者可以: </P>
<P>1、利用基于ip的安全性不足,冒用一个合法ip来进入主机。 </P>
<P>2、逃过基于ip的许多程序的安全检查,如NSF,R系列命令等。 </P>
<P>他甚至可以栽账嫁祸给某人,让他跳到黄河洗不清,永世不得超生! </P>
<P>那么,如何防止ARP欺骗呢? </P>
<P>1、不要把你的网络安全信任关系建立在ip基础上或mac基础上,(rarp同样存在欺骗的问题),理想的关系应该建立在ip+mac基础上。 </P>
<P>2、设置静态的mac-->ip对应表,不要让主机刷新你设定好的转换表。 </P>
<P>3、除非很有必要,否则停止使用ARP,将ARP做为永久条目保存在对应表中。 </P>
<P>4、使用ARP服务器。通过该服务器查找自己的ARP转换表来响应其他机器的ARP广播。确保这台ARP服务器不被黑。 </P>
<P>5、使用"proxy"代理ip的传输。 </P>
<P>6、使用硬件屏蔽主机。设置好你的路由,确保ip地址能到达合法的路径。(静态配置路由ARP条目),注意,使用交换集线器和网桥无法阻止ARP欺骗。 </P>
<P>7、管理员定期用响应的ip包中获得一个rarp请求,然后检查ARP响应的真实性。 </P>
<P>8、管理员定期轮询,检查主机上的ARP缓存。 </P>
<P>9、使用防火墙连续监控网络。注意有使用SNMP的情况下,ARP的欺骗有可能导致陷阱包丢 <BR>失。 </P>
<P>以下收集的资料,供做进一步了解ARP协议 </P>
<P>ARP的缓存记录格式: </P>
<P>每一行为: </P>
<P> IF Indexhysical Address:IP Address:Type </P>
<P>其中: IF Index 为: </P>
<P>1 以太网 </P>
<P>2 实验以太网 </P>
<P>3 X.25 </P>
<P>4 Proteon ProNET (Token Ring) </P>
<P>5 混杂方式 </P>
<P>6 IEEE802.X </P>
<P>7 ARC网 </P>
<P>ARP广播申请和应答结构 </P>
<P>硬件类型:协议类型:协议地址长:硬件地址长:操作码:发送机硬件地址: </P>
<P>发送机IP地址:接受机硬件地址:接受机IP地址。 </P>
<P>其中:协议类型为: 512 XEROX PUP </P>
<P> 513 PUP 地址转换 </P>
<P> 1536 XEROX NS IDP </P>
<P> 2048 Internet 协议 (IP) </P>
<P> 2049 X.752050NBS </P>
<P> 2051 ECMA </P>
<P> 2053 X.25第3层 </P>
<P> 2054 ARP </P>
<P> 2055 XNS </P>
<P> 4096 伯克利追踪者 </P>
<P> 21000 BBS Simnet </P>
<P> 24577 DEC MOP 转储/装载 </P>
<P> 24578 DEC MOP 远程控制台 </P>
<P> 24579 DEC 网 IV 段 </P>
<P> 24580 DEC LAT </P>
<P> 24582 DEC </P>
<P> 32773 HP 探示器 </P>
<P> 32821 RARP </P>
<P> 32823 Apple Talk </P>
<P> 32824 DEC 局域网桥 </P>
<P>如果你用过NetXRay,那么这些可以帮助你了解在细节上的ARP欺骗如何配合ICMP欺骗而让一个某种类型的广播包流入一个.</P>
<P>首先还是得说一下什么是ARP。如果你在UNIX Shell下输入 arp -a (9x下也是),你的输出看起来应该是这样的: </P>
<P> Interface: xxx.xxx.xxx.xxx </P>
<P> Internet Address Physical Address Type </P>
<P> xxx.xxx.xxx.xxx 00-00-93-64-48-d2 dynamic </P>
<P> xxx.xxx.xxx.xxx 00-00-b4-52-43-10 dynamic </P>
<P> ...... ......... .... </P>
<P>这里第一列显示的是ip地址,第二列显示的是和ip地址对应的网络接口卡的硬件地址(MAC),第三列是该ip和mac的对应关系类型。 </P>
<P>可见,arp是一种将ip转化成以ip对应的网卡的物理地址的一种协议,或者说ARP协议是一种将ip地址转化成MAC地址的一种协议。它靠维持在内存中保存的一张表来使ip得以在网络上被目标机器应答。 </P>
<P>为什么要将ip转化成mac呢?简单的说,这是因为在tcp网络环境下,一个ip包走到哪里,要怎么走是靠路由表定义。但是,当ip包到达该网络后,哪台机器响应这个ip包却是靠该ip包中所包含的mac地址来识别。也就是说,只有机器的mac地址和该ip包中的mac地址相同的机器才会应答这个ip包。因为在网络中,每一台主机都会有发送ip包的时候。所以,在每台主机的内存中,都有一个 arp--> mac 的转换表。通常是动态的转换表(注意在路由中,该arp表可以被设置成静态)。也就是说,该对应表会被主机在需要的时候刷新。这是由于以太网在子网层上的传输是靠48位的mac地址而决定的。 </P>
<P>通常主机在发送一个ip包之前,它要到该转换表中寻找和ip包对应的mac地址。如果没有找到,该主机就发送一个ARP广播包,看起来象这样子: </P>
<P> "我是主机xxx.xxx.xxx.xxx , mac是xxxxxxxxxxx ,ip为xxx.xxx.xxx.xx1的主机请告之你的mac来" </P>
<P> ip为xxx.xxx.xxx.xx1的主机响应这个广播,应答ARP广播为: </P>
<P> "我是xxx.xxx.xxx.xx1,我的mac为xxxxxxxxxx2" </P>
<P>于是,主机刷新自己的ARP缓存,然后发出该ip包。 </P>
<P>了解这些常识后,现在就可以谈在网络中如何实现ARP欺骗了,可以看看这样一个例子: </P>
<P>一个入侵者想非法进入某台主机,他知道这台主机的火墙只对192.0.0.3(假设)这个ip开放23口(telnet),而他必须要使用telnet来进入这台主机,所以他要这么做: </P>
<P>1、他先研究192.0.0.3这台主机,发现这台95的机器使用一个oob就可以让他死掉。 </P>
<P>2、于是,他送一个洪水包给192.0.0.3的139口,于是,该机器应包而死。 </P>
<P>3、这时,主机发到192.0.0.3的ip包将无法被机器应答,系统开始更新自己的arp对应表。将192.0.0.3的项目搽去。 </P>
<P>4、这段时间里,入侵者把自己的ip改成192.0.0.3 </P>
<P>5、他发一个ping(icmp 0)给主机,要求主机更新主机的arp转换表。 </P>
<P>6、主机找到该ip,然后在arp表中加入新的ip-->mac对应关系。 </P>
<P>7、防火墙失效了,入侵的ip变成合法的mac地址,可以telnet了。 </P>
<P>现在,假如该主机不只提供telnet,它还提供r命令(rsh,rcopy,rlogin等)那么,所有的安全约定将无效,入侵者可以放心的使用这台主机的资源而不用担心被记录什么。 </P>
<P>有人也许会说,这其实就是冒用ip嘛。是冒用了ip,但决不是ip欺骗,ip欺骗的原理比这要复杂的多,实现的机理也完全不一样。 </P>
<P>上面就是一个ARP的欺骗过程,这是在同网段发生的情况。但是,提醒注意的是,利用交换集线器或网桥是无法阻止ARP欺骗的,只有路由分段是有效的阻止手段。(也就是ip包必须经过路由转发。在有路由转发的情况下,ARP欺骗如配合ICMP欺骗将对网络造成极大的危害。从某种角度讲,入侵者可以跨过路由监听网络中任何两点的通讯,如果设置防火墙,请注意防火墙有没有提示过类似“某某IP是局域IP但从某某路由来”等这样的信息。 </P>
<P>在有路由转发的情况下,发送到达路由的ip的主机其arp对应表中,ip的对应值是路由的mac。 </P>
<P>假设这个入侵者突然想到:我要经过一个路由才可以走到那台有防火墙的主机!!! </P>
<P>于是这个入侵者开始思考: </P>
<P>1、我的机器可以进入那个网段,但是,不是用192.0.0.3的IP。 </P>
<P>2、如果我用那个IP,就算那台正版192.0.0.3的机器死了,那个网络里的机器也不会把ip包丢到路由传给我。 </P>
<P>3、所以,我要骗主机把ip包丢到路由。 </P>
<P>通过多种欺骗手法可以达到这个目的。所以他开始这样做: </P>
<P>1、为了使自己发出的非法ip包能在网络上活久一点,开始修改ttl为下面的过程中可能带来的问题做准备。他把ttl改成255。 (ttl定义一个ip包如果在网络上到不了主机后在网络上能存活的时间,改长一点在本例中有利于做充足的广播) </P>
<P>2、他掏出一张软盘,这张软盘中有他以前用sniffer时保存的各种ip包类型。 </P>
<P>3、他用一个合法的ip进入网络,然后和上面一样,发个洪水包让正版的192.0.0.3死掉,然后他用192.0.0.3进入网络。 </P>
<P>4、在该网络的主机找不到原来的192.0.0.3的mac后,将更新自己的ARP对应表。于是他赶紧修改软盘中的有关ARP广播包的数据,然后对网络广播说"能响应ip为192.0.0.3的mac是我"。 </P>
<P>5、好了,现在每台主机都知道了,一个新的MAC地址对应ip 192.0.0.3,一个ARP欺骗完成了,但是,每台主机都只会在局域网中找这个地址而根本就不会把发送给192.0.0.3的ip包丢给路由。于是他还得构造一个ICMP的重定向广播。 </P>
<P>6、他开始再修改软盘中的有关ICMP广播包的数据,然后发送这个包,告诉网络中的主机:"到192.0.0.3的路由最短路径不是局域网,而是路由。请主机重定向你们的路由路径,把所有到192.0.0.3的ip包丢给路由哦。" </P>
<P>7、主机接受这个合理的ICMP重定向,于是修改自己的路由路径,把对192.0.0.3 的ip通讯都丢给路由器。 </P>
<P>8、入侵者终于可以在路由外收到来自路由内的主机的ip包了,他可以开始telnet到主机的23口,用ip 192.0.0.3。 </P>
<P>注意,这只是一个典型的例子,在实际操作中要考虑的问题还不只这些。 </P>
<P>现在想想,如果他要用的是sniffer会怎样? </P>
<P>可见,利用ARP欺骗,一个入侵者可以: </P>
<P>1、利用基于ip的安全性不足,冒用一个合法ip来进入主机。 </P>
<P>2、逃过基于ip的许多程序的安全检查,如NSF,R系列命令等。 </P>
<P>他甚至可以栽账嫁祸给某人,让他跳到黄河洗不清,永世不得超生! </P>
<P>那么,如何防止ARP欺骗呢? </P>
<P>1、不要把你的网络安全信任关系建立在ip基础上或mac基础上,(rarp同样存在欺骗的问题),理想的关系应该建立在ip+mac基础上。 </P>
<P>2、设置静态的mac-->ip对应表,不要让主机刷新你设定好的转换表。 </P>
<P>3、除非很有必要,否则停止使用ARP,将ARP做为永久条目保存在对应表中。 </P>
<P>4、使用ARP服务器。通过该服务器查找自己的ARP转换表来响应其他机器的ARP广播。确保这台ARP服务器不被黑。 </P>
<P>5、使用"proxy"代理ip的传输。 </P>
<P>6、使用硬件屏蔽主机。设置好你的路由,确保ip地址能到达合法的路径。(静态配置路由ARP条目),注意,使用交换集线器和网桥无法阻止ARP欺骗。 </P>
<P>7、管理员定期用响应的ip包中获得一个rarp请求,然后检查ARP响应的真实性。 </P>
<P>8、管理员定期轮询,检查主机上的ARP缓存。 </P>
<P>9、使用防火墙连续监控网络。注意有使用SNMP的情况下,ARP的欺骗有可能导致陷阱包丢 <BR>失。 </P>
<P>以下收集的资料,供做进一步了解ARP协议 </P>
<P>ARP的缓存记录格式: </P>
<P>每一行为: </P>
<P> IF Indexhysical Address:IP Address:Type </P>
<P>其中: IF Index 为: </P>
<P>1 以太网 </P>
<P>2 实验以太网 </P>
<P>3 X.25 </P>
<P>4 Proteon ProNET (Token Ring) </P>
<P>5 混杂方式 </P>
<P>6 IEEE802.X </P>
<P>7 ARC网 </P>
<P>ARP广播申请和应答结构 </P>
<P>硬件类型:协议类型:协议地址长:硬件地址长:操作码:发送机硬件地址: </P>
<P>发送机IP地址:接受机硬件地址:接受机IP地址。 </P>
<P>其中:协议类型为: 512 XEROX PUP </P>
<P> 513 PUP 地址转换 </P>
<P> 1536 XEROX NS IDP </P>
<P> 2048 Internet 协议 (IP) </P>
<P> 2049 X.752050NBS </P>
<P> 2051 ECMA </P>
<P> 2053 X.25第3层 </P>
<P> 2054 ARP </P>
<P> 2055 XNS </P>
<P> 4096 伯克利追踪者 </P>
<P> 21000 BBS Simnet </P>
<P> 24577 DEC MOP 转储/装载 </P>
<P> 24578 DEC MOP 远程控制台 </P>
<P> 24579 DEC 网 IV 段 </P>
<P> 24580 DEC LAT </P>
<P> 24582 DEC </P>
<P> 32773 HP 探示器 </P>
<P> 32821 RARP </P>
<P> 32823 Apple Talk </P>
<P> 32824 DEC 局域网桥 </P>
<P>如果你用过NetXRay,那么这些可以帮助你了解在细节上的ARP欺骗如何配合ICMP欺骗而让一个某种类型的广播包流入一个.</P>
<P><BR> </P>
︿︿ |
|
|
|
|
|
|