news 2026/6/3 7:11:23

ARP 的具体过程与 ARP 欺骗 [ 网络加餐 ]

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
ARP 的具体过程与 ARP 欺骗 [ 网络加餐 ]

本次加餐课程主要讲解两大核心内容:

  • 一是ARP协议的完整工作过程,即IP地址转换为MAC地址的实现原理;

  • 二是ARP欺骗原理,也就是通过ARP欺骗实现局域网中间人攻击的核心逻辑。

本次仅讲解纯理论原理,不涉及实操攻击手段。

前提知识补充与回顾:

"所有跨网段的网络通信,当拆解为独立的每一跳时,每一跳本质上都是在某个局域网内完成的数据链路层(MAC层)通信。"

在网络通信中,数据需要从上到下逐层封装传输,最终在数据链路层必须依靠MAC地址完成局域网内的交付,而我们只能在网络层拿到目的 IP地址,这里就出现了一个关键缺口。

  • 第一种场景:当通信目标主机IP和本机不在同一网段时,我们没法直接发给目标主机,只能先查路由表,找到下一跳路由器的IP。但即便知道了下一跳IP,要在局域网里把数据发过去,还是必须拿到这台路由器的MAC地址,否则无法封装MAC帧、无法交付。

  • 第二种场景:报文经过多跳路由,终于到达目标主机所在的局域网,此时路由器只知道目标主机的IP,却不知道它的MAC地址,同样没法在局域网里精准找到这台主机、完成最后一跳交付。


注意:这里的每一跳,都是为了到达指定路由器,并不是说到达内网的某一个主机,可以想想,QQ 为什么要将服务器部署在公网中,为什么需要 NAT 技术,我们聊天是将消息传输到远端处于 公网 IP 的 QQ 服务器,况且我们在代码中填写的本来就是 公网 IP,然后是对端和这个服务器本来有连接了,再有 NAT 地址转化表来实现消息的推送!更具体的过程是:

1. 先把角色定死(跨国聊天)

  • 你:在中国,家里 / 手机内网(192.168.x.x 或运营商内网),没有公网 IP,只有路由器 / 基站有公网 IP。
  • 外国好友:在国外,同样是内网设备,他那边也只有路由器有公网 IP。
  • 聊天软件服务器(微信 / 电报 / WhatsApp):公网服务器,有固定公网 IP,双方都能连到它。

2. 你发消息给外国好友:真实流程(不是直接 P2P)

第一步:你 → 公网服务器(一定能通)

你代码 / 软件里填的是聊天服务器的公网 IP,不是好友 IP。

你的数据包:

  • 源:你的内网 IP: 端口 → 路由器 NAT 改成路由器公网 IP: 随机端口
  • 目的:服务器公网 IP: 服务端口

互联网只认公网 IP,一路送到服务器。

第二步:服务器 → 外国好友(关键点来了!)

好友是内网,外网不能主动发起连接到内网(路由器默认挡住陌生入站包)。

所以:服务器不能直接 “推” 给好友,只能:

  1. 好友先主动连服务器(登录、心跳),建立一条 “长连接”;
  2. 好友路由器记录:路由器公网IP:端口 → 好友内网IP:端口(NAT 映射表);
  3. 服务器把你的消息发给这条长连接
  4. 好友路由器收到目的是自己公网 IP: 端口的包,查 NAT 表,转发给好友内网 IP
  5. 内网里再用 ARP 找 MAC,精确到好友主机。

第三步:好友回复你(对称逻辑)

好友发消息 → 他路由器 NAT → 公网服务器 → 你的长连接 → 你路由器 NAT → 你内网主机。


3. 所以你们可能困惑的:“最强也只能到好友的公网路由器啊,怎么到内网主机?”

答:靠 “主动连接 + NAT 映射表 + 长连接”,不是外网主动敲门,是内网先开门。

  • 外网主动发 → 路由器:不认识,丢包(安全机制);
  • 内网先连外网服务器 → 路由器记好:这个端口是给这个内网主机的
  • 服务器回包 → 路由器一看:目的端口在表里 → 直接转给内网主机。

4. 所以什么时候才是 “直接发到对方路由器公网 IP”?

只有两种情况:

  1. 对方是公网服务器(云主机):IP 就是主机 IP,直接到,无内网转发;
  2. 做了端口映射 / 内网穿透:路由器上手动配好 “公网端口 → 内网主机”,外网才能主动进来(家用聊天软件不会这么做,不安全)。

还有其实对于说 IP 和 MAC,为啥不都使用 IP,其实要也可以,但是带来的代价是灾难的,不仅仅是效率方面,还有一些设计,以及耦合方面。【可以自行查阅 AI】


所以整条传输链路都是如此:每经过一台路由器,都要先查路由表得到下一跳IP,再确认双方是否在同一网段,接着必须把IP转成MAC,才能封装数据继续转发。如果没有IPMAC的转换,数据链路层就无法识别接收方,整个传输链条就会断掉。

所以,局域网内必须有一种协议,专门负责把已知的IP地址解析成对应的MAC地址,用来完成逐跳转发和最后交付,这个协议就是ARP 地址解析协议

我们已经通过路由表查到了下一个路由器的 IP 地址,为什么不能把报文直接发给路由器,而是先要知道它的MAC地址呢?

原因很简单,路由表管的是网络IP层,真正在局域网里传送数据的是数据链路层 (以太网 /MAC),两层分工不一样。路由表查到下一跳IP,只是告诉我们 “逻辑上要发给这个IP”;但报文最终要在局域网里传输,必须封装成以太网帧,而以太网帧只认MAC地址,不认IP地址。

同样数据链路层也看不懂IP地址,它只能识别源MAC、目的MAC,只能靠MAC地址判断这个帧该发给谁。所以就算我们知道了下一跳路由器的IP地址,也没法直接发,必须先通过ARP地址解析查到这个路由器IP地址对应的MAC地址,把MAC填进帧头,链路层才能把数据真正送到下一跳路由器的网卡上。

我们再重新梳理一下:也就是最开始在网络IP层,我们已经拿到数据报文了,也通过当前主机的路由表查到了下一跳路由器的IP地址,知道逻辑上要发给谁。但网络层往下交付,必须交给数据链路层并封装成MAC帧,而以太网MAC帧只认MAC地址、不认IP地址,因为它需要物理上的目标地址才能在局域网里传输。

所以我们必须把我们已经知道的下一跳路由器的IP地址转化成对应MAC地址,这个转换就是ARP协议做的事。拿到MAC地址后,数据链路层把源MAC、目的MAC封装进帧头,再把IP报文包在里面。这时我们就同时拥有:

网络层:下一跳IP(用来路由选路) 数据链路层:下一跳MAC(用来局域网实际投递) 之后就能把封装好的MAC帧,在局域网里精准转发给下一跳路由器了。

这里再补充一下路由表的相关知识:

我们日常使用的电脑、手机等主机,和路由器一样,内部同样拥有路由表,并不是只有路由器才具备路由功能主机的路由表全程只记录网络层IP地址相关的路由信息,不会存储MAC地址,它的核心任务就是判断:收到的报文该从本机哪个网卡发出、下一跳该转发给哪个IP地址。

主机判断目标主机是否与自己同网段、确定下一跳IP的逻辑是依靠本机IP地址 + 子网掩码进行计算比对:当主机要发送报文时,会先用子网掩码,分别对自身IP和目标IP做运算,判断二者是否处于同一局域网网段。

  • 如果目标主机和本机处于同一个网段,路由表会匹配到直连路由,报文直接在当前局域网内交付,主机通过ARP查询目标IP对应的MAC地址,封装成MAC帧后,直接发给局域网内的目标主机。

  • 如果目标IP不在同一网段,主机路由表会匹配默认路由,也就是当前发送主机所在局域网的出入口路由器(网关)。当本机路由表里所有网段规则都匹配不到目标IP时,就会把报文统一发给这个默认网关 (出入口路由器),由出入口路由器继续向外转发,去外网寻找目标主机。因此这个默认路由里记录的IP,就是局域网网关、也就是出入口路由器的内网IP

注意:这套同网段计算逻辑不分内网 / 公网,内网、公网主机全部通用这套算法,绝大多数场景你主机算出来同网段 =内网局域网

① 内网场景(你图里 192.168.30.5)

本机 IP:192.168.30.5、掩码255.255.255.0目标192.168.30.3,掩码与运算后网段一致192.168.30.0同内网网段,ARP 查 MAC 直发,不走网关

② 访问公网服务器(跨网段)

目标是聊天服务器公网 IP,掩码运算后网段和本机 192.168.30.0 不一致→跨网段,匹配默认路由,数据包发给网关路由器

云服务器(自带公网 IP),同样拿「本机公网 IP + 子网掩码」和回包目的 IP 做与运算:

  • 同网段:内网 ARP 直投;
  • 不同网段:丢给上层运营商网关。

IP + 掩码算网段是通用底层规则,只用来区分「是不是本地局域网」,和 IP 是私网 / 公网属性没关系: 算出来同网段 = 当前二层局域网(大概率内网,少数服务器机房局域网是公网网段);不同网段 = 走网关跨网转发。

路由表只完成网络层的IP选路,确定报文该交给哪一个IP,而不会处理数据链路层的地址。至于这个下一跳IP对应的物理MAC地址,路由表并不负责记录,会交给ARP协议完成IPMAC的地址解析,拿到MAC地址后,主机再封装成完整以太网帧,通过网卡真正把数据发送出去。

电脑路由表里记录的是目标网段、下一跳IP、本机出口网卡,只处理网络层IP信息,不存MAC地址。路由表来源分为三类:

  • 第一,直连路由:电脑配置本机IP+ 子网掩码后,系统自动算出本机所在局域网网段,生成直连路由,表示该网段内所有IP都在本地局域网,可直接发送。

  • 第二,默认路由:目标网段记为0.0.0.0/0,代表所有路由表中匹配不到的目标IP,统一交给网关 (出入口路由器内网IP) 转发,由路由器去往其他网段寻找目标主机。

  • 第三,手动静态路由或动态路由协议学习,家用电脑很少用到。整个发包流程是:主机先发数据包查询路由表,确定下一跳IP;再通过ARP协议把下一跳IP解析成MAC地址;最后封装成MAC帧交给数据链路层发送。

首先我们来明确一下路由表中目标网段、下一跳 IP、本机出口网卡这三个部分的作用:

目标网段的作用

目标网段用来匹配你要发的目标IP,判断这条路由规则管不管它。比如你的直连路由目标网段是192.168.2.0/24,意思就是:凡是目标IP属于这个网段,都走这条规则,直接在局域网发;默认路由目标网段是0.0.0.0/0,意思是:前面所有网段都匹配不上时,所有剩下的IP都走这条规则,发给网关。它就是路由表的「筛选条件」,用来决定用哪一条路由。

下一跳 IP 怎么来的

下一跳IP不是拆报文现找,是路由表规则里预先写死的: 直连路由:没有下一跳IP,直接局域网投递; 默认路由:下一跳IP固定写出入口路由器内网IP(如192.168.2.1); 静态路由:你手动填、或 DHCP / 动态协议下发好的。 你发包时,先拿目标IP去匹配目标网段,匹配成功后,路由表直接告诉你:下一跳发往这个IP、从本机这个网卡出去。下一跳IP是规则自带的,不是拆包现算。

本机出口网卡

就是你电脑往外发数据走哪个硬件接口:比如你电脑有有线网卡、无线网卡,路由表会写明:这条路由,从有线网卡发或从无线网卡发。数据最终从这个网卡出去,再封装MAC帧、发给下一跳IP对应的MAC地址。

我们在来看这幅图,用户 A(192.168.2.2)要给用户 B(172.168.2.2)发数据时,会先查自己的路由表。它发现目标IP和自己不在同一网段,于是匹配到默认路由,下一跳就是局域网的出入口路由器(192.168.2.1)。接下来,用户 A 通过ARP协议,拿到出入口路由器左侧网口的MAC地址(macLeft),把数据封装成MAC帧,源MAC是自己的macA,目的MACmacLeft,再把这个帧发送给出入口路由器。

出入口路由器收到数据帧后,会先解封装,拆掉MAC帧头,拿到里面的IP数据包,再读取其中的目标IP172.168.2.2)。出入口路由器再查自己的路由表,判断目标IP不在左侧局域网,需要转发到右侧网段。于是,路由器通过ARP协议,拿到下一跳设备(或目标主机所在局域网的路由器)的MAC地址(这里就是右侧网口macRight对应的目标MAC),把IP数据包重新封装成新的MAC帧:源MAC变成路由器右侧网口的macRight,目的MAC变成目标设备的MAC,再把这个新帧发往下一跳。

这个过程会在每一台路由器上重复:每到一台设备,都先解封装MAC帧,拿到IP报文中的目的IP地址,再查路由表找到下一跳IP,然后通过ARP拿到对应的MAC地址,重新封装MAC帧再发送,一站一站接力传递。

直到数据到达用户 B 所在局域网的最后一台出入口路由器。这台路由器查路由表,发现目标IP(172.168.2.2)和自己的右侧网口(172.168.2.1)在同一网段,于是它直接通过ARP协议,查到用户 B 的MAC地址(macB),把IP数据包封装成源MACmacRight、目的MACmacBMAC帧,直接发送给用户 B。用户 B 收到后,逐层解封装,最终把数据交付给应用层,完成通信。

真正的路由器拥有多个独立网口,每个网口可以单独配置不同网段的IP地址,分别对接不同的局域网,这也是路由器能够实现跨网段转发的核心前提。路由器不会像交换机一样,对未知数据向所有端口泛洪发送,它的转发逻辑极其精准:当数据包从某一个网口进入路由器后,路由器会解封装数据帧,读取报文的目标IP地址,再查询自身路由表。路由表会明确匹配出该目标IP对应的唯一出口网口,路由器只会在这个指定网口,通过ARP解析对应设备的MAC地址、重新封装数据帧并转发数据,绝对不会向自身其他闲置网口发送数据。简单来说,路由器多个网口各司其职,每个网口对应一个独立网段,依靠路由表精准选路,实现不同局域网之间的数据隔离与定向转发。

一、ARP 协议基础认知

1.1 协议层级定位

在TCP/IP四层协议栈中,ARP协议不属于网络层,也不属于传输层、应用层,隶属于数据链路层。它位于MAC帧协议之上、IP协议之下,是一层隐性的地址管理协议,上层的网络层、传输层、应用层完全感知不到它的存在。

简单来说,MAC帧是数据链路层的基础承载协议,而ARP是同层级内的辅助解析协议,专门负责IP地址与MAC地址的映射解析,是局域网通信的底层支撑。

1.2 ARP 协议核心作用

IP地址是网络层的逻辑地址,用于跨网络路由转发;MAC地址是数据链路层的物理地址,仅用于局域网内数据帧传输。数据包在网络中转发时,源IP、目的IP全程不变,而源MAC、目的MAC每经过一跳设备就会发生变化

路由器转发数据包时,仅能通过IP报文获取目标主机的IP地址,但无法直接获取其MAC地址。而局域网内的数据传输必须封装MAC帧才能完成,因此需要ARP协议,将已知的目标IP地址,解析为对应的目标MAC地址,完成数据帧封装与局域网转发。

1.3 ARP报文核心字段解析

ARP报文依附于MAC帧传输,MAC帧头部为数据链路层封装,帧载荷部分为完整的ARP报文,核心关键字段如下:

  1. 硬件类型(2字节):标识底层网络硬件类型,值为1代表以太网(当前局域网主流类型),适配以太网、令牌环网、无线局域网等不同硬件网络。

  2. 协议类型(2字节):标识需要解析的上层协议地址,值为0800代表IPv4地址,即实现“IP地址转MAC地址”。

  3. 硬件地址长度(1字节):硬件地址即MAC地址,以太网固定为6字节,统一填6。

  4. 协议地址长度(1字节):协议地址即IP地址,IPv4固定为4字节,统一填4。

  5. OP操作字段(2字节)核心区分字段,值为1代表ARP请求,值为2代表ARP应答,是主机判断报文类型的唯一依据。

  6. 发送端MAC地址、发送端IP地址:记录报文发起方的物理地址与逻辑地址,由请求方主动填充。

  7. 目的MAC地址、目的IP地址:记录目标主机的地址,请求阶段未知目标MAC,默认填充全F(广播地址),仅填充已知的目标IP地址。

对于这的目的IP地址,分两种场景对应:

1、同网段通信(本机→同局域网电脑)

ARP 目的 IP = 对端主机内网 IP,ARP 解析拿到对方主机 MAC,直接二层发给目标终端。

2、跨网段通信(本机→外网,需要走网关)

本机和目标 IP 不在一个网段,本机 ARP 查询的目的 IP 是【网关 LAN 口 IP】

  • 此时 ARP 目的 IP = 网关 IP,解析出网关 MAC
  • IP 包头的目的 IP不变,依旧是远端最终目标主机的公网 IP;
  • 数据先封装 MAC 发给网关,后续由路由器跨网转发去找最终目的 IP。

ARP 报文内的目的 IP(你图最右字段):用来查 MAC 的 IP同网段 = 终端 IP;跨网段 = 网关 IP。

内层 IP 数据包的目的 IP:全程不变的最终收件 IP永远是你代码填写的目标主机 IP,从头到尾跨互联网不会改动(NAT 除外)。

配套MAC帧头部关键字段:帧类型字段,0800代表载荷为IP报文,0806代表载荷为ARP报文,设备通过该字段判断将报文交付给IP层或ARP层处理。

二、ARP协议完整工作流程(实战场景)

2.1 场景设定

外网数据包发送至路由器R,报文目标IP为局域网内主机E的IP(IPe)。路由器可通过路由表确定报文需转发至主机E,但路由器无主机E的ARP缓存,未知其MAC地址(MACe),无法封装MAC帧,因此触发ARP解析流程。

核心前提:局域网内所有主机(A、B、C、D、E)和路由器均支持TCP/IP协议栈,均可发起、接收、处理ARP报文。任何主机既可以主动向他人发起ARP请求,也可以接收他人的ARP请求与应答。

2.2 第一步:路由器构建并发送ARP广播请求

路由器在自身ARP层构建标准ARP请求报文,字段填充规则:

  • 硬件类型=1(以太网)、协议类型=0800(IPv4)、硬件地址长度=6、协议地址长度=4;

  • OP字段=1(标记为ARP请求);

  • 发送端MAC=路由器MAC(MACr)、发送端IP=路由器IP(IPr);

  • 目的MAC=全F(广播地址)、目的IP=主机E的IP(IPe)。

ARP报文构建完成后,向下交付至数据链路层,封装MAC帧头部:

  • MAC帧源地址=MACr,目的地址=全F(广播);

  • 帧类型=0806(标记载荷为ARP报文)。

封装完成后,路由器将数据帧以广播形式发送至整个局域网,局域网内所有主机(A、B、C、D、E)均可接收该报文。

2.3 第二步:局域网主机批量处理ARP请求

所有主机接收数据帧后,统一执行解封装流程:剥离MAC帧头部,通过帧类型0806判定为ARP报文,将载荷交付至本机ARP层处理。所有主机处理ARP报文的第一步:优先判断OP字段,确认是请求还是应答。

本次报文OP=1,为ARP请求。随后各主机对比报文中的目的IP地址

  • 主机A、B、C、D:自身IP与目标IPe不匹配,直接在ARP层丢弃报文,不做任何响应;

  • 主机E:自身IP与目标IPe匹配,认定该请求是针对自身,保留报文并准备构建应答。

2.4 第三步:主机E构建并发送ARP单播应答

主机E在ARP层构建ARP应答报文,字段填充规则:

  • 基础字段不变:硬件类型=1、协议类型=0800、地址长度6/4;

  • OP字段=2(标记为ARP应答);

  • 发送端MAC=主机E的MAC(MACe)、发送端IP=主机E的IP(IPe);

  • 目的MAC=路由器MAC(MACr)、目的IP=路由器IP(IPr)。

应答报文向下封装MAC帧:帧类型依旧为0806,源MAC=MACe,目的MAC=MACr。此时无需广播,直接以单播形式发送给路由器。

局域网内其他主机收到该应答帧后,因MAC目的地址与自身不匹配,直接在数据链路层丢弃报文,仅路由器可接收处理。

2.5 第四步:路由器更新ARP缓存,完成通信

路由器接收应答报文,解封装后交付至ARP层,优先读取OP字段,确认OP=2为有效应答。随后解析报文内容,成功获取IPe与MACe的一一映射关系

至此,ARP解析流程完成:路由器将原本无法封装的IP报文,封装上MACe目的地址,完成局域网转发,实现路由器与主机E的正常通信。

三、ARP缓存机制详解

3.1 缓存作用

若每次通信都重复执行完整的ARP广播、应答流程,会极大占用局域网带宽、降低通信效率。因此所有主机、路由器都会维护一张ARP缓存表,存储局域网内IP地址与MAC地址的映射关系。

首次ARP解析完成后,设备会永久缓存该映射条目,后续同一目标IP的通信,直接查询缓存获取MAC地址,无需重复发起ARP请求。

3.2 缓存时效

ARP缓存并非永久有效,通用时效为20-30分钟,不同系统可自定义配置。

设置时效的核心原因:局域网设备是动态变化的,设备断开、更换网卡、修改IP都会导致IP与MAC的映射关系变更。若缓存永久保存,会出现映射失效、设备无法通信的问题。定时过期可自动清理失效条目,保证映射关系实时准确。

3.3 缓存查看方式

Windows、Linux系统均可通过arp -a命令查看本机ARP缓存表,直观看到当前已缓存的IP-MAC映射关系。通过批量ping局域网网段主机,可触发全网ARP解析,获取局域网所有在线设备的映射信息。

C:\Users\A1983>arp -a Interface: 192.168.44.1 --- 0x3 Internet Address Physical Address Type 192.168.44.254 00-50-56-fe-a2-df dynamic 192.168.44.255 ff-ff-ff-ff-ff-ff static 224.0.0.22 01-00-5e-00-00-16 static 224.0.0.251 01-00-5e-00-00-fb static 224.0.0.252 01-00-5e-00-00-fc static 239.255.255.250 01-00-5e-7f-ff-fa static 255.255.255.255 ff-ff-ff-ff-ff-ff static Interface: 192.168.10.1 --- 0x6 Internet Address Physical Address Type 192.168.10.254 00-50-56-fa-51-03 dynamic 224.0.0.22 01-00-5e-00-00-16 static 224.0.0.251 01-00-5e-00-00-fb static 224.0.0.252 01-00-5e-00-00-fc static 239.255.255.250 01-00-5e-7f-ff-fa static 255.255.255.255 ff-ff-ff-ff-ff-ff static Interface: 10.106.52.7 --- 0x12 Internet Address Physical Address Type 10.106.0.1 80-05-88-d5-c8-99 dynamic 10.106.255.255 ff-ff-ff-ff-ff-ff static 224.0.0.22 01-00-5e-00-00-16 static 224.0.0.251 01-00-5e-00-00-fb static 224.0.0.252 01-00-5e-00-00-fc static 239.255.255.250 01-00-5e-7f-ff-fa static 255.255.255.255 ff-ff-ff-ff-ff-ff static

四、RARP协议简单补充

RARP即逆地址解析协议,原理与ARP相反,作用是通过已知MAC地址,解析对应的IP地址

RARP实现逻辑简单,无需复杂的广播匹配,仅需单播询问即可,且当前网络场景中极少使用,因此仅做概念了解,不深入讲解。

五、ARP欺骗原理(中间人攻击)

5.1 正常通信基础场景

局域网内存在主机A、网关路由器R:

  • 主机A缓存:路由器IP(IPr)对应路由器MAC(MACr);

  • 路由器缓存:主机A IP(IPa)对应主机A MAC(MACa);

  • 正常通信时,主机A的外网数据先发送至路由器,路由器转发至外网,双向通信正常。

5.2 欺骗核心前提

ARP协议存在核心漏洞:设备接收ARP应答时,不会验证应答的合法性,只会无条件覆盖更新本地ARP缓存,且无需提前发起ARP请求,主动发送的ARP应答也会被设备接纳。

同时ARP缓存遵循「最新覆盖旧数据」原则,新的应答报文会直接替换原有映射条目。

5.3 ARP欺骗完整过程

局域网内接入攻击主机M(中间人),拥有独立IP(IPm)、MAC(MACm),通过伪造虚假ARP应答实现双向欺骗:

欺骗主机A:主机M伪造ARP应答报文,冒充网关路由器,告知主机A:「网关IPr对应的MAC地址为MACm」。主机A接收应答后,更新ARP缓存,将网关的MAC地址错误记录为攻击主机的MAC。

欺骗路由器R:主机M再次伪造ARP应答报文,冒充主机A,告知路由器:「主机A的IPa对应的MAC地址为MACm」。路由器同步更新ARP缓存,错误记录主机A的MAC为攻击主机MAC。

欺骗完成后,双向映射关系全部被篡改:

  • 主机A:IPr → MACm(错误映射);

  • 路由器R:IPa → MACm(错误映射)。

5.4 中间人劫持通信效果

欺骗完成后,主机A所有外网流量都会优先发送给攻击主机M,而非真实路由器。攻击主机M收到报文后,可直接转发给真实路由器,路由器回包时也会先发送给M,再由M转发给主机A。

整个通信过程中,主机A和路由器均无法感知中间人M的存在,所有双向通信数据都会经过M转发,攻击者可窃取、监听、篡改通信数据,这就是典型的ARP中间人攻击

ARP欺骗是局域网最常用的中间人攻击方式,核心原理就是利用ARP协议无验证、动态更新缓存的漏洞,伪造虚假映射关系劫持流量。

ARP 中间人欺骗四大核心危害

1. 数据窃听(最基础危害)

主机 A 上网所有明文数据(账号密码、Cookie、聊天明文、表单信息)全经过攻击机 M,攻击者直接抓包抓取:网页登录密码、银行卡账号、邮箱账号、内网传输文件。HTTPS 虽加密内容,但可窃取域名、访问记录。

2. 数据篡改、钓鱼劫持

M 转发报文前可修改数据包:

  1. 网页劫持:A 访问正常网站,M 篡改响应,跳转钓鱼页面(高仿支付宝、网银、企业 OA),骗取账号密码;
  2. 文件投毒:A 下载软件 / 文档,M 替换文件为捆绑木马的恶意程序;
  3. 篡改支付链接,跳转虚假收款地址。

3. 断网 DOS 攻击(单向 ARP 欺骗)

攻击者伪造 ARP:把网关 IP 绑定一个无效 MAC,主机 A 的流量全发往不存在的设备,A 直接断网无法上网,造成局域网大面积瘫痪。

4. 内网横向渗透

拿到一台主机流量权限后,利用抓取的凭据、会话 Cookie,继续对内网其他设备实施 ARP 欺骗,逐步控制全局域网终端、服务器,窃取服务器机密数据、业务资料。

顺带补充防护要点

  1. 网关 / 主机静态绑定 ARP(IP-MAC 固化,不自动学习 ARP);
  2. 交换机开启 DAI(动态 ARP 检测)、端口安全;
  3. 部署内网防火墙、终端安全软件拦截异常 ARP 报文。
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/3 7:09:48

STM32F103C8T6驱动MFRC522:从硬件SPI踩坑到软件模拟的完整避坑指南

STM32F103C8T6与MFRC522通信实战:从硬件SPI失效到软件模拟的完整解决方案当你在STM32平台上尝试驱动MFRC522 RFID模块时,是否遇到过这样的场景:硬件SPI配置看似完美,示波器波形也正常,但模块就是毫无反应?这…

作者头像 李华
网站建设 2026/6/3 7:09:46

Linux下用libuvc驱动USB摄像头:从权限问题到实时预览的完整避坑指南

Linux下用libuvc驱动USB摄像头的完整实践指南 第一次在Linux系统下连接USB摄像头时,那种期待又忐忑的心情我至今记忆犹新。作为一个长期在嵌入式领域工作的开发者,我本以为这会是件简单的事——插上设备,调用几个API,图像就能流畅…

作者头像 李华
网站建设 2026/6/3 7:08:59

云服务智能监控实战:从数据采集到AI辅助根因分析

1. 项目概述:从“看”到“懂”的云服务监控演进“监控”这个词,在云服务领域已经存在了太多年。从最早的服务器宕机告警,到后来的应用性能指标(APM)追踪,我们似乎一直在“看”着系统运行。但不知道你有没有…

作者头像 李华
网站建设 2026/6/3 7:02:17

OpCore-Simplify:三分钟搞定OpenCore EFI配置的黑苹果智能助手

OpCore-Simplify:三分钟搞定OpenCore EFI配置的黑苹果智能助手 【免费下载链接】OpCore-Simplify A tool designed to simplify the creation of OpenCore EFI 项目地址: https://gitcode.com/GitHub_Trending/op/OpCore-Simplify 还在为复杂的OpenCore配置而…

作者头像 李华
网站建设 2026/6/3 7:01:52

下一代数据科学家的核心能力与实战路径:从业务翻译到系统工程

1. 数据科学家的“通缉令”:一场正在发生的行业变革最近和几个在头部科技公司做数据科学负责人的朋友聊天,大家不约而同地提到一个现象:招聘网站上挂着“数据科学家”的岗位越来越多,但真正能通过面试、符合团队期望的候选人却凤毛…

作者头像 李华