SirCam、Nimda、Klez比较研究

SirCam、Nimda、Klez比较研究
by Koms Bomb

这三种病毒,可以说是从去年七月到现在整一年当中风头最劲的三种病毒,它们的共同特点是
1,同为internet worm
2,传播速度和广度惊人
3,都是主要用高级语言写成
可以说internet worm是以后病毒的主要发展方向,所以让我们来比较研究一下这三种病毒还是比较有意义的。

1,主要的传播方式
SirCam和Klez主要以email的形式传播,Nimda主要通过IIS漏洞传播。Nimda也会乱发email来传播,但它的email传播能力和SirCam及Klez差了N个数量级,不值一提。
SirCam传播的email的特征主要是mail的主体相对固定,虽然它也会随机地选择主题和正文,但它的选择极其有限,只有那么很少的几种,而且大体都是类似于“我给你发了这个文件,希望你会喜欢它”之类的话,还是比较容易识别的。但它的主题"How are you",则极具亲和力。试想想,一个人发mail跟你说“哥们,你好吗”,你可能会很激动有个“朋友”给你发来一个有趣的文件。
值得注意的是SirCam并没有利用很多worm利用的IFrame漏洞(当时这个漏洞已经被发现),它单纯凭着social engineering(社交工程)来欺骗用户,取得如此大的成功,实属不易。
据说SirCam用了一个墨西哥的smtp server,我没有验证过。
Klez的主要特征则是拥有数量庞大的mail主题和主体,据说高达120种组合,而且很多具有极大的欺骗性,比如其中有的竟然冒充是Klez自己的免疫工具。呵呵,当全世界用户都在为Klez的爆发而恐慌的时候,突然收到朋友寄来的一个Klez免疫工具,有谁不心动呢?
Nimda则主要是利用IIS的Unicode漏洞,一旦这个漏洞被补上以后,它也就无法广泛传播了。它也会利用mail传播,这也是很多AVer吹捧的亮点,但它的mail传播能力实在太弱,根本无法和SirCam及Klez想媲美。应该说SirCam和Klez主要以mail传播,所以它们注重mail传播的能力,而Nimda主要通过IIS传播,所以mail传播不是它的强项,这也怪不得它的作者。
Nimda发信的主题是从感染者机器上的文本文件中抽取的字符串,所以很多是没有意义的,而且没有邮件正文,这大概是它失败的一个原因。不过它倒是利用了IFrame漏洞。

2,编写语言
SirCam是用Delphi写成的,可以说它是史上用Delphi写的最好的病毒。其它也有不少Delphi写的蠕虫,但很多利用了VCL库,三四百K,很笨拙的。SicCam没有用到VCL,这从它的大小就可以看出,只有一百多K,不过还是显得大了些。Klez.E和Klez.H只有八十几K,而Nimda更小,只有56K。
Klez和Nimda都是VC写的,Nimda里面插入了一些汇编指令,因为它会在explorer进程里启动一个病毒线程。
非常有趣的是Nimda最初是编译成DLL的。这是因为它在替换riched20.dll时是以DLL形式存在的,而DLL在初始化以后要用ret指令返回到Kernel32,而且还要清除DllMain的参数,所以编译成DLL是合适的。编译成exe则不行,因为WinMain的参数个数和DllMain的不一样,ret时清除堆栈时会导致堆栈不平衡而发生错误。
Klez各个版本都携带了一个汇编写的PE病毒,其中Elkern.C(Foroux.A)势头甚猛。

3,传播方式
SirCam主要通过email传播,似乎也会通过网络共享传播,但它的做法是把自己copy到远程的垃圾桶,一般很难实现。
Nimda则会通过IIS漏洞,email,共享网络传播,并会感染本地文件。它在感染本地机器的时候采用的真是一种很弱智的方式。它会在本地的每一个文件夹都创建一个.eml或者.nws文件,期待用户能够点击从而重复感染。但一般一个用户的机器几乎都没有这种文件,而且一旦用户发现很多这种文件,难免会产生怀疑。不过它比较聪明的是在每个文件夹最多只产生一个.eml或者.nws文件,比Klez好些。
Nimda还会感染本地的可执行文件,方法是把原来的文件放入它自己的资源里面,用到了Win2000的UpdateResource系列函数,这些函数只有Win2000才支持,98则没有,这是弱智之一。更弱智的是,它不检查原文件是否感染,所以会重复感染,结果经常一个几百K的程序最后变成了几M,用户硬盘的空间也就这样被侵蚀了,Nimda也就这样被发现了。一个好的病毒,无论如何都不能重复感染同一文件,这是大忌。
如果Nimda能去掉上面两个不足,可以说它是相当完美的病毒。
Klez则主要通过email,共享网络和本地文件进行传播。它在感染共享网络时,会生成.exe或者.rar文件,但它不如Nimda的是,它每一次感染都会生成这些文件,而且会感染本地的共享文件夹,这样就造成在硬盘上产生很多莫名其妙的.exe和.rar文件,很容易被发现。
Klez对本地文件的感染采用的是伴随感染的方式。方法是它先把原文件改个随机的名字,再进行加密,然后用自己替换原文件,并把文件大小伪装的一摸一样。正因为它把原文件进行了加密,所以很多时候中毒的用户都会损失大量的软件,不过差不多所有的著名杀毒公司(包括国内的)都对此推出了修复工具。

4,驻留方式
SirCam比较有趣,它会驻留在用户的垃圾桶内,一般用户不会在意垃圾桶里面突然多了一个文件。不过,很多用户为了节省硬盘空间,会经常清除垃圾桶,结果SirCam也被当作垃圾清理出门了:-)。其实这是玩笑,一般SirCam总是在运行中,所以不会被删除的。
Nimda和Klez都是驻留在系统目录下,这是很多病毒惯用的伎俩。Nimda生成的文件名在同一病毒版本中是固定的,Klez则技高一筹,会随机产生一个文件名,这就给用户识别病毒带来很大困难。

5,版本延续性
SirCam似乎只有那么一个版本,没有什么改进。
Nimda大体有五个版本,其中Nimda.A和Nimda.E最为著名,且流传非常广泛。
Klez则有大大小小十几个版本,其中Klez.A,也就是雏形,按AVer的说法,会大量占用内存,很容易被发现,所以无法广泛传播。最著名的是Klez.E和Klez.H,诞生几个月了还在广泛传播,应该说是很成功的。
值得注意的是Nimda和Klez似乎都有被他人修改的版本。Nimda有一个Code World版本,似乎是被那个Code World蠕虫作者用16进制编辑器改的,有很大的bug。而Klez也有UPX压缩的版本。据我所知,Klez会对自身进行加密,所以原作者肯定不会用UPX对其压缩的,否则很难进行加密了。
一个高明的VXer写出一个成功的病毒以后,其他小“VXer”因为自己没有能力写出病毒与之相抗衡,所以修改那些成功的病毒,四处散布,以满足自己“制造”病毒的欲望,这也是正常的。不过似乎现在这三种病毒的源代码还没有被公布,所以对其修改也只是用16进制编辑器修改,很难改出好的版本。
不知道Nimda和Klez什么时候公布源代码,到时会否天下大乱?期待中@_@
当然如果用一些reverse engineering,可以把它们的代码还原出来,但我没力气去做,谁做出来了记得告诉我哦:-)。似乎有人自己写出了Nimda的代码,但我没有研究过其真伪对错。

6,流传程度
SirCam是继LoveLetter之后的第一个大面积持续传播的病毒。当年LoveLette虽然闹得很欢,但只是一时的大爆发,没有什么后续性。而SirCam则不同。SirCam在刚刚诞生的时候,“爆发”并不剧烈,但它有着非常“坚忍”的特性,持续地传播。要注意一般蠕虫比较容易被发现,不像文件病毒那样隐蔽,所以很多蠕虫都是昙花一现,但SirCam则算是一个常青树。不过现在它也几近灭亡,传播了八个多月,已经很可以了。
Nimda的大爆发则掀起史无前例的风暴,传播速度之快是破纪录的,甚至不比后出的Klez.H差,但它现在传播速度明显减慢,似乎只在中国还有流传,国外已经少见了。
各种版本的SirCam和Nimda都没有明显的破坏性。如果Nimda有着覆盖用户文件之类的破坏,那么IT界肯定已经发生一场灾难。
Klez.H可以说是mail病毒之最,甚至超过了Nimda的大爆发。而且它具有如此良好的持续性,以至于在爆发两个月后的今天仍在大规模快速传播,甚至屡屡打破自己的传播纪录。难怪有些AVer认为它是史上最恶的病毒。
有趣的是Klez.E,它刚出现的时候根本没什么动静,但它在顽强地传播,历时五个月以后,现在它已经和Klez.H比肩了。
但Klez.E以前的版本,包括Klez.E,有着恶毒的破坏性发作,有些让人不爽。不过最著名的Klez.H中倒是没有了破坏性,可以说是我们的一大福音。

结语:
其实我并没有对这三种蠕虫进行过详细的技术研究,一是没有环境做实验,二是几十K的东西要仔细研究反汇编的代码会花太多的精力和时间。我上面说的这些,主要是从AVer的网站上看到的分析报告,再加上我对它们所用到的技术的理解。这是很粗糙的文章,如有谬误,还望见谅。

    2002年6月21日晚10时,Koms Bomb
欢迎转载,请保留“by Koms Bomb”

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值