ARP协议是如何被黑客利用的?深入剖析内网劫持原理
本文详细解析了内网通信原理及ARP协议的工作机制。首先介绍了局域网通信中网络层与数据链路层的分工,阐述了MAC地址的作用和以太网帧格式。重点讲解了ARP协议如何实现IP到MAC地址的转换,包括ARP报文格式、工作流程及缓存表机制。文章还揭示了ARP欺骗攻击原理,并通过实验演示了如何利用arpspoof工具实施ARP断网攻击,最后提出绑定静态MAC地址等防御措施。全文由浅入深地剖析了局域网通信的关键
前言:
本文深入剖析内网通信原理与ARP协议工作机制,从网络分层协作(数据链路层寻址、网络层路由)到MAC地址与以太网帧的核心作用,系统讲解ARP协议的地址解析流程、缓存机制及安全风险,并通过Kali Linux下的arpspoof实验演示ARP欺骗攻击,最后提出绑定静态MAC地址等防御措施。期待本文能帮助您理解局域网通信本质,掌握协议分析及安全防护能力。
目录
一、内网通信原理
在网络通信过程中,当报文经过公网路由到达目标子网后,最终寻址问题就转化为局域网内的主机通信问题。这一过程由数据链路层协议实现,与网络层形成明确分工:
-
网络层(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
指令):
- 快捷键
win + r
,输入cmd
回车。 - 输入
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 地址的方法。
-
在被攻击前获取到网关的 MAC 地址。
-
使用
netsh i i show in
指令查看对应 WLAN 的索引,示例如下: -
以管理员身份打开命令提示符,输入指令:
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缓存表,就无法被攻击。
非常感谢您能耐心读完这篇文章。倘若您从中有所收获,还望多多支持呀!
更多推荐
所有评论(0)