一、DDoS
分布式拒绝
服务
(DDoS:Distributed Denial of Service)攻击指借助于客户/服务器技术,将多个计算机联合起来作为攻击平台,对一个或多个目标发动DDoS攻击,从而成倍地提高拒绝服务攻击的威力。
一群恶霸试图让对面那家有着竞争关系的商铺无法正常营业,他们会采取什么手段呢?(只为举例,切勿模仿)恶霸们扮作普通客户一直拥挤在对手的商铺,赖着不走,真正的购物者却无法进入;或者总是和营业员有一搭没一搭的东扯西扯,让工作人员不能正常服务客户;也可以为商铺的经营者提供虚假信息,商铺的上上下下忙成一团之后却发现都是一场空,最终跑了真正的大客户,损失惨重。此外恶霸们完成这些坏事有时凭单干难以完成,需要叫上很多人一起。
DdoS
的攻击方式有很多种,最基本的
DoS攻击
就是利用合理的
服务
请求来占用过多的服务资源,从而使合法用户无法得到服务的响应。单一的DoS攻击一般是采用一对一方式的,当攻击目标
CPU
速度低、内存小或者网络带宽小等等各项指标不高的性能,它的效果是明显的。随着计算机与网络技术的发展,计算机的处理能力迅速增长,内存大大增加,同时也出现了
千兆
级别的网络,这使得DoS攻击的困难程度加大了-目标对恶意攻击包的"消化能力"加强了不少。这时候分布式的拒绝
服务
攻击手段(DDoS)就应运而生了。DDoS就是利用更多的
傀儡机
(
肉鸡
)来发起进攻,以比从前更大的规模来进攻受害者。
1、DDoS攻击方式
DDoS攻击
通过大量合法的请求占用大量网络资源,以达到瘫痪网络的目的。 这种攻击方式可分为以下几种:
IP Spoofing
IP欺骗攻击是一种
黑客
通过向
服务端
发送虚假的包以欺骗
服务器
的做法。具体说,就是将包中的源
IP地址
设置为不存在或不合法的值。
服务
器一旦接收到该包便会返回接受请求包,但实际上这个接受请求包永远返回不到来源处的计算机。这种做法使
服务
器必需开启自己的监听端口不断等待,也就浪费了系统各方面的资源,从而使服务器过载甚至资源耗尽。
LAND attack
这种攻击方式与SYN floods类似,区别在于,在
LAND attack
的
攻击包中的源地址和目标地址都是攻击对象的IP。Land 攻击发生的条件是攻击者发送具有相同IP的源地址、目标地址和 TCP
端口号
的伪造 TCP SYN 数据包信息流。必须设置好 SYN 标记。其结果是使得接收数据包对象(被攻击对象)将试图向自己发送响应信息,导致被攻击的机器死循环,最终使受害系统瘫痪或重启。基于 TCP/IP 协议栈的系统容易遭受此类型的攻击。
防护措施
:服务供应商可以在
边缘路由器
的进入端口上安装过滤器对所有入内数据包的 IP 源地址进行检查,这样就可以阻止发生在会聚点后的 LAND 攻击。如果该源地址的前缀在预先规定的范围之内,则该数据包被转发,否则被丢弃。
SYN Flood
首先,请求端(客户端)发送一个包含SYN标志的TCP报文,SYN即同步(Synchronize),同步报文会指明客户端使用的端口以及TCP连接的初始序号;
第三步,客户端也返回一个确认报文ACK给服务器端,同样TCP序列号被加一,到此一个TCP连接完成。
以上的连接过程在TCP协议中被称为
三次握手
(Three-way Handshake)。
问题就出在TCP连接的三次握手中,假设一个用户向服务器发送了SYN
报文
后突然死机或掉线,那么服务器在发出SYN+ACK应答报文后是无法收到客户端的ACK报文的(第三次握手无法完成),这种情况下服务器端一般会重试(再次发送SYN+ACK给客户端)并等待一段时间后丢弃这个未完成的连接,这段时间的长度我们称为SYN Timeout,一般来说这个时间是分钟的数量级(大约为30秒-2分钟);一个用户出现异常导致服务器的一个线程等待1分钟并不是什么很大的问题,但如果有一个恶意的
攻击者大量模拟这种情况
,服务器端将为了维护一个非常大的半连接列表而消耗非常多的资源----数以万计的半连接,即使是简单的保存并遍历也会消耗非常多的CPU时间和内存,何况还要不断对这个列表中的IP进行SYN+ACK的重试。实际上如果服务器的TCP/IP栈不够强大,最后的结果往往是堆栈溢出崩溃---即使服务器端的系统足够强大,服务器端也将忙于处理攻击者伪造的TCP连接请求而无暇理睬客户的正常请求(毕竟客户端的正常请求比率非常之小),此时从正常客户的角度看来,服务器失去响应,这种情况我们称作:服务器端受到了SYN Flood攻击(SYN
洪水攻击
)。
防护措施:
第一种是缩短SYN Timeout时间,
由于SYN Flood攻击的效果取决于服务器上保持的SYN半连接数,这个值=SYN攻击的频度 x SYN Timeout,所以通过缩短
从接收
到SYN报文到确定这个报文无效并丢弃该连接的时间,例如设置为20秒以下(过低的SYN Timeout设置可能会影响客户的正常访问),可以成倍的降低服务器的负荷。
第二种方法是设置SYN Cookie,
就是给每一个请求连接的IP地址分配一个Cookie,如果短时间内连续受到某个IP的重复SYN报文,就认定是受到了攻击,以后从这个IP地址来的包会被丢弃。 可是上述的
两种方法只能对付比较原始的SYN Flood攻击
,缩短SYN Timeout时间仅在对方攻击频度不高的情况下生效,SYN Cookie更依赖于对方使用真实的IP地址,如果攻击者以数万/秒的速度发送SYN报文,同时利用随机改写IP报文中的源地址,以上的方法将毫无用武之地。例如
SOCK_RAW
返回的套接字通过适当的设置可以自己完全控制IP头的内容从而实现IP欺骗。
ICMP Flood
ICMP是(Internet Control Message Protocol)Internet控制
报文
协议。它是
TCP/IP协议族
的一个子协议,用于在IP
主机
、
路由
器之间传递控制消息。控制消息是指
网络通
不通、主机是否可达、路由是否可用等网络本身的消息。这些控制消息虽然并不传输用户数据,但是对于用户数据的传递起着重要的作用。例如,我们常用的ping命令,就是ICMP协议的一部分。
当攻击者使用傀儡机对攻击目标进行大量ping请求时,大量的回应请求会超出了攻击目标的系统的最大限度,以至于系统耗费所有资源来进行响应直至再也无法处理有效的网络信息流,就是 ICMP 洪水攻击。
目的是使
网络瘫痪
,是最常用的网络
攻击行为
之一
。
防护措施:
只要禁止ping就可以了,对所有的ping请求都拒绝。
Application
level floods
与前面叙说的攻击方式不同,Application level floods主要是针对
应用软件层
的,也就是高于OSI的。它同样是以大量消耗系统资源为目的,通过向IIS这样的网络
服务
程序提出无节制的资源申请来迫害正常的网络服务。
2、DDoS的攻击特点
分布式
拒绝服务攻击采取的攻击手段就是分布式的,在攻击的模式改变了传统的
点对点
的攻击模式,使攻击方式出现了没有规律的情况,而且在进行攻击的时候,通常使用的也是常见的协议和服务,这样只是从协议和服务的类型上是很难对攻击进行区分的。在进行攻击的时候,攻击数据包都是经过伪装的,在源IP 地址上也是进行伪造的,这样就很难对攻击进行地址的确定,在查找方面也是很难的。这样就导致了分布式拒绝服务攻击在检验方法上是很难做到的。
主要可以概括为:攻击方式没有规律,攻击行为难以区分,攻击地址难以确定。从而难以检验DDoS攻击。
3、DDoS分类
按照TCP/IP协议的层次可将DDOS攻击分为基于ARP的攻击、基于ICMP的攻击、基于IP的攻击、基于UDP的攻击、基于TCP的攻击和基于应用层的攻击。
基于ARP
ARP(地址解析协议)是无连接的协议,当收到攻击者发送来的ARP应答时。它将接收ARP应答包中所提供的信息,更新ARP缓存。因此,含有错误源地址信息的ARP请求和含有错误目标地址信息的ARP应答均会使上层应用忙于处理这种异常而无法响应外来请求,使得目标主机丧失网络通信能力。产生拒绝服务,如ARP重定向攻击。
基于ICMP
攻击者向一个子网的广播地址发送多个ICMP Echo请求数据包。并将源地址伪装成想要攻击的目标主机的地址。这样,该子网上的所有主机均对此ICMP Echo请求包作出答复,向被攻击的目标主机发送数据包,使攻击目标主机受到攻击,导致网络阻塞。
基于IP
TCP/IP中的IP数据包在网络传递时,数据包可以分成更小的片段。到达目的地后再进行合并重 装。在实现分段重新组装的进程中存在漏洞,缺乏必要的检查。利用IP报文分片后重组的重叠现象攻击服务器,进而引起服务器内核崩溃。如Teardrop是基于IP的攻击。
基于应用层
应用层包括SMTP,HTTP,DNS等各种应用协议。其中SMTP定义了如何在两个主机间传输邮件的过程,基于标准SMTP的邮件服务器,在客户端请求发送邮件时,是不对其身份进行验证的。另外,许多邮件服务器都允许邮件中继。攻击者利用邮件服务器持续不断地向攻击目标发送垃圾邮件,大量侵占服务器资源。
4、黑客进行DDoS攻击的步骤
首先,黑客会收集攻击目标的相关资料。黑客一般是互联网上某个网站,而网站多数是由许多台主机共同支持的,因为一个大型网站会通过多台主机利用负载均衡技术提供同一个服务。攻击一台主机是不会对网站产生什么影响的,所以黑客必须了解支持目标网站的主机的数量、地址、配置、性能、带宽等等。
然后,黑客会计算成功攻破目标网站需要多少台傀儡主机,然后制造傀儡主机。首先,
黑客
做的工作一般是扫描,随机地或者是有针对性地利用扫描器去发现
互联网
上那些有
漏洞
的机器,随后入侵这些机器。除了留后门擦脚印这些基本工作之外,黑客会把DDoS攻击用的程序上载过去,一般是利用
ftp
。在攻击机上,会有一个DDoS的发包程序,
黑客
就是利用它来向受害目标发送恶意攻击包的。
最后,黑客开始对目标发动攻击,
黑客
登录到做为控制台的
傀儡机
,向所有的攻击机发出命令,这时候埋伏在攻击机中的DDoS攻击程序就会响应控制台的命令,一起向受害主机以高速度发送大量的
数据包
,导致它
死机
或是无法响应正常的请求。
黑客
一般会以远远超出受害方处理能力的速度进行攻击,他们不会"
怜香惜玉
"。
当前主要有三种流行的 DDOS:
1、SYN/ACK Flood 攻击:
这种攻击方法是经典最有效的 DDOS 方法, 可通杀各种系统的网络服务, 主要是通过向
受害主机发送大量伪造源 IP 和源端口的 SYN 或 ACK 包,导致主机的缓存资源被耗尽或忙
于发送回应包而造成拒绝服务, 由于源都是伪造的故追踪起来比较困难, 缺点是实施起来有
一定难度, 需要高带宽的僵尸主机支持。 少量的这种攻击会导致主机服务器无法访问, 但却
可以 Ping 的通, 在服务器上用 Netstat -na 命令会观察到存在大量的 SYN_RECEIVED 状态,
大量的这种攻击会导致 Ping 失败、TCP/IP 栈失效,并会出现系统凝固现象,即不响应键盘
和鼠标。普通防火墙大多无法抵御此种攻击。
2、TCP 全连接攻击:
这种攻击是为了绕过常规防火墙的检查而设计的,一般情况下,常规防火墙大多具备过
滤 T earDrop、Land 等 DOS 攻击的能力,但对于正常的 TCP 连接是放过的,殊不知很多网
络服务程序(如:IIS、Apache 等 W eb 服务器)能接受的 TCP 连接数是有限的,一旦有大
量的 TCP 连接,即便是正常的,也会导致网站访问非常缓慢甚至无法访问,TCP 全连接攻
击就是通过许多僵尸主机不断地与受害服务器建立大量的 TCP 连接,直到服务器的内存等
资源被耗尽而被拖跨, 从而造成拒绝服务, 这种攻击的特点是可绕过一般防火墙的防护而达
到攻击目的,缺点是需要找很多僵尸主机,并且由于僵尸主机的 IP 是暴露的,因此容易被
追踪。
3、刷 Script 脚本攻击:
这种攻击主要是针对存在 ASP、JSP、PHP、CGI 等脚本程序,并调用 MSSQLServer、
MySQLServer、Oracle 等数据库的网站系统而设计的,特征是和服务器建立正常的 TCP 连
接, 并不断的向脚本程序提交查询、 列表等大量耗费数据库资源的调用, 一般来说, 提交一
个 GET 或 POST 指令对客户端的耗费和带宽的占用是几乎可以忽略的,而服务器为处理此
请求却可能要从上万条记录中去查出某个记录, 这种处理过程对资源的耗费是很大的, 常见
的数据库服务器很少能支持数百个查询指令同时执行,而这对于客户端来说却是轻而易举
的, 因此攻击者只需通过 Proxy 代理向主机服务器大量递交查询指令, 只需数分钟就会把服
务器资源消耗掉而导致拒绝服务,常见的现象就是网站慢如蜗牛、ASP 程序失效、PHP 连
接数据库失败、数据库主程序占用 CPU 偏高。这种攻击的特点是可以完全绕过普通的防火
墙防护, 轻松找一些 Proxy 代理就可实施攻击, 缺点是对付只有静态页面的网站效果会大打
折扣,并且有些 Proxy 会暴露攻击者的 IP 地址。