蠕虫的定义
蠕虫的洋文叫Worm。蠕虫就是能够自我复制进行网络传播的恶意程序。
它的名称来源是被称为”史上最赞的十本硬科幻小说”的《冲击波骑士》。感兴趣的,请参阅《科幻小说介绍》。这本小说是1975年出版的,1982年的时候有人利用这种”蠕虫”思想来开发检测网络的诊断工具。1988年的时候一个美国康奈尔大学生发布了莫里斯蠕虫
,中断了大量计算机,促使美国建立了CERT协调中心
和Phage邮件列表
。后来这个大学生被投进了监狱。
蠕虫的入侵模式
蠕虫主要是由两个部分组成:主程序
和引导程序
。主程序建立在一台机器上之后,就会去读取这一台机器上的公共配置文件
,运行系统的一些程序,显示这一台机器的联机状态信息,收集一些跟这个机器相连的其他机器的信息,获取这些计算机的IP地址。因为网络世界中的有缺陷的机器太多了,发现了这些目标之后,这个主程序就会复制自己,生成一个自身的副本,然后尝试地利用网络和电子邮件
发送给他们,在这些远程的机器上建立引导程序
。然后这些机器一旦染毒,这些引导程序
就能定位识别这个机器,以这个染毒机器为据点重复上面的过程。这叫做重新定位能力(autoReLocation)
。
蠕虫的通用结构
- 目标定位
蠕虫主要是为了传播,所以应该能发现目标。比如搜索本地系统上的电子邮件列表,然后向这些地址发送副本,邮件信息一般可以穿过防火墙,这样就能找到很多网络节点,利用节点的“指纹”信息能识别那些机器的系统,然后利用漏洞进行感染。 - 感染传播
一般的蠕虫都是感染特定类型的操作系统的。感染的方式有两种,可以是利用社工欺骗机主运行蠕虫程序,二是可以让蠕虫携带漏洞利用模块
。比如使用脚本语言,文档格式,二进制文件,注入内存的代码攻击目标操作系统。 - 远程控制和更新接口
蠕虫还可以写一个通信模块
控制感染的机器,更新上面的蠕虫代码。因为系统漏洞的利用,一般只能利用一次。重复感染容易造成系统崩溃。 - 生命周期管理
可以编写生命周期控制模块,让某个版本的蠕虫在事先设定好的时间里面工作,然后到时间了就自杀。比如W32/Welchia.A在2004年初自杀,2004年2月下旬W32/Welchia.B发布,3个月后又自杀。
蠕虫与病毒
关于病毒,请参阅博文《病毒是什么》,病毒的目标,一般来说都主要是针对计算机内部的文件系统的,蠕虫的目标是互联网内的所有计算机,局域网中的共享文件夹,电子邮件Email,恶意网页,有漏洞的服务器等等。
蠕虫的防治方法
具体请参阅《网络安全中的防治方法》。