Python渗透测试编程技术——拒绝服务攻击

一、数据链路层的拒绝服务攻击

方法一:攻击的工具 –macof

Usage: macof[-s src][-d dst][-e tha][-x sport][-y dport][-i interface][-n times]
root@kali:~# macof

方法二:交换机成为 “集线器”

  1. 构造随机MAC和IP,scapy模块中的RandMAC()和RandIP()可以很方便地实现这一点,也可以生成固定网段IP,如 RandIP(“192.168.1.*”)。在这里插入图片描述
    运行结果:在这里插入图片描述
    构造其他形式的随机包:在这里插入图片描述
  2. 数据包中包含指定的源IP和MAC,交换机会记录数据中的ARP包。
    Ether(src=RandMAC(),dst=“FF:FF:FF:FF:FF:FF”)/ARP(op=2,scr=“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()
    在这里插入图片描述

二、网络层的拒绝服务攻击

网络层的协议包括ARP、IP和ICMP等,平时检测网络连通情况时使用的Ping命令就是基于ICMP的。

向目标连续发送这种ping的方式来消耗目标主机的资源在这里插入图片描述

方法一:提高发送到目标的数据包的数量

一是同时使用多台计算机发送ICMP数据包();
二是提高发送的ICMP数据包的速度;
三是使用 随机地址 不断向目标发送ICMP包;
四是向不同的地址不断发送以受害者的IP地址为源IP地址的数据包。这种攻击模式里,最终淹没目标的洪水不是由攻击者发出的,也不是伪造IP发出的,而是正常通信的服务器发出的。

方法二:模拟出一个随机IP地址

i.src=“%i.%i.%i.%i” %(random.randint(1,254),random.randint(1,254),random.randint(1,254),random.randint(1,254))
id.dst=""
send(IP(dst=“1.2.3.4”)/ICMP())
在这里插入图片描述
使用WireShark来捕获发出的数据包,可以看到快速地以1.1.1.1向各个地址发送ICMP请求,这个地址在收到了请求之后,很快就会向1.1.1.1发回应答。这就是第三种攻击方式。在这里插入图片描述

三、传输层的拒绝服务攻击

TCP(Transmission Control Protocol,传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议。

  • 基于TCP的拒绝攻击方式有两种:
    一种是和目标端口完成三次握手,建立一个完整连接;
    另一种是只和目标端口完成三次握手中的前两次,建立的是一个不完整的连接。

攻击方会向目标端口发送大量设置了SYN标志位的TCP数据包,受攻击的服务器会根据这些数据包建立连接,并将连接的信息存储在 连接表 中,而攻击方不断地发送SYN数据包,很快就会将连接表填满,此时受攻击的服务器就无法接收新来的连接请求了。在这里插入图片描述

攻击过程

  1. 使用伪造的IP地址作为源地址,产生随机地址的方法:
    pdst= “%i.%i.%i.%i” % (random.randint(1,254),random.randint(1,254),random.randint(1,254),random.randint(1,254))

  2. 攻击目标时使用TCP,端口为80,将标志位设置为syn:
    TCP(dport=80, flags=“S”)
    在这里插入图片描述

  3. 执行程序,将参数设置为192.168.0.116,使用WireShark捕获这些数据包:在这里插入图片描述

四、应用层的拒绝服务攻击

DHCP攻击的目标也是服务器( DHCP ),怀有恶意的用户伪造大量DHCP请求报文发送到服务器,这样DHCP服务器地址池中的IP地址会很快就分配完毕,从而导致合法用户无法申请到IP地址。
同时大量的DHCP请求也会导致服务器高负荷运行,从而导致设备瘫痪。

攻击过程:

使用Yersinia,Metasploit工具:

  1. 编写一段程序来搜索网络中的DHCP服务器,只需要在网络中广播DHCP的discover数据包,源端口为68,目标端口为67:
    dhcp_discover = Ether(dst=“ff:ff:ff:ff:ff:ff”)/IP(src=“0.0.0.0”,dst=“255.255.255.255”)/UDP(sport=68,dport=67)/BOOTP()/DHCP(options=[(“message-type”,“discover”),“end”])
    在这里插入图片描述

  2. 打开WireShark,并将过滤器设置为udp,执行程序:在这里插入图片描述
    分析得到的数据包,可以看出来网络中有一个DHCP服务器,地址为192.168.26.254。
    这个程序也可以用来检测网络中的非法DHCP服务器。

  3. Yersinia进行DHCP攻击实验,这是一款图形化工具,在命令行中输入“yersinia -G”就可以以图形化界面的形式启动这款工具。
    root@kali:~# yersinia -G

    在这里插入图片描述
    DHCP的攻击中一共提供了4种发包形式:
    (1)sending RAW packet: 发送原始数据包。
    (2)sending DISCOVER packet:发送请求获取IP地址数据包,占用所有的IP,造成拒绝服务。
    (3)creating DHCP rogue server:创建虚假DHCP服务器,让用户连接,真正的DHCP无法工作。
    (4)sending RELEASE packet:发送释放IP请求到DHCP服务器,致使正在使用的IP全部失效。

  4. 启动Metasploit,并使用search命令来查找与DoS(拒绝服务攻击)查询使用对应的模块:
    root@kali:~# msfconsole
    在这里插入图片描述

  5. 使用模块对目标进行一次SYN拒绝服务攻,使用auxiliary/dos/tcp/synflood模块来完成这个攻击。首先选择对应的模块,使用show opinions来查看这个模块的参数:
    msf > use auxiliary/dos/tcp/synflood
    在这里插入图片描述

  6. 将参数设置为目标192.168.26.101:在这里插入图片描述

  7. 使用exploit命令发起攻击,目标就会因为攻击而停止对外的HTTP服务。在这里插入图片描述

利用目标主机上一些特定的服务进行拒绝服务攻击(微软的MS12-020的漏洞)

  1. 在Metasploit中启动对应的模块:
    msf > use auxiliary/dos/windows/rdp/ms12_020_maxchannelids

  2. 使用“show options”来查看这个模块所要使用的参数:在这里插入图片描述

  3. 将目标IP地址设置为192.168.0.116:在这里插入图片描述

  4. 设置完攻击目标之后,就可以对目标发起攻击,使用run命令发起攻击:如成功,会使主机down机在这里插入图片描述


版权声明:本文为bluepangzi原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。