首页 > 技术文章 > 网络层主要协议与arp欺骗

dingcong1201 2020-05-23 21:19 原文

网络层主要协议与arp欺骗

一、网络层(Network Layer)

1、网络层的功能

(1)定义了基于IP协议的逻辑地址
(2)连接不同的媒介类型
(3)选择数据通过网络的最佳路径

2、IP数据报(IP Datagram)


TCP/IP协议定义了一个在因特网上传输的包,称为IP数据报,由首部和数据两部分组成。首部的前一部分是固定长度,共20字节,是所有IP数据报必须具有的。在首部的固定部分的后面是一些可选字段,其长度是可变的。首部中的源地址和目的地址都是IP协议地址。

二、网络层的主要协议

1、ICMP协议(Internet Control Message Protocol)

(1)ICMP协议的概述

Internet控制报文协议。它是TCP/IP协议簇的一个子协议,用于在IP主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。这些控制消息虽然并不传输用户数据,但是对于用户数据的传递起着重要的作用。

(2)ICMP协议的特点

①ICMP是一个“错误侦测与回馈机制”
②通过IP数据包封装
③用来发送错误和控制信息

(3)ICMP数据的封装过程

(4)ping(Packet Internet Groper)

⑤ping的概述

ping是一种因特网包探索器,用于测试网络连接量的程序。Ping是工作在 TCP/IP网络体系结构中应用层的一个服务命令,主要是向特定的目的主机发送ICMP Echo 请求报文,测试目的站是否可达及了解其有关状态。

②ping的主要作用

a.用来检测网络的连通情况和分析网络速度
b.根据域名得到服务器IP
c.根据ping返回的TTL值来判断对方所使用的操作系统及数据包经过的路由器数量

③通过TTL判断对方系统

TTL值:Time To Live,表示DNS记录在DNS服务器上存在的时间,它是IP协议包的一个值,告诉路由器该数据包何时需要被丢弃。可以通过Ping返回的TTL值大小,粗略地判断目标系统类型是Windows系列还是UNIX/Linux系列。
默认情况下,Linux系统的TTL值为64或255,WindowsNT/2000/XP系统的TTL值为128,Windows98系统的TTL值为32,UNIX主机的TTL值为255。

④ping的常见用法


a.ping网络的ip地址
测试网络的连通情况
b.ping-t
不间断的ping指定地址,直到使用Ctrl+C进行停止

c.ping-a
Ping-a解析计算机名与NetBios名。就是可以通过ping它的IP地址,解析出主机名。

d.ping-n
在默认情况下,一般都只发送4个数据包,通过这个命令可以自己定义发送的个数,对衡量网络速度都很有帮助,比如我想测试发送10个数据包的返回的平均时间为多少,最快时间为多少,最慢时间为多少就可以通过使用ping+n进行测试

e.ping-l
-l size:发送size指定大小的到目标主机的数据包。
在默认的情况下Windows的ping发送的数据包大小为32byt,最大能发送65500byt。当一次发送的数据包大于或等于65500byt时,将可能导致接收方计算机宕机。所以微软限制了这一数值;这个参数配合其它参数以后危害非常强大,比如攻击者可以结合-t参数实施DOS攻击。(所以它具有危险性,不要轻易向别人计算机使用)。
比如,ping -l 65500 -t 211.84.7.46
会连续对IP地址执行ping命令,直到被用户以Ctrl+C中断。
这样它就会不停地向211.84.7.46计算机发送大小为65500byt的数据包,如果你只有一台计算机也许没有什么效果,但如果有很多计算机那么就可以使对方完全瘫痪,网络严重堵塞,由此可见威力非同小可。

f.ping-r
在“记录路由”字段中记录传出和返回数据包的路由,探测经过的路由个数,但最多只能跟踪到9个路由。ping -n 1 -r 9 202.102.224.25 (发送一个数据包,最多记录9个路由)可将经过9个路由都显示出来。

g.批量ping网段
对于一个网段IP地址众多,如果单个检测实在麻烦,那么我们可以直接批量ping网段检测,哪个IP地址出了问题,就会一目了然。
先看代码,直接在命令行窗口输入:for /L %D in (1,1,255) do ping 10.168.1.%D
IP地址段修改成你要检查的IP地址段。
代码中的这个(1,1,255)就是网段起与始,就是检测网段192.168.1.1到192.168.1.255之间的所有的ip地址,每次逐增1,直接到1到255这255个ip检测完为止。

2、ARP协议(Address Resolution Protocol)

(1)ARP协议概述

地址解析协议是根据IP地址获取物理地址的一个TCP/IP协议。主机发送信息时将包含目标IP地址的ARP请求广播到局域网络上的所有主机,并接收返回消息,以此确定目标的物理地址;收到返回消息后将该IP地址和物理地址存入本机ARP缓存中并保留一定时间,下次请求时直接查询ARP缓存以节约资源。

(2)ARP协议的主要作用及原理

将一个已知的IP地址解析成MAC地址
OSI模型把网络工作分为七层,IP地址在OSI模型的第三层,MAC地址在第二层,彼此不直接打交道。在通过以太网发送IP数据包时,需要先封装第三层(32位IP地址)、第二层(48位MAC地址)的包头,但由于发送时只知道目标IP地址,不知道其MAC地址,又不能跨第二、三层,所以需要使用地址解析协议。使用地址解析协议,可根据网络层IP数据包包头中的IP地址信息解析出目标硬件地址(MAC地址)信息,以保证通信的顺利进行。

(3)ARP缓存表

在以太局域网内数据包传输依靠的是MAC地址,IP地址与MAC对应的关系依靠ARP表,每台安装有TCP/IP协议的主机(包括网关)都有一个ARP缓存表。该表中保存这网络中各个电脑的IP地址和MAC地址的对照关系。
在正常情况下arp缓存表能够有效的保证数据传输的一对一性。但是ARP协议对应的ARP缓存表维护机制中存在不完善的地方,当主机收到一个ARP的应答包后,它并不验证自己是否发送过这个ARP请求,而是直接将应答包里的MAC地址与IP对应的关系替换掉原有的ARP缓存表里的相应信息,这就是导致arp欺骗的根本原因。

(4)ARP协议的工作步骤

①PC1发送数据给PC2,查看ARP缓存表是否有PC2的MAC地址,有的话直接发送,没有的话进入下一步
②PC1通过广播的形式发送ARP请求消息
③所有主机收到PC1的ARP请求消息,PC2通过单播的形式回复ARP应答,其余PC丢弃掉该信息
④PC1将PC2的MAC地址存入ARP缓存表中并发送数据

(5)ARP的相关命令

①arp -a

查看arp缓存表

②arp -d

清除arp缓存(需要以管理员身份运行命令提示符)

三、ARP欺骗(ARP Spoofing)

1、ARP欺骗概述

ARP欺骗,又称ARP毒化(ARP poisoning,网络上多译为ARP病毒)或ARP攻击,是针对以太网地址解析协议(ARP)的一种攻击技术,通过欺骗局域网内访问者PC的网关MAC地址,使访问者PC错以为攻击者更改后的MAC地址是网关的MAC,导致网络不通。此种攻击可让攻击者获取局域网上的数据包甚至可篡改数据包,且可让网络上特定计算机或所有计算机无法正常连线。
ARP攻击主要是存在于局域网网络中,局域网中若有一台计算机感染ARP木马,则感染该ARP木马的系统将会试图通过“ARP欺骗”手段截获所在网络内其它计算机的通信信息,并因此造成网内其它计算机的通信故障。

2、ARP欺骗原理

由于当主机收到一个ARP的应答包后,它并不验证自己是否发送过这个ARP请求,而是直接将应答包里的MAC地址与IP对应的关系替换掉原有的ARP缓存表里的相应信息,这就是导致arp欺骗的根本原因。
因为arp缓存表存在老化时间,一般华为设备为20分钟,思科为5分钟。因此攻击者需要不停的向欺骗对象发送ARP欺骗报文,以免ARP缓存表的自动更新。

3、ARP欺骗的主要方式

(1)ARP欺骗网关

①PC1通过网关进行网络连接
②PC2作为攻击者可向PC1不断的发送虚假的ARP回应报文,内容为“我是网关,我的MAC地址为AA-AA-BB-BB-CC-CC(PC2的MAC地址 )”
③与此同时,PC2向网关不断的发送虚假的ARP回应报文,内容为“我是PC1,我的MAC地址为AA-AA-BB-BB-CC-CC(PC2的MAC地址 )”
④当PC1与网关将ARP缓存信息修改为PC2 MAC地址后,PC1访问互联网的流量需要经过PC2转发,攻击者可窃取或篡改PC1的流量信息。
⑤攻击者亦可将ARP数据包导到不存在的MAC地址以达到阻断服务攻击的效果。

(2)ARP欺骗主机

①PC1与PC2经由交换机进行数据通信
②PC3作为攻击者可不断的向PC1发送ARP回应报文,内容为“我是PC2,我的MAC地址为AA-AA-BB-BB-CC-CC(PC3的MAC地址 )”
③与此同时,PC3向PC2不断的发送虚假的ARP回应报文,内容为“我是PC1,我的MAC地址为AA-AA-BB-BB-CC-CC(PC3的MAC地址 )”
④当PC1与PC2将ARP缓存信息修改为PC3 MAC地址后,PC1与PC2之间数据流量需要经过PC3进行转发,攻击者可窃取或篡改PC1、PC1的流量信息。

(3)ARP泛洪攻击

通过向网关发送大量ARP报文,导致网关无法正常响应。首先发送大量的ARP请求报文,然后又发送大量虚假的ARP响应报文,从而造成网关部分的CPU利用率上升难以响应正常服务请求,而且网关还会被错误的ARP表充满导致无法更新维护正常ARP表,消耗网络带宽资源。

(4)中间人攻击

中间人攻击是同时欺骗局域网内的主机和网关,局域网中用户的数据和网关的数据会发给同一个攻击者,这样,用户与网关的数据就会泄露。

(5)IP地址冲突攻击

通过对局域网中的物理主机进行扫描,扫描出局域网中的物理主机的MAC地址,然后根据物理主机的MAC进行攻击,导致局域网内的主机产生IP地址冲突,影响用户的网络正常使用。

4、ARP防护

(1)静态绑定

对每台主机进行IP和MAC地址静态绑定是防止ARP欺骗的最根本办法。
a.使用命令“netsh interface ipv4 set neighbors idx号 IP地址 MAC地址”对网关地址进行绑定
解除绑定命令为“netsh -c “i i” delete neighbors idx号 IP地址 MAC地址”
idx号可通过命令“netsh i i show in”查看获取
b.通过命令arp -s可以实现, "arp –s IP MAC地址"。
例如:"arp –s 192.168.0.1 AA-AA-BB-BB-CC-CC"。

(2)DHCP snooping

网上设备可借由DHCP保留网络上各计算机的MAC地址,在伪造的ARP数据包发出时即可侦测到。此方式已在一些厂牌的网上设备产品所支持。

(3)ARP回应监听

有一些软件可监听网络上的ARP回应,若侦测出有不正常变动时可发送邮箱通知管理者。例如UNIX平台的Arpwatch以及Windows上的XArp v2或一些网上设备的Dynamic ARP inspection功能。

(4)限制mac地址记录数量

华为交换机进入接口模式后,使用命令“mac-address max-mac-count 5”,设置成做读学习5个MAC地址。

推荐阅读