网络层主要协议与arp欺骗
网络层主要协议与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地址。
网络层主要协议与arp欺骗的更多相关文章
- arp协议分析&python编程实现arp欺骗抓图片
arp协议分析&python编程实现arp欺骗抓图片 序 学校tcp/ip协议分析课程老师布置的任务,要求分析一种网络协议并且研究安全问题并编程实现,于是我选择了研究arp协议,并且利用pyt ...
- 网络层协议、ARP攻击
一.IP数据包格式 二.ICMP协议介绍 PING命令 三.ARP协议介绍 四.ARP攻击原理 一.IP数据包格式 网络层的功能 定义了基于IP协议的逻辑地址 连接不同的媒介类型 选择数据通过网络的最 ...
- LwIP Application Developers Manual3---链路层和网络层协议之ARP,IPV4
1.前言 本文主要讲述链路层和网络层的几种协议:ARP,ipv4 2. ARP 2.1 ARP的主要应用 ARP的主要应用是在与互联网相连的以太网网络层,该层需要一些机制将MAC地址(该地址主要由制造 ...
- ARP协议,以及ARP欺骗
1.定义: 地址解析协议,即ARP(Address Resolution Protocol),是根据IP地址获取物理地址的一个TCP/IP协议.主机发送信息时将包含目标IP地址的ARP请求广播到网络上 ...
- Python黑帽编程 3.1 ARP欺骗
Python灰帽编程 3.1 ARP欺骗 ARP欺骗是一种在局域网中常用的攻击手段,目的是让局域网中指定的(或全部)的目标机器的数据包都通过攻击者主机进行转发,是实现中间人攻击的常用手段,从而实现数据 ...
- Python黑客编程ARP欺骗
Python灰帽编程 3.1 ARP欺骗 ARP欺骗是一种在局域网中常用的攻击手段,目的是让局域网中指定的(或全部)的目标机器的数据包都通过攻击者主机进行转发,是实现中间人攻击的常用手段,从而实现数据 ...
- arp欺骗技术
ARP欺骗技术-获取内网目标IP访问图片! 简介: ARP(Address Resolution Protocol,地址解析协议)是一个位于TCP/IP协议栈中的网络层,负责将某个IP地址解析 ...
- 防止ARP欺骗的方法!!!
防止ARP欺骗的方法!!! 根据鄙人上网经常掉线,怀疑可能是某人使用网络剪刀手,网络执行官,局域网终结者等工具.经过搜索有关资料,有了一点点防范经验,借以参考~! 一 首先我们来了解下这类攻击工具的原 ...
- ARP协议与ARP攻击入门
一 ARP协议 ARP协议是一个年代相当"久远"的网络协议.ARP协议制定于1982年11月,英文全称:Address Resolution Protocol,即"地址解 ...
随机推荐
- Docker | dockerfile 文件编写
dockerfile 的作用 dockerfile 作用就是制作镜像,保持开发,测试,生产环境的一致性. 直接将容器制作为镜像 制作新的镜像 # 把容器按照自己的需求个性完之后,就可以创建自己的镜像的 ...
- 显示器接口VGA、DVI、HDMI、DP
1.说明 对于显示器接口类型, 常见的接口有VGA.DVI.HDMI.DP这四种, 当然还有其他类型接口, 本文主要介绍上面四种接口, 介绍接口的基本规格参数和外形等, 以及这四种接口之间的联系和区别 ...
- html基础 button按钮标签
场景:在网页中显示用户点击的按钮标签名:button 注意:form不能少,少了不会出效果 html代码 <form > 昵称: <input type="text&quo ...
- jsp使用${}语法,对应的spring后台使用Model
实现的前提,一定要在jsp文件顶部加上 <%@page isELIgnored="false" %> 如上图${aa}与${bb},是直接使用Model的key值对应的 ...
- MySQL 表字段唯一性约束设置方法unique
1. 建表时加上唯一性约束 CREATE TABLE `t_user` ( `Id` int(11) NOT NULL AUTO_INCREMENT, -- 自增 `username` varchar ...
- vue2.0组件库
UI组件 element - 饿了么出品的Vue2的web UI工具套件 Vux - 基于Vue和WeUI的组件库 mint-ui - Vue 2的移动UI元素 iview - 基于 Vuejs 的开 ...
- idea 插件推荐
工欲善其事必先利其器,本文介绍几个自己在开发过程中常用的idea插件 安装方法 idea 里面在线安装 settings>plugins>marketplace 里面搜索安装 idea 官 ...
- spark中job stage task关系
1.1 例子,美国 1880 - 2014 年新生婴儿数据统计 目标:用美国 1880 - 2014 年新生婴儿的数据来做做简单的统计 数据源:https://catalog.data.gov 数据格 ...
- python文档1-unittest单元测试之mock
什么是mock unittest.mock是一个用于在Python中进行单元测试的库,Mock翻译过来就是模拟的意思,顾名思义这个库的主要功能是模拟一些东西.它的主要功能是使用mock对象替代掉指定的 ...
- Servlet-请求的分发处理
1,HelloServlet类中 2,a.html中