六行代码伪造ARP请求,实现局域网窃听 - APT防御产品

六行代码伪造ARP请求,实现局域网窃听


局域网内伪造arp响应,很早就有了。自从用了Python以后,发现Python的各种库实在是太方便……最近刚好有这个需要,就用Python重新写了几行脚本试了一下。

 

图片1.png

正常网络数据是走的蓝色线条,各主机通过网关连到外网,我们是主机A,要做的是让局域网其他设备的上网数据从A上经过再到网关,绿色粗箭头。原理就是伪造链路层的arp响应,这方面的知识网上很多,大家可以自行百度。

1、 准备工作

Windows上安装python库太不方便,我们用虚拟机来做。我用的虚拟机是ubuntu

 

1、虚拟机的网卡设置选择桥接模式、桥接模式是让虚拟机和我们主机在一个局域网内,这样才好发送伪造的数据包图片2.jpg

 

2、 虚拟机打开ip转发的功能。当其他主机的数据来到我们这里以后,我们要把它转发给网关,否则别人上网就这断了(做坏事就被发现了),当然这一步也可以写程序来实现,Linux系统自带ip转发功能,我们就省事了

命令:sudo vim /etc/sysctl.conf

找到”#nett.ipv4.ip_forward=1” 这一条,把#删除,保存文件并重启。这样ip转发功能就打开了。

打开转发功能后还要有匹配的转发规则。转发规则也是一条命令

sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE 

然后保存规则

sudo iptables-save

 

3、 写脚本伪造arp响应,python做这件事很方便在于有个叫scapy的库,能构造各种数据包,先把它装好 sudo apt-get install python-scapy

脚本内容如下

图片3.png 

由于是伪造,假装是网关发来的所以我们的psrc就写网关的ip地址,pdst这是目标ip,如果想针对某个设备那就写他的ip地址,现在我写了广播地址,发给所有主机。

Hwsrc是我们的mac地址,这里是虚拟机的mac地址,hwdst是目标主机的mac地址,这里我也写了广播地址。根据需要自己改这几个选项就可以了。保存为arp.py

 

Ok现在开始发送sudo python arp.py,每个0.5秒发送一个arp数据包

send.JPG 

4、 抓包看数据

这时候局域网其他主机的数据已经发过来了,可以在虚拟机里或者电脑里用wireshark抓包看数据了,能看到别人上的网址,以及qq号码,或者其他不加密的数据。

data.JPG 

这是某人登了百度

qq.JPG 

这是有人在用qq聊天,qq号是不加密的

 

其实对于加密数据,也可以看到的,只是很麻烦,有兴趣可以自己再去研究。




转载请注明出处 APT防御产品 » 六行代码伪造ARP请求,实现局域网窃听

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址