拒绝服务攻击原理
一次性进群,长期免费索取教程,没有付费教程。
教程列表见微信公众号底部菜单
进微信群回复公众号:微信群;QQ群:16004488
微信公众号:计算机与网络安全
ID:Computer-network
拒绝服务攻击即是攻击者想办法让目标机器停止提供服务,是黑客常用的攻击手段之一。其实对网络带宽进行的消耗性攻击只是拒绝服务攻击的一小部分,只要能够对目标造成麻烦,使某些服务被暂停甚至主机死机,都属于拒绝服务攻击。拒绝服务攻击问题也一直得不到合理的解决,究其原因是因为网络协议本身的安全缺陷,从而拒绝服务攻击也成为了攻击者的终极手法。攻击者进行拒绝服务攻击,实际上让服务器实现两种效果:一是迫使服务器的缓冲区满,不接收新的请求;二是使用IP欺骗,迫使服务器把非法用户的连接复位,影响合法用户的连接。
一、SYN Flood
SYN Flood也称为SYN洪水、SYN洪泛,是一种阻断服务攻击,起因是攻击者传送一系列的SYN请求到目标系统。
当用户端试着与服务器建立TCP连线时,在正常情况下,用户端与服务器端会交换一系列的信息,如下。
(1)用户端通过传送SYN同步(synchronize)信息到服务器,要求建立连线。
(2)服务器通过响应用户端SYN-ACK以抄收应答请求。
(3)用户端应答ACK,连线随之建立。
这就是所谓TCP三向交握,这是每个使用TCP传输协议建立连线的基础。
SYN Flood是一种广为人知的攻击,一般对现代网络不太有效。这种攻击只有在服务器收到SYN后分配资源且在收到ACK之前有效。
SYN Flood攻击目前有两种方法,不过都与服务器端没收到ACK有关。恶意用户可以跳过传送最后的ACK信息;或者在SYN里通过欺骗来源IP地址,让服务器送SYN-ACK到假造的IP地址,因此永不可能收到ACK。
若用户A与服务器之间正常连线,三向交握正确地进行,则如下图所示。
对于SYN Flood,攻击者B传送许多封包就是不发送“ACK”到服务器。该连线因此处于半开状态并吞食服务器资源。因为阻断服务攻击的结果是合法用户A与服务器尝试建立连线的请求遭拒,如下图所示。
从防御角度来说,有几种简单的解决方法。
1、缩短SYN Timeout时间
由于SYN Flood攻击的效果取决于服务器上保持的SYN半连接数,这个值等于SYN攻击的频度×SYN Timeout,所以通过缩短从接收到SYN报文到确定这个报文无效并丢弃该连接的时间。例如,设置为20秒以下(过低的SYN Timeout设置可能会影响客户的正常访问),可以大幅降低服务器的负荷。
2、设置SYN Cookie
设置SYN Cookie就是给每一个请求连接的IP地址分配一个Cookie,如果短时间内连续受到某个IP的重复SYN报文,就认定是受到了攻击,以后从这个IP地址发来的包会被丢弃。
可是上述的两种方法只能对付比较原始的SYN Flood攻击,缩短SYN Timeout时间仅会在对方攻击频度不高的情况下生效,SYN Cookie更依赖于对方使用真实的IP地址,如果攻击者以数万/秒的速度发送SYN报文,同时利用SOCK_RAW随机改写IP报文中的源地址,以上的方法将毫无用武之地。
二、IP欺骗攻击
所谓IP欺骗,无非就是伪造他人的IP地址,其实质就是让一台计算机来扮演另一台计算机,借此达到蒙混过关的目的。
IP欺骗利用了主机之间正常信任关系来发动,所谓信任关系就是:对于网络上的两台计算机X和Y,Y可以利用远程登录工具,无需口令验证登录到X主机上,而登录的基础是X对Y主机IP的验证,即X对Y提供服务是基于对主机Y的IP地址的信任。
既然X、Y之间的信任关系是基于IP地址建立起来的,那么假如能够冒充Y的IP地址,就可以远程登录X,而不需要任何口令的验证。这就是IP欺骗的理论依据。
IP欺骗攻击的步骤如下。
(1)使被信任的主机的网络暂时瘫痪,以免对攻击造成干扰。
(2)连接到目标主机的某个端口来猜测ISN基值和增加规律。
(3)把源地址伪装成被信任主机,发送带有SYN标志的数据段请求连接。
(4)黑客等待目标机发送SYN+ACK包给已经瘫痪的被信任主机,因为黑客这时看不到这个包。
(5)再次伪装成被信任主机向目标主机发送ACK,此时发送的数据段带有预测的目标主机ISN+1。
6)连接建立发送命令。
三、UDP洪水攻击
UDP洪水攻击,又称UDP攻击或UDP淹没攻击。UDP是一种无连接的协议,而且它不需要用任何程序建立连接来传输数据。当攻击者随机地向受害系统的端口发送UDP数据包的时候,就可能发生了UDP洪水攻击。
在网络的关键之处使用防火墙对来源不明的有害数据进行过滤,可以有效减轻UDP洪水攻击。此外,在用户的网络中还应采取如下的措施。
(1)禁用或过滤监控和响应服务。
(2)禁用或过滤其他的UDP服务。
(3)如果用户必须提供一些UDP服务的外部访问,那么需要使用代理机制来保护那种服务,使它不会被滥用。
(4)对用户的网络进行监控以了解哪些系统在使用这些服务,并对滥用的迹象进行监控。
四、Ping洪流攻击
由于在早期,路由器对包的最大尺寸有限制。许多操作系统对TCP/IP栈的实现在ICMP包上都是规定为64KB,并且在对包的标题头进行读取之后,要根据该标题头里包含的信息来为有效载荷生成缓冲区。当产生畸形的、声称自己的尺寸超过ICMP上限的包,也就是加载的尺寸超过64KB上限时,就会出现内存分配错误,导致TCP/IP堆栈崩溃,致使接收方死机。
五、Teardrop攻击
Teardrop攻击是基于UDP的病态分片数据包的攻击方法,其工作原理是向被攻击者发送多个分片的IP包(IP分片数据包中包括该分片数据包属于哪个数据包以及在数据包中的位置等信息),某些操作系统收到含有重叠偏移的伪造分片数据包时将会出现系统崩溃、重启等现象。
六、Land攻击
Land攻击原理是:用一个特别打造的SYN包,它的源地址和目标地址都被设置成某一个服务器地址。此举将导致接收服务器向它自己的地址发送SYN-ACK消息,结果这个地址又发回ACK消息并创建一个空连接。被攻击的服务器每接收一个这样的连接都会将其保留,直到超时。不同系统对Land攻击反应不同,UNIX系统大多会崩溃,NT系统会变得极其缓慢。
七、Smurf攻击
Smurf(Smurf攻击)是以最初发动这种攻击的程序名“Smurf”来命名的,它通过独占网络资源,使其他主机不能进行正常访问,从而导致网络瘫痪。这种攻击方法使用了IP欺骗和ICMP回复方法使大量网络传输充斥着目标系统,从而使目标系统拒绝为正常系统服务。Smurf攻击通过使用将回复地址设置成受害网络的广播地址的ICMP应答请求(ping)数据包来淹没受害主机,最终导致该网络的所有主机都对此ICMP应答请求做出答复,造成网络阻塞。更加复杂的Smurf将源地址改为第三方的受害者,最终导致第三方崩溃。
Smurf攻击过程如下。
1、网络扫描
在进行Smurf攻击前,攻击者使用数据包分析工具(如Sniffer等)寻找那些以广播方式向本地网络中的所有主机发送echo请求分组的网络路由器,同时记录本地网络的IP地址。
2、发起攻击
攻击者通过程序伪造一个echo请求的ICMP报文,报文的源地址利用欺骗方式伪造成希望攻击的系统的IP地址,然后循环不断地读取具有路由器漏洞的目标网络的IP地址,并向它们的广播地址发送分组。
3、攻击过程
echo请求被发送到的目标网络,称为反弹站点,其路由器从互联网上接收到攻击者发出的IP广播地址(如202.196.80.255)的echo请求的分组后,把以太网广播地址FF:FF:FF:FF:FF:FF映射过来,然后将此echo请求分组对本地网段中的所有主机进行广播。收到echo请求分组的主机将及时向源地址回复,全部指向受攻击的系统。被攻击系统的网络很快被这些echo响应分组充满而阻塞,不能处理其他任何网络传输,从而引起拒绝正常的系统服务的问题。
八、Fraggle攻击
Fraggle攻击就是对Smurf攻击做了简单的修改,使用的是UDP应答消息而非ICMP。因为发送的是UDP报文,Fraggle攻击可以穿过一些阻止ICMP报文进入的防火墙。Fraggle攻击的原理是攻击者A向广播地址发送UDP报文,报文的源IP地址伪装成受害者B的IP地址。这样,广播域中所有启用了此功能的计算机都会向受害者B发送回应报文,从而产生大量的流量,导致受害网络的阻塞或受害主机崩溃。
微信公众号:计算机与网络安全
ID:Computer-network