内核级的传播
这里我们称作“内核级别的病毒”,病毒可以传染内核映像,这样病毒可以控制系统的方方面面。但是这种病毒技术目前尚处于理论阶段,并没有真正实现,但并不代表以后都不会出现。
与平台兼容的病毒
如果我们用标准C来书写病毒代码的话,各种不同体系的Unix系统对于我们来说变化不大,我们只需要对方计算机有一个C编译器。这样的病毒可以很轻易地扩散,利用普通用户的.rhosts文件这种小伎俩就可以做到。假如没有exploits(是有可能的,因为病毒是跨平台的,因而它可以不借助Exploit来四处扩散),这种可以跨平台的病毒的传染面是非常广的,而且似乎根本没有结束的时候。
当然,很多病毒都还是用汇编来编写的。有很多著名的病毒,但不是第一个Linux病毒Bliss,第一次发表于1997年.Bliss传染ELF格式的二进制文件,但是并没有太多的伤害,它甚至可以利用被感染文件的--bliss-disinfect-files-please参数来卸载。假如你需要在你的文件里查找Bliss,注意以下字段:
E8ABD8FFFFC20000363465643134373130363532
最早的Linux病毒是Staog,比Bliss早半年。它用汇编书写并且利用三个/dev/kmem的exploits来获得的特权,它可以感染任何文件并且可以传播。它的关键字段:
215B31C966B9FF0131C0884309884314B00FCD80
当我们利用ELF格式的二进制文件来做病毒:这种病毒被誉为计算机病毒中的标准模式――他们用汇编编写并且它们通过可执行程序感染,很像典型的DOS下的病毒。可以通过往elf文件的文本段之后的填充区增加代码来感染ELF文件,搜索目录树中文件的ET_EXEC和ET_DYN标记看看是否被隐藏(这些依靠管理员自身的经验)。
当然,在Linux系统下实现这种病毒并不太容易。一个病毒感染的文件属于是普通用户权限的话,那么病毒所得到的权限当然也就只有普通用户权限(并且病毒不会利用Exploit来提升权限),只能对该用户权限级别的文件和数据造成危害。但是当一个病毒感染了一个root权限的文件的话,那么它就可以控制系统的一切了。
我们安全么?
一个很实际的问题。现在我们的Linux系统还可能比较安全,但以后不代表一致这样。Linux系统越来越流行,这将引来一大批的病毒制造者的目光。很多用户都有可能是潜在的病毒制造者,而且如果把Unix的很多用户对Unix本身的了解正在减少算在内的话,我们就麻烦了。现在已经有了一些Linux系统上的反病毒程序,现在甚至包括我还有很多Unix的系统管理员在内都对制造反病毒程序非常感兴趣。在一个蠕虫出现之后,我们可以查阅各种文档,甚至书籍,所以我们都一直也在努力着。
最后一个很具讽刺的玩笑:我们具有真正有效的Linux反病毒程序,那么微软的outlook/exchange等也和Linux联合了,我们也就真正安全了,可能么?呵呵。