摘 要:网络蠕虫通过自我复制,破坏目标系统,拥塞网络,对互联网络安全构成巨大威胁。本文通过对蠕虫病毒程序的传播流程及行为特征的分析,提出一种基于实时监测检测机制的防御网络蠕虫攻击的新方法。这种方法在操作系统底层函数被调用的时候就能及时地发现网络蠕虫攻击并阻止网络蠕虫的进一步扩散。
关键词:蠕虫攻击行为特征实时监控
中图分类号:TP29文献标识码:A文章编号:1007-9416(2010)10-0093-02
引言
随着1988年11月2号由Robert Morris Jr编写的一只基于BSD Unix的“Internet Worm”蠕虫出现,到2001年8月5号的红色代码“Code Red”蠕虫发作,直至2003年8月12号的冲击波“Blaster”蠕虫的大规模爆发。互联网的安全威胁正逐渐逼近每一个普通用户。从1988年CERT(计算机紧急响应小组)由于Morris蠕虫事件成立以来,统计到的Internet安全威胁事件每年以指数增长,近年来的增长态势变得的尤为迅猛。
每一次蠕虫的爆发都会给社会带来巨大的损失1988年11月2日,Morris蠕虫发作,几天之内6000台以上的Internet服务器被感染而瘫痪,损失超过一千万美元。2001年7 月19日,CodeRed蠕虫爆发,在爆发后的9 小时内就攻击了25万台计算机,造成的损失估计超过20亿美元,随后几个月内产生了威力更强的几个变种,其中CodeRed II造成的损失估计超过12亿美元。2001年9月18 日,Nimda蠕虫被发现,对Nimda造成的损失评估数据从5亿美元攀升到26亿美元后,继续攀升,到现在已无法估计。目前蠕虫爆发的频率越来越快,尤其是近两年来,越来越多的蠕虫(如冲击波、振荡波等)出现。对蠕虫进行深入研究,并提出一种行之有效的解决方案,为企业和政府提供一个安全的网络环境成为我们急待解决的问题。
本文介绍了蠕虫病毒的行为特征及传播方式,提出了蠕虫病毒的检测方法,并设计了一种基于操作系统底层函数的防御蠕虫攻击的新方法,此方法能及时地发现网络蠕虫攻击并中断恶意代码的执行,从而更好的保护操作系统和应用软件的安全。
1 网络蠕虫传播流程及行为特征
Internet蠕虫是无须计算机使用者干预即可运行的独立程序,它通过不停的获得网络中存在漏洞的计算机上的部分或全部控制权来进行传播。
蠕虫与病毒的最大不同在于它不需要人为干预,且能够自主不断地复制和传播。
蠕虫程序的传播流程可以分为漏洞扫描、攻击、传染、现场处理四个阶段。蠕虫程序扫描到有漏洞的计算机系统后,将蠕虫主体迁移到目标主机。然后,蠕虫程序进入被感染的系统,对目标主机进行现场处理。现场处理部分的工作包括:隐藏、信息搜集等。同时,蠕虫程序生成多个副本,重复上述流程。不同的蠕虫采取的IP生成策略可能并不相同,甚至随机生成。各个步骤的繁简程度也不同,有的十分复杂,有的则非常简单。
由此,归纳得到蠕虫病毒的行为特征:(1)自我繁殖,蠕虫在本质上已经演变为黑客入侵的自动化工具,当蠕虫被释放(release)后,从搜索漏洞,到利用搜索结果攻击系统,到复制副本,整个流程全由蠕虫自身主动完成。就自主性而言,这一点有别于通常的病毒。(2)利用软件漏洞:任何计算机系统都存在漏洞,这些就蠕虫利用系统的漏洞获得被攻击的计算机系统的相应权限,使之进行复制和传播过程成为可能。这些漏洞是各种各样的,有操作系统本身的问题,有的是应用服务程序的问题,有的是网络管理人员的配置问题。正是由于漏洞产生原因的复杂性,导致各种类型的蠕虫泛滥。(3)造成网络拥塞:在扫描漏洞主机的过程中,蠕虫需要:判断其它计算机是否存在;判断特定应用服务是否存在;判断漏洞是否存在等等,这不可避免的会产生附加的网络数据流量。同时蠕虫副本在不同机器之间传递,或者向随机目标的发出的攻击数据都不可避免的会产生大量的网络数据流量。即使是不包含破坏系统正常工作的恶意代码的蠕虫,也会因为它产生了巨量的网络流量,导致整个网络瘫痪,造成经济损失。(4)消耗系统资源:蠕虫入侵到计算机系统之后,会在被感染的计算机上产生自己的多个副本,每个副本启动搜索程序寻找新的攻击目标。大量的进程会耗费系统的资源,导致系统的性能下降。这对网络服务器的影响尤其明显。(5)留下安全隐患:大部分蠕虫会搜集、扩散、暴露系统敏感信息(如用户信息等),并在系统中留下后门。这些都会导致未来的安全隐患。
2 截获蠕虫攻击的基本策略
可以通过两个步骤来实现对网络蠕虫攻击的防范:①截获网络蠕虫对Win32函数的功能调用。防范程序中可以集成了常被网络蠕虫调用的Win32函数,每当这些函数被调用时,实施防御作用的函数就会立即被执行。②安全检查。检查Win32函数调用者是否来自正常代码,如果调用来自正常代码,就跳回到原函数的入口处,如果调用来自网络蠕虫或其他的恶意代码,防御函数就会终止程序的执行并进行日志记录。
2.1 监视函数功能调用
网络蠕虫需要获得远程Shell(Windows 系列操作系统主要是运行一个System的CMD)、打开一个端口(开启一定的服务)、修改系统重要的配置文件(留下后门)或者通过另一个攻击来复制或者传播自身(例如:冲击波、SQL slammer、Nimda和 CodeRed等蠕虫),它们需要调用Win32函数来实现它们的攻击目的。表1中列出了一部分常被网络蠕虫调用的Win32函数。
这些函数集合能够轻易的进行扩展,而扩展后的集合不用重新加载监控就能够应用,将安全检查代码放到DetourFunction()中来检测函数是否是被恶意代码所调用。当通过调用TargetFunction()和DetourFunction()将想要监视的函数注册后,每当这些目标函数被调用时安全检查代码就会自动执行。该程序可作为一个动态链接库来实现的,每当可执行性文件将DllMain()捆绑在自身之上时,监视就开始起作用了。这种监视在整个系统范围内都是有效的,这就意味着这个动态链接库应该捆绑到每个易受到溢出攻击的应用程序之上,一种实现方式是指定注册值AppInit_DLLs,它能在注册键:[HKLM\Software\Microsoft\Windows NT\CurrentVersion\Windows]中找到。当那些调用Kernel32.dll中函数的应用程序启动时,这个键值指定的动态链接库同时被装载。由于很多系统程序和应用程序都调用Kernel32.dll的函数,所以对Win32函数实现系统范围内动态监视是非常容易的。
结语
本文提出一种基于系统函数调用检测和防御网络蠕虫攻击的新方法,克服了传统单机防范的缺陷,通过截获网络蠕虫对操作系统函数的异常调用来检测网络蠕虫攻击,及时中止蠕虫的攻击行为并做进一步日志记录。这种方法在操作系统底层函数被调用的时候就能及时地发现网络蠕虫攻击并阻止网络蠕虫的进一步扩散。
参考文献
[1] C Zou, L Gao,W Gong,D Towsley. Monitoring and Early Warning for Internet Worms.Umass ECE Technical Report TR-CSE-03-01,2003.
[2] 蒋蘋,胡华平,王奕.计算机信息系统安全体系设计。计算机工程与科学[J].2003.
[3] 蒋文保,杨大鉴,任晓明,宽带网络入侵检测系统的分析与实现[J].计算机工程,第29卷第1期.
[4] 韩东海,王超,李群.入侵检测系统实例剖析[M].清华大学出版社,2002:8~17.
相关热词搜索: 防御 蠕虫病毒 方法 研究 网络