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
单项攻击
- 只欺骗靶机,但是不影响网关
sudo arpspoof -i eth0 -t target 网关ip
sudo arpspoof -i eth0 -t 192.168.159.136 192.168.159.2
目标机器视角:

直接搜索网页一直转,网ip,mac地址都在,结束攻击之后正常恢复上网
- 欺骗全网段所有主机,容易被发现
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则不会
Comments