DOS攻击
0x01、什么是DOS攻击
DOS攻击不是DOS
DOS攻击是利用程序漏洞一对一的执行资源耗尽的Denial of Service拒绝服务攻击 DenialOfServie != DiskOperationSystem
DDoS分布式拒绝服务
DOS攻击拼的是各自的资源,效果比较差
而DDOS则是汇聚资源能力,多对一,属于资源耗尽型攻击
历史
以前:欠缺技术能力的无赖,我ping死你(最难缠的无赖)
现在:最强大最危险的攻击,攻击方式众多(专业化的要求勒索) 亲身经历:电商网站被勒索、Bi11 gates僵尸程序
贩卖和租用肉鸡已经成为黑产中重要的一部分
最终的办法就是拼资源,投资抗D,或者乖乖交保护费
0x02、攻击流程
0x03、常见DOS攻击
-
带宽攻击 以极大的通信量冲击网络,使得所有可用网络资源都被消耗殆尽,最后导致合法的用户请求无法通过。 -
连通性攻击 指用大量的连接请求冲击计算机,使得所有可用的操作系统资源都被消耗殆尽,最终计算机无法再处理合法用户的请求。 -
D网络 基于巨量的Flood耗尽目标网络带宽资源 如:ICMP Flood,UDP Flood D协议 -
攻击协议漏洞发起的拒绝服务攻击 如:Syn Flood、Ping of Death、ARP、DNS、802.11、SSL
0x04、DOS攻击常见表示形式
- 制造大流量无用数据,造成通往被攻击主机的网络拥塞,使被攻击主机无法正常和外界通信。
- 利用被攻击主机提供服务或传输协议上处理重复连接的缺陷,反复高频的发出攻击性的重复服务请求,使被攻击主机无法及时处理其它正常的请求。
- 利用被攻击主机所提供服务程序或传输协议的本身实现缺陷,反复发送畸形的攻击数据引发系统错误的分配大量系统资源,使主机处于挂起状态甚至死机。
0x05、三次握手
要理解dos攻击,首先要理解TCP连接的三次握手过程(Three-wayhandshake)。
在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接。
-
第一次握手:建立连接时,客户端发送SYN包(SYN=i)到服务器,并进入SYN SEND状态,等待服务器确认; -
第二次握手:服务器收到SYN包,必须确认客户的SYN(ACK=i1),同时自己也发送一个SYN包(SYN=j),即SYN ACK包,此时服务器进入SYN_RECV状态; -
第三次握手:客户端收到服务器的SYN ACK包,向服务器发送确认包ACK(ACK=j1),此包发送完毕,客户端和服务器进入ESTAB LISHED状态,完成三次握手,客户端与服务器开始传送数据
0x06、概念解释
**半连接:**收到SYN包而还未收到ACK包时的连接状态称为半连接,即尚未完全完成三次握手的TCP连接。
**半连接队列:**在三次握手协议中,服务器维护一个半连接队列,该队列为每个客户端的SYN包(SYN=i)开设一个条目,该条目表明服务器已收到SYN包,并向客户发出确认,正在等待客户的确认包。
**SYN-ACK重传次数:**服务器发送完SYN-ACK包,如果未收到客户确认包,服务器进行首次重传,等待一段时间仍未收到客户确认包,进行第二次重传,如果重传次数超过系统规定的最大重传次数,系统将该连接信息从半连接队列中删除。注意,每次重传等待的时间不一定相同。
**半连接存活时间:**是指半连接队列的条目存活的最长时间,也即服务从收到SYN包到确认这个报文无效的最长时间,该时间值是所有重传请求包的最长等待时间总和。有时也称半连接存活时间为Timeout时间、SYN_RECV存活时间。
sockstress
首先说一说放大攻击及Sockstress相应原理:
放大攻击原理:攻击者向目标发送一个很小的流量,但是会造成产生的攻击流量是一个巨大的、成百上千倍上万倍流量被放大的一个效果,才适合作为一个拒绝服务攻击效果。(实现攻击者很小的流量打垮一个看似很大的被攻击者)
攻击者资源消耗小(CPU、内存、宽带) 异步攻击,单机可拒绝服务高配资源服务器 主要机理在于:window窗口实现的TCP流控(在第三次传送ACK包的时候出现) 利用流控的攻击特性,造成攻击:攻击者将ACK包中的流控大小修改为0,然后促使ACK不停发向服务器,那么就会造成拒绝服务。在服务器看来就是客户端暂时没有空间来接受数据流量,所以服务器一直处于等待状态;但是攻击者只需要发完ACK包就行,不需要维持这么一个连接,所以对于攻击者就不会消耗巨量的CPU内存、带宽资源(以小搏大,放大)
当脚本对目标发起攻击时,主机是不会响应ACK包,操作系统内部如果不对其限制,默认是会由系统响应RST包表示连接可以断开,这样达不到一直建立连接的效果。 iptables -A OUTPUT -p TCP --tcp-flags rst rst -d 攻击机IP -j DROP #防火墙配置命令
0x07、DOS防御
直到今天sockstress攻击仍然是一种很有效的DOS攻击方式
由于建立完整的TCP三步握手,因此使用syn cookie防御无效
根本的防御方法是采用白名单(不实际)
折中对策限制单位时间内每IP建的TCP连接数
封杀每30秒与80端口建立连接超过10个的IP地址
iptables -I INPUT -p tcp -dport 80 -m state -state NEW -m recent -set
iptables -I INPUT -p tcp -dport 80 -m state-state NEW -m recent -update -seconds 30 -hitcount 10 j DROP
|