前言:

        本文深入剖析内网通信原理与ARP协议工作机制,从网络分层协作(数据链路层寻址、网络层路由)到MAC地址与以太网帧的核心作用,系统讲解ARP协议的地址解析流程、缓存机制及安全风险,并通过Kali Linux下的arpspoof实验演示ARP欺骗攻击,最后提出绑定静态MAC地址等防御措施。期待本文能帮助您理解局域网通信本质,掌握协议分析及安全防护能力。

目录

前言:

一、内网通信原理

MAC 地址

以太网帧格式

二、对端 MAC 地址获取

2.1 ARP 报文格式

2.2 ARP 工作流程

三、ARP 欺骗原理

四、ARP 断网攻击实验

五、ARP 攻击的防御


一、内网通信原理

        在网络通信过程中,当报文经过公网路由到达目标子网后,最终寻址问题就转化为局域网内的主机通信问题。这一过程由数据链路层协议实现,与网络层形成明确分工:

  • 网络层(IP):负责跨网络拓扑的端到端传输。

  • 数据链路层:处理同一广播域内的精确投递。

  • 传输层:提供端到端的连接管理和可靠性保证

关键认识:数据传输是手段而非目的,完成业务交互才是最终目标。

        局域网技术发展初期,各区域使用私有协议。随着网络互联需求增长,逐步统一为以太网、令牌环网等标准化协议。下文将以以太网为例解析通信机制。

MAC 地址

MAC 地址用于标识计算机的唯一性,它以 48 比特位存储,被固化在计算机网卡中,全球唯一

        在局域网内,主机之间的通信处于数据链路层。例如,主机 A 给主机 E 发数据,这个过程所有主机都能接收到(这种现象叫泛洪),但只有目标 MAC 值与自身匹配的主机才会接收数据,其他主机就像“吃瓜群众”。若一个主机接收并非发给自己的数据,这个过程就叫抓包

        试想一下,如果很多台主机同时发数据会发生什么?

  • 以太网中,任何时刻,只允许一台机器向网络发送数据。
  • 如果多台同时发送,会发生数据干扰,称之为数据碰撞
  • 没有交换机的情况下,一个以太网就是一个碰撞域
  • 所有发送数据的主机要进行碰撞检测和碰撞避免

这就是网用的人越多就越卡的原因之一。以太网本质就是共享资源(临界资源),具有互斥属性。

  • 注意:以太网不是具体的网络,而是一种技术标准。
  • 注意:虚拟机MAC地址是模拟的。

以太网帧格式

  • 目的地址:目标主机的 MAC 地址,占 6 字节。
  • 源地址:源主机的 MAC 地址,占 6 字节。
  • 类型:占 2 字节,用来标识有效载荷的类型,0800 表示这是一个 IP 数据报,0806 表示一个 ARP 包等等。
  • CRC:校验报文的完整性,占 4 字节。

        任何协议主要解决两个问题:如何分离数据?如何分用数据?从上述格式可知,以太网帧是固定长度协议,去掉头部和尾部固定字节就能得到有效载荷,而类型字段解决了分用问题。

        报文传到链路层,链路层会根据什么添加源 MAC 地址和目的 MAC 地址呢?它是根据目标 IP 来判断的,如果目标 IP 在该局域网内,就添加对应主机的 MAC 地址;如果不在该局域网内,就添加路由器的 MAC 地址,如下:

但问题是,如何通过目标 IP 得到它的 MAC 地址呢?

二、对端 MAC 地址获取

        如果只知道对方 IP 地址,不知道 MAC 地址,就无法给对方发送数据帧,因此需要一种局域网协议,将 IP 地址转化为对应的 MAC 地址。这种技术称为 ARP 协议,即地址解析协议

        路由器会拿着目标 IP 进行 ARP 操作,在局域网内广播。目标主机收到后进行响应,给出自己的 MAC 地址。

  • 注意:ARP 在数据链路层,属于局域网的通信协议。
  • 注意:ARP 不会向上交付,只在数据链路层工作。

2.1 ARP 报文格式

  • 硬件类型:标明数据链路层协议类型,1 表示以太网,通常都是 1。
  • 协议类型:指要转化的网络协议类型,通常是固定的 0800,表示 IP 地址。
  • 硬件地址长度:通常是 MAC 地址长度,即 6。
  • 协议地址长度:通常是 IP 地址长度,即 4。

:以上四个字段基本都是固定的。

  • OP:标明是 ARP 请求还是 ARP 响应,1 表示请求,2 表示响应(用于分用)。

后面四个字段如上图所示,此处不做解释。

  • 注意:在不知道对端 MAC 地址的情况下,用全 F 填充目标 MAC 字段。
  • 注意:ARP 协议只有报头,因为它不用交付给上层。

        如上所述,以太网报头加上 ARP 请求/应答并不足 46 字节,数据帧太小会影响传递效率。在实际传输中,会在尾部添加一些垃圾数据,使报文达到 46 字节。

2.2 ARP 工作流程

        当报文到达链路层,但不知道对端 MAC 地址时,路由器会向局域网内所有主机广播一个 ARP 请求,所有主机都会接收该请求,然后在 ARP 层匹配 IP 是否为自己的。如果不是,就丢弃该请求。

        如果匹配到 ARP 请求的目的 IP 是自己的,那么该主机会组织一个 ARP 应答,填充自己的 MAC 地址,发送给源 IP 主机(通常是路由器)。

  • 细节:发送 ARP 请求和应答时,接收方的非相关主机都会丢弃报文,但层级不同。ARP 请求是广播,在 ARP 层检测 IP 不匹配才丢弃;ARP 应答是指定主机发送的,在 MAC 帧层发现 MAC 地址不匹配就直接丢弃。

        主机拿到报文后,先看类型字段,如果是 0806,就交给 ARP 层处理。ARP 层先获取 OP 字段,如果是应答,就提取源 IP 和源 MAC 做映射关系

        路由器(或主机)会在一段时间内(2 - 20 分钟)记录下局域网中各 IP 对应的 MAC 地址。再次发送报文时,就不用进行 ARP 请求,直接填充目标 MAC 字段,从而提高效率。储存这个映射关系的叫 ARP 缓存表,每个主机都有。

我们可以在电脑上查看 ARP 缓存表(打开命令提示符,输入 arp -a 指令):

  1. 快捷键 win + r,输入 cmd 回车。
  2. 输入 arp -a 回车,示例如下:
C:\Users\xyk33>arp -a
接口: 192.168.43.189 --- 0x7
Internet 地址         物理地址              类型
192.168.43.1          42-8d-65-18-66-98     动态
192.168.43.255        ff-ff-ff-ff-ff-ff     静态
224.0.0.22            01-00-5e-00-00-16     静态
224.0.0.251           01-00-5e-00-00-fb     静态
224.0.0.252           01-00-5e-00-00-fc     静态
255.255.255.255       ff-ff-ff-ff-ff-ff     静态

为什么不永久记录下来呢?因为 IP 可能随时变动,是动态分配的,MAC 也可能被用户更换。

  • 注意:真正在网络里流动的数据是数据帧。

        在局域网中,任何主机都可能收到 ARP 请求或 ARP 应答。同一层级的路由器也属于一个局域网,它们之间也会进行 ARP 请求和应答,并有自己的ARP缓存表,包括国家之间的路由器。

三、ARP 欺骗原理

正常 ARP 报传输:

        任何局域网内的主机要上互联网,都必须先经过路由器,因此需要知道路由器的 MAC 地址,会向路由器发送 ARP 请求。

        以 A 主机为例,如果有一个中间人(黑客)冒充路由器(伪造路由器 IP)向主机 A 发送 ARP 响应,填充的是中间人自己的 MAC 地址。那么主机 A 发送的报文就会都到达中间人手上,中间人可以把它们丢弃,导致主机 A 上不了网;或者进行篡改后再交给路由器通向互联网。

        不仅如此,中间人还可以向路由器发送 ARP 响应伪造主机 A 的 IP 地址,然后填充自己的 MAC 地址。这样,外网发给主机 A 的信息就会由路由器发给中间人。中间人同样可以对报文进行篡改或丢弃。

第二步:

四、ARP 断网攻击实验

        arpspoof是 ARP 欺骗攻击工具(属于 dsniff 工具包),用于在局域网(LAN)中发起中间人攻击(MITM),通过伪造 ARP 响应包欺骗目标设备,使其网络流量经过攻击者的机器。

基本语法:

  • arpspoof -i <网卡> -t <目标IP> <网关IP>

实验:使用虚拟机 Kali 系统断掉物理机(宿主机)的网。

注意:提前查看物理机是否能正常上网。

1.查看物理机的ip地址(打开命令提示符输入ipconfig指令):

  • win+r回车
  • 输入cmd回车
  • 输入ipconfig指令回车

如果是连接WiFi则查无线局域网适配器WLAN,如果是连线上网查以太网适配器,如下:

虚拟机查ip和mac地址:指令ifconfig。如下:

2.物理机查看网关mac地址(即查看arp缓存表)

  • 输入arp -a指令回车
  • 查看物理机ip(192.168.43.189)所对应网关的mac地址,这一部是为了与攻击后相比较。

如下:

3.使用arpspoof向网关(路由器)发送arp响应如下。

arpspoof -i eth0 -t 192.168.43.189 192.168.43.1

如下:

让它一直运行,不要中断。

4.检验是否能上网,并使用arp -a再次查看arp缓存表的网关mac地址。

        不出以外的话,你的物理机已经上不了网了,而且arp缓存表的网关mac地址也变成虚拟机的mac地址了。如下:

5.要恢复上网在虚拟机上Ctrl+c发送信号终止进程即可。

为什么停止攻击后就能立即恢复?因为上不了网(目标主机不可达)会触发ARP重查。

        以上过程看似很复杂,事实上攻击过程很简单,只用了一行指令。看上去复杂的是因为我们做了详细的验证过程。

五、ARP 攻击的防御

        ARP 攻击的防御方法有很多种,最简单的就是绑定静态的网关 MAC 地址,其次可以使用 ARP 防火墙等。下面讲解静态绑定 MAC 地址的方法。

  1. 在被攻击前获取到网关的 MAC 地址

  2. 使用 netsh i i show in 指令查看对应 WLAN 的索引,示例如下:

  3. 以管理员身份打开命令提示符,输入指令

netsh -c i i add neighbors 索引值 网关IP地址 网关MAC地址

如下:

netsh -c i i add neighbors 7 192.168.43.1 42-8d-65-15-66-98

静态绑定后即使来了arp响应包也不会更新自己的arp缓存表,就无法被攻击。

 非常感谢您能耐心读完这篇文章。倘若您从中有所收获,还望多多支持呀!74c0781738354c71be3d62e05688fecc.png

Logo

助力广东及东莞地区开发者,代码托管、在线学习与竞赛、技术交流与分享、资源共享、职业发展,成为松山湖开发者首选的工作与学习平台

更多推荐