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

简介: Kali渗透测试:拒绝服务攻击(二)

接上文 Kali渗透测试:拒绝服务攻击(一)https://developer.aliyun.com/article/1618787

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

工作界面如下图所示:

image.png

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

image.png

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

基于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”产生的数据包如下图所示:

image.png

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

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

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

┌──(root💀kali)-[~]
└─# msfconsole

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

image.png

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

msf6 > use auxiliary/dos/tcp/synflood

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

image.png

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

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

image.png

如果目标没有防御措施,很快就会因为攻击而停止对外提供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来查看这个模块所要使用的参数,如下图所示:

image.png

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

image.png

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

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

image.png

相关文章
|
1天前
|
网络协议 安全 Linux
Kali渗透测试:拒绝服务攻击(一)
Kali渗透测试:拒绝服务攻击(一)
|
安全 网络协议 网络安全
Web安全性测试系列(二)DDOS拒绝服务攻击原理详解
Web安全性测试系列(二)DDOS拒绝服务攻击原理详解
123 0
|
28天前
|
移动开发 JSON Java
Jmeter实现WebSocket协议的接口测试方法
WebSocket协议是HTML5的一种新协议,实现了浏览器与服务器之间的全双工通信。通过简单的握手动作,双方可直接传输数据。其优势包括极小的头部开销和服务器推送功能。使用JMeter进行WebSocket接口和性能测试时,需安装特定插件并配置相关参数,如服务器地址、端口号等,还可通过CSV文件实现参数化,以满足不同测试需求。
128 7
Jmeter实现WebSocket协议的接口测试方法
|
28天前
|
JSON 移动开发 监控
快速上手|HTTP 接口功能自动化测试
HTTP接口功能测试对于确保Web应用和H5应用的数据正确性至关重要。这类测试主要针对后台HTTP接口,通过构造不同参数输入值并获取JSON格式的输出结果来进行验证。HTTP协议基于TCP连接,包括请求与响应模式。请求由请求行、消息报头和请求正文组成,响应则包含状态行、消息报头及响应正文。常用的请求方法有GET、POST等,而响应状态码如2xx代表成功。测试过程使用Python语言和pycurl模块调用接口,并通过断言机制比对实际与预期结果,确保功能正确性。
122 3
快速上手|HTTP 接口功能自动化测试
|
1天前
|
JavaScript 前端开发 API
vue尚品汇商城项目-day02【9.Home组件拆分+10.postman测试接口】
vue尚品汇商城项目-day02【9.Home组件拆分+10.postman测试接口】
5 0
|
28天前
|
JavaScript 前端开发 测试技术
ChatGPT与接口测试
ChatGPT与接口测试,测试通过
32 5
|
2月前
|
网络协议 测试技术 网络安全
Python进行Socket接口测试的实现
在现代软件开发中,网络通信是不可或缺的一部分。无论是传输数据、获取信息还是实现实时通讯,都离不开可靠的网络连接和有效的数据交换机制。而在网络编程的基础中,Socket(套接字)技术扮演了重要角色。 Socket 允许计算机上的程序通过网络进行通信,它是网络通信的基础。Python 提供了强大且易于使用的 socket 模块,使开发者能够轻松地创建客户端和服务器应用,实现数据传输和交互。 本文将深入探讨如何利用 Python 编程语言来进行 Socket 接口测试。我们将从基础概念开始介绍,逐步引导大家掌握创建、测试和优化 socket 接口的关键技能。希望本文可以给大家的工作带来一些帮助~
|
2月前
|
网络协议 测试技术 网络安全
Python进行Socket接口测试的实现
在现代软件开发中,网络通信是不可或缺的一部分。无论是传输数据、获取信息还是实现实时通讯,都离不开可靠的网络连接和有效的数据交换机制。而在网络编程的基础中,Socket(套接字)技术扮演了重要角色。 Socket 允许计算机上的程序通过网络进行通信,它是网络通信的基础。Python 提供了强大且易于使用的 socket 模块,使开发者能够轻松地创建客户端和服务器应用,实现数据传输和交互。 本文将深入探讨如何利用 Python 编程语言来进行 Socket 接口测试。我们将从基础概念开始介绍,逐步引导大家掌握创建、测试和优化 socket 接口的关键技能。希望本文可以给大家的工作带来一些帮助~