Internet worm入门教程
by Koms Bomb
免责声明:
如果有人因为看了本文而写出任何恶性病毒进而对社会造成任何伤害,与本人无关。本人只是讨论一些理论知识而已。
写本文的目的:
1,像普及性知识那样普及病毒知识,即使是老处男(说我呢?郁闷中)老处女也要懂性知识,所以爱好编程的也最好懂一些病毒的编写原理。
2,发扬中国的病毒事业。为什么要发扬?去看我的其它文章。
一,Internet worm的传播途径
Internet worm,顾名思义,就是以Internet为主要传播途径的蠕虫。之所以说它是蠕虫,是因为它比病毒大,病毒通常几K,是微生物,而蠕虫通常几十到上百K,是大虫子(这个定义有些胡扯:))。通过Internet,最主要最流行的就是通过email,一家大公司的职员可能一天都不能上网看新闻,但不太可能一天都不收mail。这一类的代表有SirCam和Klez。除了mail外,还可以通过Internet server的漏洞进行传播,主要的有各种IIS漏洞,这一类的代表有CodeRed II和Nimda。
当然一个worm通常不止一种传播途径,可能几种并发。如Nimda有着IIS,email,net share,local file infection四种传播途径,不过它的成功主要是靠IIS,它的email传播能力是在是太差劲,和SirCam及Klez差了不止一个数量级。
本教程以mail worm为主,因为它们更具代表性。
二,当一个worm开始在用户机器上运行时应该干些什么
好了,用户一不留神运行了一个附件,我们可爱的worm开始执行。
首先应该驻留在系统中。通常都是把自己copy到system路径下(SirCam是以垃圾桶为家),然后修改注册表或者干脆注册一个系统服务,以使自己能在每次Windows启动的时候就被运行。
然后,呵呵,感染本地文件,然后搜集email地址,然后发送自己。既然你已经生活在用户的机器上,那么想做什么都是你自己的事了。
三,怎样得到email地址?
Outlook Express的WAB(地址簿)文件,html文件,其它网页文件(asp,php),各种即时通讯工具(MSN,ICQ)的地址簿,都是email地址的栖身之所。使用一点处理string的功夫,把它们分析出来,而不要用MAPI,那样太依赖于OE了。
四,怎样发送自己?
要发email,当然是用SMTP协议。再一次提醒不要用MAPI。
SMTP正如它的名字,很简单的。好的worm,如SirCam,Klez,都是用自己携带的SMTP engine。
五,应该利用什么系统漏洞?
那就看你的发掘了。Nimda大爆发以后,再去研究Unicode漏洞已经没什么意义,几乎所有的Web server都已经堵住了这个大洞。要么自己发掘新的漏洞,要么用一些“经久不衰”的漏洞。比如Klez用到的iframe漏洞,已经被发现一年多了,但Klez照样用它取得了惊人的战果。
六,有必要进行本地感染吗?
答案是肯定的。之所以大家公认Nimda和Klez非常难杀死,就是因为它们大量感染本地文件。如果是SirCam,则改一下注册表,然后清空垃圾桶就把它干掉了。一般Worm感染文件,不是像PE病毒那样真正的感染,而是木马式的捆绑(如Nimda)或者伴随感染(如Klez)。比如Nimda,感染的方式是把原程序放进自己的resouce section,做为资源的一部分,用的是Win2000的UpdateResource之类的API,似乎在98下不行。不过它很愚蠢的是,会重复感染,结果一个几百K的程序最后变成好几M了。
七,写Worm用什么语言?
只要可以编程的都可以用,汇编,VC,Delphi,甚至SQL或者PHP,但要想写得好,还是推荐汇编和C/C++。最好用C/C++,因为一般Worm不是非常注重size,而C/C++用起来更灵活,如果用汇编去处理Klez体内的字符串去生成邮件标题和内容,工作量一定大得多。
最著名的蠕虫几乎都是C/C++写的,比如Nimda,Klez。而SirCam则是用Delphi写的。但在一个Worm里用VCL库或者静态连接的MFC库(总之,是指静态的framework)是愚蠢的,没人会相信一个三四百K的Worm会和SirCam,Nimda或者Klez一样流行,除非全世界的个人上网带宽达到1M以上。
八,还应该注意什么?
这还问我???Worm比PE病毒要简单,但它用的手段也可以多种多样,随你发挥。
2002年6月4日晚10时,Koms Bomb,痛饮啤酒中
欢迎转载,请保留“by Koms Bomb”