今天的实验目的就是利用其原理上的缺陷进行网络攻击。

网络拓扑
如上图所示,2台路由器和攻击者(我用的是linux)连在同一个局域网里,实验中要对R1进行ARP欺骗,使R1认为R2的MAC地址是攻击者的MAC地址(R1以为把数据包发给R2,但其实都发到攻击者那里了)。
先看一下3台设备的真实MAC地址:

R1正常ARP缓存
上图是在R1上正常ping通R2和攻击者后缓存的ARP信息。
R1:ca01.2828.0000
R2:ca02.2434.0000
攻击者:0800.27d6.9d83
在Linux上安装Scapy: pip3 install scapy-python3(和以前的文章一样,主要目的是简单演示,有些没有介绍到的细节请自行上网查询)如果你想学习Python可以来这个群,首先是四七二,中间是三零九,最后是二六一,里面有大量的学习资料可以下载。

Python所有代码
如上图所示代码(为方便初学者学习,我尽可能的精简代码,只使用能够满足实验需求的代码),前面几行是定义了需要用到的IP和MAC地址,不多做解释,主要看后面两行:
pkt = Ether(src=Hack_MAC, dst=R1_MAC) / ARP(hwsrc=Hack_MAC, psrc=R2_IP,hwdst=R1_MAC,pdst=R1_IP,op=2)
这行代码是构造一个ARP包,有源IP,源MAC,目的IP,目的MAC。目标是发往R1,源IP冒充R2,也很容易理解。注意最后有个op=2,这个op的含义:1表示ARP请求,2表示ARP应答(参考上篇文章里面的抓包图片,这里就不再贴图了)
sendp(pkt,iface='enp0s3')这行代码是将刚才构造的包从enp0s3这个网卡发送出去。
现在运行Python脚本:

执行脚本
可以看见,发送了一个ARP应答包。
现在再看R1上的ARP缓存:

实验结果
R1上ARP缓存已经被修改,错误的指向了攻击者,已经达到(暂时)欺骗的目的,实验完成。(我就不说ARP攻击有什么用了...)
最后再说明一次,文章只是简单的演示,会有不严谨的地方,只要能达到实验效果即可。想深入学习的同学可自行研究,完善代码。
Python学习交流群 472309261