1、ARP协议漏洞及安全防范毕业论文(设计)摘要 1Abstract 11引言 22ARP协议 22.1基本原理 22.2ARP的查看 42.3ARP的高速缓存 62.4ARP协议的工作流程 73ARP协议漏洞及防范 83.1ARP协议的漏洞 83.2ARP 攻击 93.3ARP攻击的防范 .1.1.4ARP攻击的实现 1.3.4.1系统概述 13.4.2概要设计 14.4.3相关数据结构及函数 1.5.4.4程序实现 17.4.5程序的测试 .19.5 小结 21.致谢 21.参考文献 22.附录 23.ARP协议漏洞及安全防范摘要:在TCP/IP协议族中,ARP协议是一个底层的基础协议,在网络
2、的运行过 程中起着重要的作用。由于 ARP设计的缺陷,其安全问题也日益突出。论文在 深入讨论APR协议及其工作的原理的基础上,分析了 ARP协议的弱点及APR 攻击的原理,探讨ARP攻击的防范措施。最后结合实际,本文给出了一个简单 的ARP欺骗工具的实现方法。关键词:ARP协议;ARP攻击;MAC地址SecuritPFIawofARPProtocola ndtheCo un termeasuresAbstractIn theTCP/IPprotocolsuitetheARPprotocolisthefo un datio nprotocoli nthelo werlaPer.ARPplaPsa
3、 ni mporta ntrolei nn etworkru nnin g.Becauseofthedefec tsofitsdesig n,thesecuritPproblemofARPis in creas in g.Afterthoroughdiscus sio no fAPRprotocolthispapera naIPzedARPweak nessa ndAPRcheat.The nm easuresagai nstARPattacksarediscussed.Fi nallPasimpleimpleme ntatio nof ARPcheattoolisgive n.KePword
4、s : ARPprotocol;ARPattack;MACaddress1引言随着计算机技术和In ternet技术的不断推广与应用,网络逐渐已经成为人 们日常生活中不可缺少的一部分。 在网络发展的初期,人们更多地强调网络的方便性和可用性,而忽略了网络的安全性。当网络仅仅用来传送一般性信息的时候, 安全问题并没有突出地表现出来。 但是,当在网络上运行关键性的业务如银行业务等,当企业的主要业务运行在网络上,当政府部门的活动正日益网络化的时候, 再加上网络传播信息快捷,隐蔽行强,在网络上难以识别用户的真实身份, 网络 犯罪、黑客攻击、有害信息传播等方面的问题日趋严重。网络安全问题严重影响了人们的生
5、活和工作,以至整个国家的安全。它可能 对国家的重大部门造成严重的后果,如政府机关、军事设施、金融部门等。可以 肯定的说,哪里有网络哪里就有网络安全问题。所谓网络安全,是指网络系统的硬件、软件及其系统中的数据信息能够受到 保护,不会因为偶然的或者恶意的原因而遭到破坏、 更改、泄露,系统能够连续、 可靠地运行,网络服务不被中断。由于网络安全问题是多种多样的,很多新的网 络安全问题不断涌现,防不胜防。已知的网络安全问题包括很多种,目前比较有 影响的有以下几种:1 网络病毒感染。网络病毒层出不穷,其传播方式也不断发展,而且,新 的病毒还跟其他网络安全技术(如木马)相结合,产生综合病毒,极难防范。2 木
6、马问题。这个网络安全问题变得越来越突出,很多木马程序在网上可 以直接得到,而且其使用方法也很简单,但是其危害程度非常高。3 恶意扫描。对网络主机扫描,是攻击者最先做的事情,它能够检查出主 机存在的很多漏洞,以及漏洞的种类等很多有价值的信息, 它是攻击者进行攻击 的基础。4 .网络监听。它可以监听整个网络的数据包,然后查看其数据内容。本来, 网络监听可以用于网络管理和网络流量检测,但是攻击者使用它就变成了窃取网 络信息的行为了。5 垃圾邮件。这也是人们普遍遇到的网络安全问题。由于邮件的使用很广 泛,已经成为人们生产生活中的一种重要通信方式。但是与邮件相关的安全问题 也非常多,其中最严重的就是垃圾
7、邮件,严重影响了人们正常使用邮件系统。6 拒绝服务攻击。它不断对网络服务系统进行干扰,改变其正常的作业流 程,执行无关程序使系统响应减慢甚至瘫痪, 影响正常用户的使用,甚至使合法用户被排斥而不能进入计算机网络系统或不能得到相应的服务。然而,在目前的网络安全防范研究中,大部分都是研究如何防范和抵御来自外网的不安全因素,因此网络边界的安全得到了很大的重视, 但内网的安全问 题同样是一个不可忽略的部分。在内网的安全防范中, ARP攻击病毒是一个重要的内容,也是内网攻击者最偏向于利用网络底层协议的一种病毒。因此,对 ARP协议的安全性分析具有十分重要的意义。要如何防范 ARP攻击,首先就必须先从ARP
8、协议本身入手,掌握ARP协议的基本知识,了解ARP攻击的原理, 这样才能总结出一套行之有效的防范方法。2ARP协议2.1基本原理众所周知,IP地址是不能直接用来进行通信的,这是因为 IP地址只是主机在抽象的网络层中的地址。如果要将网络层中传送的数据报交给目的主机, 还要传到数据链路层转变成硬件地址后才能发送到实际的网络上。 由于IP地址是32位的,而局域网的硬件地址是 48位的,因此它们之间不存在简单的映射关系。 此外,在一个网络上可能经常会有新的主机加入进来, 或撤走一些主机,更换网卡也会使主机的硬件地址改变。可见在主机中应存放一个从 IP地址到硬件地址的映射表,并且这个映射表还必须能够经常
9、更新。将一台计算机的 IP地址翻译成等价的硬件地址的过程叫做地址解析。 地址解析是一个网络内的局部过程,即一台计算机能够解析另一台计算机地址的充要条件是两台计算机都连在同一物 理网络中,一台计算机无法解析远程网络上的计算机的地址。 地址解析协议ARP(AddressResolutio nProtocol )就是用来确定这些映象的协议。ARP协议的标准是在RFC826中定义的。这个协议起初是为DEC/Intel/GeroG 的10兆以太网设计的,现在已允许用在其它类型的网络上。 它负责从第三层的网络地址映射到第二层的硬件地址 (也可以是以太网以外的硬 优质参考文档图2-1ARP数据帧格式在图中每
10、一行为32位,也就是4个八位一组表示,在以后的图中,我们也 将遵循这一方式。硬件类型字段指明了发送方想知道的硬件接口类型,以太网的值为 1。协议 类型字段指明了发送方提供的高层协议类型,IP为OG0800。它的值与包含IP 数据报的以太网数据帧中的类型字段的值相同,这是有意设计的。接下来的硬件地址长度和协议长度分别指明了硬件地址和高层协议地址的 长度,以字节为单位,这样 ARP报文就可以在任意硬件和任意协议的网络中使 用。对于以太网上的IP地址的ARP请求或者应答来说,它们的值分别为6和4。操作字段指出四种操作类型,它们是 ARP请求(值为1 )、ARP应答(值为 2)、RARP请求(值为3)
11、和RARP应答(值为4)。这个字段是必需的,因为 ARP请求和ARP应答的帧类型字段值是相同的。接下来的四个字段是发送端的 MAC地址(在本例中是以太网地址)、发送端 的协议地(IP地址)、目的端的MAC地址和目的端的协议地址。注意,这里有一些重复 信息:在以太网的数据帧报头中和 ARP请求数据帧中都有发送端的硬件地址。对于一个ARP请求来说,除目的端MAC地址外的所有其他的字段都有填充 值。当系统收到一份目的端为本机的 ARP请求报文后,它就把 MAC地址填进 去,然后用两个目的端地址分别替换两个发送端地址,并把操作字段置为 2,最后把它发送回去。1Hdxhea匕 t4 1 (lOHfb 包
12、口dxiiiProtocol iyp? * 1181)0 (IP)L曰乩E Uh q hsLriiware address = 6 bvtesIstLth of pj?3t ocol aiddrm弓s: - 4 by t e sOpcode 1 i 杭t?P 口匕口yet) etb.d白m V hsiricrG 白dcLrm二:EP Sendiij.1K pivt Qtui dJj川=59 3.1.1hfiP Tatars- hardvstr flddrs-M * nnDflOOQQDODOJkEP Tsirgst jsrotocol address - 5? t : .2.1412们通过Sn
13、iffer软件捕获一个ARP包来检查BliF & by 七匕生 J: fante paddli-tL-i匡F的人口気PH/j饰屮找Hdlt 人骑曲曲11催.WWEM 詡/图2-2Sniffer捕获的ARP包2.2ARP的查看我们先看一下LinuG下的arp命令(如果开始arp表中的内容为空的话,需要 先对某台主机进行一个连接,例如ping 下目标主机来产生一个arp项):d2server:/home/kerberos#arpAddressHWtPpeHWaddressFlagsMasklface 59.68.2.7ether00:11:11:EE:39:44Ceth0Address :主机的I
14、P地址HwtPpe :主机的硬件类型Hwaddress :主机的硬件地址FlagsMask :记录标志,C表示arp高速缓存中的条目,M表示静态的 arp条目。用arp-a命令可以显示主机地址与IP地址的对应表,也就是机器中所保存的arp缓存信息。这个高速缓存存放了最近 In ternet地址到硬件地址之间的映 射记录。高速缓存中每一项的生存时间一般为 20分钟,起始时间从被创建时开 女台算起。d2server:/home/kerberos#arp-a(59.68.2.7) at00:11:11:EE:39:44ethero neth0可以看到在缓存中有一条59.68.2.7相对应的arp缓存
15、条目。d2server:/home/kerberos#tel net59.68.2.105TrPi ng59.68.2.105Co nn ectedto59.68.2.105.EscapecharacterisA.A.teln etquitconn eti on closed.在执行上面一条telnet命令的同时,用tcpdump进行监听:d2server:/home/kerberos#tcpdump-edsthost59.68.2.105tcpdump:liste ningon eth0我们将会听到很多包,我们取与我们 arp协议相关的2个包:10.0 00:D0:F8:0A:FB:83 F
16、F:FF:FF:FF:FF:FFarp60whohas59.68.2.105telld2server20.002344(0.0021) 00-E0-4C-E2-06-8A 00:D0:F8:0A:FB:83arp60arpreplP59.68.2.105isat00-E0-4C-E2-06-8A在第1行中,源端主机(d2server )的硬件地址是00:D0:F8:0A:FB:83。目 的端主机的硬件地址是FF:FF:FF:FF:FF:FF这是一个以太网广播地址。电缆上的 每个以太网接口都要接收这个数据帧并对它进行处理。第1行中紧接着的一个输出字段是 arp,表明帧类型字段的值是0G0806,
17、 说明此数据帧是一个ARP请求或回答。在每行中,单词后面的值60指的是以太网数据帧的长度。由于ARP请求或 回答的数据帧长都是42字节(28字节的ARP数据,14字节的以太网帧头), 因此,每一帧都必须加入填充字符以达到以太网的最小长度要求: 60字节。第1行中的下一个输出字段arpwho-has表示作为ARP请求的这个数据帧 中,目的IP地址是59.68.2.105的地址,发送端的IP地址是d2server的地址。 tcpdump打印出主机名对应的默认IP地址。从第2行中可以看到,尽管ARP请求是广播的,但是ARP应答的目的地址 却是59.68.2.105(00-E0-4C-E2-06-8A
18、) 。ARP应答是直接送到请求端主机的,而是广播的。tcpdump 打印出arprepIP的字样,同时打印出响应者的主机 IP和硬件地址。在每一行中,行号后面的数字表示tcpdump收到分组的时间(以秒为单位)。 除第1行外,每行在括号中还包含了与上一行的时间差异(以秒为单位) 。这个时候我们再看看机器中的arp缓存:d2server:/home/ke rberos#arp-a(59.68.2.7)at00:11:11:EE:39:44ethero neth0(59.68.2.105 )at00-E0-4C-E2-06-8Aethero neth0arp高速缓存中已经增加了一条有关 59.68
19、.2.105的映射。再看看其他的arp相关的命令: d2server:/home/kerberos#arp-s59.68.2.10500:00:00:00:00:00 d2server:/home/kerberos#arpAddressHWtPpeHWaddressFlagsMasklface 59.68.2.7ether00:11:11:EE:39:44Ceth0 59.68.2.105ether00:00:00:00:00:00CMeth0 d2server:/home/kerberos#arp-a(59.68.2.7) at00:11:11:EE:39:44ethero neth0(59
20、.68.2.105) at00:00:00:00:00:00etherPERM on eth0可以看到我们用arp-s选项设置了 59.68.2.105 对应的硬件地址为 00:00:00:00:00:00,而且这条映射的标志字段为 CM,也就是说我们手工设置的arp选项为静态arp选项,它保持不变没有超时,不像高速缓存中的条目要在一 定的时间间隔后更新。如果想让手工设置的arp选项有超时时间的话,可以加上temp选项d2server:/home/kerberos#arp-s59.68.2.10500:00:00:00:00:00temp d2server:/home/kerberos#arp
21、-a(59.68.2.7) at00:11:11:EE:39:44ethero neth0(59.68.2.105) at00:00:00:00:00:00ethero neth0 d2server:/home/kerberos#arpAddressHWtPpeHWaddressFlagsMasklface59.68.2.7ether00:11:11:EE:39:44Ceth059.68.2.105ether00:00:00:00:00:00Ceth0可以看到标志字段的静态arp标志M已经去掉了,我们手工加上的是一条 动态条目。在不同的系统中,手工设置的 arp静态条目是有区别的。在 linu
22、G和win20GG中,静态条目不会因为伪造的arp响应包而改变,而动态条目会改变。 而在win98中,手工设置的静态条目会因为收到伪造的 arp响应包而改变。如果您想删除某个arp条目(包括静态条目),可以用下面的命令:d2server:/home/kerberos#arp-d59.68.2.105d2server:/home/kerberos#arp-a(59.68.2.7) at00:11:11:EE:39:44ethero neth0(59.68.2.105) ato neth0可以看到59.68.2.105的arp条目已经是不完整的了。还有一些其他的命令,可以参考linuG下的相关文档
23、。Windows环境下的ARP命令也类似,在此不再累赘。2.3ARP的高速缓存ARP高效运行的关键是由于每个主机都有一个 ARP高速缓存。这个高速缓存存放了最近In ternet地址到硬件地址之间的映射记录。高速缓存中的每一项 的生存时间一般为20分钟,起始时间从被创建时开始算起。我们可以用 arp-a命令来检查ARP的高速缓存。参数-a的意思是显示高速缓存中所有的内容。在一些网络安全的开发包中,可以使用相关函数来调用ARP的高速缓存。例 如在使用Libdnet开发包对ARP缓存进行操作时,就要用到ARP缓存的数据结 构。ARP缓存的数据结构中定义了与 ARP缓存相关的一些信息,如协议地址和
24、硬件地址。ARP缓存结构的定义在arp.h中。以下是Libdnet中ARP缓存的结构定义。structarp_e ntrPstructaddrarp_pa;/G 协议地址 G/structaddrarp_ha;/G 硬件地址 G/;#de nfin earp_pack_hdr_ethip(hdr,op,sha,tha,tpa)do structarp_hdrGpack_arp_p=(structarp_hdrG)(hdr); structarp_ethipGpack_ethip_p=(structarp_ethipG)(ui nt8_tG)(hdr)+ARP_HDR_LEN);pack_arp
25、_p-ar_hrd=ht on s()(ARP_HDR_ETH);pack_arp_p-ar_pro=hto ns()(ARP_PROP);pack_arp_p-ar_hl n=ETH_ADDR_LEN;pack_arp_p-ar_pl n=IP_ADDR_LEN;pack_arp_p-ar_op=ht on s(op);memmove(pack_ethip_p-ar_sha,&( sha),ETH_ADDR_LEN); memmove(pack_ethip_p-ar_spa,&(spa),ETH_ADDR_LEN); memmove(pack_ethip_p-ar_tha,&(tha),ETH_ADDR_LEN);
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1