常见网络攻击手段原理分析
转自:http://blog.csdn.net/zhangxinrun/article/details/9401589
一、TCP SYN拒绝服务攻击
正常情况下,为了对网络进行诊断,一些诊断程序,比如PING等,会发出ICMP响应请求报文(ICMP ECHO),接收计算机接收到ICMP ECHO后,会回应一个ICMP ECHO Reply报文。而这个过程是需要CPU处理的,有的情况下还可能消耗掉大量的资源,比如处理分片的时候。这样如果攻击者向目标计算机发送大量的ICMP ECHO报文(产生ICMP洪水),则目标计算机会忙于处理这些ECHO报文,而无法继续处理其它的网络数据报文,这也是一种拒绝服务攻击(DOS)。
利用这个原理,攻击者计算机便可以通过发送合适的报文,判断目标计算机哪些TCP或UDP端口是开放的,过程如下:
目标计算机在处理这些分片报文的时候,会把先到的分片报文缓存起来,然后一直等待后续的分片报文,这个过程会消耗掉一部分内存,以及一些IP协 议栈的数据结构。如果攻击者给目标计算机只发送一片分片报文,而不发送所有的分片报文,这样攻击者计算机便会一直等待(直到一个内部计时器到时),如果攻 击者发送了大量的分片报文,就会消耗掉目标计算机的资源,而导致不能相应正常的IP报文,这也是一种DOS攻击。
正常情况下,SYN标志(连接请求标志)和FIN标志(连接拆除标志)是不能同时出现在一个TCP报文中的。而且RFC也没有规定IP协议栈如 何处理这样的畸形报文,因此,各个操作系统的协议栈在收到这样的报文后的处理方式也不同,攻击者就可以利用这个特征,通过发送SYN和FIN同时设置的报 文,来判断操作系统的类型,然后针对该操作系统,进行进一步的攻击。
正常情况下,任何TCP报文都会设置SYN,FIN,ACK,RST,PSH五个标志中的至少一个标志,第一个TCP报文(TCP连接请求报 文)设置SYN标志,后续报文都设置ACK标志。有的协议栈基于这样的假设,没有针对不设置任何标志的TCP报文的处理过程,因此,这样的协议栈如果收到 了这样的报文,可能会崩溃。攻击者利用了这个特点,对目标计算机进行攻击。
八、设置了FIN标志却没有设置ACK标志的TCP报文攻击
在IP报头中有一个偏移字段和一个分片标志(MF),如果MF标志设置为1,则表面这个IP包是一个大IP包的片断,其中偏移字段指出了这个片 断在整个IP包中的位置。例如,对一个4500字节的IP包进行分片(MTU为1500),则三个片断中偏移字段的值依次为:0,1500,3000。这 样接收端就可以根据这些信息成功的组装该IP包。
源路由选项便是其中一个,从名字中就可以看出,源路由选项的目的,是指导中间设备(路由器)如何转发该数据报文的,即明确指明了报文的传输路 径。比如,让一个IP报文明确的经过三台路由器R1,R2,R3,则可以在源路由选项中明确指明这三个路由器的接口地址,这样不论三台路由器上的路由表如 何,这个IP报文就会依次经过R1,R2,R3。而且这些带源路由选项的IP报文在传输的过程中,其源地址不断改变,目标地址也不断改变,因此,通过合适 的设置源路由选项,攻击者便可以伪造一些合法的IP地址,而蒙混进入网络。
在IP报文头中,有一个协议字段,这个字段指明了该IP报文承载了何种协议 ,比如,如果该字段值为1,则表明该IP报文承载了ICMP报文,如果为6,则是TCP,等等。目前情况下,已经分配的该字段的值都是小于100的,因 此,一个带大于100的协议字段的IP报文,可能就是不合法的,这样的报文可能对一些计算机操作系统的协议栈进行破坏。
十五、IP地址欺骗
一般情况下,路由器在转发报文的时候,只根据报文的目的地址查路由表,而不管报文的源地址是什么,因此,这样就 可能面临一种危险:如果一个攻击者向一台目标计算机发出一个报文,而把报文的源地址填写为第三方的一个IP地址,这样这个报文在到达目标计算机后,目标计 算机便可能向毫无知觉的第三方计算机回应。这便是所谓的IP地址欺骗攻击。
比较著名的SQL Server蠕虫病毒,就是采用了这种原理。该病毒(可以理解为一个攻击者)向一台运行SQL Server解析服务的服务器发送一个解析服务的UDP报文,该报文的源地址填写为另外一台运行SQL Server解析程序(SQL Server 2000以后版本)的服务器,这样由于SQL Server 解析服务的一个漏洞,就可能使得该UDP报文在这两台服务器之间往复,最终导致服务器或网络瘫痪。
NetBIOS作为一种基本的网络资源访问接口,广泛的应用于文件共享,打印共享,进程间通信(IPC),以及不同操作系统之间的数据交换。一 般情况下,NetBIOS是运行在LLC2链路协议之上的,是一种基于组播的网络访问接口。为了在TCP/IP协议栈上实现NetBIOS,RFC规定了 一系列交互标准,以及几个常用的TCP/UDP端口:
WINDOWS操作系统的早期版本(WIN95/98/NT)的网络服务(文件共享等)都是建立在NetBIOS之上的,因此,这些操作系统都 开放了139端口(最新版本的WINDOWS 2000/XP/2003等,为了兼容,也实现了NetBIOS over TCP/IP功能,开放了139端口)。
WinNuke攻击就是利用了WINDOWS操作系统的一个漏洞,向这个139端口发送一些携带TCP带外(OOB)数据报文,但这些攻击报文 与正常携带OOB数据报文不同的是,其指针字段与数据的实际位置不符,即存在重合,这样WINDOWS操作系统在处理这些数据的时候,就会崩溃。
LAND攻击利用了TCP连接建立的三次握手过程,通过向一个目标计算机发送一个TCP SYN报文(连接建立请求报文)而完成对目标计算机的攻击。与正常的TCP SYN报文不同的是,LAND攻击报文的源IP地址和目的IP地址是相同的,都是目标计算机的IP地址。这样目标计算机接收到这个SYN报文后,就会向该 报文的源地址发送一个ACK报文,并建立一个TCP连接控制结构(TCB),而该报文的源地址就是自己,因此,这个ACK报文就发给了自己。这样如果攻击 者发送了足够多的SYN报文,则目标计算机的TCB可能会耗尽,最终不能正常服务。这也是一种DOS攻击。
Script是一种可执行的脚本,它一般由一些脚本语言写成,比如常见的JAVA SCRIPT,VB SCRIPT等。这些脚本在执行的时候,需要一个专门的解释器来翻译,翻译成计算机指令后,在本地计算机上运行。这种脚本的好处是,可以通过少量的程序写 作,而完成大量的功能。
这种SCRIPT的一个重要应用就是嵌入在WEB页面里面,执行一些静态WEB页面标记语言(HTML)无法完成的功能,比如本地计算,数据库 查询和修改,以及系统信息的提取等。这些脚本在带来方便和强大功能的同时,也为攻击者提供了方便的攻击途径。如果攻击者写一些对系统有破坏的 SCRIPT,然后嵌入在WEB页面中,一旦这些页面被下载到本地,计算机便以当前用户的权限执行这些脚本,这样,当前用户所具有的任何权 限,SCRIPT都可以使用,可以想象这些恶意的SCRIPT的破坏程度有多强。这就是所谓的SCRIPT攻击。
ctiveX是一种控件对象,它是建立在MICROSOFT的组件对象模型(COM)之上的,而COM则几乎是Windows操作系统的基础结构。 可以简单的理解,这些控件对象是由方法和属性构成的,方法即一些操作,而属性则是一些特定的数据。这种控件对象可以被应用程序加载,然后访问其中的方法或 属性,以完成一些特定的功能。可以说,COM提供了一种二进制的兼容模型(所谓二进制兼容,指的是程序模块与调用的编译环境,甚至操作系统没有关系)。但 需要注意的是,这种对象控件不能自己执行,因为它没有自己的进程空间,而只能由其它进程加载,并调用其中的方法和属性,这时候,这些控件便在加载进程的进 程空间运行,类似与操作系统的可加载模块,比如DLL库。
ActiveX控件可以嵌入在WEB页面里面,当浏览器下载这些页面到本地后,相应地也下载了嵌入在其中的ActiveX控件,这样这些控件便 可以在本地浏览器进程空间中运行(ActiveX空间没有自己的进程空间,只能由其它进程加载并调用),因此,当前用户的权限有多大,ActiveX的破 坏性便有多大。如果一个恶意的攻击者编写一个含有恶意代码的ActiveX控件,然后嵌入在WEB页面中,被一个浏览用户下载后执行,其破坏作用是非常大 的。这便是所谓的ActiveX攻击。
ICMP ECHO请求包用来对网络进行诊断,当一台计算机接收到这样一个报文后,会向报文的源地址回应一个ICMP ECHO REPLY。一般情况下,计算机是不检查该ECHO请求的源地址的,因此,如果一个恶意的攻击者把ECHO的源地址设置为一个广播地址,这样计算机在恢复 REPLY的时候,就会以广播地址为目的地址,这样本地网络上所有的计算机都必须处理这些广播报文。如果攻击者发送的ECHO 请求报文足够多,产生的REPLY广播报文就可能把整个网络淹没。这就是所谓的smurf攻击。
一般情况下,这些设备的TELNET用户界面个数是有限制的,比如,5个或10个等。这样,如果一个攻击者同时同一台网络设备建立了5个或10 个TELNET连接,这些设备的远程管理界面便被占尽,这样合法用户如果再对这些设备进行远程管理,则会因为TELNET连接资源被占用而失败。
网络设备之间为了交换路由信息,常常运行一些动态的路由协议,这些路由协议可以完成诸如路由表的建立,路由信息的分发等功能。常见的路由协议有 RIP,OSPF,IS-IS,BGP等。这些路由协议在方便路由信息管理和传递的同时,也存在一些缺陷,如果攻击者利用了路由协议的这些权限,对网络进 行攻击,可能造成网络设备路由表紊乱(这足可以导致网络中断),网络设备资源大量消耗,甚至导致网络设备瘫痪。
RIP,即路由信息协议,是通过周期性(一般情况下为30S)的路由更新报文来维护路由表的,一台运行RIP路由协议的路由器,如果从一个接口 上接收到了一个路由更新报文,它就会分析其中包含的路由信息,并与自己的路由表作出比较,如果该路由器认为这些路由信息比自己所掌握的要有效,它便把这些 路由信息引入自己的路由表中。
2、针对OSPF路由协议的攻击
OSPF,即开放最短路径优先,是一种应用广泛的链路状态路由协议。该路由协议基于链路状态算法,具有收敛速度快,平稳,杜绝环路等优点,十分 适合大型的计算机网络使用。OSPF路由协议通过建立邻接关系,来交换路由器的本地链路信息,然后形成一个整网的链路状态数据库,针对该数据库,路由器就 可以很容易的计算出路由表。
IS-IS路由协议,即中间系统到中间系统,是ISO提出来对ISO的CLNS网络服务进行路由的一种协议,这种协议也是基于链路状态的,原理 与OSPF类似。IS-IS路由协议经过 扩展,可以运行在IP网络中,对IP报文进行选路。这种路由协议也是通过建立邻居关系,收集路由器本地链路状态的手段来完成链路状态数据库同步的。该协议 的邻居关系建立比OSPF简单,而且也省略了OSPF特有的一些特性,使该协议简单明了,伸缩性更强。
对该协议的攻击与OSPF类似,通过一种模拟软件与运行该协议的路由器建立邻居关系,然后传颂给攻击路由器大量的链路状态数据单元(LSP), 可以导致整个网络路由器的链路状态数据库不一致(因为整个网络中所有路由器的链路状态数据库都需要同步到相同的状态),从而导致路由表与实际情况不符,致 使网络中断。
为了合理有限的转发数据,网络设备上一般都建立一些寄存器表项,比如MAC地址表,ARP表,路由表,快速转发表,以及一些基于更多报文头字段 的表格,比如多层交换表,流项目表等。这些表结构都存储在设备本地的内存中,或者芯片的片上内存中,数量有限。如果一个攻击者通过发送合适的数据报,促使 设备建立大量的此类表格,就会使设备的存储结构消耗尽,从而不能正常的转发数据或崩溃。
2、针对ARP表的攻击
这样计算机B在收到这个ARP请求报文后(ARP请求是广播报文,网络上所有设备都能收到),发现B的ARP表项已经在自己的缓存中,但MAC 地址与收到的请求的源MAC地址不符,于是根据ARP协议,使用ARP请求的源MAC地址(即A的MAC地址)更新自己的ARP表。
一个流缓存表一般由该五元组为索引,每当设备接收到一个IP报文后,会首先分析IP报头,把对应的五元组数据提取出来,进行一个HASH运算, 然后根据运算结果查询流缓存,如果查找成功,则根据查找的结果进行处理,如果查找失败,则新建一个流缓存项,查路由表,根据路由表查询结果填完整这个流缓 存,然后对数据报文进行转发(具体转发是在流项目创建前还是创建后并不重要)。