十五、Kali Linux 2 拒绝服务攻击

拒绝服务攻击

拒绝服务攻击即是攻击者想办法让目标机器停止提供服务,是黑客常用的攻击手段之一。其实对网络带宽进行的消耗性攻击只是拒绝服务攻击的一小部分,只要能够对目标造成麻烦,使某些服务被暂停甚至主机死机,都属于拒绝服务攻击。拒绝服务攻击问题也一直得不到合理的解决,究其原因是因为网络协议本身的安全缺陷,从而拒绝服务攻击也成为了攻击者的终极手法。攻击者进行拒绝服务攻击,实际上让服务器实现两种效果:一是迫使服务器的缓冲区满,不接收新的请求;二是使用IP欺骗,迫使服务器把非法用户的连接复位,影响合法用户的连接。

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

在目前的网络架构中,大部分在局域网内的通信的设备都是通过交换机进行。相比较集线器,交换机的优点就是有“记忆”和“学习”的功能,这两个功能通过交换机的CAM表来实现,这张表保存了交换机每个接口所连接计算机的MAC地址信息,这些信息可以通过动态学习来完成。

而在数据链路层发起的拒绝服务攻击并不是攻击二层交换机,让其停止工作,而是让其以一种不正常的方式工作。

比如,在就局域网中,A主机向B主机发送数据时,会将这个数据包发送给交换机,由交换机进行转发,交换机在收到这个数据包时会提取出数据包的目的MAC地址,并查询CAM表,如果能查找到对应的表项,就将数据包从找到的接口发出去。如果没有找到,再将数据包向所有接口发送。在转发数据包的时候,交换机还会进行一个学习的过程,交换机会将接收到的数据包中的源MAC地址提取出来,并查询CAM表,如果表中没有这个源MAC地址对应接口的信息,则会将这个数据包中的源MAC地址与收到这个数据包的接口作为新的表项插入到CAM表中。交换机的学习是一个动态的过程,每个表象都不是固定的,而是有一个定时器(通常为5分钟),从这个表项插入到CAM表开始起,当该定时器递减到零时,该CAM项就会被删除。

这个机制保证采用交换机设备的局域网的数据包都是单播的,但是CAM表的容量时有限的,如果短时间内收到大量不同源MAC地址发来的数据包,CAM表就会被填满。当填满之后,新到的条目就会覆盖之前的条目。这样网络中正常数据包到达交换机之后,而CAM表已经被填满了,无法找到正确的对饮关系,只能将数据包广播出去。这时受到攻击的交换机实际上已经退化成集线器,hack只需要在自己的计算机上将网卡设置为混杂模式,就可以监听整个网络的通信了。

这种攻击的核心为,短时间内伪造大量的数据包发送到交换机,这些数据包中的端MAC地址和目的MAC地址都是随机的,很快就可以将CAM表填满。
十五、Kali Linux 2 拒绝服务攻击

十五、Kali Linux 2 拒绝服务攻击

专门的攻击工具——macof,它是 Dsniff 工具集的成员,常用命令如下:

Dsniff:kali@kali:~$ sudo apt install dsniff

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

使用macof:Kali@kali:~#sudo macof

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

位于网络层的协议包括 ARP、IP 和 ICMP 等,其中 ICMP 主要用于在主机、路由器之间传递控制消息。我们平时检测网络连通情况时使用的 ping 命令就基于 ICMP。

但到想办法增加发送到目标主机的数据包的数量时,这里主要就有两种方法:

一是同时使用多台主机发送 ICMP 数据包

二是提高发送 ICMP 数据包的速度 

我们采用Kali Linux 2 中自带的 hping3 进行拒绝服务攻击。hping3 是一款用于生成和解析 TCP/IP 数据包的开源工具,之前还推出过 hping 和 hping2 两个版本。hping3 也是一个命令式工具,各种功能要依靠设置参数来实现。

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值的绑定

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

TCP 和 UDP 都位于传输层,这两个协议都可以实现拒绝服务攻击,但是攻击方式不相同。UDP 拒绝服务攻击与 ICMP 拒绝服务攻击原理相同,也需要向目标快速地发送大量数据包。不同之处在于 UDP 拒绝服务攻击原理相同,也需要向目标快速地发送大量数据包。

基于 TCP 的拒绝服务攻击有两种:一种是和目标端口完成3次握手,建立一个完整连接;另一种是只和目标端口完成3次握手中的前两次,建立一个不完整的连接,这种攻击之最为常见的,我们通常将这种攻击称为 SYN 拒绝服务攻击。 

hping3参数来构造一次基于TCP协议的拒绝服务攻击,在Kali Linux 2中打开一个终端,然后在终端中输入:

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

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

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

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

在本章中我们将会学到两个工具:一个是 Yersinia,这是一个功能十分强大的、图形化的拒绝服务攻击工具;另一个是我们比较熟悉的 Metasploit。

安装 Yersinia 工具的命令:

kali@kali:~$ sudo apt-get install yersinia

启动这个图形化界面工具:

kali@kali:~# sudo yersinia -G 

十五、Kali Linux 2 拒绝服务攻击 

主要是以4种发包的形式的含义具体如下:

sending RAW packet:发送原始数据包

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

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

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

在本次实验中启动 msfconsole 之前需要先切换为 root 用户:

kali@kali:~$ sudo -i 

root@kali:~# msfconsole 

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

十五、Kali Linux 2 拒绝服务攻击

总结:

拒绝服务攻击一直是一个让网络安全人员感到无比头疼的问题,受到这种攻击的服务器将无法提供正常的服务。通常我们所说的拒绝服务攻击一般是指对HTTP服务器发起的TCP连接攻击。但实际上拒绝服务攻击的范畴要远远比这更大,本章按照TCP/IP协议的结构,依次介绍了数据链路层、网络层、传输层和应用层中协议的漏洞,并讲解了如何利用这些漏洞来发起拒绝服务攻击。本章使用几个强大的工具,如 macof、hping3、Yersinia、Metasploit 等。这几个工具各有特色,它们组合起来几乎可以完成所有的拒绝服务攻击。尤其是 hping3,是一款特别灵活的工具,使用它几乎可以构造任何需要的数据包。

本章介绍的攻击都是从一台计算机发起的,也就是拒绝服务攻击。现在更为常见的是分布式拒绝服务攻击,这种攻击方式指借助于客户端/服务端技术,将多台计算机联合起来作为攻击平台,对一个或多个目标发起 DDos 攻击,从而成倍地提高拒绝服务攻击的威力。

截至到本章结束,我们整个 Kali Linux 2 网络渗透测试实践就结束了,希望大家会认真对待渗透测试这门技术,它也是现在社会上网络安全研究的核心问题之一。

 

上一篇:阿里云环境部署Hyperledger Fabric之SIGSEGV问题分析和解决经验分享


下一篇:python3精简笔记(一)-输入输出,类型,循环