天津开发区网站设计公司,中国建设银行联行号查询网站,东莞微信网站建设信息,仿360电影网站源码这里是Themberfue 今天我们不聊别的#xff0c;我们聊聊著名的网络攻击手段之一的 DDoS#xff0c;看看其背后的技术细节。 DoS 了解 DDoS 前#xff0c;先来讲讲 DoS 是什么#xff0c;此 DoS 而不是 DOS 操作系统啊。1996年9月6日#xff0c;世界第三古老的网络服务提供… 这里是Themberfue 今天我们不聊别的我们聊聊著名的网络攻击手段之一的 DDoS看看其背后的技术细节。 DoS 了解 DDoS 前先来讲讲 DoS 是什么此 DoS 而不是 DOS 操作系统啊。1996年9月6日世界第三古老的网络服务提供商 Panix 的服务器受到每秒高达 150 次的异常连接攻击由于服务器无法正常分辨哪个是正常用户的连接而疲于这些异常连接从而导致无法处理正常用户的连接这次攻击被认为是首个 DoS 攻击的目标。DoS也就是 Denial of Service即拒绝服务任何对服务的干涉使得其可用性降低或者失去可用性均称为拒绝服务。例如一个计算机系统崩溃或其带宽耗尽或其硬盘被填满导致其不能提供正常的服务就构成拒绝服务。通过占用网络服务资源让服务器应接不暇从而拒绝正常的业务流量。其实对网络带宽进行的消耗性攻击只是拒绝服务攻击的一小部分只要能够对目标造成麻烦使某些服务被暂停甚至主机死机都属于拒绝服务攻击。DoS 攻击可以具体分成三种形式带宽消耗型、资源消耗型、漏洞触发型。前两者都是透过大量合法或伪造的请求占用大量网络以及器材资源以达到瘫痪网络以及系统的目的。而漏洞触发型则是触发漏洞导致系统崩溃瘫痪服务。 DDoS DDoS也就是 Distributed Denial of Service是 DoS 攻击的分布式版本分布式拒绝服务。通俗来说就是群殴一台设备持续对一台服务器的攻击有限而我们引入多台设备一起攻击一台服务器其攻击的效果是显而易见的。发起攻击的网络一般称为僵尸网络BotNet每个僵尸可以是一台个人电脑一台服务器甚至是一部智能手机。这些 “僵尸” 的获得可以是黑客通过病毒或木马感染个人设备亦或是加钱购买多台设备。攻击者控制大量受害设备如被感染的计算机、物联网设备形成僵尸网络Botnet让它们同时向目标服务器发送大量流量、请求或恶意数据。最终导致服务器资源如CPU、内存、带宽耗尽导致无法响应正常用户请求。网络拥塞影响服务器和用户之间的通信。 通过之前的学习我们知道OSI五层网络模型数据从组包到拆包所经历的每一层都有机会发动 DDoS 攻击。 带宽消耗型攻击 DDoS带宽消耗攻击可以分为两个不同的层次洪泛攻击或放大攻击。洪泛攻击的特点是利用僵尸程序发送大量流量至受损的受害者系统目的在于堵塞其宽带。放大攻击与其类似是通过恶意放大流量限制受害者系统的宽带其特点是利用僵尸程序通过伪造的源IP即攻击目标IP向某些存在漏洞的服务器发送请求服务器在处理请求后向伪造的源IP发送应答由于这些服务的特殊性导致应答包比请求包更长因此使用少量的宽带就能使服务器发送大量的应答到目标主机上。 ICMP洪水攻击ICMP floods ICMP洪水攻击是通过向未良好设置的路由器发送广播信息占用系统资源的做法利用 ICMP如 ping发送大量请求导致网络带宽耗尽。 霸占服务器的网络带宽资源是在网络层发动 DDoS 攻击我们只需要向一台服务器发送大量的 IP 协议数据包就可以慢慢地消耗掉对方的网络带宽。比如用大家耳熟能详的 ping 工具就可以发动一次 “攻击”ping 产生的是 ICMP 协议包ICMP 是 IP 协议中用来进行差错控制的一个协议全程为 Internet Control Message Protocol即互联网控制消息协议其本质上还是一个 IP 协议数据包这种攻击方式被称为 ICMP洪水攻击ICMP floods UDP洪水攻击User Datagram Protocol floods UDP用户数据报协议是一种无连接协议当数据包通过 UDP 发送时所有的数据包在发送和接收时不需要进行握手验证。当大量 UDP 数据包发送给受害系统时可能会导致带宽饱和从而使得合法服务无法请求访问受害系统。遭受 DDoS UDP 洪泛攻击时UDP 数据包的目的端口可能是随机或指定的端口受害系统将尝试处理接收到的数据包以确定本地运行的服务。如果没有应用程序在目标端口运行受害系统将对源 IP 发出 ICMP 数据包表明 “目标端口不可达” 。某些情况下攻击者会伪造源 IP 地址以隐藏自己这样从受害系统返回的数据包不会直接回到僵尸主机而是被发送到被伪造地址的主机。有时 UDP 洪泛攻击也可能影响受害系统周围的网络连接这可能导致受害系统附近的正常系统遇到问题。然而这取决于网络体系结构和线速。从上述介绍我们得知这是在 传输层 中发动的 DDoS 攻击通过发送大量的 UDP 数据包也可以起到占用网络带宽的效果但这里就有一个漏洞了发送 传输层 的数据包势必会经过 网络层那么这就会暴露攻击设备的 IP 地址从而被对方封禁。所以攻击者一般都会伪造 IP 地址隐藏自己。单纯地隐藏 IP 地址似乎没那么 “有趣”所以人们发明了一种更加有趣的方式反射攻击既然可以伪造 IP那么就不必拘泥于伪造源 IP同样可以伪造 目的IP从而达到 “借刀杀人” 的效果。攻击者伪造受害者的 IP 地址也就是将源 IP 伪造为受害者的 IP 地址攻击者向多个开放的服务器发送请求如 DNS、NTP、Memcached这些服务器会把响应数据通常比请求数据大得多直接发送到受害者受害者被大量流量冲击导致网络拥塞、服务不可用。这些开放的服务器被称为 “反射器”。在上述基础上人们还发明了一种更加厉害的放大攻击我们都知道 DNS 服务器是用来解析域名的同时 DNS 查询通常使用 UDP 这个不验证来源的传输协议综合来看DNS 就是一个很好的放大器因为一次 DNS 请求返回的数据往往大于请求的数据这里有一个 带宽放大因子BAF 的概念一般一个 60 字节的请求数据可以返回 3000 字节的响应数据那么 BAF 3000 / 60 50从而产生 50 倍的放大效果。利用开放的 DNS 服务器把小请求转化为大响应并把这些大响应流量回发到受害者。 资源消耗型攻击 TCP洪水攻击 因为 TCP 协议有连接的概念所以还可以攻击服务器的连接资源服务器和客户端每次建立一个 TCP 连接时需要经历三次握手然后把连接信息放入连接表中维护而连接表的大小是有限的我们可以让发起攻击的设备直接发起大量的 TCP 连接从而占满服务器的这个连接表而无法响应后续的 TCP 连接请求这种直接的方式被称为 TCP 洪水攻击TCP Flood。因为有三次握手的存在所以 TCP 洪水无法通过伪造 IP 地址来隐藏自己。在建立连接时如果我们在第一次握手中伪造了 IP 地址那么服务器向客户端发送的第二次握手就无法到达因此连接无法建立连接表的信息就没有变多。 协议分析攻击SYN FloodSYN洪水 传送控制协议TCP同步SYN攻击。TCP 进程通常包括发送者和接受者之间在数据包发送之前建立的完全信号交换。启动系统发送一个 SYN 请求接收系统返回一个带有自己 SYN 请求的 ACK确认作为交换。发送系统接着传回自己的 ACK 来授权两个系统间的通讯。若接收系统发送了 SYN 数据包但没接收到 ACK接受者经过一段时间后会再次发送新的 SYN 数据包。接受系统中的处理器和内存资源将存储该 TCP SYN 的请求直至超时。DDoS TCP SYN 攻击也被称为“资源耗尽攻击”它利用 TCP 功能将僵尸程序伪装的 TCP SYN 请求发送给受害服务器从而饱和服务处理器资源并阻止其有效地处理合法请求。它专门利用发送系统和接收系统间的三向信号交换来发送大量欺骗性的原 IP 地址 TCP SYN 数据包给受害系统。最终大量 TCP SYN 攻击请求反复发送导致受害系统内存和处理器资源耗尽致使其无法处理任何合法用户的请求。再简单说一下攻击者只发送 SYN 不作回答由于 TCP 的重传机制受害服务器会触发超时重传多次发送 SYN ACK 直到超时但问题来了这时候受害服务器会不断的向攻击者发送 SYN ACK比如重传了 10 次那么攻击者每攻击一次受害者就会回击 10 次所谓杀敌 1k 自损 1w 也不过如此所以攻击者一般会伪造 SYN 的源 IP 地址比如一个不存在的 IP 或者 是一个倒霉蛋的 IP。同样的思路在 TCP 协议中也可以通过反射发起攻击如上所述向各个反射器发送 SYN并把发件地址伪造成受害者的 IP这样大量的 SYN ACK 数据包就会从各个反射器上涌入受害者当然这种攻击方式因为无法在目标上建立连接所以并不属于资源消耗型攻击还是属于带宽消耗型攻击。 LAND攻击 LAND攻击局域网拒绝服务攻击Local Area Network Denial attack这种攻击方式与 SYN Flood 类似不过在 LAND 攻击包中的源地址和目标地址都是攻击对象的 IP。这种攻击会导致被攻击的机器死循环最终耗尽资源而死机。 RST洪水攻击RST Flood 在 TCP 协议中一般用四次挥手结束连接但为了防止出现异常一方可以发送一个 RST 数据包强制切断连接这样我们可以让攻击设备不断的尝试伪造各种 IP 地址并发送 RST 数据包进行 “盲打”一旦 IP 和其他的一些配置和某个正常用户的匹配上就能够切断正常用户与服务器之间的连接。这种攻击方式跟针对用户比如在一场网络游戏对局中在获悉对手 IP 地址之后就可以不断切断对方的游戏设备和服务器的连接从而干扰该用户的正常游戏。 HTTP FloodHTTP 洪泛攻击 不论是利用 IPUDP 还是 TCP 协议攻击针对的都是网络和连接资源还有一种直接针对服务器内部资源的攻击方式消耗目标的计算和 IO 资源。通过之前的学习我们知道客户端向服务器发送请求服务器按照客户端的需求查询随后计算出相应的数据并返回给客户端作为第五层的应用层应用层通常使用的是 HTTP 协议。所以我们可以对一个站点发送一个 HTTP 洪水攻击比如利用站点的搜索功能不断生成大量的关键词送入查询地址因为 HTTP 请求作为用户直接发起的涉及具体业务的请求服务器在收到请求需要根据请求而来的数据进行像数据库查询这样的 IO 操作所以这样的攻击手法会对目标产生更大的消耗。当然HTTP 洪水也有问题不能伪造 IP 地址因为 HTTP 协议实际上是基于 TCP 协议的需要经历三次握手的过程所以常见的方法借助网络代理主机得到不同的真实 IP 发起攻击。 CC攻击 CC攻击 Distributed HTTP flood分布式HTTP洪水攻击向受害服务器发送大量貌似合法的请求通常为 HTTP GET 。攻击者创造性地使用代理服务器利用广泛可用的免费代理服务器发动DDoS攻击。许多免费代理服务器支持匿名这使追踪变得非常困难。2004年一位匿名为 KiKi 的中国黑客开发了一种用于发送 HTTP 请求的 DDoS 攻击工具以攻击名为 “Collapsar” 的NSFOCUS防火墙因此该黑客工具被称为 “Challenge Collapsar”挑战黑洞简称CC这类攻击被称作 “CC攻击”。 应用程序级洪水攻击Application level floods 与前面叙说的攻击方式不同应用程序级洪水攻击主要是针对应用软件层的也就是高于 OSI 的。它同样是以大量消耗系统资源为目的通过向IIS这样的网络服务程序提出无节制的资源申请来破坏正常的网络服务。 漏洞触发型 这类攻击手法透过尝试触发缓存溢出等漏洞使操作系统发生核心错误或蓝屏死机达到拒绝服务攻击。 死亡之pingping of death 死亡之Ping是产生超过 IP 协议能容忍的数据包数若系统没有检查机制就会宕机。 泪滴攻击 每个资料要发送前该数据包都会经过切割每个小切割都会记录位移的信息以便重组但此攻击模式就是捏造位移信息造成重组时发生问题造成错误。 防御方式 拒绝服务攻击的防御方式通常为入侵检测流量过滤和多重验证旨在堵塞网络带宽的流量将被过滤而正常的流量可正常通过。 捣毁僵尸网络并让用户做好个人防护避免被感染成僵尸设备是一种很好的方法但这是需要长期持续进行的方案。从 DDoS 的攻击原理上我们可以看出来伪造 IP 地址是 DDoS 攻击的核心技术之一一旦攻击者无法伪造 IP 地址那机会就形同 冢中枯骨强弩之末而治理伪造 IP 的方法并不复杂。我们举两个典型的在技术层面上根治 DDoS 攻击的方法。 激进 网络设备 IP 过滤 现代互联网的下游也就是用户设备接入的这一端设备通过路由或者多个路由网关接入 ISP互联网服务商。所以只要让路由设备检测 IP把源地址 IP 不属于本路由所在的网段的数据全部过滤掉。这样试图伪造 IP 的流量就无法发出。 分布式过滤 我们知道庞大的互联网中不同的网段依靠路由把彼此连接。一个数据从 甲 发送到 乙它的 IP 可以伪造成 丙但是其所经过的真实路径不可能作假。从上图便可得知从丙到乙的数据不可能经过 路由A但是伪造 IP 的数据从甲发送到乙却经过了 路由A如果路由能根据 IP 地址的路径逻辑检测出矛盾那么就可以过滤到这样的流量从而消灭伪造 IP 的伎俩。 上述两种方式都涉及到用户、服务商、设备商甚至监管部门的等多方的技术方案那就不能只是一个技术问题出于商业上投入产出的考虑往往是木已成舟积重难返。这两种方案很难被执行只有有一定影响力的大型企业和机构才能撬动这种涉及全球的多方合作对于中小企业甚至是刚起步的创业者来说并不现实。 保守 DDoS 攻击的可怕之处在于第一个 DDistributed——分布式当一个僵尸网络对目标发起攻击时很难处理这些来自四面八方的流量。我们正常用户何尝不能不能联合起来把一个网络服务的流量分散到不同的地方从而稀释攻击流量。 CDN 没错CDN 又来了CDN 即 内容分发网络把一些相对静态的资源作为缓存分发给各个 CDN 节点在全世界各地都设置一些 CDN 节点用户在请求的时候从最近的节点返回这样就在一定程度上缓解了 DDoS 攻击。CDN 能缓解 HTTP Flood、CC 攻击 等......当然CDN 的缓解作用比较有限。 流量清洗 目前还有一种比较主流的并有一些厂商专门为此开发产品的方案——流量清洗当获取到流量时通过 DDoS 防御软件的处理将正常流量和恶意流量区分开正常的流量则回注回客户网站反之则屏蔽。这样一来可站点能够保持正常的运作仅仅处理真实用户访问网站带来的合法流量。 我们可以在服务器前架设一台流量清洗设备这个设备就像一个身高马大的保镖或秘书帮助我们对抗 DDoS 流量。比如在面对 TCP 协议的 SYN 洪水的 DDoS 攻击时客户端发起的 SYN 先经过清洗设备由清洗设备回复 SYN ACK如果对方应答了那说明是正常流量清洗设备再把本次连接交给后方的服务器正常通信如果对方不应答则触发超时重传重传一定次数后断开连接。因为清洗设备人高马大其作为专门应对攻击的角色对连接资源做了极大的专门的优化从而能应对极其海量的连接请求所以攻击者想要通过 SYN 洪水打垮它非常困难再比如威胁极大的 HTTP 洪水攻击正常来说一个 HTTP 请求很难用传统的方式检测出其是正常流量还是恶意流量但清洗设备往往会提供专业的流量清洗平台这些专业做流量清洗的服务商通过多年和 DDoS 攻击的对抗积累了大量的经验和技术由于 HTTP 协议无法伪造 IP 地址所以通过多年的数据积累建立 IP 信用库那些经常发起攻击的、臭名昭著的 IP 发来的流量就会被过滤掉顺便将这些 IP 放进黑名单或者封禁异常 IP这有点像安卓手机的来点标记这是流量清洗厂商在数据积累上的优势。亦或者恶意流量由于是通过程序自动发出而不是人类的操作所以利用算法对流量进行模式识别就可以被检测出来这是流量清洗厂商在技术上的优势。 防火墙 防火墙可以设置规则例如允许或拒绝特定通讯协议端口或 IP 地址。当攻击从少数不正常的 IP 地址发出时可以简单的使用拒绝规则阻止一切从攻击源 IP 发出的通信。复杂攻击难以用简单规则来阻止例如 80 端口网页服务遭受攻击时不可能拒绝端口所有的通信因为其同时会阻止合法流量。此外防火墙可能处于网络架构中过后的位置路由器可能在恶意流量达到防火墙前即被攻击影响。然而防火墙能有效地防止用户从启动防火墙后的计算机发起攻击。 网络交换设备自有能力 大多数交换机有一定的速度限制和访问控制能力。有些交换机提供自动速度限制、流量整形、后期连接、深度包检测和假IP过滤功能可以检测并过滤拒绝服务攻击。例如SYN 洪水攻击可以通过后期连接加以预防。基于内容的攻击可以利用深度包检测阻止。和交换机类似路由器也有一定的速度限制和访问控制能力。 黑洞引导 黑洞引导指将所有受攻击计算机的通信全部发送至一个 “黑洞”空接口或不存在的计算机地址或者有足够能力处理洪流的网络设备商以避免网络受到较大影响。 不论怎样DDoS 作为一种历史悠久但破坏能力巨大的黑客攻击手段时至今日还是无法被彻底解决。或许你可以说 DDoS 攻击源自互联网通讯架构在设计之初考虑的缺失而人们现在又却反壮士断腕的决心从根本上消灭它。这种破坏与对抗将长久的存在于互联网世界之中我们对抗的永远也不是技术上的不确定性而是设计该技术的人类的不确定性而我们能做的只是做好防护保持警惕⚠️⚠️⚠️本文章部分文案参考——DDoS技术鉴赏、Wiki百科