Virus 版 (精华区)
发信人: Kernel (Kermit), 信区: Virus
标 题: SirCam、Nimda、Klez比较研究(zz)
发信站: 哈工大紫丁香 (Sun Mar 14 19:54:34 2004), 站内信件
SirCam、Nimda、Klez比较研究
by Koms Bomb
这三种病毒,可以说是从去年七月到现在整一年当中风头最劲的三种病毒,它们的共同特
点是
1,同为internet worm
2,传播速度和广度惊人
3,都是主要用高级语言写成
可以说internet worm是以后病毒的主要发展方向,所以让我们来比较研究一下这三种病毒
还是比较有意义的。
1,主要的传播方式
SirCam和Klez主要以email的形式传播,Nimda主要通过IIS漏洞传播。Nimda也会乱发emai
l来传播,但它的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写的最好的病毒。其它也有不少Delp
hi写的蠕虫,但很多利用了VCL库,三四百K,很笨拙的。SicCam没有用到VCL,这从它的大
小就可以看出,只有一百多K,不过还是显得大了些。Klez.E和Klez.H只有八十几K,而Ni
mda更小,只有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还会感染本地的可执行文件,方法是把原来的文件放入它自己的资源里面,用到了W
in2000的UpdateResource系列函数,这些函数只有Win2000才支持,98则没有,这是弱智之
一。更弱智的是,它不检查原文件是否感染,所以会重复感染,结果经常一个几百K的程序
最后变成了几M,用户硬盘的空间也就这样被侵蚀了,Nimda也就这样被发现了。一个好的
病毒,无论如何都不能重复感染同一文件,这是大忌。
如果Nimda能去掉上面两个不足,可以说它是相当完美的病毒。
Klez则主要通过email,共享网络和本地文件进行传播。它在感染共享网络时,会生成.ex
e或者.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的网
站上看到的分析报告,再加上我对它们所用到的技术的理解。这是很粗糙的文章,如有谬
误,还望见谅。
--
※ 来源:.哈工大紫丁香 bbs.hit.edu.cn [FROM: 219.82.103.154]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:4.547毫秒