与其说计算机网络是一项技术,不如说它是另一个「世界」。虽然这个「世界」为现实的我们提供了前所未有的发展,但是它却是充满了黑暗。本文我们就来聊聊,这个网络世界的黑暗是如何开始的?
黑 和 白
我们的大概都知道,互联网是由学术研究机构发明,最初只用来连接少量的大学计算机。但互联网往后的发展超乎人们的预期,互联网由最初的科研项目逐渐发展成一个全球化的基础设施,所连接的对象也由几千个科研人员猛增到数全球十几亿无任何技术背景的普通人。
但是,国际互联网工程任务组(IETF)所做的一些决策导致了一些问题,正是这些问题阻碍了今天互联网的发展。IETF 是一个由研究人员组成的小组,他们采用学院派和学术式方式讨论和确定互联网标准。
如果网络连接的是一个由志趣相投的朋友所组成的团体或是两所互信的大学,这没问题。但是随着互联网的发展,许多不同类型的团体和拥有不同文化背景的人群也接入到互联网,这种建立在互信基础上的方法就不再适用了。
IETF 制定的“简单邮件传输协议”(SMTP)就是一个例证。该协议用来帮助用户在互联网上收发电子邮件。最初的 SMTP 协议并不检查发送方真实的网络地址与邮件包头中指定的地址是否一致。这让“冒名顶替”行为有机可乘,恶意用户可以使用一个伪造的源地址或非法 IP 地址生成 IP 数据包。
这种恶劣行为被广泛用来隐藏发动互联网攻击的源头,网络犯罪团伙有可能使用这种技术,比如垃圾邮件的出现。
垃圾邮件是一些未经接收方同意就发送来的商业邮件,通常采用批量群发的方式,一次可以发送给几百万个电子邮件用户。对于发送者而言,发送垃圾邮件需要支付的成本很小,但是只要有接收者做出回应,哪怕占很小比例,也能产生相 当可观的“收益”。
1978 年,一位“热心”的 DEC 公司销售代表向阿帕网社区发送垃圾邮件,它是最早的垃圾邮件之一。从此以后,垃圾邮件的数量迅速增加。
据 2003 年的一项研究估计,在互联网上传送的电子邮件中,超过半数的都是垃圾邮件,并且 90% 以上的垃圾邮件仅由 150 个人发出。一项统计表明,截至 2011 年,网络上的垃圾邮件数量已经超过了全体邮件数的 80%。这些垃圾邮件不再是某个特定个人的行为,而是来自僵尸计算机或僵尸网络。
僵尸网络由大量个人计算机组成,它们虽属于普通用户,但被恶意软件控制, 能够接受指令发送垃圾邮件。然而,幸运的是,现在我们有了垃圾邮件过滤器, 它可以识别出大部分垃圾邮件,并直接把它们丢进“垃圾箱”中。
恶意软件用来非法访问某些计算机,以达到某些不可告人的目的,其中有些相对无害,而有些就是明显的犯罪。
20 世纪七八十年代,UNIX 操作系统在各个大学和商业机构广泛使用,这让其成为黑客的主要攻击目标,这些黑客们使用他们所掌握的技术非法访问目标计算机的文件。
如今是个人计算机的天下微软的 Windows 操作系统成为黑客的首要攻击目标。在许多情况下,黑客能够获取系高级权限,而战斗的另一方是“白帽”,他们大多是计算机安全专家,专门负责查找系统安全漏洞,防止计算机系统遭受网络攻击。黑客发动攻击时所使用的技术多种多样。
网络间谍
克利夫·斯托尔(知名电脑安全专家,他在因特网发展初期瓦解了黑客集团)在其黑客经典书籍《杜鹃蛋》中描述了追踪和起诉一名黑客艰辛又复杂的过程:
斯托尔是劳伦斯伯克利国家实验室的一名天文学家兼计算机系统管理员。这个实验室的计算机运行的是 Berkeley UNIX 系统,拥有两个会计软件系统追踪这些计算机的使用情况,一个是标准的 UNIX 实用程序,另一个是伯克利系统自带的程序。
1986 年,在劳伦斯伯克利国家实验室计算机账户上出现了 75 美分的错误,斯托尔据此推断有人正在侵入实验室系统。他在实验室昼夜值守,每当有计算机连接进来就得到通知,因此记录下入侵发生时的击键动作,结果令人惊讶。
入侵黑客使用了一个旧的不活跃的用户,通过猜测密码的方式,侵入了其中一台计算机。进入系统后,黑客利用 GNU-Emacs 编辑器程序中的一个漏洞欺骗了计算机,获取了系统管理员权限,即超级用户或根用户权限。
通过这个漏洞,黑客把一个文件从用户区移动到系统管理员专用的内存区域中。GNU 软件没有检查那片区域是否在受保护的系统软件内存空间中。在进入这块特权区域后,黑客运行了一个伪造的标准 UNIX 程序——atrun,它每隔一段时间就会运行队列中的作业。
这个非经授权程序就是“杜鹃蛋”,之所以取这个名字,是因为杜鹃总是喜欢把自己的蛋下到其他鸟巢中,欺骗其他鸟类把它作为自己的蛋孵化出来。
在运行伪造程序之后,黑客获得了系统管理员的超级用户权限。然后,他把伪造程序恢复成真正的 UNIX atrun 程序,从系统日志中擦除自己的痕迹,这样一来,系统管理员就不会发现有任何异常。黑客还扫描了所有包含“黑客”和“安全”字样的电子邮件,使用他获得的权限“杀死”任何可能监视其行为的用户程序。
情况变得极其严重:黑客可以阅读所有人的邮件,访问或删除任何文件,创建一个新的隐藏账户用作后门,方便他日后再次侵入计算机。现在存储在计算机中的所有数据都处在危险之中。
而且,黑客使用获得的超级用户权限不仅可以访问伯克利实验室局域网中的其他所有计算机,而且还可以访问通过阿帕网连接到伯克利的其他计算机系统。
斯托尔还发现,黑客通过猜测密码和使用未受保护的来宾账户等方式试图侵入几台军方计算机。令人惊讶的是,竟然还有大量军事安全站点仍然使用默认的出厂密码作为超级用户系统管理员密码。
经过长期的追捕之后,美国联邦调查局、中央情报局、国家安全局最终追踪到了联邦德国。这次入侵的始作俑者是马库斯·赫斯(Markus Hess),他是联邦德国黑客集团的一份子, 他们从美国军事计算机系统窃取敏感信息,然后转手卖给别国。
伯克利黑客使用了另外一种技术来盗取密码,即安装“特洛伊木马”程序。这种程序把恶意代码隐藏在一个表面无害的程序内,借机获取计算机的控制权,并进行破坏。在伯克利,黑客自己编写标准登录程序,用以捕获用户密码。用户使用这种程序登录系统时会出现如下欢迎信息,看上去和真的登录信息一样:
欢迎登录 LBL UNIX-4 计算机
请登录账户名:
当用户输入账户名之后,程序会继续要求用户输入密码。
请输入密码:
当用户输入密码之后,用户名和密码就会一起被复制到黑客指定的文件中。然后程序做出如下回复。
抱歉!请再试一次。
请输入密码:
当用户再次尝试登录时,就会进入真正的登录页面,然后正常登录,毫无察觉自己的账户和密码已经被窃取。现在,这种特洛伊木马技术经常被用来窃取个人隐私信息和银行账户信息。
病毒、Rootkit、蠕虫病毒
从原则上说,特洛伊木马程序造成的破坏仅限于单一计算机。相比之下,计算机病毒更恶劣,它们可以传播并感染其他计算机。病毒代码是一小段指令,它们不是一个完整、独立的程序,而附着在一个程序之中。
最初,计算机病毒通过受感染的软盘传播,但是现在它们更多的是通过互联网进行传播,通常采用的方式是引诱用户点击貌似无害的电子邮件附件,比如照片或文档 等。“大脑”病毒是最早的计算机病毒之一。
1986 年, 一对巴基斯坦兄弟编写出了 “大脑”病毒,攻击的目标是个人计算机运行 MS-DOS 时所用的引导软盘。引导软盘有自己的操作系统,通常用来重启失败的系统或者安装一个新操作系统。
当个人计算机从受感染的磁盘启动时,在执行 MS-DOS 代码之前,计算机会先加载“大脑”病毒。通过把病毒在软盘上的安装扇区标记为坏区,病毒将自己隐藏起来。
如果用户实际查看磁盘的引导代码,看到的将是原先未受感染的代码,而不是包含病毒的代码。“大脑”病毒的危害性相对较小,其主要目的是为那对兄弟的公司打广告,病毒会显示公司的名称和联系方式,这是一个真正的“病毒式广告”。
在“大脑”病毒之后,黑客们编写出了数以千计的新病毒,这些病毒往往采用新型传播技术,借以增强传播效果。其中最引人注目的是 1987 年在德国出现的“瀑布”病毒,它会让屏幕上的字符向屏幕底部掉落,“瀑布”病毒由此得名。这个病毒还使用了加密技术,把信息转换成密码,隐藏了其内部工作细节,将病毒的复杂度推向一个新台阶。
20 世纪 90 年代,计算机病毒爆发式增长催生了一个全新的行业,即反病毒行业,涌现了一大批反病毒公司,研发了大量反病毒软件,以对抗计算机病毒。
第一次使用“计算机病毒”这个术语的人名叫莱恩·艾德曼(Len Adleman),他是南加州大学的教授,因在密码学方面所做的杰出贡献而声名远播。
弗雷德·科恩(Fred Cohen)是艾德曼的学生,从事计算机病毒研究工作,科恩把计算机病毒定义为“一段可以感染其他计算机程序的程序,计算机病毒会修改被感染的计算机程序,使之包含一个自身副本”。
1983 年 11 月,科恩演示了一个可以感染 UNIX 文件目录程序的计算机病毒。在做了其他一些程序感染实验之后,科恩认为,探查计算机病毒从理论上来说是很难的。
1986 年,科恩发表了自己的博士论文,指出没有什么办法能够准确地探测到计算机病毒。我们所能做的最多就是综合运用各种技巧和信息技术(有时称为探索法)对我们的猜测提供支持。
有很多病毒采用隐藏技术把自己隐藏起来,防止被系统管理员和诊断程序发现,“大脑”病毒就是最早运用这项技术的病毒之一。
在 UNIX 系统中,拥有最高权限的账户名是 root,我们有时把可以向用户提供 root 权限的软件称为 Rootkit。现在,“Rootkit”这个术语常指那些应用了隐藏技术的恶意软件,对于这些恶意软件,反病毒软件和标准系统工具往往很难发现它们。
2005 年, Rootkit 开始走入公众视野,索尼音乐公司把反盗版保护软件放入 2000 万张音乐 CD 中。当计算机读取 CD 时,这个软件就会被偷偷地安装进计算机系统,它通过修改操作系统来防止人们拷贝 CD。而且,这个软件也很难被从计算机系统中移除,并且采用了恶意软件中常用的隐藏技术把自己隐藏起来。
2005 年 10 月,计算机安全研究员马克·鲁西诺维奇在他的博客上发表了一篇文章,从技术上详细介绍了索尼的这个 Rootkit,这桩丑闻才被曝光。
鲁西诺维奇还发现索尼的 Rootkit 产生了新的安全漏洞,并且有可能导致计算机系统崩溃。最初,索尼公司对这个事件回应说:“大多数人根本不知道 Rootkit 为何物,既然如此,他们又何必在意呢?”
但是,索尼公司最终召回并更换了受影响的 CD,废弃了版权保护软件。对这次事件,芬兰安全公司 F-Secure 的首席研究官米克·海坡伦评论道:在恶意软件历史上,索尼 Rootkit 事件影响深远。这次事件不仅让人们知道了 Rootkit,还好好教训了一下传媒公司,让这些公司明白,暗地里做数字版权保护是不对的。
蠕虫
“计算机蠕虫”这个术语通常指那些可以在计算机之间进行传播的恶意软件,但与计算机病毒不同的是,蠕虫病毒是一个完整的程序,具备自我复制的能力。
1978年,在施乐帕克研究中心,约翰·肖奇尝试设计一个程序,用来搜寻以太网中闲置的 Alto 计算机,启动它们来做一些工作,并进行自我复制,把副本发送到网络中其他空闲的机器。
在其中一次尝试中,肖奇设计的程序出现了问题,但他并没有注意到,那个程序就那样运行了一个通宵,不久肖奇就被愤怒的用户吵醒了,用户们抱怨肖奇把他们的 Alto 计算机搞崩溃了。
事实证明,消除这个蠕虫病毒是很难的,不过幸运的是,肖奇事先在这个蠕虫程序中放入了一个“自杀胶囊”,肖奇可以启动它来消灭蠕虫程序。肖奇把他的这个程序称为“蠕虫”(worm),灵感来自于“绦虫”(tapeworm)这个词,在约翰·布鲁诺的科幻小说《冲击波骑手》中指可以自己运行的软件。
1988 年,“因特网蠕虫”攻击了阿帕网,这让计算机“蠕虫”走入公众视野。克利夫·斯托尔那时在哈佛大学,他对因特网蠕虫做了生动详尽的描述:
就在我“杀掉”一个蠕虫程序的同时,另一个蠕虫程序出现了。我把它们全部清除掉,但不到一分钟,它们又回来了。在 3 分钟里,它们的数量就增至一打。
斯托尔把这次正在发生的蠕虫攻击事件告诉了美国国家安全局首席科学家鲍勃·莫里斯,斯托尔在伯克利黑客事件调查中结识了莫里斯。
几个小时后,有位美国国家安全局的工作人员打电话给斯托尔,质问这个蠕虫程序是否是他编写的,斯托尔错愕不已而且很不高兴。
正当美国境内其他阿帕网节点的系统管理员忙于解密蠕虫程序时,斯托尔开始追踪最初放出蠕虫的地点。
最大的讽刺是,斯托尔最后追踪到了小鲍勃·莫里斯,他是康奈尔大学的一名研究生,同时也是在 NSA 工作的鲍勃·莫里斯的儿子。
莫里斯蠕虫不是第一个蠕虫程序,但它是最具破坏性的蠕虫程序之一。据斯托尔估计,莫里斯蠕虫在短短 15 个小时内就感染了 2000 多台计算机。
莫里斯蠕虫是恶意软件的一次重大升级,原因有二:
第一,在尝试入侵计算机系统方面,莫里斯蠕虫几乎应用了所有黑客可能用到的技巧。给定攻击目标之后,蠕虫首先会检查它是否被自动赋予在其他计算机运行程序的权限,然 后它会尝试一长串常用密码。如果这些尝试均告失败,蠕虫就会尝试一些系统 漏洞,比如 UNIX Sendmail 程序的缺陷,美国国家安全局的计算机专家对这个漏洞很熟悉。
第二,当所有尝试都失败之后,莫里斯蠕虫就会利用一种名为 “缓冲区溢出”的新型漏洞。UNIX 操作系统是使用 C 语言编写的。
第一本讲解 C 语言的图书由贝尔实验室的研究员布莱恩·柯林汉和丹尼斯·里奇撰写。在这本书中介绍了如何编写一个程序借助一块内存区域(这块区域被称为“缓 冲区”)把一系列输入字符读入到计算机内存中。
在给出的示例代码中,虽然指定了缓冲区的大小,但是并未对输入的实际字符数是否超过这块缓冲区的尺寸做检查。
小莫里斯发现,这些超出的字符会覆盖掉程序的其他数据和指令。通过在这些溢出的字符中放入特定的机器指令,就可以利用这个漏洞获取 root 权限。
小莫里斯还对病毒软件进行了加密,使人们很难发现程序都做了什么,此外还使用了几种防检测技术。莫里斯蠕虫感染了几千台计算机,系统管理员需要花几天时间才能把这种蠕虫杀掉。1990 年 5 月,莫里斯被定罪,缓刑 3 年,被判做 400 个小时社区服务和支付 10000 美元罚款。
小鲍勃·莫里斯还在康奈尔大学读研究生期间,编写了第一个在阿帕网上传播的蠕虫程序。他是第一个被美国《计算机欺诈与滥用法》判定有罪的人。
对于小莫里斯而言,最终的结局还不错。在被定罪之后,施乐帕克研究中心邀请他成为实习生,现在他是麻省理工学院的终身教授。
然而,不幸的后果是,莫里斯蠕虫向人们展示了一种新的计算机攻击方法,即缓冲区溢出攻击。
绝大多数 UNIX 和 Windows 操作系统中存在这种未经检查的内存缓冲区。1996 年,一位名叫“Aleph One”的黑客在网络上贴出了详细的“使用指南”,自此之后,缓冲区溢出攻击就成为黑客们常用且相对简单的技术。
据统计,1992 年,计算机病毒或蠕虫数量大约有 1300 多个,1996 年超过 10000 个,2002 年突破 70000 个。到 2003 年,爆发了 Slammer 蠕虫病毒,其传播速度比以往的任何一种恶意软件都快,仅仅在 10 分钟内就感染了 75000 台计算机。
僵尸网络
近十年来,以盈利为目的的黑客行为急剧增长,这些行为大多是犯罪组织所为。僵尸网络由大量被控制的计算机组成,这些计算机在所谓的 “僵尸网络牧人” 的控制下做一些“非法”行为。“僵尸”(bot)是机器人程序(robot program)的缩写,有时这些受控计算机也被称为“僵尸计算机”。
僵尸网络能够用来对特定网站发动“拒绝服务攻击(DoS)”,它们会对目标站点发起铺天盖地的“请求”轰炸,迫使目标系统关闭,拒绝为正常用户提供服务,最终导致目标站点处于瘫痪状态。僵尸网络还能用来发送垃圾邮件或者通过记录键盘(捕获用户击键动作)来窃取个人信息。
Conficker 僵尸网络 是一个例子,它首次出现在 2008 年。据估计,全世界受感染的计算机超过了 1000 万台,每天可发送的垃圾邮件数大约 100 亿封,数量之大令人难以置信。
2012 年一份微软的报告指出:
在过去两年半的时间里,全世界检测到的 Conficker 蠕虫病毒大约有 2.2 亿次,它成为各个公司最大的威胁之一。相关研究还显示蠕虫病毒仍在继续在扩散,这是因为用户使用了弱口令或者密码已经被泄露出去,还有相当一部分用户未能及时对系统打安全补丁,导致系统中存在易受攻 击的漏洞。
在另外一个例子中,微软数字犯罪应对小组和金融机构、美国联邦调查局合作,一起摧毁了 1400 多个 Citadel 僵尸网络,这些僵尸网络给商业公司、机构和个人用户造成的损失超过了 5 亿美元。
最后一个例子特别令人担忧,这就是 Nitol 僵尸网络。在这种网络中,微软发现通过非安全的供应链购买的全新个人计算机中,约有 20% 的机器已经感染了 Nitol 恶意软件。
介于制造商和消费者之间的供应链变得逐渐不安全,其中有些分销商或经销商从未知或未经授权的渠道进货或销售产品。在 Operation b70 行动中,我们发现零售商销售的计算机中大都安装了盗版 Windows 软件, 内置有害的恶意软件。
Nitol 恶意软件特别令人担忧,因为它可以借助 U 盘传播到其他人的计算机中。
网络战争
恶意软件的最新升级让使用蠕虫病毒发动网络战争成为可能。网络战争是一种具有政治色彩的黑客行为,目的在于窃取国家机密或进行网络破坏。
人们确信,2010 年夏天发现的“震网”蠕虫病毒是美国和以色列的计算机专家设计的,攻击目标是位于伊朗纳坦兹的铀浓缩工厂的离心机。
该工厂被怀疑在制造铀弹。铀矿石中含有常见的 铀-238 同位素,若想从中分离出稀少的核弹级 铀-235 同位素,就要用到高速离心机。
西门子公司制造的工业控制系统管理着纳坦兹工厂的离心机。这个控制系统使用了一个专用计算机——可编程逻辑控制器(PLC),用户可以使用西门子的 Step-7 软件对其进行编程。
“震网”蠕虫病毒利用了微软 Windows XP 操作系统中几个未被披露的漏洞(零日漏洞)来帮助自己在这家工厂的计算机中进行传播。
以此,“震网”蠕虫取得了计算机的控制权,并使用自身代码取代了西门子的 Step-7 PLC 代码。
这段代码对离心机的运行进行了篡改,但是反馈给操作员的运行报告却是“一切正常”。Step-7 恶意软件使用了 Rootkit 技术来隐藏自身。
这个蠕虫代码的编写者需要精通 Windows 和西门子工业控制系统,还要有纳坦兹铀浓缩厂离心机的详细安装信息。
“震网”蠕虫病毒很可能是经过 U 盘传播到纳坦兹铀浓缩厂的,因为这家工厂与互联网是隔离的,其中的计算机无法连接到互联网。
《纽约时报》记者戴维·桑格的著作《面对与隐藏》(Confront and Conceal)中描写了“奥运会行动”(operation Olympic Games,震网蠕虫病毒开发和投放代号),详细描述了震网蠕虫病毒是如何进入互联网的。
“震网”蠕虫病毒造成了多大损失呢?
一份报告指出,“震网”蠕虫病毒 大约感染了纳坦兹工厂的 1000 台离心机,大约有 10% 的离心机需要更换。
从长远来看,发生在纳坦兹铀浓缩工厂的网络攻击具有非常重要的警示意义,那就是“震网”蠕虫病毒证明了恶意软件有能力攻击大量工业控制系统,这对现代世界中的关键性基础设施造成了巨大威胁。
本文节选自《计算思维史话》,计算机科学的科普读物,以通俗易懂的方式讲解计算机科学的起源与根基。
微软研究院副总裁托尼·海依十年磨一剑
写给大众的计算机科普书
比尔·盖茨倾情推荐
托尼·海依,奎利·帕佩 | 著
武传海,陈少芸 | 译
如今,计算机几乎影响着我们生活的方方面面,从社交的方式到汽车的安全性能,都离不开计算机。那这一切到底是如何在短短50 年内发生的呢?本书带领我们踏上了关于计算的旅程,从 20 世纪 30 年代早期的计算机到今天的前沿研究,均有涉猎。
在这一过程中,作者详述了软硬件背后的理念、算法的神奇、摩尔定律的精准预测、个人计算机的诞生、互联网的发展、IBM 的沃森等人工智能的兴起、《我的世界》等新一代游戏、谷歌与 Facebook 的崛起以及可能改变未来的量子计算。
本书还介绍了技术领域的梦想家和发明家的传奇故事,正是他们把伟大的技术带到了现代世界的每个角落。本书的故事激动人心,文字浅显易懂,图文并茂,深入浅出,为任何想知道智能手机从何而来以及未来我们将走向何方的人打开了计算世界的大门。