APP下载

蠕虫检测系统的探讨与设计

2010-01-01沈佳威

中国新技术新产品 2010年6期
关键词:描述符蠕虫线程

沈佳威

(杭州师范大学钱江学院 计算机科学与技术系,浙江 杭州 310012)

1 蠕虫的定义

随着蠕虫技术的不断友展,关于蠕虫的定义也在不断发展,下面给出了一个就目前而言比较全而的定义:“网络蠕虫是一种智能化、自动化,综合网络攻击、密码学和计算机病毒技术,不需要计算机使用者干预即可运行的攻击程序或代码。它会扫描和攻击网络上存在系统漏洞的节点主机,通过局域网或者国际互联网从一个节点传播到另外一个节点。”该定义体现了新一代网络蠕虫智能化、自动化和高枯术化的特征。

2 蠕虫的扫描策略

蠕虫进行漏洞攻击和复制感染之前首先需要进行主机扫描。TCPSYN,ACK,RST,FIN 以及IcmP PING 包都可实现对主机的扫描。良好的扫描策略能够加速蠕虫的传播,理想化的扫描策略能够使蠕虫在最短时间内发现网络中全部可以感染的主机。按照蠕虫对目标地址空间的选择方式进行分类,扫描策略可分为:随机扫描和顺序扫描等。

2.1 随机扫描(random scan)

随机扫描会对整个地址空间的IP 随机抽取进行扫描,所选的目标地址按照一定的算法随机生成,互联网地址空间中未分配的或者保留的地址块不在扫描之列。例如,Bogon 列表中包含近32个地址块,这些地址块对网络中不可能出现的一些地址进行了标识。随机扫描具有算法简单、易实现的特点,若与本地优先原则结合,则能达到更好的传播效果。但选择性随机扫描容易引起网络阻塞,使得网络蠕虫在爆发之前易被发现,隐蔽性差。CodeRed,Slapper 和Slammer 的传播采用了选择性随机扫描策略。

2.2 顺序扫描(sequential scan)

顺序扫描是指被感染主机上蠕虫会随机选择一个C 类网络地址进行传播。根据本地优先原则,蠕虫一般会选择它所在网络内的IP 地址。若蠕虫扫描的目标地址IP 为A,则扫描的下一个地址IP 为A+1。一旦扫描到具有很多漏洞主机的网络时就会达到很好的传播效果。该策略的不足是对同一台主机可能重复扫描,引起网络拥塞。W32.Blaster 是典型的顺序扫描蠕虫。

3 蠕虫检测系统的设计

3.1 网络报文还原技术

在基于P2P 的分布式蠕虫检测系统中,各节点采用旁路侦听的方式监控各自对应的边界网络,需要对出入该网络的所有网络报文进行报文还原,即进行IP 分片重组和TCP 数据流还原,才能进一步进行蠕虫的检测和分析。但是,随着网络规模的扩大、带宽的增长、技术的进步、用户数量的急剧暴涨,高速网络环境越来越多,当前旁路侦听遇到的一个突出问题是数据处理速度受到极大的挑战。所以,如何解决蠕虫检测系统的数据处理能力是急需解决的问题。

3.2 传统的单线程协议栈报文还原技术

报文捕获就是将某个网络设备看到的数据报文完整的收集起来,不管这些报文是发往哪个地址,哪个端口,然后对其进行进一步的处理和分析。报文一般不通过操作系统的协议栈进行处理。而是直接由应用程序进行直接处理。因为报文捕获程序处理的一般都不是发往本机的数据报文,而是根据应用有特殊要求的,所以不能通过系统的协议栈进行处理,需要应用程序将报文捕获井实现用户态下的协议栈,以实现IP 分片重组和TCP 数据流的还原,再送至上一层进行处理和分析。

随着百兆以太网、ATM、千兆以太网广泛应用,主机对网络报文的处理性能逐渐成为一个瓶颈。而同时,SMP 体系结构的计算机的应用,大大提高了硬件系统的处理能力,但是单线程的程序却无法充分发挥SMP 体系结构计算机的性能,这是因为当前的操作系统无法将单线程的程序同时在多个CPU 上运行。

3.3 网络监测系统的实现

3.3.1 多线程协议栈处理技术

为了充分发挥SMP 计算机的性能,只有将单线程的程序进行多线程化。因此,我们将传统的单线程协议栈改造成多线程并行TCP/IP 协议栈,也就是在系统中同时运行多个TCP/IP 协议栈处理线程,让它们在多个CPU 上并行操作,来充分利用硬件系统的计算能力。

3.3.2 抵御蠕虫扫描的协议栈优化

蠕虫进行漏洞攻击和复制感染之前首先需要进行主机扫描。TCPSYN,ACK,RST,FIN 以及IcmP PING 包都可实现对主机的扫描,其中利用TCP SYN 报文进行扫描占主要部分。因此一旦蠕虫爆发后网络中将出现大量的无用TCP SYN 包,即只完成TCP 三次握手连接过程中的第一次握手。通常报文捕获系统会以TCP SYN包的出现作为一个TCP 连接建立的开始而为这个TCP 连接分配一个TCP 描述符,以记录该连接的上下文信息。而一旦网络中出现大量的无用TCP SYN 包后,系统将会为这些大量的实际不存在的TCP 连接分配描述符,而系统所具备的TCP 连接描述符的数量是有限的,因此真正建立连接的TCP 连接将会因为TCP 连接描述符被占尽而无法被处理。这个现象类似于针对服务器的SYN Flood 攻击。对此,我们修改目前协议栈对TCP 连接的处理过程:系统预先分配一个轻量级描述符LWD(lightweight descriptor)缓冲池。在这个LWD 中,只保存源地址、目的地址、源端口、目的端口、TCP 序号以及TCP 应答序号,这个轻量级描述符相对于TCP 连接描述符来说代价非常小。当系统捕获一个TCP SYN包即三次握手中的第一次握手后,不会立即分配一个TCP 连接描述符,而是分配一个LWD,而等到系统捕获后续的第二次握手和第三次握手后,说明当前TCP 连接已经建立成功,此时才给当前TCP 连接分配一个TCP 连接描述符,并将对应的LWD 释放。为了提高杳找相应连接对应的LWD 的速度,采用可以唯一确定一个TCP连接的四元组(源地址,源端口,目的地址,目的端口)信息作为散列值,创建散列表。把散列值相同的LWD 了中用链表表联系起来。对此,我们修改目前协议栈对TCP 连接的处理过程,系统先分配一个轻量级描述符LWD(lightweight descriptor)缓冲池。在这个LWD 中,只保存源地址、目的地址、源端口、目的端口、TCP 序号以及TCP 应答序号,这个轻量级描述符相对于TCP连接描述符来说代价非常小。当系统捕获一个TCP SYN 包即三次握手中的第一次握手后,不会立即分配一个TCP 连接描述符,而是分配一个LWD,而等到系统捕获后续的第二次握手和第三次握手后,说明当前TCP 连接已经建立成功,此时才给当前TCP 连接分配一个TCP 连接描述符,将对应的LWD 释放。为了提高查找相应连接对应的LWD 的速度,采用可以唯一确定一个TCP 连接的四元组(源地址,源端口,目的地址,目的端口)信息作为散列值,创建散列表。把散列值相同的LWD 使用链表联系起来。

4 实验及分析

4.1 多线程协议栈的性能测试

我们在曙光服务器上以小同的线程数启动报文还原程序处理同样的数据样本,其中测试环境为Intel Xeon 3.06GHz X 4CPU} 4G 内存,操作系统为Redhat9.0SMP。从测试结果可以看出:在单线程的情况下,程序只能串行执行,因而无法发挥多处理器的能力,随着线程数的增长,协议栈的吞吐量也随之升高。另外从测试结果也可以看出,协议栈线程数大于CPU 的数目的时候,提高线程数仍然可以提高吞吐量,这是因为Linux 采用的是时间片轮转的调度算法,当协议栈的井发线程数增加的时候,单位时间内协议栈程序分配到的时间片就会相应增加,因而吞吐量也会相应增加。

4.2 协议栈优化后的测试

我们设定协议栈井发线程数目为8个线程,分别运行优化了TCP 连接处理的报文还原程序和没有优化TCP 连接处理的报文还原程序,采用SmartBits 产生测试的100000pps 的TCP 流量,其中1%的数据包是无用的,TCP SYN 包以模拟蠕虫扫描过程产生的大量TCP SYN 包,运行30分钟后分别记录两个协议栈所处理的应用层数据量,有测试结果可以看出优化前由于对每个TCP SYN 报都分配描述符,导致协议栈实际处理的数据仅为54570MBytes,而优化后的协议栈处理的数据为76475Mbytes,大大提高了协议栈所处理的实际数据量。

[1]文伟平,卿斯汉,蒋建春,王业君.网络蠕虫研究与进展,软件学报,2004年.

[2]卿斯汉,文伟平,蒋建春等.一种基于网状关联分析的网络蠕虫预警新方法,软件学报,2004年.

猜你喜欢

描述符蠕虫线程
基于结构信息的异源遥感图像局部特征描述符研究
蠕虫状MoS2/C的制备及其在锂离子电池负极材料中的应用
基于AKAZE的BOLD掩码描述符的匹配算法的研究
秋季谨防家禽蠕虫病
Linux单线程并发服务器探索
利用CNN的无人机遥感影像特征描述符学习
浅谈linux多线程协作
青海海晏县牛羊寄生蠕虫种调查与防治
基于隔离和免疫的蠕虫传播模型及稳定性分析
基于上下文定界的Fork/Join并行性的并发程序可达性分析*