网络安全·第二天·ARP协议安全分析

今天我们来考虑考虑计算机网络中的一类很重要的协议-------ARP协议,介绍他用途的同时,分析分析ARP协议存在的一些漏洞及其相关的协议问题。

一、物理地址与IP地址

1、举例

在计算机网络中,有两类地址十分关键,一类称为物理地址,而另一类则被称为IP地址,那既然都是地址,这两种地址又有什么不同呢?这么设计的话是不是多此一举呢?

举个小小的例子,不知道大家有没有了解自己身份证号的规律,例如小明的身份证号是"32010120 0001015678",身份证号码是由18位数字组成的,前6数字表示所在省份、城市和区县的代码,例如320101标识江苏省南京市玄武区;第7~14位数字表示:出生年、月、日;第15、16位数字表示所在地的派出所的代码;第17位数字表示性别,奇数表示男性,偶数表示女性,第18位数字是校检码:校检码可以是0~9的数字,有时也用x表示。

所以,我们既可以用身份证号来表示一个人,当然也可以用一个人的名字来定义一个人。利用身份证号我们可以大致推算出一个人生活的区域,而利用好他的姓名,我们则能更为准确的找到他。毕竟,你不可能在玄武区大喊"32010120 0001015678,你在哪儿?回答我!嗯?"而是会问"李小明,你在哪儿?"

这就相当于IP地址和物理地址(也叫MAC地址)的关系,通过IP地址我们能找到主机所在的区域,而通过MAC地址我们能找到具体的主机。

大家如果想查询自己主机的MAC地址,可以看这篇文章:

查看电脑MAC地址(物理地址),以Win10为例 - 知乎

2、IPV4地址

IP地址: 全称互联网协议地址(Internet Protocol Address),是网络设备在网络通信中的逻辑地址。它分为IPv4和IPv6两种类型,其中IPv4地址由32位 二进制数组成,通常用点分十进制表示,如192.168.1.1;而IPv6地址则由128位二进制数组成,表示为更长的十六进制字符串。IP地址在网络层(第三层) 的通信中起着至关重要的作用。它允许数据包在互联网上跨越不同的网络进行传输 。当数据包从源设备发送到目的设备时,它会经过多个路由器和交换机,这些设备会根据数据包中的目的IP地址来决定其传输路径。因此,IP地址实现了全球范围内的设备互联和通信。IP分为IPv4与IPv6两大类,这里介绍一下最出名的IPv4协议。

IPv4地址被分为五类,主要用于区分不同规模的网络和标识网络中的设备。这五类地址分别是A类、B类、C类、D类和E类。下面是这些地址类别的基本特征和用途:

①A类地址

范围:1.0.0.0 到 126.255.255.255

第一个字节的最高位为0,剩下7位用于表示网络部分,后三个字节(24位)用于表示主机部分,通常分配给拥有大量主机的大型网络。

127.0.0.0/8这个范围内的地址主要用于环回测试,其中最常见的127.0.0.1是本机回环地址,发送到这个地址的数据包会被送到本地计算机的网络栈而不离开主机。

有一个私有地址范围:10.0.0.0 到 10.255.255.255,仅限内部网络使用,这个要了解NAT技术。

②B类地址

范围:128.0.0.0 到 191.255.255.255

前两个字节的最高两位为10,接下来14位用于网络部分,最后两个字节(16位)用于主机部分,适用于中型网络。

私有地址NAT范围为:172.16.0.0 到 172.31.255.255。

③C类地址

范围:192.0.0.0 到 223.255.255.255

前三个字节的最高三位为110,21位用于网络部分,最后一个字节(8位)用于主机部分,适合小型网络,是最常见的地址类型。

私有地址范围为:192.168.0.0 到 192.168.255.255。

④D类地址

范围:224.0.0.0 到 239.255.255.255

前四个字节的最高四位为1110,用于多播通信,即一对多的通信方式,不用于单个主机地址分配。

⑤E类地址

范围:240.0.0.0 到 255.255.255.255

前四个字节的最高四位为1111,保留作研究和未来使用,实际上不分配给任何网络或主机。

3、MAC地址

MAC地址: 全称媒体访问控制地址(Media Access Control Address),是网络设备在网络通信中的物理地址。它通常由48位(6个字节) 的二进制数组成,以十六进制形式表示,并由冒号(:)或连字符(-)分隔,如00:1A:2B:3C:4D:5E。MAC地址是网络设备在出厂时由制造商烧录到硬件中的,虽然他在功能上与我们每个人的大名相似,但是每个网络设备的MAC地址都是独一无二的 ,这一点却与身份证号一样。MAC地址在**数据链路层(第二层)**的通信中起着至关重要的作用。当数据包在局域网内传输时,源设备会根据目的设备的MAC地址将其封装在数据帧中,并通过物理媒介(如以太网电缆)发送给目的设备。因此,MAC地址确保了数据包能够在局域网内准确、高效地传输。

二、ARP协议的作用与过程

1、ARP的作用

无论网络层需要什么协议,在实际的网络的链路上传输数据帧时,最终必须使用MAC地址,所以需要一种协议来完成IP地址到MAC地址的映射 ,也可以解释为由IP地址找MAC地址的协议,这就是本篇博客介绍的主题:ARP协议。

2、APR映射流程

首先,每个主机都会在自己的ARP缓冲区中建立一个ARP列表,以表示IP地址和MAC地址之间的对应关系。当源主机要发送数据时,首先检查ARP列表中是否有对应IP地址的目的主机的MAC地址,如果有,则直接发送数据,如果没有,就向本网段的所有主机发送ARP数据包,该数据包包括的内容有:源主机IP地址,源主机MAC地址,目的主机的IP地址。

当本网络的所有主机 收到该ARP数据包时,首先检查数据包中的IP地址是否是自己的IP地址,如果不是,则忽略该数据包 ,如果是,则首先从数据包中读出源主机的IP和MAC地址写入到ARP列表中,如果已经存在,则覆盖,然后将自己的MAC地址写入ARP响应包中,告诉源主机自己是它想要找的MAC地址。源主机收到ARP响应包后,将目的主机的IP和MAC地址写入ARP列表,并利用此信息发送数据。如果源主机一直没有收到ARP响应数据包,表示ARP查询失败。

注意1:广播(FFFF FFFF FFFF)发送ARP请求,单播发送ARP响应。

注意2:如果所要找的主机和源主机不在一个局域网上,那么就需要ARP协议找到一个位于本局域网的某个路由器的硬件地址,然后把分组发送给这个路由器,由这个路由器把分组转发给下一个网络。

光看上面这段文字会觉得很枯燥,但是如果你把这个流程想象成点名的过程,你又会觉得很好理解广播与单播的原因。假设,今天是武汉大学第一天新生报到,学生与辅导员第一次见面,彼此之间都不了解。计算机1班的学生李小萌编号为2025101想知道学生编号为2025250的同学叫什么,于是他首先会大喊一句:"谁的学生编号为2025250,你叫啥?"如果恰巧这个2025250在本班,那这个人会回复:"我叫刘昊!我是250!",而其他在本班的人,听到这人要找的编号不是自己的编号,于是不去理会。

但是如果编号为2025250的学生不在计算机1班呢?这个时候就要体现出每个班上辅导员的作用了,这个李小萌会先问:"谁是辅导员?"找到辅导员之后,再把想找学生号为2025250的请求告诉辅导员,由辅导员去问隔壁班的辅导员:"你们班有没有编号为2025250的学生?他叫什么?"

三、ARP中毒及其解决方法

1、ARP中毒

由于ARP协议是无状态 的,所以高速缓存可能会被恶意制作的ARP消息中毒(篡改)。这种攻击称为ARP缓存中毒攻击。在这种攻击中,攻击者使用欺骗ARP消息欺骗受害者接受无效的MAC-IP映射,并将映射存储在其缓存中。

具体来说,我们知道在局域网中的主机如果想访问互联网,那么他需要把报文交由路由器,通过路由器发给互联网上。例如下图中,如果左边这个戴眼镜的程序员想访问互联网,他就得先找到本网络路由器的MAC地址,但如果右边这个黑客伪造自己的IP地址是192.168.2.1,欺骗本网络其余的主机,路由器的MAC地址就是黑客的MAC地址,本网络的其余主机则会更新自己的ARP缓存表。那么,本网络所有的数据包都会流向这个黑客,这个黑客不论是进行中间人攻击还是去窃听,都会对本网络剩余的主机造成损失。

ARP攻击是根据ARP的特性以及IP地址的特性发起的,黑客是如何让其余主机相信自己的MAC地址就是路由器的MAC地址呢?主要有下面两种方式,其一每个主机的IP地址是可以变化 的,所以需要及时的发出ARP免费包,让其余主机更新ARP表,使对方下次发送消息时不要发错位置了。黑客可以向网络中发出ARP免费包来骗取信任,让其余主机以为路由器接口的IP地址已经更改了 。其二,黑客也可以通过ARP请求与响应的方式,来欺骗其余的主机,具体来说黑客伪造路由器想要查询IP地址为192.168.2.10的主机的MAC地址,按照正常的ARP报文,他会在本网络广播,源IP地址为192.168.2.1,源MAC地址为黑客的MAC地址,目标IP地址与目标MAC地址为全1广播。这样,在本网络的所有主机都收到了该广播报文,并且会去ARP缓存表中更新映射关系。这是利用了节点收到了ARP请求后无论要不要响应,该节点都会更新ARP表的原理,这也是ARP缓存表动态更新的特点

2、防范措施

在关键系统之间要设置静态的ARP项 。比如在防火墙和边界路由器上设置静态的ARP项。这一点挺好理解的,针对的是ARP缓存表动态更新的特性,虽然好用但也破坏了动态性。

②更好的方法是在交换机上配置802.1x协议,这是基于端口的访问控制协议,它对连接到交换机的用户进行认证和授权。攻击者连接交换机时,需要验证身份,只有通过认证后才能向网络发送数据,这从根源上阻断了黑客攻击的可能。

好啦,如果你觉得本篇文章写的还算可以,请帮小编点一个免费的赞与收藏吧!

相关推荐
程序猿chen5 分钟前
Vue.js组件安全工程化演进:从防御体系构建到安全性能融合
前端·vue.js·安全·面试·前端框架·跳槽·安全架构
alien爱吃蛋挞20 分钟前
【JavaEE】TCP流套接字编程
java·网络·java-ee
希望_睿智33 分钟前
C++网络编程之SSL/TLS加密通信
c++·网络协议·安全
wapicn991 小时前
查看手机在线状态,保障设备安全运行
java·网络·数据库·python·php
开发小能手-roy2 小时前
ubuntu 服务器版本网络安全
服务器·web安全·ubuntu
Bruce_Liuxiaowei2 小时前
网络安全应急响应-日志分析
安全·web安全·microsoft
qq_485015212 小时前
Java网络编程干货
java·网络·php
无名之逆2 小时前
Hyperlane 文件分块上传服务端
服务器·开发语言·前端·网络·http·rust·php
达斯维达的大眼睛3 小时前
Linux网络多进程并发服务器和多线程并发服务器
linux·服务器·网络
Lilith的AI学习日记3 小时前
LangChain高阶技巧:动态配置Runnable组件的原理剖析与实战应用
大数据·网络·人工智能·架构·langchain