此文章主要介绍的是DDoS攻击实例 SYN Flood攻击,我们大家都知道SYN-Flood是目前使用最广泛的DDoS攻击手段,早先的DoS的手段在向分布式这一阶段发展的时候也经历了千军万马过独木桥的过程。
SYN-Flood的攻击效果最好,应该是众黑客不约而同选择它的原因吧。那么我们一起来看看SYN-Flood的详细情况。
SYN-Flood是目前最流行的DDoS攻击手段,早先的DoS的手段在向分布式这一阶段发展的时候也经历了浪里淘沙的过程。SYN-Flood的攻击效果最好,应该是众黑客不约而同选择它的原因吧。那么我们一起来看看SYN-Flood的详细情况。
Syn Flood原理 – 三次握手
Syn Flood利用了TCP/IP协议的固有漏洞。面向连接的TCP三次握手是Syn Flood存在的基础。
TCP连接的三次握手
如图二,在第一步中,客户端向服务端提出连接请求。这时TCP SYN标志置位。客户端告诉服务端序列号区域合法,需要检查。客户端在TCP报头的序列号区中插入自己的ISN。服务端收到该TCP分段后,在第二步以自己的ISN回应(SYN标志置位),同时确认收到客户端的第一个TCP分段(ACK标志置位)。在第三步中,客户端确认收到服务端的ISN(ACK标志置位)。到此为止建立完整的TCP连接,开始全双工模式的数据传输过程。
Syn Flood攻击者不会完成三次握手
假设一个用户向 服务器 发送了SYN报文后突然死机或掉线,那么服务器在发出SYN+ACK应答报文后是无法收到客户端的ACK报文的(第三次握手无法完成),这种情况下服务器端一般会重试(再次发送SYN+ACK给客户端)并等待一段时间后丢弃这个未完成的连接,这段时间的长度我们称为SYN Timeout,一般来说这个时间是分钟的数量级(大约为30秒-2分钟);
一个用户出现异常导致服务器的一个线程等待1分钟并不是什么很大的问题,但如果有一个恶意的攻击者大量模拟这种情况,服务器端将为了维护一个非常大的半连接列表而消耗非常多的资源—-数以万计的半连接,即使是简单的保存并遍历也会消耗非常多的CPU时间和内存,何况还要不断对这个列表中的IP进行SYN+ACK的重试。
实际上如果服务器的TCP/IP栈不够强大,最后的结果往往是堆栈溢出崩溃—即使服务器端的系统足够强大,服务器端也将忙于处理攻击者伪造的TCP连接请求而无暇理睬客户的正常请求(毕竟客户端的正常请求比率非常之小),此时从正常客户的角度看来,服务器失去响应,这种情况我们称做:服务器端受到了SYN Flood攻击(SYN洪水攻击)。
下面是我在实验室中模拟的一次Syn Flood攻击的实际过程
这一个局域网环境,只有一台攻击机(PIII667/128/mandrake),被攻击的是一台Solaris 8.0 (spark)的主机,网络设备是Cisco的百兆交换机。这是在攻击并未进行之前,在Solaris上进行snoop的记录,snoop与tcpdump等网络监听工具一样,也是一个很好的网络抓包与分析的工具。可以看到攻击之前,目标主机上接到的基本上都是一些普通的网络包。 …
? -> (broadcast) ETHER Type=886F (Unknown), size = 1510 bytes
? -> (broadcast) ETHER Type=886F (Unknown), size = 1510 bytes
? -> (multicast) ETHER Type=0000 (LLC/802.3), size = 52 bytes
? -> (broadcast) ETHER Type=886F (Unknown), size = 1510 bytes
192.168.0.66 -> 192.168.0.255 NBT>

拒绝服务攻击是如何展开的
前面讨论的目的都是由拒绝服务攻击直接达到的,事实上,拒绝服务攻击还可以作为特权提升攻击、获得非法访问的一种辅助手段。 这时候,拒绝服务攻击服从于其他攻击的目的。 通常,攻击者不能单纯通过拒绝服务攻击获得对某些系统、信息的非法访问,但其可作为间接手段。 SYN风暴攻击可以用于IP劫持、IP欺骗等。 当攻击者想要向B冒充C时,其通常需要C不能响应B的消息,为此,攻击者可以先攻击C(如果它是在线的)使其无法对B的消息进行响应。 然后攻击者就可以通过窃听发向C的数据包,或者通过猜测发向C的数据包中的序列号等,然后冒充C与第三方通信。 一些系统在启动时会有漏洞,可以通过拒绝服务攻击使之重启,然后在该系统重启时针对漏洞进行攻击。 如RARP-boot,如果能令其重启,就可以将其攻破。 只需知道RARP-boot在引导时监听的端口号(通常为69),通过向其发送伪造的数据包几乎可以完全控制其引导(Boot)过程。 有些网络配置成当防火墙关闭时所有数据包都能通过(特别是对于那些提供服务比安全更加重要的场合,如普通的ISP),则可通过对防火墙的拒绝服务攻击使其失去作用达到非法访问受防火墙保护的网络的目的。 对Windows系统的大多数配置变动在生效前都需要重新启动系统。 这么一来,如果攻击者已经获得了对系统的管理性特权的变动之后,可能需要采取拒绝服务攻击的手段使系统重启或者迫使系统的真正管理员重启系统,以便其改动的配置生效。 对DNS的拒绝服务攻击可以达到地址冒充的目的。 DNS服务器起到的是把域名解析为IP地址的作用。 攻击者可以通过把DNS致瘫,然后冒充DNS的域名解析,把错误的域名-IP地址的对应关系提供给用户,以便把用户(受害者)的数据包指向错误的网站(如攻击者的网站),或者把受害者的邮件指向错误的(如攻击者的)邮件服务器,这样,攻击者就达到了冒充其他域名的目的。 攻击者的最终目的大致有两种:一是窃取受害者的信息,但客观上导致用户不能应用相应的服务,也构成拒绝服务攻击;二是拒绝服务攻击,如蓄意使用户不能访问需要的网站,不能发送邮件到需要的服务器等。 编辑本段防止拒绝服务的攻击 许多现代的UNIX允许管理员设置一些限制,如限制可以使用的最大内存、CPU时间以及可以生成的最大文件等。 如果当前正在开发―个新的程序,而又不想偶然地使系统变得非常缓慢,或者使其它分享这台主机的用户无法使用,这些限制是很有用的。 Korn Shell的ulimit命令和Shell的Iimit命令可以列出当前程的资源限制。
DOS.Generic.SYNFlood! 这是什么~???
DDOS洪水攻击。 SYN/ACK Flood攻击:这种攻击方法是经典最有效的DDOS方法,可通杀各种系统的网络服务,主要是通过向受害主机发送大量伪造源IP和源端口的SYN或ACK包,导致主机的缓存资源被耗尽或忙于发送回应包而造成拒绝服务,由于源都是伪造的故追踪起来比较困难,缺点是实施起来有一定难度,需要高带宽的僵尸主机支持。 少量的这种攻击会导致主机服务器无法访问,但却可以Ping的通,在服务器上用Netstat -na命令会观察到存在大量的SYN_RECEIVED状态,大量的这种攻击会导致Ping失败、TCP/IP栈失效,并会出现系统凝固现象,即不响应键盘和鼠标。 普通防火墙大多无法抵御此种攻击。 5、把网站做成静态页面大量事实证明,把网站尽可能做成静态页面,不仅能大大提高抗攻击能力,而且还给黑客入侵带来不少麻烦,至少到现在为止关于HTML的溢出还没出现,看看吧!新浪、搜狐、网易等门户网站主要都是静态页面,若你非需要动态脚本调用,那就把它弄到另外一台单独主机去,免的遭受攻击时连累主服务器,当然,适当放一些不做数据库调用脚本还是可以的,此外,最好在需要调用数据库的脚本中拒绝使用代理的访问,因为经验表明使用代理访问你网站的80%属于恶意行为。 解决办法:增强操作系统的TCP/IP栈Win2000和Win2003作为服务器操作系统,本身就具备一定的抵抗DDOS攻击的能力,只是默认状态下没有开启而已,若开启的话可抵挡约个SYN攻击包,若没有开启则仅能抵御数百个,具体怎么开启,自己去看微软的文章吧!《强化 TCP/IP 堆栈安全》-安装专业抗DDOS防火墙
DOS攻击的具体是怎么样的?怎样预防?
DoS攻击、DDoS攻击和DRDoS攻击相信大家已经早有耳闻了吧!DoS是Denial of Service的简写就是拒绝服务,而DDoS就是Distributed Denial of Service的简写就是分布式拒绝服务,而DRDoS就是Distributed Reflection Denial of Service的简写,这是分布反射式拒绝服务的意思。 不过这3中攻击方法最厉害的还是DDoS,那个DRDoS攻击虽然是新近出的一种攻击方法,但它只是DDoS攻击的变形,它的唯一不同就是不用占领大量的“肉鸡”。 这三种方法都是利用TCP三次握手的漏洞进行攻击的,所以对它们的防御办法都是差不多的。 DoS攻击是最早出现的,它的攻击方法说白了就是单挑,是比谁的机器性能好、速度快。 但是现在的科技飞速发展,一般的网站主机都有十几台主机,而且各个主机的处理能力、内存大小和网络速度都有飞速的发展,有的网络带宽甚至超过了千兆级别。 这样我们的一对一单挑式攻击就没有什么作用了,搞不好自己的机子就会死掉。 举个这样的攻击例子,假如你的机器每秒能够发送10个攻击用的数据包,而被你攻击的机器(性能、网络带宽都是顶尖的)每秒能够接受并处理100攻击数据包,那样的话,你的攻击就什么用处都没有了,而且非常有死机的可能。 要知道,你若是发送这种1Vs1的攻击,你的机器的CPU占用率是90%以上的,你的机器要是配置不够高的话,那你就死定了。 不过,科技在发展,黑客的技术也在发展。 正所谓道高一尺,魔高一仗。 经过无数次当机,黑客们终于又找到一种新的DoS攻击方法,这就是DDoS攻击。 它的原理说白了就是群殴,用好多的机器对目标机器一起发动DoS攻击,但这不是很多黑客一起参与的,这种攻击只是由一名黑客来操作的。 这名黑客不是拥有很多机器,他是通过他的机器在网络上占领很多的“肉鸡”,并且控制这些“肉鸡”来发动DDoS攻击,要不然怎么叫做分布式呢。 还是刚才的那个例子,你的机器每秒能发送10攻击数据包,而被攻击的机器每秒能够接受100的数据包,这样你的攻击肯定不会起作用,而你再用10台或更多的机器来对被攻击目标的机器进行攻击的话,嘿嘿!结果我就不说了。 DDoS究竟如何攻击?目前最流行也是最好用的攻击方法就是使用SYN-Flood进行攻击,SYN-Flood也就是SYN洪水攻击。 SYN-Flood不会完成TCP三次握手的第三步,也就是不发送确认连接的信息给服务器。 这样,服务器无法完成第三次握手,但服务器不会立即放弃,服务器会不停的重试并等待一定的时间后放弃这个未完成的连接,这段时间叫做SYN timeout,这段时间大约30秒-2分钟左右。 若是一个用户在连接时出现问题导致服务器的一个线程等待1分钟并不是什么大不了的问题,但是若有人用特殊的软件大量模拟这种情况,那后果就可想而知了。 一个服务器若是处理这些大量的半连接信息而消耗大量的系统资源和网络带宽,这样服务器就不会再有空余去处理普通用户的正常请求(因为客户的正常请求比率很小)。 这样这个服务器就无法工作了,这种攻击就叫做:SYN-Flood攻击。 到目前为止,进行DDoS攻击的防御还是比较困难的。 首先,这种攻击的特点是它利用了TCP/IP协议的漏洞,除非你不用TCP/IP,才有可能完全抵御住DDoS攻击。 不过这不等于我们就没有办法阻挡DDoS攻击,我们可以尽力来减少DDoS的攻击。 下面就是一些防御方法:1。 确保服务器的系统文件是最新的版本,并及时更新系统补丁。 2。 关闭不必要的服务。 3。 限制同时打开的SYN半连接数目。 4。 缩短SYN半连接的time out 时间。 5。 正确设置防火墙禁止对主机的非开放服务的访问限制特定IP地址的访问启用防火墙的防DDoS的属性严格限制对外开放的服务器的向外访问运行端口映射程序祸端口扫描程序,要认真检查特权端口和非特权端口。 6。 认真检查网络设备和主机/服务器系统的日志。 只要日志出现漏洞或是时间变更,那这台机器就可 能遭到了攻击。 7。 限制在防火墙外与网络文件共享。 这样会给黑客截取系统文件的机会,主机的信息暴露给黑客, 无疑是给了对方入侵的机会。 8。 路由器以Cisco路由器为例Cisco Express Forwarding(CEF)使用 unicast reverse-path访问控制列表(ACL)过滤设置SYN数据包流量速率升级版本过低的ISO为路由器建立log server能够了解DDoS攻击的原理,对我们防御的措施在加以改进,我们就可以挡住一部分的DDoS攻击,知己知彼,百战不殆嘛。
发表评论