DOSDDOS原理及攻击防御方法浅谈.docx
《DOSDDOS原理及攻击防御方法浅谈.docx》由会员分享,可在线阅读,更多相关《DOSDDOS原理及攻击防御方法浅谈.docx(14页珍藏版)》请在冰豆网上搜索。
![DOSDDOS原理及攻击防御方法浅谈.docx](https://file1.bdocx.com/fileroot1/2023-3/31/bb64029b-bfcf-49ef-bcd9-6ed3c24940ec/bb64029b-bfcf-49ef-bcd9-6ed3c24940ec1.gif)
DOSDDOS原理及攻击防御方法浅谈
DoS的英文全称是DenialofService,也就是“拒绝服务”的意思。
广义的DOS攻击是指:
“任何导致被攻击的服务器不能正常提供服务的攻击方式”。
DoS攻击和其他类型的攻击不大一样攻击者并不是去寻找进入内部网络的入口而是去阻止合法的用户访问资源或路由器。
中国通信人博客jL5cTv
DOS攻击的基本原理是设法使被攻击服务器充斥大量要求回复的信息,消耗网络带宽或系统资源导致网络或系统不胜负荷以至于瘫痪而宽或系统资源,导致网络或系统不胜负荷以至于瘫痪而停止提供正常的网络服务。
DoS攻击一般是采用一对一方式的,当被攻击目标CPU速度低、内存小或者网络带宽小等等各项性能指标不高时攻击的效果就更明显。
:
m/UV5MD\S,e6OXDF0
随着计算机与网络技术的发展,计算机的处理能力迅速增长,内存大大增加,同时也出现了千兆级别的网络,这些变化都使得目标计算机有足够的资源来应付这些DoS攻击报文,这使得DoS攻击的困难程度加大,效果减小。
wgEZQ1JK0
在这种情况下,DDoS攻击方法就应运而生,DDoS是英文DistributedDenialofService的缩写,即“分布式拒绝服务”,它是一种基于DoS的特殊形式的拒绝服务攻击。
前面已经提到了,当今的计算机和网络速度都普遍比较快,尤其是大型服务器和数据中心,那数据处理能力和网络速度简直令人叹为观止,因此传统的基于一对一的DoS攻击效果已不再那么明显。
中国通信人博客VBN/K/FS3rg/e
于是,我们伟大的IT高手们秉承“办法总比困难多”的励志理念,汲取街头打架斗殴场景中的精髓,既然一个人打不过,那就来群殴。
中国通信人博客.\:
S?
2y:
nd(]V$Q
DDoS攻击便是利用一批受控制的机器向一台机器发起攻击,这样来势迅猛的攻击令,即使性能再高的服务器也无法应付,因此产生的破坏性极大。
主要目标是较大的站点,像商业公司、搜索引擎和政府部门的站点。
8{&Je|{#?
?
+Q0na0
8x6pj~4kOpu0
DDoS攻击的4个组成部分:
中国通信人博客7Nc$tM6t
e1W+o
1).攻击者中国通信人博客-@:
{4\*N
f
攻击者所用的主机,也称为攻击主控台;
Z`S"W*D0
2).主控端中国通信人博客)g;B|:
wDe0m
攻击者侵入并控制的一些主机,分别控制大量代理攻击主机;中国通信人博客2@*soP&Ux!
QK3I
3).代理攻击端
!
X4K`Y)zTB2PO0
攻击者侵入并控制的一批主机,其上面运行攻击程序,接收和运行主控端发来的命令,代理攻击端俗称“肉鸡”;
)p0YE,?
sk^k,\US0
4).受害者
r#B#C$hp%d0
被攻击的目标主机。
]FJ.^{y[O5NO!
Pv0
DDoS攻击示意图如下:
4Z8ZhS{6dT8QVH0
a(Qa9|A'K0
上图为DDoS直接攻击方式,另外还有一种威力更大、更隐蔽的DDoS间接攻击方式,其原理是攻击者伪造源地址为受害者地址的SYN连接请求包发送给大量服务器,随后,服务器群会向源IP(也就是受害者)发出大量的SYN+ACK或RST包来进行响应,大量服务器的响应数据包最终在受害者处汇集为洪水,使受害者网络瘫痪,甚至死机,此攻击方式隐蔽性非常强,受害方很难找到攻击来源。
其攻击示意图如下所示。
中国通信人博客\u6y*}#`^T%F|r+{
中国通信人博客ybzt9Pk%Z/j#I
中国通信人博客$](}Ev\'f;z
♦DDoS攻击步骤
+YXM[4R!
|g0
1).搜集攻击目标信息。
包括目标主机的地址、配置、性能、带宽等。
并根据目标主机的相关参数设计合理的攻击强度,做到知己知彼,百战不殆;
y8Jq5uiD,b0
2).占领傀儡机。
攻击者通过工具扫描互联网上那些有漏洞的机器,随后就是尝试攻击。
攻击成功后,就可以占领和控制被攻击的主机,即“肉鸡”。
攻击者可以利用FTP/TFTP等协议把DDoS攻击用的程序上传到“肉鸡”中。
“肉鸡”包括主控端和代理端主机,其中一部分主机充当攻击的主控端,一部分主机充当攻击的代理端。
1MK?
?
y7f1s/zm0
不过,攻击者如果想省事的话,可以直接从网络上购买“肉鸡”,一般是几角钱一只,量多优惠。
这些“肉鸡”就是被黑客成功控制的计算机,并用于出售目的。
O.O/XvwVj*T"K0
3).实施攻击。
攻击者登录到作为控制台的“肉鸡”中,向所有做为代理端主机的“肉鸡”发出命令,这时候埋伏在“肉鸡”中的DDoS攻击程序就会响应控制台的命令,同时向受害主机以高速度发送大量的数据包,导致受害主机死机或是无法响应正常的请求。
中国通信人博客L.O/u#]R]@7?
{/An[
在《DOS/DDOS原理及攻击防御方法浅谈
(一)》中我们已经了解了DOS/DDOS攻击的原理及步骤,下面我们接着介绍DOS/DDOS的常用攻击方法及防御手段。
中国通信人博客Hx1lOEW)aUw
]
Dos攻击种类有很多,主要有:
IPSpoofing攻击、Land攻击、Smurf攻击、Fraggle攻击、WinNuke攻击、SYNFlood攻击、ICMPFlood攻击、UDPFlood攻击、ICMP-Redirect攻击及ICMP-Unreachable攻击等。
ePI-Rx7Q:
m.H0
中国通信人博客#NJ-@@yta6uUP|W
1).IPSpoofing攻击中国通信人博客^P+m|T0pGE
IPSpoofing也叫IP欺骗,其原理是攻击者机器A利用软件构造一个虚假不存在的IP地址,并以此不存在地址为源IP地址向受害者机器B发送SYN报文,请求建立TCP/IP连接。
目标机器B接收到这个SYN报文后,会将收到的SYN报文中的源IP地址提取出来,并将此IP作为目的IP,回复一个ACK/SYN确认报文给B,并等待接收来自B的确认报文。
由于这个目的IP是攻击者A伪造的,实际网络中根本不存在,所以这个ACK/SYN确认报文也就无法到达,B也就不可能接收到它的确认报文。
6H3oy,e(L'xw%_K0
但是,根据TCP/IP协议规范,受害者B必须一直等待接收A回复的确认报文,直到受害者B内部的定时器超时才放弃等待。
这就是一次IPSpoofing攻击,假如攻击者A使用软件以每秒几百次几千次乃至几万次的速度向同一个受害者B发送虚假SYN报文,那么受害者机器B上就会产生大量的TCP/IP半连接,并且都要等待这些半连接超时(在等待的时候要专心,不能干别的事情的,呵呵),从而使系统资源耗尽,不能及时响应正常的服务请求。
l(DR$^XXv;|&ax[0
如果攻击者A控制几百几千台乃至几万台机器同时使用软件分别以每秒几百次几千次乃至几万次的速度向同一个受害者B发送虚假SYN报文,这样,受害者B所建立的TCP/IP半连接数量会呈指数上升,即使B的处理能力再强,网络带宽再宽,系统也会在瞬间崩溃,这就是DDoS攻击。
中国通信人博客.bbm.K'VE7R
为了大家更好的理解IPSpoofing攻击方法,这里再补充介绍下TCP链接的建立过程。
大家都知道,目前网络中的绝大部分上层应用程序都是基于TCP协议的。
fO'uE'd,P#f)F#A0
TCP是TransmissionControlProtocol的缩写,即传输控制协议。
TCP是一种面向连接的高可靠性协议,它的建立过程包括三个过程,简称“三次握手”。
如下图所示。
中国通信人博客gL&T6BuY
中国通信人博客U&h-bop3{'W8b
如上图所示,客户A想要从服务器B取得服务,首先需要向B发送一个SYN报文,请求建立TCP链接,这就是“第一次握手”。
服务器B收到SYN报文后,会将SYN的源IP地址提取出来作为目的IP地址,回复一个SYN/ACK报文给客户A,这就是“第二次握手”。
客户A收到来自服务器B的SYN/ACK报文后,再将此报文的源IP地址提取出来作为目的IP地址,回复一个ACK确认报文给服务器B,这就是“第三次握手”。
服务器B收到这个ACK报文后,立即启动对客户A的相应服务。
中国通信人博客|v:
JO1DErK
上面介绍的IPSpoofing就是因为A伪造了自己的IP,使得“第二次握手”的SYN/ACK报文不能到达A,A也不会发ACK报文进行“第三次握手”,但是B却一直在苦苦等待“第三次握手”报文ACK的到来。
中国通信人博客$H$RbdE&i
+W4CQyzF0
在网络安全设备中,是通过如下方法来防御IPSpoofing攻击的:
检测每个接口流入的IP报文的源IP地址和目的IP地址,并对报文的源IP地址反查路由表,如果该IP报文的的入接口与以该地址为目的地址的最佳出接口不相同的话,则视为IPSpoofing攻击报文,将禁止其通过,并进行攻击日志记录。
中国通信人博客2?
rP"L"QYTurU#@
Qm)K-cp5IOC0
2).Land攻击中国通信人博客Av#_w
@\C(T5E
Land攻击其实是IPSpoofing攻击的一个变种。
其原理是攻击者机器A向受害者机器B发送一个伪造的SYN报文,此SYN报文的源IP地址和目的IP地址都被设成受害者机器B的IP地址,源端口号和目的端口号也相同。
中国通信人博客%M$FJ]jgj)\8n
受害者机器B接收到此SYN报文后,提取报文的源IP地址(其实是B机器自己的IP地址),并将其作为目的IP地址发送一个SYN/ACK报文(其实是向它自己发送了一个SYN/ACK报文),结果这个地址又发回ACK确认报文,从而创建了一个空连接,每一个这样的空连接都将保留到内部定时器超时后才释放,从而消耗掉大量的系统资源。
对于Land攻击,各种操作系统的反应也有所不同,UNIX系统将会崩溃,而NT系统将变的极其缓慢,时间大约持续五分钟。
中国通信人博客d*Y_b8L
中国通信人博客I9?
RUo7P5lNk(K
在网络安全设备中,是通过如下方法来防御Land攻击的:
检测每个接口流入的IP报文的源IP地址和目的IP地址,阻止那些源IP地址落在所保护网络IP地址段内的报文进入。
但是,此方法也具有局限性,即不能防御那些从所保护网络内部发起的Land攻击。
m2v9Y7a{V8N,t0
t\8d&bg2T:
x(E;qGYx0
3).SYNFlood攻击
!
]IhIQX$T^0
SYNFlood是当前最流行的DoS/与DDoS攻击方式之一,其原理原理跟上面介绍过的IPSpoofing攻击是一样的,都是利用TCP协议的缺陷,伪造不存在的源IP向受害者发送SYN报文,使得受害者机器建立大量TCP半连接,每个半连接差不多等待30秒~2分钟后才超时释放。
“Flood”的中文意思是“洪水”,顾名思义,SYNFlood攻击时,无数伪造的SYN攻击报文就像洪水一样涌向受害者机器,如果受害者机器的TCP/IP栈不够强大,最后的结果往往是堆栈溢出而使系统崩溃,即使其系统足够强大,也会因忙于处理伪造的SYN报文而无法响应客户的正常请求,此时从正常客户的角度看来,服务器失去响应。
中国通信人博客Ol)lUfnV
Uf~k/m6Z*c^0
针对SYNFlood攻击,一种有效的防御方法是限制系统TCP半连接的数量,并且在TCP半连接超过一定数量后,在防火墙端启动TCP代理功能。
所谓TCP代理功能,就是在客户发起TCP连接时,防火墙不把SYN报文发给目标机器,而是自己伪装成目标机器对SYN报文做出SYN/ACK应答。
'z8CeyF0y0
(f.?
|oaJI0
4).UDPFlood攻击
jR(Z(j:
Co4tJN&B0
为了更好的介绍UDPFlood攻击,我们先来看一下UDP协议与TCP协议的区别。
中国通信人博客n:
n2{CFn9B&OP
TCP(TransmissionControlProtocol)是一种面向连接、可靠的字节流服务。
当客户和服务器彼此交换数据前,必须先在双方之间建立一个TCP连接,之后才能传输数据。
TCP提供超时重发,丢弃重复数据,检验数据,流量控制等功能,保证数据能从一端传到另一端。
xmWum\p#b+tNR0
UDP(UserDatagramProtocol,用户数据报协议)是一个简单的面向数据报的运输层协议。
UDP不提供可靠性,它只是把应用程序传给IP层的数据报发送出去,但是并不能保证它们能到达目的地。
由于UDP在传输数据报前不用在客户和服务器之间建立一个连接,且没有超时重发等机制,故而传输速度很快。
中国通信人博客k+GJ4OY_6i
从专业的角度说,TCP的可靠保证,是它的三次握手机制,这一机制保证校验了数据,保证了他的可靠性。
而UDP就没有了,所以不可靠。
不过UDP的速度是TCP比不了的,而且UDP的反应速度更快,QQ就是用UDP协议传输的,HTTP是用TCP协议传输的。
中国通信人博客L-VVrfn
UDPFlood攻击的原理是攻击者机器A伪造一个并不存在的IP地址,并以此为源IP地址向受害者机器B发送一个UDP报文,B收到UDP报文后,发现上层没有任何应用程序在等待UDP端口,于是B就会生成一个ICMP报文发给该伪造的源IP地址,告诉对方刚才所发的UDP报文无法连接。
如果A向B发送的足够多的UPD报文,受害者B将忙于处理这些无用的UDP报文,造成系统资源耗尽,导致瘫痪。
中国通信人博客-cg1DuEl@3W&z
KEMKmW:
RD#I0
5).ICMPFlood攻击中国通信人博客W7Se#]\
ICMP是InternetControlMessageProtocol的缩写,即因特网控制消息协议的意思。
ICMP协议是TCP/IP协议族的一个子协议,它是一种面向连接的网络层协议,用于传输出错报告控制信息,主要用于在主机与路由器之间传递控制信息,包括报告错误、交换受限控制和状态信息等。
当遇到IP数据无法访问目标、IP路由器无法按当前的传输速率转发数据包等情况时,会自动发送ICMP消息。
我们经常用来检测网络通不通的“Ping”命令就是使用ICMP协议。
中国通信人博客|mu5h9oZ9kgH
ICMPFlood攻击的原理就在在较短时间内向受害者机器发送大量的ICMP请求报文,使受害者机器忙于向外发送ICMP应答报文,造成系统资源耗尽,导致瘫痪。
@c1LG'd}o#YL0 在《DOS/DDOS原理及攻击防御方法浅谈
(二)》中,我们已经介绍了IPSpoofing、Land、SYNFlood、UDPFlood、ICMPFlood五中常用的DOS/DDOS攻击方法及防御手段,下面我们继续介绍剩下的五中DOS/DDOS攻击方法及防御手段。
IS/A@N1J&H0
中国通信人博客3fS+U4GD!
U'y
6).Smurf攻击
wRXpv6l/T;P4T0
Smurf攻击是以最初发动这种攻击的程序名“Smurf”来命名的。
同ICMPFlood攻击一样,Smurf攻击也是利用了ICMP协议的漏洞。
其原理是攻击者A向广播地址发送ICMP请求广播报文,不过该广播报文的源IP地址不是攻击者A本身,而是伪造成受害者B的IP地址,这样,广播域内所有收到该ICMP请求报文的机器都会给受害者B回复ICMP应答报文,因而产生大量的通信业务,从而导致受害者B的网络拥塞及系统瘫痪。
对于Smurf攻击,广播域内的机器数量越多,攻击效果就越明显。
-{#t0F}sOh0
在网络安全设备中,是通过如下方法来防御Smurf攻击的:
对通过设备的所有ICMP请求报文的目的地址进行检查,如果是子网广播地址或者子网的网络地址,则认为是Smurf攻击,直接拒绝通过。
中国通信人博客zY-w[}OS/cm
s;G|n-p2@Y.l_0
7).Fraggle攻击
pG6y0gV5}!
T7h0
Fraggle攻击的原理与Smurf攻击的原理类似,不过,Fraggle攻击发送的是UDP报文而非ICMP报文。
因为发送的是UDP报文,Fraggle攻击可以穿过一些阻止ICMP报文进入的防火墙。
k|rBy0
Fraggle攻击的原理是攻击者A向广播地址发送UDP报文,目的端口号为7(ECHO)或19(Chargen),报文的源IP地址伪装成受害者B的IP地址。
这样,广播域中所有启用了此功能的计算机都会向受害者B发送回应报文,从而产生大量的流量,导致受害网络的阻塞或受害主机崩溃。
如果广播域中的主机没有启动这些功能,这些主机将产生一个ICMP不可达消息发给B,仍然消耗带宽。
Fraggle攻击时,也可将源端口改为端口19(Chargen),目的端口为7(ECHO),这样会自动不停地产生回应报文,其危害性更大。
0[.Ut6q\:
w^2X0
防御方法:
关闭路由器或防火墙的广播地址特性,并在防火墙上过滤掉UDP报文,阻止所有目的端口或源端口号为7或19的UDP报文通过。
4fBPmUo'o_0
补充下计算机端口方便的知识,大家都知道通信网络的上层应用程序都是通过端口号来识别传输层协议的,比如常用的HTTP协议就使用了80端口,用于邮件的SMTP协议使用的是25端口。
比如某传输层报文的端口号标识位为“80”,那么计算机收到报文后一看端口号就知道该报文是给HTTP协议的,直接转交给它处理。
同样的,TCP/UDP协议是IP的上层协议,IP可能会被系统中多个应用程序应用,如何来区分多个应用程序呢?
答案是TCP/UDP端口号。
中国通信人博客/|M?
(\
i;r,p\
TCP和UDP的端口号的编号都是独立的,都是0~65535。
例如DNS,可以是TCP的53号端口,也可以是UDP的53号端口。
端口号只具有本地意义,是拿来标识程序的。
只有0~1023是公认的系统占用,其他在通信过程中是随机生成,此次传输完成即撤消。
在UDP的这些端口中,有两个很特殊的端口7和19。
UDP的7号端口收到报文后,会象ICMPEchoReply一样回应收到的内容,而19号端口在收到报文后,会产生一串字符流。
中国通信人博客N!
gS
CO*[
中国通信人博客
fT%Yhbx
8).WinNuke攻击
7|sE&r8bl
P|0
WinNuke攻击是以最初发动这种攻击的程序名“WinNuke”来命名的。
其攻击原理是利用了WINDOWS操作系统的一个漏洞,向139端口发送一些携带TCP带外(OOB)数据报文,但这些攻击报文与正常携带OOB数据报文不同的是,其指针字段与数据的实际位置不符,即存在重叠,WINDOWS操作系统在处理这些数据的时候,就会崩溃。
还有一种是IGMP(InternetGroupManagementProtocol)分片报文,一般情况下,IGMP报文是不会分片的,所以,不少系统对IGMP分片报文的处理有问题。
如果收到IGMP分片报文,则基本可判定受到了攻击。
e2J/^GCvO%X}]0
NetBIOS作为一种基本的网络资源访问接口,广泛的应用于文件共享,打印共享,进程间通信(IPC),以及不同操作系统之间的数据交换。
一般情况下,NetBIOS是运行在LLC2链路协议之上的,是一种基于组播的网络访问接口。
为了在TCP/IP协议栈上实现NetBIOS,RFC规定了一系列交互标准,以及几个常用的TCP/UDP端口,如下。
中国通信人博客^/bf-[7[nCHE0hD
A).139:
NetBIOS会话服务的TCP端口;
)hE0Kb!
ae0
B).137:
NetBIOS名字服务的UDP端口;
ea;HrMtz0
C).136:
NetBIOS数据报服务的UDP端口。
中国通信人博客"r7NF"vM+?
Windows操作系统实现了NetBIOSoverTCP/IP功能,并开放了139端口。
WinNuke攻击就是利用了WINDOWS操作系统的一个漏洞,向这个139端口发送一些携带TCP带外(OOB)数据报文,但这些攻击报文与正常携带OOB数据报文不同的是,其指针字段与数据的实际位置不符,即存在重叠,WINDOWS操作系统在处理这些数据的时候,就会崩溃。
还有一种是IGMP(InternetGroupManagementProtocol)分片报文,一般情况下,IGMP报文是不会分片的,所以,不少系统对IGMP分片报文的处理有问题。
如果收到IGMP分片报文,则基本可判定受到了攻击。
中国通信人博客Rv~+l%d6l6z
补充下NetBIOS协议方面的知识:
NETBIOS协议是由IBM公司开发,主要用于数十台计算机的小型局域网。
该协议是一种在局域网上的程序可以使用的应用程序编程接口(API),为程序提供了请求低级服务的统一的命令集,作用是为了给局域网提供网络以及其他特殊功能,系统可以利用WINS服务、广播及Lmhost文件等多种模式将NetBIOS名解析为相应IP地址,实现信息通讯,所以在局域网内部使用NetBIOS协议可以方便地实现消息通信及资源的共享。
因为它占用系统资源少、传输效率高,所以几乎所有的局域网都是在NetBIOS协议的基础上工作的。
j)Belbf0
防御方法:
防火墙设备会扫描所有进入的“MicrosoftNetBIOS会话服务”(端口139)封包。
如果防火墙设备发现某个封包上设置了TCPURG代码位,就会检查偏移值、删除碎片重叠并根据需要纠正偏移值以防止发生OOB错误。
然后让经过修正的封包通过,并在“事件警报”日志中创建一个WinNuke攻击日志条目。
s)wFj(h0
g&ID)PYC
^6[8i;b3t0
9).ICMP-Unreachable攻击
0ScFq7N:
sP4SB0
ICMP-Unreachable即ICMP报文报文不可到达的意思。
ICMP-Unreachable攻击原理是:
某些系统在收到网络(代码为0)或主机(代码为1)不可达的ICMP报文后,对于后续发往此目的地的报文直接认为不可达。
攻击者A利用这种机制,向受害者B发送虚假的ICMP-Unreachable报文,干扰了受害者B的路由信息,影响了报文发送。
't$F~([Hi,?
X1L,R0
!
qKdV]v;}0eG0
10).ICMP-Redirect攻击中国通信人博客)P-W&zB_xFL
vH
ICMP-Redirect攻击和ICMP-Unreachab