Quantcast
Channel: CodeSection,代码区,Python开发技术文章_教程 - CodeSec
Viewing all articles
Browse latest Browse all 9596

使用Python进行简单的ARP攻击

$
0
0

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


使用Python进行简单的ARP攻击

网络拓扑

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

先看一下3台设备的真实MAC地址:


使用Python进行简单的ARP攻击

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进行简单的ARP攻击

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脚本:


使用Python进行简单的ARP攻击

执行脚本

可以看见,发送了一个ARP应答包。

现在再看R1上的ARP缓存:


使用Python进行简单的ARP攻击

实验结果

R1上ARP缓存已经被修改,错误的指向了攻击者,已经达到(暂时)欺骗的目的,实验完成。(我就不说ARP攻击有什么用了...)

最后再说明一次,文章只是简单的演示,会有不严谨的地方,只要能达到实验效果即可。想深入学习的同学可自行研究,完善代码。

Python学习交流群 472309261


Viewing all articles
Browse latest Browse all 9596

Trending Articles