精华内容
下载资源
问答
  • DOS攻击

    2020-02-01 09:22:44
    DOS攻击

    DOS攻击

    一.什么是Dos攻击

    本节课介绍的是Dos针对耗费CPU资源的攻击

    • 攻击思路
      在服务器上产生大量的哈希冲突,迫使复杂度提高,导致CPU计算能力大量消耗。

    二.几个攻击思路

    (一)X33A
    在这里插入图片描述

    解析一下上面这个代码,首先有一个hash=5381(相当于种子),我们比如插入"love"这个字符串
    计算过程为:hash=((((5381*33)+“l”)*33+“o”)*33+“v”)*33…
    (循环直到字符串处理完)

    (二)X31A
    在这里插入图片描述

    这种方法下很容易找到等效子串,因为前后只差31。
    在这里插入图片描述

    涉及题型——构造等效子串:
    例题:用Ey和Fz构造1000个等效子串
    例如用这两个字母构造1000个等效子串:
    1)判断用多少位?——2^n>=1000 —>可推出n=10,所以至少需要10*2=20位
    2)构造内容:第一个:EyEy…Ey 第二个:EyEy…Fz 第三个:… 最后一个:FzFz…Fz

    (三)X33X
    在这里插入图片描述

    这种是用异或方法来进行的hash计算的。这种方法不是线性的,所以无法构造等价子串。
    攻击方法:中间相遇
    本方法的攻击核心是降低算法复杂度
    1)先看一个hashback()函数
    在这里插入图片描述

    从最后一个元素开始计算,104…193是33的模逆。往前倒。

    2)构造查找表:这里面target的值可以任意取
    在这里插入图片描述

    重复2^16 —重复这么多次,意味着查找表的长度是216,找到一个冲突的复杂度是215,右边的字母的值是随机生成的,然后根据hashback函数生成左边的数值。
    在这里插入图片描述

    3)中间相遇
    在这里插入图片描述

    正常地使用x33对前缀字符串进行计算,计算的结果如果在中间相遇表中,那么就意味着这个前缀和后缀凑在一起,使用x33计算的结果就是指定的end。
    在这里插入图片描述

    正常的X33X运算和逆运算都得到中间相遇的值后,则前面的字符串和后面的字符串连接后,就能得到最后的目标值。

    原理:冲突串生成:所有操作均可逆。:
    在这里插入图片描述

    三.防御

    服务器一般都通过限制输入参数数量、限制POST数据包大小的方法来防止攻击。

    展开全文
  • DoS攻击

    2017-02-25 14:36:19
    DoS攻击

    什么是DoS攻击

    DoS到底是什么?接触PC机较早的同志会直接想到微软磁盘操作系统的DOS--DiskOperationSystem?不,此DoS非彼DOS也,DoS即DenialOfService,拒绝服务的缩写。
    作个形象的比喻来理解DoS。街头的餐馆是为大众提供餐饮服务,如果一群地痞流氓要DoS餐馆的话,手段会很多,比如霸占着餐桌不结账,堵住餐馆的大门不让路,骚扰餐馆的服务员或厨子不能干活,甚至更恶劣……相应的计算机和网络系统则是为Internet用户提供互联网资源的,如果有黑客要进行DoS攻击的话,可以想象同样有好多手段!今天最常见的DoS攻击有对计算机网络的带宽攻击和连通性攻击。带宽攻击指以极大的通信量冲击网络,使得所有可用网络资源都被消耗殆尽,最后导致合法的用户请求无法通过。连通性攻击指用大量的连接请求冲击计算机,使得所有可用的操作系统资源都被消耗殆尽,最终计算机无法再处理合法用户的请求。
    传统上,攻击者所面临的主要问题是网络带宽,由于较小的网络规模和较慢的网络速度限制,攻击者无法发出过多的请求。虽然类似“the ping of death”的攻击类型只需要较少量的包就可以摧毁一个没有打过补丁的UNIX系统,但大多数的DoS攻击还是需要相当大的带宽的,而以个人为单位的黑客们很难使用高带宽的资源。为了克服这个缺点,DoS攻击者开发了分布式的攻击。攻击者简单利用工具集合许多的网络带宽来同时对同一个目标发动大量的攻击请求,这就是DDoS(Distributed Denial of Service)攻击。


    DoS攻击种类

    DoS攻击有许多种类,主要有Land攻击、死亡之ping、泪滴、Smurf攻击及SYN洪水等。

    syn洪水攻击
      据统计,在所有黑客攻击事件中,syn洪水攻击是最常见又最容易被利用的一种DoS攻击手法。
      1.攻击原理
      要理解SYN洪水攻击,首先要理解TCP连接的三次握手过程(Three-wayhandshake)。在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接。第一次握手:建立连接时,客户端发送SYN包((SYN=i)到服务器,并进入SYN SEND状态,等待服务器确认;
      第二次握手:服务器收到SYN包,必须确认客户的SYN (ACK=i+1 ),同}Jj’自己也发送一个SYN包((SYN j)}即SYN+ACK包,此时服务器进入SYN_RECV状态;
      第三次握手:客户端收到服务器的SYN十ACK包,向服务器发送确认包ACK(ACK=j+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手,客户端与服务器开始传送数据。
      在上述过程中,还有一些重要的概念:
      半连接:收到SYN包而还未收到ACK包时的连接状态称为半连接,即尚未完全完成三次握手的TCP连接。
      半连接队列:在三次握手协议中,服务器维护一个半连接队列,该队列为每个客户端的SYN包(SYN=i )开设一个条目,该条目表明服务器已收到SYN包,并向客户发出确认,正在等待客户的确认包。这些条目所标识的连接在服务器处于SYN_ RECV状态,当服务器收到客户的确认包时,删除该条目,服务器进入ESTABLISHED状态。
      Backlog参数:表示半连接队列的最大容纳数目。
      SYN-ACK重传次数:服务器发送完SYN-ACK包,如果未收到客户确认包,服务器进行首次重传,等待一段时间仍未收到客户确认包,进行第二次重传,如果重传次数超过系统规定的最大重传次数,系统将该连接信息、从半连接队列中删除。注意,每次重传等待的时间不一定相同。
      半连接存活时间:是指半连接队列的条目存活的最长时间,也即服务从收到SYN包到确认这个报文无效的最长时间,该时间值是所有重传请求包的最长等待时间总和。有时也称半连接存活时间为Timeout时间、SYN_RECV存活时间。
      上面三个参数对系统的TCP连接状况有很大影响。
      SYN洪水攻击属于DoS攻击的一种,它利用TCP协议缺陷,通过发送大量的半连接请求,耗费CPU和内存资源。SYN攻击除了能影响主机外,还可以危害路由器、防火墙等网络系统,事实上SYN攻击并不管目标是什么系统,只要这些系统打开TCP服务就可以实施。从图4-3可看到,服务器接收到连接请求(SYN=i )将此信息加入未连接队列,并发送请求包给客户( SYN=j,ACK=i+1 ),此时进入SYN_RECV状态。当服务器未收到客户端的确认包时,重发请求包,一直到超时,才将此条目从未连接队列删除。配合IP欺骗,SYN攻击能达到很好的效果,通常,客户端在短时间内伪造大量不存在的IP地址,向服务器不断地发送SYN包,服务器回复确认包,并等待客户的确认,由于源地址是不存在的,服务器需要不断的重发直至超时,这些伪造的SYN包将长时间占用未连接队列,正常的SYN 请求
      被丢弃,目标系统运行缓慢,严重者引起网络堵塞甚至系统瘫痪。过程如下: 
      攻击主机C(地址伪装后为C')-----大量SYN包---->彼攻击主机
      C'<-------SYN/ACK包----被攻击主机
      由于C’地址不可达,被攻击主机等待SYN包超时。攻击主机通过发人量SYN包填满未连接队列,导致正常SYN包被拒绝服务。另外,SYN洪水攻击还可以通过发大量ACK包进行DoS攻击。
      
        2.传统算法
      抵御SYN洪水攻击较常用的方法为网关防火墙法、中继防火墙法和SYNcookies。为便于叙述,将系统拓扑图简化为图4-4。图中,按网络在防火墙内侧还是外侧将其分为内网、外网(内网是受防火墙保护的)。其次,设置防火墙的SYN重传计时器。超时值必须足够小,避免backlog队列被填满;同时又要足够大保证用户的正常通讯。
      (1) 网关防火墙法
      网关防火墙抵御攻击的基本思想是:对于内网服务器所发的SYN/ACK包,防火墙立即发送ACK包响应。当内网服务器接到ACK包后,从backlog队列中移出此半连接,连接转为开连接,TCP连接建成。由于服务器处理开连接的能力比处理半连接大得多,这种方法能有效减轻对内网服务器的SYN攻击,能有效地让backlog队列处于未满状态,同时在重传一个未完成的连接之前可以等待更长时间。
      以下为算法完整描述:
      第一步,防火墙截获外网客户端发向内网服务器SYN数据包,允许其通过,抵达内网服务器。同时在连接跟踪表中记录此事件.
      第二步,防火墙截获服务器发向客户端的SYN/ACK响应包,用连接跟踪表中记录的相应SYN包匹配它.
      第三步,防火墙让截获的SYN/ACK继续进行(发向客户端)。同时,向内网服务器发送ACK包。这样,对服务器来说,TCP连接三次握手已经完成。系统在backlog队列中删掉此半连接.
      第四步,看此TCP连接是否有效,相应产生两种解决方法。如果客户端的连接尝试是有效的,那么防火墙将接到来自客户端的ACK包,然后防火墙将它转发到服务器。服务器会忽略这个冗余的ACK包,这在TCP协议中是允许的.
      如果客户端的IP地址并不存在,那么防火墙将收不到来自客户端的ACK包,重转计时器将超时。这时,防火墙重传此连接.
      (2) 中继防火墙法
      中继防火墙抵御攻击的思想是:防火墙在向内网服务器发SYN包之前,首先完成与外网的三次握手连接,从而消除SYN洪水攻击的成立条件。
      以下为算法完整描述:
      第一步,防火墙截获外网客户端发向内网服务器SYN数据包.
      第二步,防火墙并不直接向内网发SYN数据包,而是代替内网服务器向外网发SYNIACK数据包.
      第三步,只有接到外网的ACK包,防火墙向内网发SYN包.
      第四步,服务器应答SYN/ACK包. 
      第五步,防火墙应答ACK包. 
      (3) 分析
      首先分析算法的性能,可以看出:为了提高效率,上述算法使用了状态检测等机制(可通过本系统的基本模块层得以实现)
      对于非SYN包(CSYN/ACK及ACK包),如果在连线跟踪信息表未查找到相应项,则还要匹配规则库,而匹配规则库需比较诸多项(如IP地址、端口号等),花费较大,这会降低防火墙的流量。另外,在中继防火墙算法中,由于使用了SYN包代理,增加了防火墙的负荷,也会降低防火墙的流量。
      其次,当攻击主机发ACK包,而不是SYN包,算法将出现安全漏洞。一般地,TCP连接从SYN包开始,一旦 SYN包匹配规则库,此连接将被加到连接跟踪表中,并且系统给其60s延时。之后,当接到ACK包时,此连接延时突然加大到3600s。如果,TCP连接从ACK包开始,同时此连接未在连接跟踪表中注册,ACK包会匹配规则库。如匹配成功,此连接将被加到连接跟踪表中,同时其延时被设置为3600s。即使系统无响应,此连接也不会终止。如果攻击者发大量的ACK包,就会使半连接队列填满,导致无法建立其它TCP连接。此类攻击来自于内网。因为,来自于外网的ACK包攻击,服务器会很快发RST包终止此连接(SOs>。而对于内网的外发包,其限制规则的严格性要小的多。一旦攻击者在某时间段内从内网发大量ACK包,并且速度高于防火墙处理速度,很容易造成系统瘫痪。
      (4) SYN cookies

      Linux支持SYN cookies,它通过修改TCP协议的序列号生成方法来加强抵御SYN洪水攻击能力。在TCP协议中,当收到客户端的SYN请求时,服务器需要回复SYN-SACK包给客户端,客户端也要发送确认包给服务器。通常,服务器的初始序列号由服务器按照一定的规律计算得到或采用随机数,但在SYN cookies中,服务器的初始序列号是通过对客户端IP地址、客户端端口、服务器IP地址和服务器端口以及其他一些安全数值等要素进行hash运算,加密得到的,称之为cookie。当服务器遭受SYN攻击使得backlog队列满时,服务器并不拒绝新的SYN请求,而是回复cookie(回复包的SYN序列号)给客户端,如果收到客户端的ACK包,服务器将客户端的ACK序列号减去1得到。cookie比较值,并将上述要素进行一次hash运算,看看是否等于此cookie。如果相等,直接完成三次握手(注意:此时并不用查看此连接是否属于backlog队列)。

        (5)land攻击

    land 攻击是一种使用相同的源和目的主机和端口发送数据包到某台机器的攻击。结果通常使存在漏洞的机器崩溃。


      在Land攻击中,一个特别打造的SYN包中的原地址和目标地址都被设置成某一个服务器地址,这时将导致接受服务器向它自己的地址发送SYN一ACK消息,结果这个地址又发回ACK消息并创建一个空连接,每一个这样的连接都将保留直到超时掉。对Land攻击反应不同,许多UNIX实现将崩溃,而 Windows NT 会变的极其缓慢(大约持续五分钟)。

    (6)死亡之Ping

    (ping of death)


      对目标IP不停地Ping探测从而致使目标主机网络瘫痪。常见工具有蜗牛炸弹、AhBomb等。


      由于在早期的阶段,路由器对包的最大尺寸都有限制,许多操作系统对TCP/IP栈的实现在ICMP包上都是规定64KB,并且在对包的标题头进行读取之后,要根据该标题头里包含的信息来为有效载荷生成缓冲区,当产生畸形的,声称自己的尺寸超过ICMP上限的包也就是加载的尺寸超过64K上限时,就会出现内存分配错误,导致TCP/IP堆栈崩溃,致使接受方死机。


      防御:现在所有的标准TCP/IP实现都已实现对付超大尺寸的包,并且大多数防火墙能够自动过滤这些攻击,包括:从windows 98之后的windows NT(service pack 3之后),Solaris、和Mac OS都具有抵抗一般ping of death攻击的能力。此外,对防火墙进行配置,阻断ICMP以及任何未知协议,都讲防止此类攻击。


      ping -t(无限ping) -l(长度) 65500 ip 死亡之ping(发送大于64K的文件并一直ping就成了死亡之ping)

         (7)泪滴

    teardrop)


      泪滴攻击利用那些在TCP/IP堆栈实现中信任IP碎片中的包的标题头所包含的信息来实现自己的攻击。IP分段含有指示该分段所包含的是原包的哪一段的信息,某些TCP/IP(包括servicepack 4以前的NT)在收到含有重叠偏移的伪造分段时将崩溃。


      防御:服务器应用最新的服务包,或者在设置防火墙时对分段进行重组,而不是转发它们

         (8)Smurf攻击

    Smurf攻击是以最初发动这种攻击的程序名“Smurf”来命名的。这种攻击方法结合使用了IP欺骗和ICMP回复方法使大量网络传输充斥目标系统,引起目标系统拒绝为正常系统进行服务。Smurf攻击通过使用将回复地址设置成受害网络的广播地址的ICMP应答请求(ping)数据包,来淹没受害主机,最终导致该网络的所有主机都对此ICMP应答请求做出答复,导致网络阻塞。更加复杂的Smurf将源地址改为第三方的受害者,最终导致第三方崩溃。


    展开全文
  • Dos攻击

    2021-04-16 09:08:38
    DoS: 也就是我们所说到的拒绝服务,一切能够引起DoS行为的攻击都被称为DoS攻击,该攻击的效果是使得计算机或者网络无法提供正常的服务。 DoS攻击: 指的是造成DoS的攻击行为,目的是使攻击目标计算机无法提供正常的...

    DoS: 也就是我们所说到的拒绝服务,一切能够引起DoS行为的攻击都被称为DoS攻击,该攻击的效果是使得计算机或者网络无法提供正常的服务。
    DoS攻击: 指的是造成DoS的攻击行为,目的是使攻击目标计算机无法提供正常的服务,最常见的DoS攻击有计算机网络带宽攻击和连通性攻击,其中带宽攻击是指以极大通信量冲击通往目标计算机的网络,使得所有可用的网络资源都被消耗殆尽,导致合法的用户请求无法通过,无法正常到达目标计算机;而连通性攻击则是指用大量的连接请求攻击目标计算机,使得所有可用的操作系统资源都被消耗殆尽,导致目标计算机无法处理合法用户的请求。常见的方式有:TCP SYN泛洪(SYN Flood),ping泛洪(ping-Flood),UDP泛洪(UDP-Flood),分片炸弹(fragmentation bombs),缓冲区溢出(buffer overflow)和ICMP路由重定向炸弹(ICMP routeing redirect bomb)。

    1、TCP SYN泛洪
    SYN泛洪攻击是利用TCP协议的缺陷进行的DoS攻击,因为攻击者必须向被攻击的服务器发送大量的虚假的IP请求(一个虚假的IP报文,这里建议大家自己组包),被攻击者在收到请求后返回确认信息,等待攻击者进行确认,这里也就是我们所说到的TCP的三次握手的基本知识,这个过程需要TCP的三次握手。由于攻击者发送的请求信息是虚假的,所以服务器接收不到返回的确认信息,在一段时间内服务器会处于等待状态,而分配给这次请求的资源却没有被释放,当攻击者等待一定时间后,会因为连接超时而断开,这时攻击者会再次发送新的虚假信息(随机产生IP地址),直至最终服务器资源被耗尽,直到瘫痪。
    涉及到的TCP三次握手:首先时请求服务方发送一个SYN消息,服务方收到SYN后,会向请求方回送一个SYN-ACK表示确认,当请求方收到SYN-ACK后,再次向服务方发送一个CK消息,这样一次TCP才算正式简历成功。

    SYNFlooding(泛洪攻击):则是专门针对TCP协议栈在两台主机间初始化连接握手的过程中进行的DoS攻击,其旨在实现三次握手的前两个步骤,当服务方收到请求方的SYN消息后,由于请求方采用源地址欺骗等手段使得服务方发出的SYN-ACK得不到确认消息,于是服务方会在一定时间处于等待接受请求方的ACK的确认消息。对于服务器来说,可用的TCP连接是有限的,因为他们只有又显得内存缓存区用于创建连接,如果这一缓冲区充满了虚假连接消息的初始信息,该服务器就会对接下来的连接停止响应,直至缓冲区里的连接企图超时。(这也就涉及到了网络编程中socket编程的listen的设计原理,也就是未完成三次握手的队列,及完成三次握手可以使用accept的队列)

    解决DoS中SYN泛洪攻击的方式
    对于SYN未完成连接队列已满,难道真的只能够丢弃链接吗?并不是这样的。
    SYN泛洪防御:

    缩短SYN timeout时间,即从服务器收到一个SYN报文到确认这个SYN报文无效这个过程所花费的时间。
    设置syncookies,服务器根据当前状态计算出一个值,放在己方发出的SYN+ACK报文中发出,当客户端返回ACK报文时,取出该值验证,如果合法,就认为连接简历成功。

    这里我采用的是开启syncookies功能来防御SYN泛洪攻击。

    Linux下怎样开启syncookies功能呢?
    修改tcp_syncookied参数即可,其中值为0时表示关闭该功能,2表示无条件开启功能,而1则表示仅当SYN半连接队列放不下时,再启用它。
    这也是由于syncookie仅用于应对SYN泛洪攻击,这种方式建立的连接,许多TCP特性都无法使用,所以应当把tcp_syncookied设置位1,仅在队列满时再启用。

    net.ipv4.tcp_syncookies = 1

    2、ping泛洪
    攻击者通过ping发送的ICMP的echo请求消息也是常见的DoS攻击方式之一,其原理是强制让系统消耗大多数时间进行无用的应答,降低系统网络质量。主要实现的方法有:①将ping包的源地址伪装成受害者的地址并向整个主机所在的网络广播echo请求,这样的请求消息能够造成很多的响应发送的受害者机器;②通过互联网在受害者机器安装木马程序并在某时刻向某主机发送大量echo请求;③攻击者发送更多简单的ping泛洪来淹没数据连接。

    一种更为古老的攻击方式叫做死亡之ping,攻击者会发送巨大的ping数据包给受害机器,易受攻击的系统可能因此崩溃,Linux等类UNIX系统并没有此漏洞。对于受害主机来说,丢弃ping请求并不是一个很好的解决方案,因为不论是对到来的ping包做什么反应,系统或者网络依旧会被淹没在检测/丢弃数据包的过程中。

    3、UDP泛洪
    不同于TCP,UDP是无状态的,没有任何信息被维护以指明下一个期望到来的数据包,所以UDP服务更易受这些类型攻击的影响,许多站点都禁止用所有非必要的UDP端口。

    4、缓冲区溢出
    缓冲区溢出攻击是无法通过过滤防火墙进行保护的,通过覆盖程序的数据空间或者运行时的堆栈导致系统或者服务崩溃,这需要专业技术以及对硬件、系统软件的了解。举个例子,早期有服务器程序使用了sprintf()函数而被攻击者攻击,因为缓冲区溢出而使得程序崩溃,所以更为妥当的做法是使用snprintf()代替sprintf()。

    5、ICMP路由重定向炸弹
    我们知道ICMP的消息类型中的类型5是告知目标系统改变内存中的路由表以获得更短的路由,以通知主机有更多的路径可用。重定向很少发源主机附近的路由器,对于连接到ISP(运营商)的住宅或商用站点来说,主机附近的路由器产生一个重定向的ICMP消息可能性非常小。如果我们主机使用静态路由且收到了重定向消息,这可能是有人在攻击我们系统,欺骗主机以转发所有流量到另一远处主机处。

    6、分片炸弹
    我们知道数据包从一个路由器沿路径(源计算机到目的计算机的路径)到下一个路由器时,网关路由器可能需要在它们进行传递到下一个网络前将数据包分切为更小的片段(超过MTU值会被分片),在这些片段里第一个分片会包含UDP或者TCP报头中的源端口号和目的端口号,接下来的分片并不包含。当数据包被分片时中间路由器不会重组数据包,数据包到达目的主机或邻近路由器时才会重新组装。

    分片炸弹的实现是构造一种非常小的数据包导致系统或者程序崩溃的操作:比如构造一个最初的分片使得UDP或者TCP的源端口和目的端口被包含在第二个分片中。许多防火墙并不检查第一个分片之后的分片,然而第一个分片由于防火墙所要过滤的信息还未呈现,所以得以通过,那么最终所有分片都在主机中得以组装。

    另外,因为中间进行分片基本上比发送更小的无需分片的数据包代价更高,所以一般会在发送在IP报头中设置了不分片标志,设置后系统会向目标主机发起连接前进行MTU发现,如果中间路由器必须对数据包进行分片那么它会丢弃数据包并赶回ICMP 3错误消息,即“需要分片”。

    展开全文
  • dos攻击

    2020-07-03 19:40:31
    什么是DoS攻击 DoS 是 Denial of Service 的简称,即拒绝服务,造成 DoS 的攻击行为被称为DoS攻击DoS攻击并非入侵主机也不能窃取机器上的资料,它的目的是: 耗尽被攻击对象的资源,使其无法提供正常的服务。 ...

    https://www.cnblogs.com/zk110/p/11519365.html
    什么是DoS攻击
    DoS 是 Denial of Service 的简称,即拒绝服务,造成 DoS 的攻击行为被称为DoS攻击。

    DoS攻击并非入侵主机也不能窃取机器上的资料,它的目的是: 耗尽被攻击对象的资源,使其无法提供正常的服务。

    DDoS(Distributed Denial of Service)攻击是基于DOS攻击的一种特殊形式。攻击者将多台受控制的计算机联合起来向目标计算机发起DOS攻击,它是一种大规模协作的攻击方式。

    理解DoS的基础
    (1) TCP的三次握手
    要理解 DoS 攻击,首先要理解 TCP 连接的三次握手(Three-wayhandshake)。

    第一次握手: 建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SENT状态,等待服务器确认;

    第二次握手: 服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态;

    第三次握手: 客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED(TCP连接成功)状态,完成三次握手。

    (2) 两个重要概念
    半连接: 收到SYN包而还未收到ACK包时的连接状态称为半连接,即尚未完全完成三次握手的TCP连接。

    半连接队列: 在三次握手协议中,服务器维护一个半连接队列,该队列为每个客户端的SYN包(SYN=i )开设一个条目,该条目表明服务器已收到SYN包,并向客户发出确认,正在等待客户的确认包。这些条目所标识的连接在服务器处于SYN_ RECV状态,当服务器收到客户的确认包时,删除该条目,服务器进入ESTABLISHED状态。

    (3) 三个重要参数
    Backlog参数: 表示半连接队列的最大容纳数目。

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

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

    常见的DoS攻击手段
    (1) SYN-flood攻击
    利用TCP协议缺陷,通过发送大量的半连接请求,耗费CPU和内存资源。SYN攻击并不管目标是什么系统,只要这些系统打开TCP服务就可以实施。服务器接收到连接请求(SYN=i )将此信息加入未连接队列,并发送请求包给客户端( SYN=j,ACK=i+1 ),此时进入SYN_RECV状态。当服务器未收到客户端的确认包时,重发请求包,一直到超时,才将此条目从未连接队列删除。配合IP欺骗,SYN攻击能达到很好的效果,通常,客户端在短时间内伪造大量不存在的IP地址,向服务器不断地发送SYN包,服务器回复确认包,并等待客户的确认,由于源地址是不存在的,服务器需要不断的重发直至超时,这些伪造的SYN包将长时间占用未连接队列,正常的SYN 请求被丢弃,目标系统运行缓慢,严重者引起网络堵塞甚至系统瘫痪。

    (2) 还有其他攻击手段
    DoS/DDoS的攻击手段很多,还有死亡之ping (ping of death)、泪滴攻击、UDP flood、Land攻击、IP欺骗,不过除了SYN-flood其他都看不太懂。

    防范DoS攻击
    到目前为止,任何网络都无法免受DoS攻击,除非不用TCP/IP。

    预防为主保证安全
    高效的本地缓存的同时,也能保证自身免受“拒绝服务”(DoS)攻击。

    常见攻击与防范
    1、SYNFlood攻击原理:问题就出在TCP连接的三次握手中,假设一个用户向服务器发送了SYN报文后突然死机或掉线,那么服务器在发出SYN+ACK应答报文后是无法收到客户端的ACK报文的(第三次握手无法完成),这种情况下服务器端一般会重试(再次发送SYN+ACK给客户端)并等待一段时间后丢弃这个未完成的连接,这段时间的长度我们称为SYNTimeout,一般来说这个时间是分钟的数量级(大约为30秒-2分钟);一个用户出现异常导致服务器的一个线程等待1分钟并不是什么很大的问题,但如果有一个恶意的攻击者大量模拟这种情况,服务器端将为了维护一个非常大的半连接列表而消耗非常多的资源----数以万计的半连接,即使是简单的保存并遍历也会消耗非常多的CPU时间和内存,何况还要不断对这个列表中的IP进行SYN+ACK的重试。实际上如果服务器的TCP/IP栈不够强大,最后的结果往往是堆栈溢出崩溃—即使服务器端的系统足够强大,服务器端也将忙于处理攻击者伪造的TCP连接请求而无暇理睬客户的正常请求(毕竟客户端的正常请求比率非常之小),此时从正常客户的角度看来,服务器失去响应,这种情况我们称作:服务器端受到了SYNFlood攻击(SYN洪水攻击)。防范:第一种是缩短SYNTimeout时间第二种方法是设置SYNCookie,就是给每一个请求连接的IP地址分配一个Cookie,如果短时间内连续受到某个IP的重复SYN报文,就认定是受到了攻击,以后从这个IP地址来的包会被一概丢弃。>netstat-n-ptcp>result.txt

    2、Smurf攻击:原理:发送伪装的ICMP数据包,目的地址设为某个网络的广播地址,源地址设为要攻击的目的主机,使所有收到此ICMP数据包的主机都将对目的主机发出一个回应,使被攻击主机在某一段时间内收到成千上万的数据包防范:在cisco路由器上配置如下可以防止将包传递到广播地址上:Router(config-if)#noipdirected-broadcast

    3、PingofDeath原理:"pingofdeath"攻击就是我们常说的"死亡Ping"这种攻击通过发送大于65536字节的ICMP包使操作系统崩溃;通常不可能发送大于65536个字节的ICMP包,但可以把报文分割成片段,然后在目标主机上重组;最终会导致被攻击目标缓冲区溢出,引起拒绝服务攻击。有些时候导致telne和http服务停止,有些时候路由器重启。

    4、泪滴攻击原理:对于一些大的IP数据包,往往需要对其进行拆分传送,这是为了迎合链路层的MTU(最大传输单元)的要求。比如,一个6000字节的IP包,在MTU为2000的链路上传输的时候,就需要分成3个IP包。在IP报头中有一个偏移字段和一个拆分标志(MF)。如果MF标志设置为1,则表示这个IP包是一个大IP包的片段,其中偏移字段指出了这个片段在整个IP包中的位置。例如,对一个6000字节的IP包进行拆分(MTU为2000),则3个片段中偏移字段的值依次为0,2000,4000。这样接收端在全部接收完IP数据包后,就可以根据这些信息重新组装这几个分次接收的拆分IP包。在这里就有一个安全漏洞可以利用了,就是如果黑客们在截取IP数据包后,把偏移字段设置成不正确的值,这样接收端在收到这些分拆的数据包后,就不能按数据包中的偏移字段值正确组合这些拆分的数据包,但接收端会不断尝试,这样就可能致使目标计算机操作系统因资源耗尽而崩溃。

    5、DRDOS原理:攻击时,攻击者巧妙的利用了反弹服务器群来将洪水数据包反弹给目标主机反弹服务是指某些服务器在收到一个请求数据报后就会产生一个回应数据报。所有的Web服务器、DNS服务器及路由器都是反弹服务器,他们会对SYN报文或其他TCP报文回应SYNACKs或RST报文,以及对一些IP报文回应ICMP数据报超时或目的地不可达消息的数据报。任何用于普通目的TCP连接许可的网络服务器都可以用做数据包反射服务器

    配置路由器、防火墙和入侵检测系统来抵御常见DDoS攻击

    Smurf

    ·确定你是否成为了攻击平台:对不是来自于你的内部网络的信息包进行监控;监控大容量的回音请求和回音应答信息包。

    ·避免被当做一个攻击平台:在所有路由器上禁止IP广播功能;将不是来自于内部网络的信息包过滤掉。

    ·减轻攻击的危害:在边界路由器对回音应答信息包进行过滤,并丢弃;对于Cisco路由器,使用CAR来规定回音应答信息包可以使用的带宽最大值。

    trinoo

    ·确定你是否成为攻击平台:在master程序和代理程序之间的通讯都是使用UDP协议,因此对使用UDP协议(类别17)进行过滤;攻击者用TCP端口27655与master程序连接,因此对使用TCP(类别6)端口27655连接的流进行过滤;master与代理之间的通讯必须要包含字符串“l44”,并被引导到代理的UDP端口27444,因此对与UDP端口27444连接且包含字符串l44的数据流进行过滤。

    ·避免被用作攻击平台:将不是来自于你的内部网络的信息包过滤掉。

    ·减轻攻击的危害:从理论上说,可以对有相同源IP地址的、相同目的IP地址的、相同源端口的、不通目的端口的UDP信息包序列进行过滤,并丢弃它们。

    TFN

    ·确定你是否成为攻击平台:对不是来自于内部网络的信息包进行监控。

    ·避免被用作攻击平台:不允许一切到你的网络上的ICMP回音和回音应答信息包,当然这会影响所有要使用这些功能的Internet程序;将不是来源于内部网络的信息包过滤掉。

    Stacheldraht

    ·确定你是否成为攻击平台:对ID域中包含值666、数据域中包含字符串“skillz”或ID域中包含值667、数据域中包含字符串“ficken”的ICMP回音应答信息包进行过滤;对源地址为“3.3.3.3”的ICMP信息包和ICMP信息包数据域中包含字符串“spoofworks”的数据流进行过滤。

    ·手工防护

    一般而言手工方式防护DDOS主要通过两种形式:

    系统优化――主要通过优化被攻击系统的核心参数,提高系统本身对DDoS攻击的响应能力。但是这种做法只能针对小规模的DDOS进行防护。

    网络追查――遭受DDoS攻击的系统的管理人员一般第一反应是询问上一级网络运营商,这有可能是ISP、IDC等,目的就是为了弄清楚攻击源头。

    退让策略
    为了抵抗DDOS攻击,客户可能会通过购买硬件的方式来提高系统抗DDOS的能力。但是这种退让策略的效果并不好,一方面由于这种方式的性价比过低,另一方面,黑客提高供给流量之后,这种方法往往失效,所以不能从根本意义上防护DDoS攻击。

    防火墙
    防火墙几乎是最常用的安全产品,但是防火墙设计原理中并没有考虑针对DDOS攻击的防护,在某些情况下,防火墙甚至成为DDOS攻击的目标而导致整个网络的拒绝服务。

    首先是防火墙缺乏DDOS攻击检测的能力。通常,防火墙作为三层包转发设备部署在网络中,一方面在保护内部网络的同时,它也为内部需要提供外部Internet服务的设备提供了通路,如果DDOS攻击采用了这些服务器允许的合法协议对内部系统进行攻击,防火墙对此就无能为力,无法精确的从背景流量中区分出攻击流量。虽然有些防火墙内置了某些模块能够对攻击进行检测,但是这些检测机制一般都是基于特征规则,DDOS攻击者只要对攻击数据包稍加变化,防火墙就无法应对,对DDOS攻击的检测必须依赖于行为模式的算法。

    第二个原因就是传统防火墙计算能力的限制,传统的防火墙是以高强度的检查为代价,检查的强度越高,计算的代价越大。而DDOS攻击中的海量流量会造成防火墙性能急剧下降,不能有效地完成包转发的任务。最好防火墙的部署位置也影响了其防护DDOS攻击的能力。传统防火墙一般都是部署在网络入口位置,虽然某种意义上保护了网络内部的所有资源,但是其往往也成为DDOS攻击的目标,攻击者一旦发起DDOS攻击,往往造成网络性能的整体下降,导致用户正常请求被拒绝。

    DDoS攻击是黑客最常用的攻击手段,下面列出了对付它的一些常规方法。
      
      (1)定期扫描
      要定期扫描现有的网络主节点,清查可能存在的安全漏洞,对新出现的漏洞及时进行清理。骨干节点的计算机因为具有较高的带宽,是黑客利用的最佳位置,因此对这些主机本身加强主机安全是非常重要的。而且连接到网络主节点的都是服务器级别的计算机,所以定期扫描漏洞就变得更加重要了。
      
      (2)在骨干节点配置防火墙
      防火墙本身能抵御DdoS攻击和其他一些攻击。在发现受到攻击的时候,可以将攻击导向一些牺牲主机,这样可以保护真正的主机不被攻击。当然导向的这些牺牲主机可以选择不重要的,或者是linux以及unix等漏洞少和天生防范攻击优秀的系统。
      
      (3)用足够的机器承受黑客攻击
      这是一种较为理想的应对策略。如果用户拥有足够的容量和足够的资源给黑客攻击,在它不断访问用户、夺取用户资源之时,自己的能量也在逐渐耗失,或许未等用户被攻死,黑客已无力支招儿了。不过此方法需要投入的资金比较多,平时大多数设备处于空闲状态,和目前中小企业网络实际运行情况不相符。
      
      (4)充分利用网络设备保护网络资源
      所谓网络设备是指路由器、防火墙等负载均衡设备,它们可将网络有效地保护起来。当网络被攻击时最先死掉的是路由器,但其他机器没有死。死掉的路由器经重启后会恢复正常,而且启动起来还很快,没有什么损失。若其他服务器死掉,其中的数据会丢失,而且重启服务器又是一个漫长的过程。特别是一个公司使用了负载均衡设备,这样当一台路由器被攻击死机时,另一台将马上工作。从而最大程度的削减了DdoS的攻击。
      
      (5)过滤不必要的服务和端口
      过滤不必要的服务和端口,即在路由器上过滤假IP……只开放服务端口成为目前很多服务器的流行做法,例如WWW服务器那么只开放80而将其他所有端口关闭或在防火墙上做阻止策略。
      
      (6)检查访问者的来源
      使用Unicast Reverse Path Forwarding等通过反向路由器查询的方法检查访问者的IP地址是否是真,如果是假的,它将予以屏蔽。许多黑客攻击常采用假IP地址方式迷惑用户,很难查出它来自何处。因此,利用Unicast Reverse Path Forwarding可减少假IP地址的出现,有助于提高网络安全性。
      
      (7)过滤所有RFC1918 IP地址
      RFC1918 IP地址是内部网的IP地址,像10.0.0.0、192.168.0.0 和172.16.0.0,它们不是某个网段的固定的IP地址,而是Internet内部保留的区域性IP地址,应该把它们过滤掉。此方法并不是过滤内部员工的访问,而是将攻击时伪造的大量虚假内部IP过滤,这样也可以减轻DdoS的攻击。
      
      (8)限制SYN/ICMP流量
      用户应在路由器上配置SYN/ICMP的最大流量来限制SYN/ICMP封包所能占有的最高频宽,这样,当出现大量的超过所限定的SYN/ICMP流量时,说明不是正常的网络访问,而是有黑客入侵。早期通过限制SYN/ICMP流量是最好的防范DOS的方法,虽然目前该方法对于DdoS效果不太明显了,不过仍然能够起到一定的作用。

    寻找机会应对攻击
      如果用户正在遭受攻击,他所能做的抵御工作将是非常有限的。因为在原本没有准备好的情况下有大流量的灾难性攻击冲向用户,很可能在用户还没回过神之际,网络已经瘫痪。但是,用户还是可以抓住机会寻求一线希望的。
      
      (1)检查攻击来源,通常黑客会通过很多假IP地址发起攻击,此时,用户若能够分辨出哪些是真IP哪些是假IP地址,然后了解这些IP来自哪些网段,再找网网管理员将这些机器关闭,从而在第一时间消除攻击。如果发现这些IP地址是来自外面的而不是公司内部的IP的话,可以采取临时过滤的方法,将这些IP地址在服务器或路由器上过滤掉。
      
      (2)找出攻击者所经过的路由,把攻击屏蔽掉。若黑客从某些端口发动攻击,用户可把这些端口屏蔽掉,以阻止入侵。不过此方法对于公司网络出口只有一个,而又遭受到来自外部的DdoS攻击时不太奏效,毕竟将出口端口封闭后所有计算机都无法访问internet了。
      
      (3)最后还有一种比较折中的方法是在路由器上滤掉ICMP。虽然在攻击时他无法完全消除入侵,但是过滤掉ICMP后可以有效的防止攻击规模的升级,也可以在一定程度上降低攻击的级别。

    展开全文
  • DoS攻击源码

    2020-04-03 04:00:17
    基于C++实现的DoS攻击,可以自由设定。
  • DOS攻击及其防范

    2020-03-04 02:10:24
    DOS攻击是一种常见的有效而简单的网络攻击...本文介绍了DOS攻击的概念、原理和分类,阐述了DOS攻击的技术扩展和防范技术,提出了针对整个系统的DOS攻击防范策略建议,并展望了未来DOS攻击技术和防范技术的发展趋势。
  • DOS:中文名字是拒绝服务,一切引起DOS行为的攻击被称为DOS攻击。该攻击的效果是使得计算机或者网络无法提供正常的服务。常见的DOS攻击有针对计算机网络带宽和连通性的攻击。DOS是单机与单机之间的攻击。 DOS攻击的...
  • DoS攻击Python源码

    2020-04-27 01:00:27
    DoS攻击Python源码,syn flood.
  • 使用机器学习对服务拒绝服务DoS攻击进行有效检测 该研究项目的目的和目标是使用机器学习检测DoS攻击,该问题将解决以下研究问题:“以有效方式利用机器学习检测拒绝服务攻击并与其他使用的机器学习算法进行比较”。 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,518
精华内容 1,407
关键字:

dos攻击