网络通信 频道

隐蔽扫描技术的研究与应用

 北京邮电大学信息安全中心  李晨旸  牛冠杰  郑康锋  钮心忻

    一、引言

    网络扫描通过网络来测试主机安全性,可以用来完整的评价网络主机安全。对于网络管理员而言,网络扫描器是高效获取当前网络信息的有力工具;对于黑客而言,网络扫描器则是进行攻击准备的利器。但是,由于网络扫描极易暴露攻击者的身份,各种隐蔽扫描技术成为研究热点。各种隐蔽扫描技术也成为网络管理员测试,提高日志系统和入侵检测系统的性能的有效方法。分片扫描技术正是其中的一种。

    本文研究了分片重组技术在网络扫描中的应用,首先简要说明了分片扫描的原理,并对现有应用的问题进行了分析。然后提出了一种windows环境下分片扫描器的结构及其功能,并对其中关键模块的实现予以详细的说明。该分片扫描器的设计和实现对隐蔽扫描的应用有推动作用。

    二、分片扫描技术简介

    分片扫描是隐蔽扫描技术的一种,是其它扫描方式的变形体,其基本原理是IP分片原理。与IP分片过程不同的是,分片扫描通常是在发送端人为地将IP分组分片,分片的长度也可由发送端控制。在发送一个扫描数据分组时,通过将IP分组数据段中的TCP分组头分为若干小段,放入不同的IP分片中,再通过重叠乱序等特殊方法使每个分片都不含有敏感信息。这就使得一些防护系统因无法正确重组而不能有效地阻止攻击,目标主机则可正常重组,实现隐蔽的网络扫描。

    在上述特殊方法中,分片重叠是效果较好的一种。该方法正是模拟TCP/IP协议中分片重叠的情形,通过构造各分片的OFFSET段值,造成不同分片的数据段相互重叠,如图1所示。

    目标系统对分片的重组方式也有两种可能性,即使用旧数据,或使用新数据覆盖旧数据重组成为原IP分组。事实上,不同的操作系统对此类分片的重组方式是不同的。在windows和solaris2.6系统中,旧数据将被用于重组;在linux系统中,新数据将被使用。因此,通过精心构造使重叠包的新旧数据不同,此时如果网络防护系统与操作系统的处理方式不同,就会造成防护系统重组结果与系统重组的结果不同,这样就存在漏报的危险。根据目标系统类型动态的调整扫描数据分组的分片重叠策略将获得较好的隐蔽策略。

    三、分片扫描器的设计

    (一)分片扫描的应用现状及问题

    目前,分片扫描一般通过硬件实现,也可借助外部工具以软件方式实现,通常用这种方法来测试入侵检测系统的性能。一个典型的软件实现方式是借助于著名的工具fragroute。通常,发起扫描的攻击机需要先将普通的扫描数据分组发送到装有fragroute软件的服务器,再由服务器完成分片处理后发送到目标主机;中间的服务器需要配置为linux系统平台上的服务器。这是因为fragroute软件只能在linux系统平台上使用,且无法在本地同时进行扫描和分片,即不能在同一个网络接口上实现分片和发送。显然,这种应用方式过于繁杂。

    流行的端口扫描工具namp也实现了使用碎片IP数据包发送SYN、FIN等多种端口扫描数据包的功能,但该功能无法在windows平台上使用。硬件实现虽然具有较好的效果,但成本较高,也不适用于一般应用。因此,设计实现在windows环境下方便、实用、高效的分片扫描实现工具是十分必要的。

    (二)系统结构及模块功能

    本扫描器在WindowsXPProfessional环境下以VisualC++.Net开发。该系统将含有敏感信息的扫描数据包在流经网卡时拦截下来,经过分片重叠处理后再发送出至目标系统,以实现分片扫描的目的。

    扫描器可划分为4个功能模块:扫描模块、截包模块、分片模块及发送模块。系统结构如图2(上)所示。

    如图2所示,用户通过人机交换模块对相关的扫描参数和目标网络信息进行配置,扫描分析模块根据这些信息,发送针对目标网络的扫描数据包。数据包在流经本地网卡时被截包模块截取,传递给分片模块进行分片重叠处理,之后发送至目标系统。所得信息回传至扫描分析模块进行分析整理,最终将扫描结果通过人机交互模块显示在界面上。

    这里没有将扫描数据包直接分片,而是将其在流经网卡时截取下来再进行处理。这一方法的好处是一方面避免了在windows环境下使用原始套接字构造数据包的复杂过程,另一方面使整个系统更加模块化。由于不需要修改数据包的发送方法,直接集成截包和分片模块即可实现分片重叠功能,扫描器的主要功能模块可以直接参考普通扫描器的实现设计。其他需要实现隐蔽相同功能的系统也可以很方便地集成相应的功能模块。

    (三)截包模块的原理及实现

    “截包”不同于“抓包”,后者只是简单复制流经网卡的数据包然后进行分析,现有的很多工具都可实现,比如Winpcap等;截包”则是在复制数据包的同时拦截使其不能发送至目的地。复制的数据经过处理后再发送出去,从而实现敏感信息的隐藏。

    截包模式一般分为用户态网络数据包拦截方式和驱动程序拦截网络数据包方式。用户态技术包括WinsockLayeredServiceProvider和Windows 2000包过滤接口。驱动程序技术包括TDI过滤驱动、NDIS中间层驱动、Win2K Filter-Hook Driver、NDIS Hook Driver。用户态下拦截数据包有一些局限性,在用户态下拦截数据包只能在Winsock层次上进行,对于网络协议栈中底层协议的数据包无法进行处理。截包模块希望在应用层中获得一个通用的处理方式,应该在IP层之下进行拦截。综合比较,驱动程序拦截方式中的NDIS中间层驱动模式较为适合。

    截包模块示意图如3所示,接收报文时,网络接口首先接收,中间层截取后,通过2送到应用层处理。之后送回中间层处理结果,选择将处理后的报文通过1送到IP协议及上层应用程序,或者丢弃该报文。

 

    发送报文时,上层应用程序通过IP协议发送数据到网络接口,过程中报文被中间层截取,通过2送到应用层处理,之后送回中间层处理结果,中间层选择丢弃该报文,或者将处理后的报文发送到网络上。具体模快流程如图1和图4所示。

    (四)分片重叠模块的实现

    分片重叠模块的工作原理是TCP/IP协议中分片重叠部分的内容,因此该模块的实现较为简单,关键是如何采用简单高效的方法实现功能。

    本模块的实现思想是将截取IP包的数据段分割成规定长度的若干段,再将每一段数据封装成一个IP包,这些包的IP包头信息大多直接复制原始数据包的包头信息,但包长、校验和以及OFFSET、MF两个标志位需要重新赋值。这些IP包就成为原始IP包的分片包。分片包以链表的形式进行存储。这样,模拟分片包在传输过程中的乱序和重发现象,只需基于该链表进行简单的处理即可实现。最后,这些分片包也将按照链表中的次序进行发送。

    这里,需要对分片包重叠的实现进行简要的说明。我们通过在两个分片包中间插入数据段为blank的数据包(称为空白包)来简单地实现这一功能。如图5所示,这些空白包被精心构造为原始数据包的一个分片,而其OFFSET段的值则与已存在的分片包重复。如前文所述,不同的操作系统对重叠的分片在重组时有不同的处理方式,因此需要特别注意空白包在分片包链表中的位置。对于采用新数据重组的操作系统,空白包需插入到正确分片之前;对于采用旧数据重组的操作系统,空白包需插入到正确分片之后。这样,既可以最大限度地混淆目标系统的网络防护系统,又不会影响目标系统对数据包的正确重组。

 

转载地址:http://www.cww.net.cn/technique/2007/6/65980.htm

0
相关文章