几年前,我曾在 Virginia 州的 McLean 参加了一个关于入侵检测的特别会议。与会者被分为四个小组,负责对入侵检测相关领域的技术的发展水平进行评估和将来的研究方向提出一些建议。最后,每个小组选出一名代表为所有与会者展示他们小组的研究成果。虽然每个小组的报告都很有趣,而且都值得一听,不过,研究恶意代码那一小组对恶意代码领域的发展所做的报告深深地吸引了我。他们的结论是:这几年来,在恶意代码的特征描述和识别方面并没有太大的实质性进展。大家想想,病毒已经存在了至少二十年了,人们仍然在编写着各种恶意代码,并让它们四处蔓延,但是,我们根本不会奢望会听到类似于“如今哪个可靠的程序可以准确而高效地检测到几乎所有的恶意代码”这样跨越式的进步。然而并不是所有人都这么认为。一些没有参加会议的研究人员根本不会同意恶意代码小组的说法,但我相信这样的人只是少数。为了更好地识别和对付恶意代码,我们正在进行着大量相关的研究工作但是要在理解和检测恶意软件方面取得突破性的进展我们还有相当漫长的路。
极具讽刺意味的是,如今的计算世界里到处都充斥着恶意软件。病毒和蠕虫都非常普遍,在报纸、杂志和电视上经常都能看到有关“最新且最强大”的病毒或蠕虫的报道。即便是计算机新手都知道病毒是什么以及它们为什么不受欢迎。数年前就有人开发出了“创建你自己的病毒”这样的工具包。在十年前,公开的“电脑黑客工具”站点还非常罕见,而在今天的互联网上却是盛极一时。然而,对于想要获得恶意软件的人来说,并不一定要从“电脑黑客工具”网站才能获得他们想要的。 2002 年 8 月,计算机紧急响应小组协调中心( the Computer Emergency Response Team Coordination Center , CERT/CC )报道:一个搞恶作剧的家伙修改了 OpenSSH 中所有的源代码,使其中包含了特洛伊木马程序。一些毫无防备的用户进入 OpenSSH 和它的镜像站点,他们本想通过各主机之间加密的网络传输非常安全地下载 OpenSSH 。但事与愿违,他们却将包含在 OpenSSH 源码中的木马程序引入腹地,这使得攻击者获得了对他们系统的远程控制。即便是本书——“ Malware: Fighting Malicious Code ”的作者,全世界能够识别各种类型攻击的为数不多的专家之一, Ed Skoudis 本人,在本书的第一章中指出:他曾在他的某一台计算机上发现过数个执行暴力的口令破解的木马程序。恶意软件一点也不罕见;相反它还很流行,而且这一状况正在加剧。
还有更糟糕的,破解工具的可用性发生了很大变化。不久前,人们在得到某个破解工具后还得花些功夫去学习如何使用它。大多数破解工具的用户界面是语义含糊的命令行界面,只有工具的开发者才会使用。这些工具的帮助设施事实上并不存在。其结果就是很难甚至无法使用这些工具,只有少数人可以使用这些工具,并以此为荣。因此,与安全相关的威胁水平并不是很高。然而,随着时间的推移,破解工具的可用性有了很大的改善。现在许多工具都很容易操作,因此被戏称为“儿童脚本( kiddie scripts )”。如果某个“攻击者”想要利用它们做些什么的话,只需下载这些工具并输入少量信息(比如说,只需回答“你想攻击哪个 IP 地址?”),然后将鼠标指针移动到按钮“ Go ”上并点击一下。儿童脚本的出现和几个世纪前枪支的出现具有很多相似之处。在枪支大量用于战斗以前,综合考虑所有因素,人数多的一方比人数少的一方有很大的优势。枪支成为重要的“平衡器”。尽管稍有不同,但儿童脚本同样是个重要的平衡器。使用儿童脚本还不大可能完成一个经验丰富的攻击者所能做的事情,但是,一个毫无经验的攻击者却至少可以完成很多甚至大多数的攻击。
然而,我们并没有完全输掉这场战争。与恶意软件的战争中至有少数的几个亮点。如今,反病毒软件得到了广泛的应用,例如,如果我们能够定期更新我们的反病毒软件,那么在检测和清除相当数量的恶意软件——特别是(并不限于) Windows 和 Macintosh 系统中的病毒和蠕虫方面是非常有效的。反病毒软件的成功在某种程度上体现了与恶意软件斗争的胜利。但是,这类软件中的绝大多数是相当简单的,正如你将在本书第二章中看到的那样,然而,更糟的是,还有许多用户仍然没有在自己的 Windows 和 Macintosh 系统上安装反病毒软件,或者,即使他们安装了反病毒软件,他们也有可能不会去进行必要的更新。正如这本书的其它章节所提到的那样,有人也开发了一些针对其它种类的恶意软件的检测和清除软件,但是,同反病毒软件一样,缺乏(往往是最需要这类软件的组织)广泛的部署是这类软件的主要局限。
多种恶意软件并存,并且它们似乎都在快速地变得越来越复杂,这使得在我们所知道的恶意软件和对它的处理能力之间产生了巨大的差距。如果我们想要缩小这个差距,我们在理解和处理恶意软件方面需要大跨步地发展,而不是缓慢前进。详细、全面地理解恶意软件是怎样工作,以及怎样防范它们是缩小这个差距最有效的催化剂。“ Malware: Fighting Malicious Code ”就是这样一本书。作者 Ed Skoudis 在第一章简单地介绍了必要的基础知识,然后在后续章节中介绍了每一种恶意软件——病毒、蠕虫、恶意移动代码、后门、特洛伊木马、用户模式 Rootkits 、内核模式 Rootkits 、更深层次的恶意软件和混合恶意软件。然后他描述了恶意软件植入系统的各种情形,并且以如何安全有效地分析潜在的和真正的恶意软件作为本书的结束部分。我最喜欢的章节是第八章(关于“内核模式 Rootkits ”),因为 Ed 选择了一个含有许多零散知识的主题,并用非常详细和易于理解的结构将这些知识组织起来。必须承认,我在读过这一章后也是非常地不安,因为我第一次意识到破坏内核居然有这么多高明的方法。之后,我摆弄自己的一个 Linux 系统,尝试着用 Ed 所介绍的方法来确保系统的内核层没有遭到破坏。我发现读过这一章后,自己可以将别人在 Windows 系统而不是 Linux 系统上花费大量时间所做的事情做得更加出色。第十章(关于“情节”)是对 Ed 在前面九章中介绍的内容的应用。情节和案例研究是将理论进行运用的最好办法,而作者恰在案例这一章中以非常好的形式实现了这一点。学习恶意软件总是非常有趣,但是如果你在阅读的时候不知道该做些什么的话,那恐怕很难有所收获。整本书确定了针对可能遭遇的威胁的高效、切实可行的解决方案,并详细介绍了如何实施这些方案。
我从没有看到过像“ Malware: Fighting Malicious Code ”这样清晰而系统讲解有关这样一组恶意软件的本质的问题。 Ed 是一个顶级的 SANS 教员,如果你对他所写的是否能够像他所讲的一样出色表示怀疑,读一下这本书吧,你的疑虑将会烟消云散。他可以将一切相关技术描述得简单易懂,却又不减少技术含量,这一点是很少有作者能够做得到。不论所讨论的主题涉及了多少技术问题,他都会频频插入幽默的语句作为点睛之笔,令这本书保持了较高水平的趣味性。我一直在想,这几年来又有多少学生参加了我的各种计算机安全课程,如果参加之前他们有了这本书,也许就不会来学习这些课程了。
Ed Skoudis ,是有名的信息安全预测专家、克林顿安全办公室的高级顾问以及网络安全研究会“ The Hack-Counter Hack Training Course ”的创始人,是多年来一直从事计算机安全工作。 Ed Skoudis 的另外一部畅销书——“ Counter Hack: A Step-by-Step Guide to Computer Attacks and Effective Defenses ”(中文版译名为《反击黑客》),详细介绍防御各种黑客攻击的技术与方法。而这本书所讲述的 Malware 要比黑客攻击工具具有更为广泛的内容。