gg高技科kkjj.doc_第1页
gg高技科kkjj.doc_第2页
gg高技科kkjj.doc_第3页
gg高技科kkjj.doc_第4页
gg高技科kkjj.doc_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

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

文档简介

ARP协议简介1 ARP协议ARP,ARP协议是“Address Resolution Protocol”( 地址解析协议)的缩写。中文名为地址解析协议,它工作在数据链路层,在本层和硬件接口联系,同时对上层提供服务。在局域网中,网络中实际传输的是“帧”,帧里面是有目标主机的MAC地址的。在以太网中,一个主机要和另一个主机进行直接通信,必须要知道目标主机的MAC地址。但这个目标MAC地址是如何获得的呢?它就是通过地址解析协议获得的。所谓“地址解析”就是主机在发送帧前将目标IP地址转换成目标MAC地址的过程。ARP协议的基本功能就是通过目标设备的IP地址,查询目标设备的MAC地址,以保证通信的顺利进行。数据链路如以太网或令牌环网都有自己的寻址机制,这是使用数据链路的任何网络层都必须遵守的,IP数据包常通过以太网发送,以太网设备并不识别32位IP地址,它们是以48位以太网地址(MAC地址)传输以太网数据包,设备驱动程序从不检查IP数据报中的目的IP地址。因此,必须把IP目的地址转换成以太网目的地址。1.1 ARP帧结构ARP帧的具体结构,如图1 ARP帧结构 所示。 以太网目的地址以太网源地址帧类型硬件类型协议类型硬件地址长度协议地址长度操作字段发送端以太网发送端IP地址目的以太网地址目的IP地址图1ARP帧结构以太网帧头中的前两个字段是以太网的目的地址和源地址。目的地址为全1时为广播地址。1.2 ARP协议的数据结构: typedef struct arphdr unsigned short arp_hrd; /*硬件类型*/ unsigned short arp_pro; /*协议类型*/ unsigned char arp_hln; /*硬件地址长度*/ unsigned char arp_pln; /*协议地址长度*/ unsigned short arp_op; /*ARP操作类型*/ unsigned char arp_sha6; /*发送者的硬件地址*/ unsigned long arp_spa; /*发送者的协议地址*/ unsigned char arp_tha6; /* 目标的硬件地址 unsigned long arp_tpa; /*目标的协议地址*/ ARPHDR,*PARPHDR; 硬件类型字段:指明了发送方想知道的硬件地址的类型,以太网的值为1;协议类型字段:表示要映射的协议地址类型,IP为0X0800;硬件地址长度和协议地址长度:指明了硬件地址和高层协议地址的长度,这样ARP帧就可以在任意硬件和任意协议的网络中使用。对于以太网上IP地址的ARP请求或应答来说,它们的值分别为6和4;操作字段:用来表示这个报文的类型,ARP请求为1,ARP响应为2,RARP请求为3,RARP响应为4;发送端的以太网地址:源主机硬件地址,6个字节;发送端IP地址:发送端的协议地址(IP地址),4个字节;目的以太网地址:目的端硬件地址,6个字节;目的IP地址:目的端的协议地址(IP地址),4个字节。2 ARP的工作原理 在硬件层次上进行的数据帧交换必须有正确的接口地址(即硬件地址),但是,TCP/IP有自己的地址:32 bit的IP地址,知道主机的IP地址并不能让内核(如以太网驱动程序)发送一帧数据给主机,内核必须知道目的端的硬件地址才能发送数据,ARP的功能是在32 bit的IP地址和采用不同网络技术的硬件地址之间提供动态映射。从逻辑Internet地址到对应的物理硬件地址需要进行翻译,这就是ARP的功能。ARP高效运行的关键是由于每个主机上都有一个ARP高速缓存。这个高速缓存存放了最近Internet地址到硬件地址之间的映射记录。高速缓存中每一项都有一个默认的生存时间,起始时间从被创建时开始算起。ARP高速缓存中的表项一般都要设置超时值,完整的表项(如IP地址有相应的MAC地址对应的表项)设一个超时值(例如20分钟),不完整的表项(IP地址没有相应的MAC地址对应,即不存在此主机的表项)设置另外一个超时值(例如3分钟)。如果表项被再次使用时未超时,它的超时值会被重新设定为默认值;如果表项被再次使用时已超时,表明这个表项不可信,需要重新发送ARP请求更新此表项。在Windows操作系统中,可以在:开始运行,输入cmd,进入控制台,执行arp/?可以查看ARP的所有命令。2.1 ARP的工作原理:1、首先,每台主机都会在自己的ARP高速缓冲区 (ARP Cache)中建立一个 ARP列表,以表示IP地址和MAC地址的对应关系。2、当源主机需要将一个数据包发送到目的主机时,会首先检查自己 ARP列表中是否存在该IP地址对应的MAC地址,如果有就直接使用此MAC地址;如果没有,主机就先将目标主机的IP地址与自己的子网掩码进行与操作,以判定目标主机与自己是否位于同一网段内。假如目标主机与自己在同一网段内,就向本地网段发起一个ARP请求的广播包,查询此目的主机对应的MAC地址;如果目的主机在一个远程网络上,那么就通过路由器等路由设备转发此ARP请求到远程网络中广播。此ARP请求数据包里包括源主机的IP地址、硬件地址、以及目的主机的IP地址。3、源主机和目的主机在一个网络内的情况下:网络中所有的主机收到这个ARP请求后,会检查数据包中的目的IP和自己的IP地址是否一致。如果不相同就不回应,但是该主机仍然会检查自己的ARP高速缓存,如果此请求的源IP地址已经在高速缓存中,那么就用ARP请求帧中的发送端硬件地址对高速缓存中相应的内容进行更新;如果相同,该主机首先将发送端的MAC地址和IP地址添加到自己的ARP列表中,如果ARP表中已经存在该IP的信息,则将其覆盖,然后给源主机发送一个 ARP响应数据包,告诉它需要查找的MAC地址;如果源主机和目的主机不在一个网络内, ARP请求将由路由器转发至其它网络。如果能找到目的主机,就将此路由器的MAC地址当作目的主机的网络地址发给源主机,以后源主机和目的主机之间的信息交换都要经过此路由器,这个路由器就被称作ARP代理;如果没有找到目的主机,在ARP高速缓存中会产生一条不完整的表项记录下来。4、源主机收到这个ARP响应数据包后,将得到的目的主机的IP地址和MAC地址添加到自己的ARP列表中,并利用此信息开始数据的传输。2.2 ARP协议的利用2.2.1交换网络的嗅探 ARP协议并不只在发送了ARP请求才接收ARP应答。当计算机接收到ARP应答数据包的时候,就会对本地的ARP缓存进行更新,将应答中的IP和MAC地址存储在ARP缓存中。因此,在上面的假设网络中,B向A发送一个自己伪造的ARP应答,而这个应答中的数据为发送方IP地址是192.168.10.3(C的IP地址),MAC地址是DD-DD-DD-DD-DD-DD(C的MAC地址本来应该是CC-CC-CC-CC-CC-CC,这里被伪造了)。当A接收到B伪造的ARP应答,就会更新本地的ARP缓存,将本地的IP-MAC对应表更换为接收到的数据格式,由于这一切都是A的系统内核自动完成的,A可不知道被伪造了。 ARP欺骗的主要用途就是进行在交换网络中的嗅探。有关交换网络的嗅探不是本文的讨论内容。2.2.2 IP地址冲突 我们知道,如果网络中存在相同IP地址的主机的时候,就会报告出IP地址冲突的警告。这是怎么产生的呢? 比如某主机B规定IP地址为192.168.0.1,如果它处于开机状态,那么其他机器A更 改IP地址为192.168.0.1就会造成IP地址冲突。其原理就是:主机A在连接网络(或更改IP地址)的时候就会向网络发送ARP包广播自己的IP地址,也就是freearp。如果网络中存在相同IP地址的主机B,那么B就会通过ARP来reply该地址,当A接收到这个reply后,A就会跳出IP地址冲突的警告,当然B也会有警告。 因此用ARP欺骗可以来伪造这个ARPreply,从而使目标一直遭受IP地址冲突警告的困扰。 2.2.3 阻止目标的数据包通过网关 比如在一个局域网内通过网关上网,那么连接外部的计算机上的ARP缓存中就存在网关IP-MAC对应记录。如果,该记录被更改,那么该计算机向外发送的数据包总是发送到了错误的网关硬件地址上,这样,该计算机就不能够上网了。 这里也主要是通过ARP欺骗进行的。有两种办法达到这样的目的。 1、向目标发送伪造的ARP应答数据包,其中发送方的IP地址为网关的地址,而MAC地址则为一个伪造的地址。当目标接收到该ARP包,那么就更新自身的ARP缓存。如果该欺骗一直持续下去,那么目标的网关缓存一直是一个被伪造的错误记录。当然,如果有些了解的人查看ARP-a,就知道问题所在了。 2、这种方法非常狠,欺骗网关。向网关发送伪造的ARP应答数据包,其中发送方的IP地址为目标的IP地址,而MAC地址则为一个伪造的地址。这样,网关上的目标ARP记录就是一个错误的,网关发送给目标的数据报都是使用了错误的MAC地址。这种情况下,目标能够发送数据到网关,却不能接收到网关的任何数据。同时,目标自己查看ARP-a却看不出任何问题来。 2.2.4 通过ARP检测混杂模式节点 在混杂模式中,网卡进行包过滤不同于普通模式。本来在普通模式下,只有本地地址的数据包或者广播(多播等)才会被网卡提交给系统核心,否则的话,这些数据包就直接被网卡抛弃。现在,混合模式让所有经过的数据包都传递给系统核心,然后被sniffer等程序利用。 通过特殊设计的ARP请求可以用来在一定程度上检测处于混杂模式的节点,比如对网络中的每个节点都发送MAC地址为FF-FF-FF-FF-FF-FE的ARP请求。对于网卡来说这不是一个广播地址(FF-FF-FF-FF-FF-FF),所以处于普通模式的节点就会直接抛弃该数据包,但是多数操作系统核心都认为这是一个广播地址,如果有一般的sniffer程序存在,并设置网卡为混杂模式,那么系统核心就会作出应答,这样就可以判断这些节点是否存在嗅探器了。 可以查看,很多基于ARP的攻击都是通过ARP欺骗实现的。至于ARP欺骗的防范,还是尽可能使用静态的ARP。对于WIN,使用arp-s来进行静态ARP的设置。当然,如果能够完全使用静态的IP+MAC对应,就更好了,因为静态的ARP缓存只是相对的。 当然,可以有一些方法来实现ARP欺骗的检测。设置一个ARP的嗅探器,其中维护着一个本地网络的IP-MAC地址的静态对应表,查看所有经过的ARP数据,并检查其中的IP-MAC对应关系,如果捕获的IP-MAC对应关系和维护的静态对应关系对应不上,那么就表明是一个欺骗的ARP数据包了。 一个ARP数据包发送程序源代码和编译好的EXE程序可以参考ARPSender程序。注意:需要先安装WinPcap。 3 ARP缓存表查看方法ARP缓存表是可以查看的,也可以添加和修改。在命令提示符下,输入“arp -a”就可以查看ARP缓存表中的内容了arp -a用“arp -d”命令可以删除ARP表中所有的内容; 用“arp -d +空格+ ” 可以删除指定ip所在行的内容 用“arp -s”可以手动在ARP表中指定IP地址与MAC地址的对应,类型为static(静态),静态ARP缓存除非手动清除,否则不会丢失。无论是静态还是动态ARP缓存,重启启动计算机后都会丢失。4 ARP欺骗 ARP欺骗是指通过一定的手段使自己拥有其它的身份,从而达到欺骗的目的。ARP协议的工作原理决定ARP欺骗只会存在于局域网内。ARP欺骗主要分为二种,一种是对路由器ARP表的欺骗;另一种是对内网主机的网关欺骗。 第一种ARP欺骗的原理是截获网关数据。它通知路由器一系列错误的内网MAC地址,并按照一定的频率不断通知路由器,使真实的地址信息无法保存在路由器中,结果路由器的所有数据只能发送给错误的MAC地址,造成正常主机无法收到信息。第二种ARP欺骗的原理是冒充网关。它的原理是冒充网关,不停的向网络中发送构造好的广播ARP帧,让其它主机的ARP高速缓存中保存的网关的IP地址对应的MAC地址是本机的MAC地址,让被欺骗的主机向本机发数据,本机就可以截获这些数据,如果本机向外转发这些数据,那些被欺骗的主机感觉一切正常,它们感觉不到数据已经被截获了;本机如果不转发这些数据,那些被欺骗的主机就无法对外进行通信了。当然,还有其它欺骗方式:如欺骗某一台主机、用ARP进行泛洪攻击等。5 ARP欺骗攻击的防范1、

温馨提示

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

评论

0/150

提交评论