DOS攻击

DOS攻击

0x01、什么是DOS攻击

DOS攻击不是DOS

DOS攻击是利用程序漏洞一对一的执行资源耗尽的Denial of Service拒绝服务攻击
DenialOfServie != DiskOperationSystem

DDoS分布式拒绝服务

DOS攻击拼的是各自的资源,效果比较差

而DDOS则是汇聚资源能力,多对一,属于资源耗尽型攻击

历史

以前:欠缺技术能力的无赖,我ping死你(最难缠的无赖)

现在:最强大最危险的攻击,攻击方式众多(专业化的要求勒索)
亲身经历:电商网站被勒索、Bi11 gates僵尸程序

贩卖和租用肉鸡已经成为黑产中重要的一部分

最终的办法就是拼资源,投资抗D,或者乖乖交保护费

DOS攻击_第1张图片

0x02、攻击流程

  • 从攻击者到被害者

    网络—FW—服务器OS—服务应用

  • 资源耗尽

    网络:带宽
    FW:吞吐量、并发连接
    服务器:CPU、内存、I/0
    应用:处理请求能力,对
    0S资源的使用权

  • 程序漏洞攻击

    缓冲区溢出

    协议、程序逻辑漏洞

  • 链路上任何一点都可成为目标

    DOS攻击_第2张图片

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状态,完成三次握手,客户端与服务器开始传送数据

DOS攻击_第3张图片

0x06、概念解释

**半连接:**收到SYN包而还未收到ACK包时的连接状态称为半连接,即尚未完全完成三次握手的TCP连接。

**半连接队列:**在三次握手协议中,服务器维护一个半连接队列,该队列为每个客户端的SYN包(SYN=i)开设一个条目,该条目表明服务器已收到SYN包,并向客户发出确认,正在等待客户的确认包。

**SYN-ACK重传次数:**服务器发送完SYN-ACK包,如果未收到客户确认包,服务器进行首次重传,等待一段时间仍未收到客户确认包,进行第二次重传,如果重传次数超过系统规定的最大重传次数,系统将该连接信息从半连接队列中删除。注意,每次重传等待的时间不一定相同。

**半连接存活时间:**是指半连接队列的条目存活的最长时间,也即服务从收到SYN包到确认这个报文无效的最长时间,该时间值是所有重传请求包的最长等待时间总和。有时也称半连接存活时间为Timeout时间、SYN_RECV存活时间。

DOS攻击_第4张图片

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

你可能感兴趣的:(渗透测试,web安全,渗透测试)