常见的几种TCP/IP攻击和防范方法
2015-09-11 13:42:15   来源:   评论:0 点击:

常见的几种TCP IP攻击和防范方法 由于TCP IP协议是Internet的基础协议,所以对TCP IP协议的完善和改进是非常必要的。TCP IP协议从开始设
常见的几种TCP/IP攻击和防范方法
    由于TCP/IP协议是Internet的基础协议,所以对TCP/IP协议的完善和改进是非常必要的。TCP/IP协议从开始设计时候并没有考虑到现在网络上如此多的威胁,由此导致了许多形形色色的攻击方法,一般针对协议原理的攻击(尤其是DDOS)我们无能为力。现将TCP/IP攻击的常用原理介绍如下:
       (1)源地址欺骗(SourceAddressSpoofing)IP欺骗(IPSpoofing)DNS欺骗(DNSSpoofing).其基本原理:是利用IP地址并不是出厂的时候与MAC固定在一起的,攻击者通过自封包和修改网络节点的IP地址,冒充某个可信节点的IP地址,进行攻击。主要有三种手法:
       1.瘫痪真正拥有IP的可信主机,伪装可信主机攻击服务器;
       2.
中间人攻击;
       3.DNS
欺骗(DNSSpoofing)和“会话劫持”(SessionHijack);
       (2)
源路由选择欺骗(SourceRoutingSpoofing)。原理:利用IP数据包中的一个选项-IPSourceRouting来指定路由,利用可信用户对服务器进行攻击,特别是基于UDP协议的由于其是面向非连接的,更容易被利用来攻击;
       (3)
路由选择信息协议攻击(RIPAttacks)。原理:攻击者在网上发布假的路由信息,再通过ICMP重定向来欺骗服务器路由器和主机,将正常的路由器标志为失效,从而达到攻击的目的。
       (4)TCP序列号欺骗和攻击(TCPSequenceNumberSpoofingandAttack),基本有三种:
       1.伪造TCP序列号,构造一个伪装的TCP封包,对网络上可信主机进行攻击;
       2.SYN
攻击(SYNAttack)。这类攻击手法花样很多,蔚为大观。但是其原理基本一致,让TCP协议无法完成三次握手协议;
       3.Teardrop
攻击(TeardropAttack)Land攻击(LandAttack)。原理:利用系统接收IP数据包,对数据包长度和偏移不严格的漏洞进行的。
     dos攻击概念      DoSDenialofService的简称,即拒绝服务,造成DoS的攻击行为被称为DoS攻击,其目的是使计算机或网络无法提供正常的服务。最常见的DoS攻击有计算机网络带宽攻击和连通性攻击。带宽攻击指以极大的通信量冲击网络,使得所有可用网络资源都被消耗殆尽,最后导致合法的用户请求就无法通过。连通性攻击指用大量的连接请求冲击计算机,使得所有可用的操作系统资源都被消耗殆尽,最终计算机无法再处理合法用户的请求。如:
      *试图FLOOD服务器,阻止合法的网络通讯
      *破坏两个机器间的连接,阻止访问服务
      *阻止特殊用户访问服务
      *破坏服务器的服务或者导致服务器死机
    不过,只有那些比较阴险的攻击者才单独使用DOS攻击,破坏服务器。通常,DOS攻击会被作为一次入侵的一部分,比如,绕过入侵检测系统的时候,通常从用大量的攻击出发,导致入侵检测系统日志过多或者反应迟钝,这样,入侵者就可以在潮水般的攻击中混骗过入侵检测系统。
       DoS攻击(DenialofService,简称DOS)即拒绝服务攻击,是指攻击者通过消耗受害网络的带宽,消耗受害主机的系统资源,发掘编程缺陷,提供虚假路由或DNS信息,使被攻击目标不能正常工作。实施DoS攻击的工具易得易用,而且效果明显。仅在美国,每周的DoS攻击就超过4000次,攻击每年造成的损失达上千万美元{irl。一般的DoS攻击是指一台主机向目的主机发送攻击分组(1:1),它的威力对于带宽较宽的站点几乎没有影响;而分布式拒绝服务攻击(DistributedDenialofService,简称DDoS)同时发动分布于全球的几千台主机对目的主机攻击(m:n),即使对于带宽较宽的站点也会产生致命的效果。随着电子商业在电子经济中扮演越来越重要的角色,随着信息战在军事领域应用的日益广泛,持续的DoS攻击既可能使某些机构破产,也可能使我们在信息战中不战而败。可以毫不夸张地说,电子恐怖活动的时代已经来临。
       DoS攻击中,由于攻击者不需要接收来自受害主机或网络的回应,它的IP包的源地址就常常是伪造的。特别是对DDoS攻击,最后实施攻击的若干攻击器本身就是受害者。若在防火墙中对这些攻击器地址进行IP包过滤,则事实上造成了新的DDS攻击。为有效地打击攻击者,必须设法追踪到攻击者的真实地址和身份。
      DoS攻击原理    实施DoS攻击,首先要搜集了解被攻击目标的情况:被攻击目标的主机数目、地址及端口信息,目标主机的配置、性能和目标的带宽等情况。对于DoS攻击者来说,攻击互联网上的某个站点,确定到底有多少台主机在支持这个站点,一个大的网站可能有很多台主机利用负载均衡技术提供同一个网站的WWW服务。如果要进行攻击的话,要所有这些主机都瘫掉才行,在实际的应用中,一个IP地址往往还代表着数台机器,如果网站维护者使用了四层或七层交换机来做负载均衡,把对一个IP地址的访问以特定的算法分配到下属的每个主机上去,这对于攻击者来说所需面对的可能是让几十台主机的服务都不正常,所以说事先搜集被攻击目标的情况对攻击者来说是非常重要的,这关系到使用多少台傀儡机才能达到效果的问题,其次是取得傀儡机的控制权,成为傀儡机的主机一般具有性能好、网络状态好、安全性差等特点,攻击者入侵这些主机并植入程序取得对这些机器的控制权。
    对于一个攻击者来说,准备好一定数量的傀儡机是一个必要的条件,一般是通过端口扫描技术实现,随机地或者是有针对性地利用扫描器去发现互联网上那些有漏洞的机器,如程序的溢出漏洞、CGIftp、数据库漏洞等等,占领了一台傀儡机后一般是利用ftp把攻击用的程序上载过去,在攻击主机上会有一个发包程序,黑客就是利用它来向受害目标发送恶意攻击包的。
    攻击的最后一步是实际攻击,前面的准备做得好的话,实际攻击过程反而是比较简单的,黑客登录到作为控制台的傀儡机,向所有的攻击机发出命令,潜伏在傀儡机中的攻击程序就会响应控制台的命令,一起向受害主机以高速度发送大量的数据包,导致它死机或是无法响应正常的请求。
    硬件防火墙
    硬件防火墙是保障内部网络安全的一道重要屏障。它的安全和稳定,直接关系到整个内部网络的安全。因此,日常例行的检查对于保证硬件防火墙的安全是非常重要的。
    系统中存在的很多隐患和故障在暴发前都会出现这样或那样的苗头,例行检查的任务就是要发现这些安全隐患,并尽可能将问题定位,方便问题的解决。
    一般来说,硬件防火墙的例行检查主要针对以下内容:
       1.硬件防火墙的配置文件
       2.硬件防火墙的磁盘使用情况
       3.硬件防火墙的CPU负载
       4.硬件防火墙系统的精灵程序
       5.系统文件
       6.异常日志
    现在市场上针对这些攻击的有很多知名的硬防,如:金盾硬防集(专业做硬防技术的单位,非常不错的),傲盾硬防集(开始不错,后来自己也做了机房了,做硬防的公司转型做机房了,印像不好!我觉得人还是做好自己的工作好些,做专!)其外的还有冰盾,黑洞,黑盾,绿盾,威盾,等等。
    目前全国有些不错的机房,主要是网通和电信两个机房线路:
    网通大硬防机房:大连网通(8G硬防集),辽宁网通(10G硬防集),河南网通(硬防集10G
    电信大硬防机房:江苏电信(20G硬防集),浙江电信(8G),金华(10G
      DoS攻击方法
    包洪水,包洪水是通过向目标主机发送大量的请求,使目标主机忙于处理这些信息,资源被大量消耗,从而不能处理正常事物。如Synflood,在使用TCP/IP协议建立连接时,当客户端向服务器发起连接请求并初始化时,服务器一端的协议栈会留一块缓冲区来处理“握手”过程中的信息交换,请求建立连接时发送的数据包的包头SYN位就表明了数据包的顺序,攻击者可以利用在短时间内快速发起大量连接请求,以致服务器来不及响应,同时攻击者还可以伪造源IP地址,也就是说攻击者发起大量连接请求,然后挂起在半连接状态,以此来占用大量服务器资源直到拒绝服务,虽然缓冲区中的数据在一段时间内(通常是三分钟)都没有回应的话,就会被丢弃,但在这段时间内,大量半连接足以耗尽服务器资源而不能向正常请求提供服务,所有基于TCP/IP协议的服务都有这个弱点。
    要防御包洪水攻击,可从以下几方面入手,关闭不必要的TCP/IP服务;配置防火墙以阻断来自InternetUDP请求;在防火墙上过滤来自同一主机的后续连接。
      Smurf
       Smurf
攻击是向一个子网的广播地址发一个带有特定请求(如ICMP回应请求)的包,并且将源地址伪装成想要攻击的主机地址。子网上所有主机都回应广播包请求而向被攻击主机发包,使该主机的网络带宽下降。防止Smurf攻击可采用三种方法:一是切断Smurf攻击源,通过对路由器的设置,保证内网中发出的所有传输信息都具有合法的源地址;二是配置路由器,将不是内网生成的数据包过滤出去;三十将本网中所有路由器IP的广播功能禁止。
      Land
       Land
攻击是将一个包的源地址和目的地址都设置为同一个目标主机的地址,然后将该包通过IP欺骗的方式发送给被攻击主机,这种包可以造成被攻击主机因试图与自己建立连接而陷入死循环,从而很大程度的降低了系统性能。可通过为操作系统安装补丁和配置防火墙,过滤那些在外部接口上入站的含有内部源地址的包来防御Land攻击。
      PingofDeath
       PingofDeath
:根据TCP/IP的规范,一个包的长度最大为65536字节。尽管一个包的长度不能超过65536字节,但是一个包分成的多个片段的叠加却能做到。当一个主机收到了长度大于65536字节的包时,就是受到了PingofDeath攻击,该攻击会造成主机的宕机。这种攻击主要针对Windows9X,而后续的Windows产品都有一定的防御能力
    其它:
      TeardropIP数据包在网络传递时,数据包可以分成更小的片段。攻击者可以通过发送两段(或者更多)数据包来实现TearDrop攻击。第一个包的偏移量为0,长度为N,第二个包的偏移量小于N。为了合并这些数据段,TCP/IP堆栈会分配超乎寻常的巨大资源,从而造成系统资源的缺乏甚至机器的重新启动。
      PingSweep:使用ICMPEcho轮询多个主机。Pingflood:该攻击在短时间内向目的主机发送大量ping包,造成网络堵塞或主机资源耗尽。
      SYN(synchronize): SYNTCP/IP建立连接时使用的握手信号。在客户机和服务器之间建立正常的TCP网络连接时,客户机首先发出一个SYN消息,服务器使用SYN-ACK应答表示接收到了这个消息,最后客户机再以ACK消息响应。这样在客户机和服务器之间才能建立起可靠的TCP连接,数据才可以在客户机和服务器之间传递。
       TCP连接的第一个包,非常小的一种数据包。SYN攻击包括大量此类的包,由于这些包看上去来自实际不存在的站点,因此无法有效进行处理。每个机器的欺骗包都要花几秒钟进行尝试方可放弃提供正常响应。
    性质
    在黑客攻击事件中,SYN攻击是最常见又最容易被利用的一种攻击手法。
       SYN攻击属于DoS攻击的一种,它利用TCP协议缺陷,通过发送大量的半连接请求,耗费CPU和内存资源。SYN攻击除了能影响主机外,还可以危害路由器、防火墙等网络系统,事实上SYN攻击并不管目标是什么系统,只要这些系统打开TCP服务就可以实施。服务器接收到连接请求(syn=j),将此信息加入未连接队列,并发送请求包给客户(syn=k,ack=j+1),此时进入SYN_RECV状态。当服务器未收到客户端的确认包时,重发请求包,一直到超时,才将此条目从未连接队列删除。配合IP欺骗,SYN攻击能达到很好的效果,通常,客户端在短时间内伪造大量不存在的IP地址,向服务器不断地发送syn包,服务器回复确认包,并等待客户的确认,由于源地址是不存在的,服务器需要不断的重发直至超时,这些伪造的SYN包将长时间占用未连接队列,正常的SYN请求被丢弃,目标系统运行缓慢,严重者引起网络堵塞甚至系统瘫痪。
    分类
    关于SYN攻击防范技术,人们研究得比较早。归纳起来,主要有两大类,一类是通过防火墙、路由器等过滤网关防护,另一类是通过加固TCP/IP协议栈防范.但必须清楚的是,SYN攻击100%能用防火墙完全阻止,不会设置防火墙者例外。
       SYNFlood
       SYNFlood
是当前最流行的DoS(拒绝服务攻击)与DdoS(分布式拒绝服务攻击)的方式之一,这是一种利用TCP协议缺陷,发送大量伪造的TCP连接请求,从而使得被攻击方资源耗尽(CPU满负荷或内存不足)的攻击方式。
    基本原理:
    要明白这种攻击的基本原理,还是要从TCP连接建立的过程开始说起:
    大家都知道,TCP与UDP不同,它是基于连接的,也就是说:为了在服务端和客户端之间传送TCP数据,必须先建立一个虚拟电路,也就是TCP连接,建立TCP连接的标准过程是这样的:
    首先,请求端(客户端)发送一个包含SYN标志的TCP报文,SYN即同步(Synchronize),同步报文会指明客户端使用的端口以及TCP连接的初始序号;
    第二步,服务器在收到客户端的SYN报文后,将返回一个SYN+ACK的报文,表示客户端的请求被接受,同时TCP序号被加一,ACK即确认(Acknowledgment)。
    第三步,客户端也返回一个确认报文ACK给服务器端,同样TCP序列号被加一,到此一个TCP连接完成。
    以上的连接过程在TCP协议中被称为三次握手(Three-way Handshake)。
    问题就出在TCP连接的三次握手中,假设一个用户向服务器发送了SYN报文后突然死机或掉线,那么服务器在发出SYN+ACK应答报文后是无法收到客户端的ACK报文的(第三次握手无法完成),这种情况下服务器端一般会重试(再次发送SYN+ACK给客户端)并等待一段时间后丢弃这个未完成的连接,这段时间的长度我们称为SYN Timeout,一般来说这个时间是分钟的数量级(大约为30秒-2分钟);一个用户出现异常导致服务器的一个线程等待1分钟并不是什么很大的问题,但如果有一个恶意的攻击者大量模拟这种情况,服务器端将为了维护一个非常大的半连接列表而消耗非常多的资源—-数以万计的半连接,即使是简单的保存并遍历也会消耗非常多的CPU时间和内存,何况还要不断对这个列表中的IP进行SYN+ACK的重试。实际上如果服务器的TCP/IP栈不够强大,最后的结果往往是堆栈溢出崩溃—即使服务器端的系统足够强大,服务器端也将忙于处理攻击者伪造的TCP连接请求而无暇理睬客户的正常请求(毕竟客户端的正常请求比率非常之小),此时从正常客户的角度看来,服务器失去响应,这种情况我们称作:服务器端受到了SYN Flood攻击(SYN洪水攻击)。
    解决方法
    从防御角度来说,有几种简单的解决方法:
    第一种是缩短SYN Timeout时间,由于SYN Flood攻击的效果取决于服务器上保持的SYN半连接数,这个值=SYN攻击的频度 x SYN Timeout,所以通过缩短从接收到SYN报文到确定这个报文无效并丢弃改连接的时间,例如设置为20秒以下(过低的SYN Timeout设置可能会影响客户的正常访问),可以成倍的降低服务器的负荷。
    第二种方法是设置SYN Cookie,就是给每一个请求连接的IP地址分配一个Cookie,如果短时间内连续受到某个IP的重复SYN报文,就认定是受到了攻击,以后从这个IP地址来的包会被丢弃。
    可是上述的两种方法只能对付比较原始的SYN Flood攻击,缩短SYN Timeout时间仅在对方攻击频度不高的情况下生效,SYN Cookie更依赖于对方使用真实的IP地址,如果攻击者以数万/秒的速度发送SYN报文,同时利用SOCK_RAW随机改写IP报文中的源地址,以上的方法将毫无用武之地。

相关热词搜索:常见 方法

上一篇:SYN Flood攻击原理分析
下一篇:最后一页

分享到: 收藏