Unix系统病毒概述(1)
日期:2007-04-22 荐:
Unix系统病毒概述
ELK CLONER: 第一个计算机病毒
它将会得到你磁盘上所有的东东
它甚至将渗透到芯片内部
这就是 Cloner!
它会象胶水一样粘住你
它还会修改内存!
计算机病毒是一种在大量的电子破坏技术手段中最著名的成员.他们实际上就是一些非常危险的恶意程序,他们是丑陋的,不过在我看来他们很可爱,原于我对internet的驾驭和对计算机程序的探索.他们会复制自己并且可以传染其它文件,直至现在,这些被传染的文件甚至包括了那些很清白的文档文件.而且他们很容易获得.他们可以随处传播,任何时间,任何地点.实际上,没有一个OS可以完全抵御病毒的.一个病毒可以完全依靠系统本身进行复制,比如利用windows系列操作系统的pe格式的可执行文件和利用类unix操作系统的elf格式.所以,任何计算机病毒都依附于OS的体系结构,各种OS的病毒的写法都不一样,但任何OS也逃避不了病毒,包括linux.
正如以上所说,linux也可以被感染.就象windows nt或者macOS这样的操作系统.不论是PC机上的DOS或Windows,或者是Amiga,都可以创造出病毒代码.那么,我们为什么不来看看在Windos NT或Linux系统上的一些病毒呢? 你也许会奇怪,事实上第一个计算机病毒是unix病毒(有可能第一个就是Elk Cloner,好象是编写于1980到1982年之间).Fred Cohen在4BSD的VAX系统上编写了一些非常早的unix病毒,一年以后Elk Cloner就诞生了.由于unix系统具有内存保护机制,所以人们不太相信unix系统上的病毒的危害性会超过windows和dos系统,但他们错了.
一些公共的误区
一个最大的误区就是很多高性能的安全系统对病毒蔓延的预防.因为我们是利用DOS系统和它本身并不存在任何内存保护机制和数据保护机制,我们认为病毒可以完全控制计算机的所有资源.是的,他们会很轻易的称为DOS和简单的Windows操作系统的完全控制用户.没有内存保护机制和数据保护机制,计算机病毒可以夺取所有的计算机控制权.相对来说,windows NT和unix系统是非常高级的保护机制的系统.这可以预防大多数的病毒的传染,但不是所有的.当一个用户以root或administrator的身份来操作的时候,这些系统的保护机制实际上是停止了的.一个设计的很巧妙的病毒可以利用自己的方法来找到文件系统上的每个文件;NT ownership或者ACL机制都没有很好的重视这个问题.
另一个误区就是认为linux系统尤其可以防止病毒的感染,因为linux的程序都来自于源代码,不是二进制格式.这才应该值得重视,因为毕竟只有极少数的人(甚至管理员)才有足够的能力来从源代码中发现病毒代码,而且这是一个相当耗费时间和精力的工作.一般的用户习惯于用二进制格式的文件来交流,因为他们不想在使用这些程序的时候还要很繁琐的执行诸如make config;make之类的命令,他们喜欢很简单的运行程序.所有的这些原因就给了unix系统上的病毒有足够的空间来访问和操控系统.
第三个误区就是认为unix系统是绝对安全的,因为它具有很多不同的平台,而且每个版本的unix系统有很大的不一样.但是现在不能这样看了.现在的病毒都用标准C来编写以适应任何类unix操作系统,并且他们可以用make程序来跨平台编译.想想那个Morris写的internet的蠕虫病毒利用的就是这项技术.并且拥有标准的ELF二进制格式和库文件.
Shell脚本
我们面临的第一个问题就是如何传播的问题,这是天生具有的问题,至少在unix系统上是如此,我们需要想办法使各个平台兼容.所以我们首先想到的是:shell脚本语言.shell在不同的unix系统上面的差别很小.所以Fred Cohen在他的书:入侵者,蠕虫和病毒(发表于1990年)写到:"在unix的命令解释语言中,病毒代码可以被写到200个字节之内".也许我们可以根据他的话来写一个man page的病毒脚本,可以用来操作文件和可执行程序.这和宏病毒非常相像.man page的病毒不会蔓延到别的系统上,除非你有为别的用户改变man page的格式的习惯.无论如何,这种病毒都是一个公共的跨系统的病毒.同样,也可以写另个一个脚本病毒来控制mail的阅读者.
书写shell脚本病毒是一个很简单的制造unix病毒的方法.我知道肯定会有很多同行会说,脚本病毒怎么会是真正的病毒呢?它只是用脚本语言来书写的而不是用汇编.但是实际上,我们评定一个病毒是病毒本身可以在系统上任意感染传播,而不是这个病毒的大小或者用什么语言来写的.在USENIX 1989 卷2上你可以看到Tom Duff和M. Douglas McIlroy的脚本病毒代码.shell脚本病毒的危害性不会很大并且它本身极易被破坏,因为它是以明文方式编写并执行的,任何用户和管理员都可以发觉它的代码.但是,我想大多数的用户都不会理解一下代码的吧:
for %%f in (*.bat) do copy %%f bfv.bat
通常一个用户会深信不疑的去执行任何脚本,而且不会过问该脚本的由来.这样,这些用户都成为病毒的目标了;这些都是用户的意识问题,这样是没办法避免病毒的入侵的,所以我们的用户需要大大加强对这些病毒的防范意识.
标签: