网络攻击是一种主动式攻击威胁,其安全威胁是最高的,因为这些实施网络攻击的黑客们通常是有明确目的的,一旦攻击成功,就可能给公司带来巨大的损失。在本章1.2.4节已介绍到了网络攻击的一些主要类型,本节要具体介绍这些网络攻击的行为特征和基本防御方法。 1.1 拒绝服务攻击行为特征和防御方法 拒绝服务(Denial of Service,DoS)攻击是最常见的一种网络攻击。目前已知的拒绝服务攻击就有几百种,它是最基本的入侵攻击手段,也是最难对付的入侵攻击之一。 DoS攻击的目的是使计算机或网络无法提供正常的服务。最常见的DoS攻击有汁算机网络带宽攻击和连通性攻击。带宽攻击指以极大的通信量冲击网络,使得所有可用网络资源都被消耗殆尽,最后导致合法的用户请求无法通过。连通性攻击指用大量的连接请求冲击计算机,使得所有可用的操作系统资源都被消耗殆尽,最终计算机无法再处理合法用户的请求。在这一攻击原理下,针对所攻击的服务或协议的不同,它又有许多种不同的攻击方式。正确了解这些不同的拒绝攻击方式,就可以正确、系统地为自己所在企业部署完善的安全防护系统。在此,我们仅针对几种典型的拒绝服务攻击原理进行简要分析,并给出基本的防御策略。但是要注意, 就目前来说,对于拒绝服务攻击,并没有特别有效的预防方法,所以DoS攻击尤其是DDoS攻击成为了黑客们经常使用的攻击手段之一。部署防火墙和入侵检测系统可以起到一定的预防作用。 1.TCP SYN洪水(TCP SYN Flood)攻击 TCP SYN洪水攻击是整个拒绝服务攻击中被黑客们应用最广、最容易实现的一类拒绝服务攻击。它的攻击原理就是TCP/IP栈只能等待有限数量的ACK(应答)消息,因为每台计算机用于创建TCP/IP连接的内存缓冲区都是非常有限的。如果这一缓冲区充满了等待响应的初始信息,则该计算机就会对接下来的连接停止响应,直到缓冲区里的连接超时。TCP SYN洪水攻击利用了这一系统漏洞来实施攻击。要明白TCP SYN洪水攻击的具体过程得先明白TCP协议连接建立的三次握手过程。 TCP SYN拒绝服务攻击原理其实也就是TCP连接的三次握手过程。我们知道,一个TCP 连接的建立需要经过三次握手,即: (1)建立发起者向目标计算机发送一个TCP SYN报文。 (2)目标计算机收到这个SYN报文后,在内存中创建TCP连接控制块(TCB),然后向发 起者回送一个TCP ACK报文,等待发起者的回应。 (3)发起者收到TCP ACK报文后,再回应一个ACK报文。 通过以上3个简单的步骤就把一个TCP连接建立起来了。但黑客也正是利用了这一连接原理的不足而实施攻击的。攻击的过程与TCP连接的三次握手过程基本一样,只是在最后一步发起者收到TCP ACK报文后不向目标计算机回应ACK报文,这样导致目标计算机一直处于等待状态。由此可以看出,目标计算机如果接收到大量的TCP SYN报文,而没有收到发起者的ACK回应,会一直等待,处于这样尴尬状态的半连接如果很多,则会把日标计算机的资源(TCB控制结构,TCB,一般情况下是有限的)耗尽,而不能响应正常的TCP连接请求。 攻击者在实施TCP SYN洪水攻击时,首先利用伪造的IP地址向目标发出多个连接(SY-N) 请求,目标系统在接收到请求后发送确认信息,并等待回答。由于黑客们发送请示的IP地址是伪造的,所以确认信息不会到达任何汁算机,当然也就不会有任何计算机为此确认信息作出应答了。而在没有接收到应答之前,目标计算机系统是不会主动放弃连接的,会继续在缓冲区中保持相应连接信息。当达到一定数量的等待连接后,缓区部内存资源耗尽,从而开始拒绝接收任何其他连接请求,当然也包括本来属于正常应用的请求,这就是黑客们的最终目的。 防御TCP SYN洪水攻击的基本方法:在防火墙上过滤来自同一主机的后续连接。防火墙 具体抵御TCP SYN洪水攻击的方法将在本书的第3章中详细介绍。 2.ICMP与UDP洪水攻击 正常情况下,为了对网络进行诊断,一些诊断程序,比如PING等,会发出ICMP响应请 求报文(ICMP ECHO),接收计算机接收到ICMP ECHO后,会回应一个ICMP ECHO Reply报 文。而这个过程是需要CPU处理的,有的情况下还可能消耗掉大量的资源,比如处理分片的 时候。这样如果攻击者向目标计算机发送大量的ICMP ECHO报文f产生ICMP洪水),则目标 计算机会忙于处理这些ECHO报文,而无法继续处理其他的网络数据报文,这就是ICMP洪水 攻击,也是一种拒绝服务攻击(DOS)。 UDP洪水攻击原理与ICMP洪水类似,攻击者通过发送大量的UDP报文给目标计算机, 导致目标计算机忙于处理这些UDP报文而无法继续处理正常的报文。 防御ICMP与UDP洪水攻击的基本方法:关掉不必要的TCP/IP服务,或者对防火墙进行配置阻断来自Intemet的请求这些服务的ICMP和UDP请求。 3.死亡之Ping(Ping 0f death)攻击 在早期,路由器对包的大小是有**的,许多操作系统TCP/IP栈规定ICMP包的大小**在64KB以内。在对ICMP数据包的标题头进行读取之后,是根据该标题头里包含的信息来为有效载荷生成缓冲区。当ICMP包大小超过64KB,就会出现内存分配错误,导致TCP/IP堆栈崩溃,从而使接受方计算机宕机。这就是这种“死亡之Ping”攻击的原理所在。根据这一攻击原理,黑客们只需不断地通过Ping命令向攻击目标发送超过64KB的数据包,就可使目标计算机的TCP/IP堆栈崩溃,致使接收方宕机。 防御死亡之Ping攻击的基本方法:现在所有的标准TCP/IP协议都已具有对付超过64KB大小数据包的处理能力,并且大多数防火墙能够通过对数据包中的信息和时间间隔的分析,自动过滤这些攻击。Windows 98、Windows NT 4.0(SP3之后1、Windows 2000/XP/Server 2003、Linux、Solaris和Mac OS等系统都已具有抵抗一般“Ping of death”拒绝服务攻击的能力。此外,对防火墙进行配置,阻断ICMP以及任何未知协议数据包,都可以防止此类攻击发生。 4.分片IP报文攻击 IP分片是在网络上传输lP报文时常采用的一种技术手段,但是其中存在一些安全隐患。 最近,一些IP分片攻击除了用于进行拒绝服务攻击之外,还经常作为躲避防火墙或者网络入侵检测系统的一种手段。部分路由器或者基于网络的入侵检测系统fNIDS),由于IP分片重组能力的欠缺,导致无法进行正常的过滤或者检测。 为了传送一个大的IP报文,lP协议栈需要根据链路接口的MTU对该IP报文进行分片, 通过填充适当的IP头中的分片指示字段,接收计算机可以很容易地把这些IP分片报文组装起来。目标计算机在处理这些分片报文的时候,会把先到的分片报文缓存起来,然后一直等待后续的分片报文,这个过程会消耗掉一部分内存,以及一些IP协议栈的数据结构。如果攻击者给目标计算机只发送一片分片报文,而不发送所有的分片报文,这样攻击者计算机便会一直等待(直到一个内部计时器到时),如果攻击者发送了大量的分片报文,就会消耗掉目标讨‘算机的资源,而导致不能处理正常的IP报文,这也是一种DoS攻击。 防御分片IP报文攻击的基本方法:对于这种攻击方式,目前还没有一种十分有效的防御方法。一些包过滤设备或者入侵检测系统来说,首先通过判断目的端口号来采取允许/禁止措施。但是由于通过恶意分片使目的端口号位于第二个分片中,因此包过滤设备通过判断第一个分片,决定后续的分片是否允许通过。但是这些分片在目标主机上进行重组之后将形成各种攻击。通过这种方法可以迂回一些入侵检测系统及一些安全过滤系统。当然,目前一些智能的包过滤设备可直接丢掉报头中未包含端口信息的分片,但这样的设备目前价格比较昂贵,不是每个企业能承受得起的。 5.泪滴(teardrop)攻击 对于一些大的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数据包后,把偏移字段设置成不正确的值,这样接收端在收到这些分拆的数据包后就不能按数据包中的偏移字段值正确重组这些拆分的数据包,但接收端会不断尝试,这样就可能致使日标计算机操作系统因资源耗尽而崩溃。 泪滴攻击通过修改在TCP/IP堆栈实现中信任IP碎片中的包的标题头所包含的信息来实现。IP分段含有指示该分段所包含的是原包的哪一段信息,某些操作系统(如SP4以前的Windows NT 4.0)的TCP/IP在收到含有重叠偏移的伪造分段时将崩溃,不过新的操作系统已基本上能自己抵御这种攻击了。 防御泪滴攻击的基本方法:尽可能采用最新的操作系统,或者在防火墙上设置分段重组功能,由防火墙先接收到同一原包中的所有拆分数据包,然后完成重组工作,而不是直接转发。因为防火墙上可以设置当出现重叠字段时所采取的规则。 6.Land攻击 Land攻击与TCP SYN洪水攻击类似,也是利用了TCP连接建立的三次握手过程,通过向一个目标计算机发送一个TCP SYN报文(连接建立请求报文)而完成对目标计算机的攻击。与TCP SYN洪水攻击的方法不同的是,这里并不是不给ACK响应,而是给被攻击方发送一个源IP地址和目的lP地址相同的假TCP SYN报文,都是目标计‘算机的IP地址。这样目标计算机接收到这个SYN报文后,就会向该报文的源地址发送一个ACK报文,并建立一个TCP连接控制结构(TCB),而该报文的源地址就是自己,因此,这个ACK报文就发给了自己。这样如果攻击者发送了足够多的SYN报文,则目标计算机的TCB可能会耗尽,最终不能正常提供服务。这也是一种DoS攻击。 防御Land攻击的基本方法:这类攻击的检测方法相对来说比较容易,因为可以直接从判断网络数据包的源地址和目标地址是否相同得出是否属于攻击行为。**击的方法当然是适当地配置防火墙设备或包过滤路由器的包过滤规则,过滤掉那些源地址与目标地址一样的包,从而可以有效地分析并跟踪攻击来源。 7.Smuff攻击 这是一种由有趣的**人物而得名的拒绝服务攻击。Smurf攻击利用的是多数路由器具有的同时向许多计算机广播请求的功能。ICMP ECHO请求包用来对网络进行诊断,当一台计算机接收到这样一个报文后,会向报文的源地址回应一个ICMP ECHO REPLY。一般情况下,计算机是不检查该ECHO请求的源地址的。攻击者伪造一个合法的IP地址,然后由网络上所有的路由器广播要求受攻击计算机做出回答的请求。由于这些数据包表面上看是来自己知地址的合法请求,因此网络中的所有系统向这个地址做出回答,最终结果可导致该网络的所有主机都对此ICMP应答请求作出答复,导致网络阻塞,这也就达到了黑客们的目的了。这种Smurf攻击比前面介绍的Ping ofDeath洪水攻击的流量高出一至两个数量级,更容易攻击成功。还有些新型的Smurf攻击,将源地址改为第三方的受害者(不再采用伪装的IP地址),最终导致第三方雪崩。 除了把ECHO报文的源地址设置为广播地址外,攻击者还可能把源地址设置为一个子网广播地址,这样,该子网内的计算机就可能受影响。 防御Smurf攻击的基本方法:关闭外部路由器或防火墙的广播地址特性,并在防火墙上设置规则,丢弃掉ICMP协议类型数据包。 8.Fraggle攻击 tcp ip协议的安全隐患Fraggle攻击只是对Smurf攻击作了简单的修改,使用的是UDP协议应答消息,而不再是ICMP协议了(冈为黑客们清楚UDP协议更加不易被用户全部禁止)。同时Fraggle攻击使用了特定的端口(通常为7号端口,但也有许多使用其他端口实施Fraggle攻击的),攻击方式与Smurf攻击基本类似,这里不再赘述。 防御Fraggle攻击的基本方法:关闭外部路由器或防火墙的广播地址特性。在防火墙上过滤掉UDP报文,或者屏蔽掉一些常被黑客们用来进行Fraggle攻击的端口。 9.WinNuke攻击 WinNuke攻击又称“带外传输攻击”,它的特征是攻击目标端口,被攻击的目标端口通常 是139、138、137、113、53,而且URG位设为l,即紧急模式。WinNuke攻击就是利用了 Windows操作系统的一个漏洞,向这些端口发送一些携带TCP带外(OOB)数据报文,这些攻击报文与正常携带OOB数据的报文不同的是,其指针字段与数据的实际位置不符,即存在重合,这样Windows操作系统在处理这些数据的时候,就会崩溃。 NetBIOS作为一种基本的网络资源访问接口,广泛地应用于文件共享,打印共享,进程间通信(IPC),以及不同操作系统之间的数据交换。一般情况下,NetBIOS是运行在LLC2链路协议之上的,是一种基于组播的网络访问接口。为了在TCP/IP协议栈上实现NetBIOS,RFC规定了一系列交互标准,以及几个常用的TCP/UDP端口。 * 139:NetBIOS会话服务的TCP端口。 * 137:NetBIOS名字服务的UDP端口。 * 136:NetBIOS数据报服务的UDP端口。 Windows操作系统的早期版本(Windows 9x/NT)的网络服务(文件共享等)都是建立在 NetBIOS之上的,因此,这些操作系统都开放了139端口(最新版本的Windows 2000/XP/2003等,为了兼容,也实现了NetBIOS overTCP/IP功能,开放了139端口1。 目前的WinNuke系列工具已经从最初的简单选择IP攻击某个端口发展到可以攻击一个IP区间范围的计算机,并且可以进行连续攻击,还能够验证攻击的效果,可以检测和选择端口,使某一个lP地址区间的计算机全部蓝屏死机。 防御WinNuke攻击的基本方法:检测数据包目标端口是否为139、138、137等,并判断 URG位是否为l。适当配置防火墙设备或过滤路由器就可以防止这种攻击(丢弃该数据包1,并对这种攻击进行审计(记录事件发生的时问,源主机和目标主机的MAC地址和IP地址 1 0.虚拟终端(VTY)耗尽攻击 这是一种针对例络设备的攻击,比如路由器,交换机等。这些网络设备为了便于远程管理,一般都设置了一些TELNET服务,即用户可以通过TELNET服务连接到该设备上,对这些设备进行管理。 一般情况下,这些设备的TELNET用户界面个数是有**的,比如,5个或10个等。这 样,如果一个攻击者同时同一台网络设备建立了5个或10个TELNET连接,这些设备的远程 管理界面便被占尽,这样合法用广要对这些设备进行远程管理时,会因为TELNET连接资源被占用而失败。 防御虚拟终端(VTY)耗尽攻击的基本方法:尽可能升级交换机和路由器设备的lOS,因为新版本的IOS在这方面已有改进 11. 是最古老的匿名攻击之一,通过设置一台计算机在很短的时问内连续不断地向同一地址发送大量来达到攻击目的,此类攻击能够耗尽邮件接收者网络的带宽资源。邮件可以大量消耗网络资源,常常导致网络塞车,使大量的用户不能正常地工作。通常,网络用户的信箱容量是很有限的,在有限的空间中,如果在短时问内收到上千上万封,那么一轮邮件的总容量很容易就把用户有限的阵地挤垮。这样用户的邮箱中将没有多余的空间接纳新的邮件,那么新邮件将会被丢失或者被退回,这时用户的邮箱已经失去了作用;另外,这些邮件所携带的大容量信息不断在网络上来回传输,很容易堵塞带宽并不富裕的传输信道,这样会加重服务器的工作强度,减缓了处理其他用户的的速度,从而导致了整个过程的延迟。 防御的方法:对邮件地址进行过滤规则配置,自动删除来自同一主机的过量或重复的消息。另外,在邮件软件中安装一个过滤器(比如说E-mail notif3,)是一种最有效的防范措施。在接收任何之前预先检查发件人的资料, 如果觉得有可疑之处,可以将之删除,不让它进入邮件系统。但这样有时会误删除一些有用的邮件。如果担心有人恶意破坏你的信箱,给你发来一个“”,你可以在邮件软件中启用过滤功能,把邮件服务器设置为接收到超过信箱容量的大邮件时自动进行删除。有些邮件服务器为了提高服务质量往往设有“自动转信,,功能,利用该功能也可以在一定程度上解决容量特大邮件的攻击。可以将那些不愿意看到的邮件统统过滤掉,删除在邮件服务器中,或者将垃圾邮件转移到其他信箱中,或者干脆放弃使用被轰炸的邮箱,另外重新申请一个新的信箱。 如果邮箱不幸已经“中弹”,而且还想继续使用这个信箱名的话,可以用一些邮件工具软件如PoP-It来清除这些垃圾信息。使用这些清除软件可以登录到邮件服务器上,使用其中的命令来删除不需要的邮件,保留有用的信件。 12.畸形消息攻击 目前Windows、Unix、Linux等各类操作系统上的许多服务都存在此类问题。由于这些服务在处理信息之前没有进行适当错误校验,所以在收到畸形的信息后可能会崩溃。 防御畸形消息攻击的基本方法:安装最新的服务补丁。 1.2利用型攻击方式行为特征和防御方法 此种攻击方式以通过窃取用户密码等方式获取关键设备的控制权为目的,主要包括口令猜测、特洛伊木马和缓冲区溢出等手段。由于目前软交换网络中的关键设备(如软交换、嘲关和各种服务器等)的硬件实现普遍基于通用平台(CompactPCI),各种应用服务器同样基于业界流行的主机、服务器等,这就导致黑客可以利用一些己知的后门和漏洞来攻击主机,非法获取主机的口令和密码,达到控制关键设备的目的。 利用型攻击是一类试图直接对机器进行控制的攻击,最常见的有三种攻击手段。 1.口令猜测攻击 口令猜测就是黑客借助于一些专用工具对用户的账户密码进行猜测,如常见的字典口令猜测攻击。它是利用一些专用软件,按英文字典单词的字母组合顺序对用户口令进行猜测。口令是网络系统的第一道防线。当前的网络系统都是通过口令来验证用户身份、实施访问控制的。口令攻击是指黑客以口令为攻击目标,破解合法用户的口令,或避开口令验证过程,然后冒充合法用户潜入目标网络系统,夺取目标系统的控制权。 如果口令攻击成功,黑客进入了目标网络系统,他就能够随心所欲地窃取、破坏和篡改被侵入方的信息,直至完全控制被侵入方。所以,口令攻击是黑客实施网络攻击的最基本、最重要、最有效的方法之一。 口令猜测攻击的主要方法如下。 1) 社会工程学(social Engineering)攻击 通过人际交往这一非技术手段以欺骗、套取的方式来获得口令。避免此类攻击的对策是加强用户的防范意识。 2) 猜测攻击 首先使用口令猜测程序进行攻击。口令猜测程序往往根据用户定义口令的习惯猜测用户口令,像名字缩写、生日、宠物名、部门名等。在详细了解用户的社会背景之后,黑客可以列举出几百种可能的口令,并在很短的时间内就可以完成猜测攻击。 3) 字典攻击 如果猜测攻击不成功,入侵者会继续扩大攻击范围,对所有英文单词进行尝试,程序将按序取出一个又一个的单词,进行一次又一次尝试,直到成功。据有的传媒报导,对于一个有8万个英文单词的集合来说,入侵者不到一分半钟就可尝试完。所以,如果用户的口令不太长或是单词、短语,那么很快就会被破译出来。 4)穷举法攻击 如果字典攻击仍然不能够成功,入侵者会采取穷举攻击。一般从长度为l的口令开始,按长度递增进行尝试攻击。由于人们往往偏爱简单易记的口令,穷举攻击的成功率很高。如果每千分之一秒检查一个口令,那么86%的口令可以在一周内破译出来。 5) 混合攻击 结合了字典攻击和穷举攻击,先字典攻击,再穷举攻击。 6) 直接破解系统口令文件 所有的攻击都不能够奏效,入侵者会寻目标主机的安全漏洞和薄弱环节,饲机偷走存放系统口令的文件,然后破译加密的口令,以便冒充合法用户访问这台主机。 7)网络嗅探(sniffer) 通过嗅探器在局域网内嗅探明文传输的口令字符串。避免此类攻击的对策是网络传输采用 加密传输的方式进行。 8) 键盘记录 在目标系统中安装键盘记录后门,记录操作员输入的口令字符串,如很多间谍软件,木马等是这样工作的。 其他攻击方式,如中间人攻击、重放攻击、生日攻击、时间攻击。 在给账户设置密码时最好不要设置为英文单词。一旦黑客识别了一台主机,并且获取了基于NetBIOS、Telnet或NFS这样服务的可利用的用户账号,就可凭借成功的口令猜测实施对日标计算机系统的全面控制。 防御口令猜测攻击的方法:要选用难以猜测的口令,比如大、小写字母、标点符号和数字的组合,可以参照微软Windows 2000/Server 2003系统的密码复杂性策略,这些将在本书第8章具体介绍。不要将口令记在纸上或存储于计算机文件中:最好不要将用户口令告诉别人,不要在不同的系统中使用相同的口令;在输入口令时应确保无人在身边窥视;在公共上网场所如网吧等处最好先确认系统是否安全;定期更改口令,至少六个月更改一次,这会使遭受口令攻击的风险降到最低,但永远不要对自己的口令过于自信。另外,像NFS、NetBIOS和Telnet这样可利用的服务最好不要在公共范围内,如DMZ区域中的公共服务器(Web服务器、DNS服务器、邮件服务器等)上使用。 2.特洛伊木马攻击 特洛伊木马也就是我们常说的木马程序,可通过附植在其他程序中,秘密安装到目标系统中,属于“后门程序”类型。一旦成功入侵目标系统,程序会自动运行,运用它的强大控制功能从目标计算机中获取重要的用户信息,如用户账户和密码等,然后就会利用获取的用户账户和密码取得控制权限。然后在用户连接网络时,向黑客发送获取的信息,黑客们就能通过这些信息潜入目标计算机系统,达到全面远程控制目标计算机的目的。 这类木马程序非常之多,如NetBus、BackOrifice、B02k、netcat、VNC等。这个我们在前面已有较多介绍,在此不再赘述。 防御方法:避免下载可疑程序并拒绝执行,运用网络扫描软件定期监视内部主机上的禁用词语TCP服务,当然专业的木马查杀软件还是必不可少的。 3.缓冲区溢出攻击 缓冲区是用户为程序运行时在计算机中申请得到的一段连续的内存。缓冲区溢出攻击通过向程序的缓冲区写入超出其长度**的内容,造成缓冲区溢出,从而破坏程序的堆栈,使程序转而执行其他的指令,以达到攻击的目的。这是一种常见,且危害很大的系统攻击手段。如果这些指令是放在有Administrator或Root权限的缓冲区内存中,那么一旦这些指令得到了运行,入侵者就以Administrator或Root账户的权限控制系统,其危害性可想而知。 防御方法:为了避免这种利用程序设计语言漏洞而对系统的恶意攻击,我们必须要仔细分析缓冲区溢出攻击的产生及类型,从而做出相应的防范策略。利用SafeLib、tripwire这样的溢出保护程序保护系统,或者及时更新操作系统。 1.3信息收集型攻击行为特征和防御方法 信息收集型攻击并不对目标本身造成危害,只是收集用户信息。这类攻击技术主要包括: 地址(或端口、信息)扫描技术、体系结构刺探和反向映射技术等。 1.地址扫描 运用IP地址扫描器、IPScaner、MAC地址扫描系统等常见的工具探测目标地址, 标计算机对此作出的响应来判断其是否存在。然后就可以进一步明确攻击对象。 防御方法:在防火墙上过滤掉ICMP应答消息。 2.端口扫描 通常使用Port Scanner、ScanPort、端口扫描器等工具软件,在大范围内对当前网络连接的主机TCP端口进行扫描,然后报告成功建立了连接的主机所开的端口。黑客们再利用这些开放的端口实施有针对性的攻击。 根据TCP协议规范,当一台计算机收到一个TCP连接建立请求报文(TCP SYN)的时候, 会做如下处理。 (1)如果请求的TCP端口是开放的,则回应一个TCP ACK报文,并建立TCP连接控制结 构(TCB)。 (2)如果请求的TCP端口没有开放,则回应…个TCP RST(TCP头部中的RST标志设为 1)报文,告诉发起计算机,该端口没有开放。 相应地,如果IP协议栈收到一个UDP报文,会做如下处理。 (1)如果该报文的目标端口开放,则把该UDP报文送上层协议(UDP)处理,不回应任何报 文(上层协议根据处理结果而回应的报文例外)。 (2)如果该报文的目标端口没有开放,则向发起者回应一个ICMP不可达报文,告诉发起 者计算机该UDP报文的目标端口不可达。 利用这个原理,攻击者计算机便可以通过发送合适的报文,判断目标计算机哪些TCP或UDP端口是开放的,过程如下。 (1)发出端口号从O开始依次递增的TCP SYN或UDP报文(端口号是一个16比特的数字, 这样最大为65535,数量很有限)。 (2)如果收到了针对这个TCP报文的RST报文,或针对这个UDP报文的ICMP不可达报文,则说明这个端口没有开放。 (3)相反,如果收到了针对这个TCP SYN报文的ACK报文,或者没有接收到任何针对该 UDP报文的ICMP报文,则说明该TCP端口是开放的,UDP端口可能开放(因为有的实现中可 能不回应ICMP不可达报文,即使该UDP端口没有开放)。 这样继续下去,便可以很容易判断出目标计算机开放了哪些TCP或UDP端口,然后针对 端口的具体数字,进行下一步攻击,这就是所谓的端口扫描攻击。 防御方法:许多防火墙能测到是否被扫描,并自动阻断扫描企图。 3.地址猜测攻击 跟端口扫描攻击类似,攻击者通过发送目标地址变化的大量的ICMP ECHO报文,来判断 目标计算机是否存在。如果收到了对应的ECMP ECHO REPLY报文,则说明目标计算机是存 在的,便可以针对该计算机进行下…步的攻击。 防御方法:许多防火墙能检测到是否被扫描,并自动阻断扫描企图。 4.IP地址欺骗 突破防火墙系统最常用的方法是IP地址欺骗,它同时也是其他一系列攻击的基础。之所以使用这个方法,是因为IP自身的缺点。IP协议依据IP头中的目的地址项来发送IP数据包。如果目的地址是本地网络内的地址,该IP包就被直接发送到目的地。如果目的地址不在本地网络内,该IP包就会被发送到网关,再由网关决定将其发送到何处。这是IP路由IP包的方法。IP路由IP包时对IP头中提供的IP源地址不做任何检查,并且认为IP头中的IP源地址即为发送该包的机器的IP地址。 当接收到该包的目的主机要与源主机进行通信时,它以接收到的IP包的lP头中IP源地址作为其发送的IP包的目的地址,来与源主机进行数据通信。IP的这种数据通信方式虽然非常简单和高效,但它同时也是lP的一个安全隐患,很多网络安全事故都是因为IP的这个缺点而引发的。 黑客或入侵者利用伪造的IP发送地址产生虚假的数据分组,乔装成来自内部站的分组过滤器,这种类型的攻击是非常危险的。只要系统发现发送地址在其范围之内,则它就会把该分组按内部通信对待并让其通过。 一般情况下,路由器在转发报文的时候,只根据报文的目的地址查询路由表,而不管报文的源地址是什么,因此,这样就可能面临一种危险:如果一个攻击者向一台目标计算机发出一个报文,而把报文的源地址填写为第三方的一个IP地址,这样这个报文在到达目标计算机后,目标计算机便可能向毫无知觉的第三方计算机回应。这便是所谓的IP地址欺骗攻击。 比较著名的SQL Server蠕虫病毒,就是采用了这种原理。该病毒向一台运行SQL Server 解析服务的服务器发送一个解析服务的UDP报文,该报文的源地址填写为另外一台运行SQL Server解析程序(SQL Server 2000以后版本)的服务器,这样由于SQL Server解析服务的一个漏洞,就可能使得该UDP报文在这两台服务器之间往复,最终导致服务器或网络瘫痪。 防御IP地址欺骗的基本方法:每一个连接局域网的网关或路由器在决定是否允许外部的IP数据包进入局域网之前,先对来自外部的IP数据包进行检验。如果该IP包的IP源地址是其要进入的局域网内的IP地址,该IP包就被网关或路由器拒绝,不允许进入该局域网。使用这种方法虽然能够很好地解决问题,但是考虑到一些以太网卡接收它们自己发出的数据包,并且在实际应用中局域网与局域网之间也常常需要有相互的信任关系以共享资源,这种方案不具备较好的实际价值。另外一种防御这种攻击的较为理想的方法是:当IP数据包离开局域网时检验其IP源地址。即每一个连接局域网的网关或路由器在决定是否允许本局域网内部的IP数据包发出局域网之前,先对来自该IP数据包的IP源地址进行检验。如果该IP包的IP源地址不是其所在局域网内部的IP地址,该IP包就被网关或路由器拒绝,不允许该包离开局域网。这样一来,攻击者至少需要使用其所在局域网内的IP地址才能通过连接该局域网的网关或路由器。如果攻击者要进行攻击,根据其发出的IP数据包的IP源地址就会很容易到谁实施了攻击。因此建议每一个ISP或局域网的网关路由器都对出去的IP数据包进行IP源地址的检验和过滤。如果每一个网关路由器都做到了这一点,IP源地址欺骗将基本上无法奏效。在当前并不是每一网关及路由器都能做到这一点的情况下,网络系统管理员只能将自己管理的网络置于尽可能严密的监视之下,以防备可能到来的攻击。 5.反向映射 . 黑客向主机发送虚假消息,然后根据返回host unreachable这一消息特征判断出哪些主机是存在的,其实与前面介绍的地址扫描技术差不多。目前由于正常的扫描活动容易被防火墙侦测到,黑客转而使用不会触发防火墙规则的常见消息类型,这些类型包括:RESET消息、SYN-ACK消息、DNS响应包。 防御方法:使用NAT和非路由代理服务器技术能够自动抵御此类攻击,也可以在防火墙 上过滤“host unreachable”ICMP应答。 6.体系结构探测 黑客使用具有已知响应类型的数据库的自动探测工具,对来自目标主机对坏数据包传送所 作出的响应进行检查。由于每种操作系统都有其独特的响应方法,通过将此独特的响应与数据库中的已知响应进行对比,黑客经常能够确定出目标主机所运行的操作系统。 防御方法:去掉或修改各种Banner(标题信息),包括操作系统和各种应用服务的,阻断用于识别的端口,扰乱对方的攻击计划。 7.DNS域转换攻击 DNS协议不对转换或信息更新进行身份认证,这使得该协议被通过一些不同的方式加以利 用。一台公共的DNS服务器,黑客只需实施一次域转换就能得到域内所有主机的名称以及内 部IP地址。 防御方法:在防火墙处过滤掉域转换请求。 8.Finger服务攻击 黑客使用finger命令来刺探一台finger服务器以获取关于该系统的用户的信息。 防御方法:关闭finger服务并记录尝试连接该服务的对方IP地址,或者在防火墙上进行 过滤。 9.LDAP服务攻击 黑客使用LDAP协议窥探网络内部的系统和它们的用户的信息。 防御方法:对于刺探内部网络的LDAP进行阻断并记录,如果在公共机器上提供LDAP服务,那么应把LDAP服务器放入防火墙的DMZ(非军事区)。 1.4假消息攻击行为特征和防御方法 用于攻击目标配置不正确的消息,主要包括:DNS高速缓存污染、伪造。 1.DNS高速缓存污染 由于DNS服务器与其他名称服务器交换信息的时候并不进行身份验证,这就使得黑客可 以将不正确的信息掺进来,并把用户引向黑客自己的主机。 防御方法:在防火墙上过滤入站的DNS更新,拒绝外部DNS服务器更改内部服务器对内 部机器的识别。 2.伪造 由于SMTP协议并不对邮件的发送者的身份进行鉴定,因此黑客可以对内部客户伪造电子 邮件,声称是某个客户认识并相信的人,并附带上可安装的特洛伊木马程序,或者是一个引向恶意网站的链接。 防御方法:使用PGP等安全加密jIi具对邮件进行加密和数字签名,或者安装公共个人用户证书,可以防止黑客浏览或篡改邮件内容和签名。具体可参见本书第8章内容。 1.5路由协议和设备攻击行为特征及防御方法 1.路由协议攻击 网络设备之间为了交换路由信息,常常运行一些动态的路由协}义,这些路由协议可以完成诸如路由表的建立、路由信息的分发等功能。常见的路由协议有RIP、OSPF、IS—IS、BGP等。这些路由协议在方便路由信息管理和传递的同时,也存在一些缺陷,如果攻击者利用了路由协议的这些权限,对嘲络进行攻击,可能造成网络设备路由表紊乱(这足可以导致网络中断),网络设备资源大量消耗,甚至导致网络设备瘫痪。 下面列举一些常见路由协议的攻击方式及原理。 11 针对RIP协议的攻击 RIP,即路由信息协议,是通过周期性的路由更新报文来维护路由表的。一台运行RIP路由协议的路由器,如果从一个接口上接收到了一个路由更新报文,它就会分析其中包含的路由信息,并与自己的路由表作出比较。如果该路由器认为这些路由信息比自己所掌握的要有效,它便把这些路由信,白、引入自己的路由表中。 这样如果一个攻击者向一台运行RIP协议的路由器发送了人为构造的带破坏性的路由更新报文,就很容易把路由器的路由表搞紊乱,从而导致网络中断。 防御针对RIP协议攻击的基本方法:在运行RIP路由协议的路由器上启用路由更新信息的HMAC验证,可从很大程度上避免这种攻击。 2) 针对OSPF路由协议的攻击 OSPF,即开放最短路径优先,是一种应用广泛的链路状态路由协议。该路由协议基于链 路状态算法,具有收敛速度快、平稳和杜绝环路等优点,十分适合大型的计算机网络使用。OSPF路由协议通过建立邻接关系,来交换路由器的本地链路信息,然后形成一个整网的链路状态数据库,针对该数据库,路由器就可以很容易地计算出路由表。 但如果一个攻击者冒充一台合法路由器与网络中的一台路由器建立邻接关系,并向攻击路由器输入大量的链路状态广播(LSA,组成链路状态数据库的数据单元),就会引导路由器形成错误的网络拓扑结构,从而导致整个网络的路由表紊乱,导致整个网络瘫痪。 当前版本的Windows操作系统(Windows 2000/XP/Server 2003等)都实现了OSPF路由协议功能,因此攻击者很容易利用这些操作系统白带的路由功能模块进行攻击。 防御针对OSPF协议攻击的基本方法:跟RIP类似,启用报文验证功能(HMAC验证),可 以从很大程度上避免这种攻击。 3) 针对IS-IS路由协议的攻击 IS—IS(中间系统到中问系统)是一种基于链路状态的路由协议,原理与OSPF类似。IS—IS路由协议经过扩展,可以运行在IP网络中,对IP报文进行选路。这种路由协议也是通过建立邻居关系,收集路由器本地链路状态的手段来完成链路状态数据库同步的。该协议的邻居关系建立比OSPF简单,而且也省略了OSPF特有的一些特性,使该协议简单明了,伸缩性更强。 对该协议的攻击与OSPF类似,通过一种模拟软件与运行该协议的路由器建立邻居关系, 然后传送给攻击路由器大量的链路状态数据单元(LSP),导致整个网络路由器的链路状态数据库不一致(因为整个网络中所有路由器的链路状态数据库都需要同步到相同的状态),从而导致路由表与实际情况不符,致使网络中断。 防御针对IS-IS协议攻击的基本方法:与OSPF类似,运行该路由协议的路由器启用IS—IS协议单兀(PDU)HMAC验证功能,可以从很大程度上避免这种攻击。 2.针对设备转发表的攻击 为了合理地转发数据,网络设备上一般都建立…些寄存器表项,比如MAC地址表、ARP 表、路由表、快速转发表和一些基于更多报文头字段的表格(如多层交换表和流项目表等)。这些表结构都存储在设备本地的内存中,或者芯片的片上内存中,数量有限。如果一个攻击者通过发送合适的数据报,促使设备建立大量的此类表格,就会使设备的存储结构消耗尽,从而不能正常转发数据或崩溃。 下面介绍几种针对常见的表项的攻击原理。 1)针对MAC地址表的攻击 MAC地址表一般存在于以太网交换机上,以太网交换机通过分析接收到的数据帧的目的 MAC地址,来查询本地的MAC地址表,然后作出合适的转发决定。 这些MAC地址表一般是通过学习获取的,交换机在接收到一个数据帧后,有一个学习的 过程这个过程如下。 (1)提取数据帧的源MAC地址和接收到该数据帧的端口号。 (2)查询MAC地址表,看该MAC地址是否存在,以及对应的端口是否符合。 (3)如果该MAC地址在本地MAC地址表中不存在,则创建一个MAC地址表项。 (4)如果存在,但对应的输出端口跟接收到该数据帧的端口不符,则更新该表。 (5)如果存在,目.端口符合,则进行下一步处理。 分析这个过程可以看出,如果攻击者向一台交换机发送大量源MAC地址不同的数据粤:. 则该交换机就可能把本地的MAC地址表填满。一旦MAC地址表溢出,则交换机饕要能孝璧 摹习正确的MAC表项,结果是可能产生大量的网络冗余数据,甚至可能使交换机崩溃。而构 浩一此源MAC地址不同的数据帧,是非常容易的事情。 防御针对MAC地址表攻击的基本方法:**用户端口的MAC地址数量,或者干脆直接 将用户的一个MAC地址和IP地址绑定。 2、 针对ARP表的攻击 ARP表是IP地址和MAC地址的映射关系表,任何实现了IP协议栈的设备,一般情况下都通过该表维护lP地址和MAC地址的对应关系,这是为了避免ARP解析而造成的广播数据报文对网络造成冲击。ARP表的建立一般情况下有如下两个途径。 、… (1)主动解析,如果一台讨.算机想与另外一台不知道MAC地址的计算机通信,则该计算机主动发ARP请求,通过ARP协议建立(前提是这两台计算机位于同一个IP子网上) (2)被动请求,如果一台计算机接收到了一台计算机的ARP请求,则首先在本地建立请 求计算机的IP地址和MAC地址的对应表。 因此,如果一个攻击者通过变换不同的lP地址和MAC地址,向同一台设备,比如三层交换机发送大量的ARP请求,则被攻击设备可能会因为ARP缓存溢出而崩溃。 …、 针对ARP表项,还有一个可能的攻击就是误导计算机建立正确的ARP表。根据ARP协议, 如果一台训.算机接收到了一个ARP请求报文,在满足下列两个条件的情况下,该计算机会用ARP请求报文中的源IP地址和源MAC地址更新自己的ARP缓存。 (1)如果发起该ARP请求的IP地址在本地的ARP缓存中。 (2)请求的目标IP地址不是自己的。 防御针对ARP表攻击的基本方法:与防御针对MAC地址表攻击的方法一样,也建议米取 MAC地址与IP地址绑定的方法。 3、针对流项目表的攻击 着的网络设备为了加快转发效率,建立了所谓的流缓存。所谓流,可以理解为一台计算机的一个进程到另外一台计算机的一个进程之间的数据流。如果表现在TCP/IP协议上,则是由(源IP地址、目的IP地址、协议号、源端口号和目的端口号)五元组共同确定的所有数据报文 一个流缓存表一般由该五元组为索引,每当设备接收到一个IP报文后,会首先分析IP报头,把对应的五元组数据提取出来,进行一个HASH运算,然后根据运算结果查询流缓存,.如果查成功,则根据查的结果进行处理,如果查失败,则新建一个流缓存项,查路由表,根据路由表查询结果填完整这个流缓存,然后对数据报文进行转发。 可以看出,如果一个攻击者发出大量的源IP地址或者目的IP地址变化的数据报文,就可能导致设备创建大量的流项目。因为不同的源IP地址和不同的目标IP地址对应不同的流。这样可能导致流缓存溢出。防御针对流项目攻击的基本方法:经常检查操作系统和应用程序提供商的站点,一旦发现补丁程序就马上下载是最好的方法。 360督导招募中,赶紧报名吧! 360论坛各个版区版主招募中 |
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论