9.1、伦敦的某个地方

故事发生在伦敦城的中心地带。

画面定格在一幢建筑物后面的一个敞开式平面风格的无窗房间里,房间中聚集着一群技术人员。这些黑客远离社会的喧嚣,不为外部世界所影响,每个人都在自己的桌前兴奋地工作,彼此之间又相互逗乐。

有一个家伙,我们叫他Louis,此时正坐在这个不知名的小屋里,坐在这群人中间。他在英格兰北部一个如同世外桃源的小城里长大,七岁的时候就开始胡乱摆弄他父母给他买的旧计算机,从那个时候起,这个小孩子就开始学习计算机技术了。当他还是一个学校小男生时,他就已经开始了计算机攻击:当时他在一份打印输出的用户名和口令前踌躇,自己的好奇心被突然激发了起来。然而他的攻击经历使他早早陷入了麻烦,那是因为一个年纪大一些的学生(在英国的术语里,就是一个“完美学生”)告发了他。不过,尽管被逮住,照样不能阻止他继续探究计算机的秘密。

如今,长高了的Louis留着一头黑发。现在的他,己经没有太多时间去玩那些“很有英国味的运动项目”——板球和足球了。要知道,在他的学生时代,这些运动曾常常被他挂在心上。

9.1.1、潜入

一段时间以前,Louis和他的密友Brock一同承担一个项目。他们在某台计算机上拼命地工作。这个项目的目标是一个公司,其总部设在欧洲的某个国家——本质上来说,这家公司是一家安全公司,它的主要业务是转移巨额资金,还包括在监狱与法院,以及监狱与监狱之间运送罪犯(一个公司如果打政策的擦边球:不仅做一些转移现金的业务,而且同时还干一些往返运送罪犯的工作,这对美国人而言是不可思议的。然而,对于英国人和欧洲人来说,这只不过是一种理所当然的安排罢了)。

任何一家公司,如果安上了“安全”这个字眼的话,那么,对于黑客们来说,这绝对是一个炙手可热的挑战目标。如果这些公司与“安全”二字扯上了关系,是否就意味着它们在安全方面的能力非常强大,以至于无人能侵入这些公司呢?对于任何一个有攻击倾向的黑客群体来说,这似乎都是一个难以抗拒的挑战,尤其像现在这样的情形:要攻击目标公司,但是除了这家公司的名字之外,这群家伙一无所知。

“我们把这当作一个需要解决的问题来处理。因此,我们的第一步就是尽可能多地获取这家公司的信息”,Louis说道。他们开始在网上搜索这家公司的信息,甚至使用Google来翻译,因为他们这群家伙中没有人懂得这家公司所在国家的语言。

Google自动的翻译服务足以让他们对这家公司业务的范围和规模有一个大体的了解。尽管他们对于社交工程攻击的方式感到很不舒服,但是好歹语言障碍总算是排除了。

通过该公司的Web站点和其邮件服务器的IP地址,他们能够推断出公共分配给该公司所有下属组织的IP地址范围,也可以通过欧洲IP地址登记处——Reseaux IP Europeens(RIPE),一个类似于美国的Internet号码美国登记处(ARIN)的机构来进行查询(ARIN是一个专门管理美国国内IP地址分配的机构。因为Internet地址必须唯一,所以必须要有一个机构来控制和分配IP地址号码区段。RIPE就是管理欧洲IP地址号码的一个机构)。

他们发现这家公司的主页站点是位于外部的,驻留在一个第三方的公司中。但是其邮件服务器却是注册在自己公司内部的,处于公司相应的地址范围之内。因此,这群家伙可以通过检杳这家公司电子邮件的收发记录,来査询这家公司授权的域名服务器(DNS)以获取IP地址。

Louis尝试使用了一种技术:向一个无实际地址的目的地发送电子邮件,反馈回来的信息将告诉他该邮件不能递送,同时反馈信息包含的表头信息将会显示出这家公司内部的一些IP地址,还有一些邮件的路由信息。然而这次,Louis获得的只是一个从该公司外部邮箱送回的反馈,他的电子邮件也仅仅到达了公司的外部邮件服务器,因而这个“无法递送的”回复并没有提供任何有用的信息。Brock和Louis知道,如果该公司拥有自己的DNS的话,一切将变得容易许多。那样,他们就可以尝试进行更多的査询,获得更多关于该公司内部网络的信息,或是利用该公司DNS版本的固有漏洞。可是现在的情形并不见好:公司的DNS在其他地方,大概位于它们的ISP上(用英国人的说法,就是它们的“通信服务商”)。

9.1.2、映射网络

接下来,Louis和Brock使用了一种反向的DNS扫描技术,来获取该公司IP地址范围之内各种不同系统的主机名(就如第4章“警方与入侵黑客的较量”以及其他地方所解释的那样)。为了做到这一点,Louis使用了黑客们撰写的“一种很简单的PERL脚本”(更为常见的情况是,攻击者们通常使用可获得的软件或者Web站点来进行反向DNS查询,例如www.samspade.org)。

他们发现“从一些系统中传回了许多有意义的主机名”。从这些线索可以得知这些系统在该公司内部发挥什么样的作用,以及一些关于这家公司的IT职员的思维模式的微妙信息,“似乎管理员没能完全控制住所有关于他们网络的信息,而这种直觉将提示我们是否能成功潜入。”而Brock和Louis认为现有的迹象表明情况还是很乐观的。

这个实例讲的是如何对管理员进行心理分析,尝试进入他们的大脑,看他们是如何构建网络体系结构的。对于这些特殊的攻击者来说,“能做到这一点,一部分是基于我们对网络的了解,以及我们对这些位于某个欧洲国家的公司的了解,而另一部分是基于这样的事实——这个国家的IT知识水平可能比英国要落后1年半到2年。”

9.1.3、确定一个路由器

Brock他们使用UNIX中的“traceroute”来分析网络。这个程序提供了数据包在抵达一个指定的目的地的过程中所经过的路由器总数。按照网络专业术语来说,这也就是指跳步数。他们跟踪到达邮件服务器及防火墙的路由。跟踪路由的结果指出邮件服务器是防火墙后面一跳。

这个信息给他们一个线索:要么邮件服务器在DMZ上,要么防火墙后所有的系统都处于同一个网络上(DMZ就是所谓的非敏感区——个电子的无人居留的网络,处于两个防火墙之间。通常通过内部网络或者Internet都可到达DMZ。DMZ存在的目的是一旦系统由于暴露于外部的Internet而被危及安全时,保护内部网)。他们知道邮件服务器打开了端口25,通过跟踪路由,他们还知道,事实上,他们可以穿过防火墙与邮件服务器进行通信。“我们意识到那条路径实际上引领我们通过了这个路由器设备,紧接着还让我们通过了看起来应该消失的另一跳(其实这一跳就是防火墙),以及防火墙之后的一跳,于是我们发现了邮件服务器,由此我们对整个网络体系的构建方式有了一个初步的了解。”

Brock说,一开始,他们通常会尝试一些他们己经知道的常见端口。他们明白,这些端口很町能已被防火墙打开,同时他还给一些端口服务进行了命名,如端口53(由DNS使用);端口25(SMTP邮件服务器);端口21(FTP);端口23(telnet);端口80(HTTP);端口139和端口445(都被NetBIOS分别在不同的Windows版本下使用)。

在进行侵入式的端口扫描之前,我们急切想要确定一个有效的攻击目标列表,上面不应该包含还尚未被使用的系统IP地址。在初始阶段,你不得不先搞到一个目标列表,以免盲目地着手,机械地扫描每一个IP地址。在列出了目标之后,我们可能会对5个或6个终端系统进行我们想要的进一步检查。

这次他们发现,仅仅有三个打开的端口:一个电子邮件服务器,一个安全补丁的显然从未使用的Web服务器,以及端口23上的telnet服务。当他们尝试登录到这个设备上时,他们得到了一个“User Access Verification”提示,这是一个典型的Cisco口令提示。这样他们算是看到了一点点的进展——最起码他们确认了这个设备是一个Cisco设备。

凭经验来看,Louis知道,在一个Cisco路由器上,口令往往会设置成一些很容易猜到的字母排列。“这回,我们试了三个口令——该公司的名字、空格和cisco,但是我们仍然无法访问这个路由器。因此,为了此时不弄出太大的动静,我们决定停止访问这个设备的尝试。”他们试着扫描这个Cisco设备的一些常见端口,但是仍旧一无所获。

就这样,第一天,我们花费了大量的时间分析这个公司及其网络,并且开始了一些初始的端口扫描工作。我当然不可能说我们会放弃,因为还有很多绝活没有使用呢,在我们真的要放弃之前,我们一定会像对付其他任何网络一样,再尝试一次。

除了确认了一个路由器的类型之外,他们一整天的努力并没有得到太大的回报。

9.1.4、第二天

第二天,Louis和Brock开始着手进行进一步的端口扫描。Louis使用service(服务)这个术语来指代打开的端口,他解释道:

此时,我们思量着,我们必须在这些机器上找到更多的服务。所以我们稍微加强了扫描的强度,希望发现一些真正对我们进入这个网络有用的东西。我们发现这里有着良好的防火墙过滤能力。我们所能找到的只能是那些在过失中留下的漏洞或是一些配置错误的东西。

接着,通过使用Nmap程序——一种进行端口扫描的标准工具,他们扫描了这个程序的默认服务文件,搜索了大约1600个端口。然而,他们再次无功而返,没有得到任何重要的信息。

那我们只能进行一次对所有端口的完全扫描了,就是说,既扫描路由器,又扫描电子邮件服务器。“一个完全的端口扫描意味着,对65000多个端口进行扫描。我扫描了每个单独的TCP端口,寻找着在主机上任何可能的服务,这些主机此时都在我们的目标列表上。”这一次他们发现了一些有趣的东西,虽然这些东西又有点奇怪,让人有些困惑。

端口4065是打开的。发现一个这么高的端口正在使用实在是一件非同寻常的事情,Louis解释道,“这时,我们想或许他们在端口4065上配置了一个telnet服务。所以,我们就远程登录到了这个端口,想看看能否证实我们的猜测。”(Telnet是一种从Internet上的任何地方来远程控制其他机器的协议。通过telnet,Louis连接上了这个远程的端口。这个端口接收了从他的计算机上发出的命令,并且响应了这个命令,直接在他的机器屏幕上显示了输出信息)。

当他们试着连接它时,得到了一个要求输入登录名和口令的请求。这样他们确认了这个端口是用来迸行Telnet服务的——但是这个要求输入用户认证信息的窗口跟Ciscotelnet服务应有的窗口截然不同。“不久,我们认定那个Cisco设备实际上是一个3COM设备。这一次对我们的工作热情可是一个不小的打击,因为一个Cisco设备看起来像一个其他的设备,或是一个其他的服务竟然在一个TCP高端口上,这样的情况并不多见。”但是,端口4065上的telnet服务运行起来像是3COM设备的事实对他们来说,也不算是一件多么难处理的事情。

我们在同一个设备上打开了两个端口,同时它们彼此认定双方是两个完全不同的制造商制造的两个完全不同的设备。

找到这个TCP高端口,并且使用telnet连接上它。“他一看到登录的提示窗口,就激动地试着使用‘一个用户级别’的用户名,配合着常见的可能的口令,例如pasword、admin和空格。”他将这三种选择作为用户名和口令,试着组合成不同的方式登录,在不多的几次尝试后就幸运地成功登录了:这个3COM设备上的用户名和口令都是“admin”。这时他为他的成功进入而大叫着,Louis说,这意味着他们现在可以远程登录访问这个3COM设备了。并且这是一个管理员级别的账户,这简直是锦上添花。

一旦我们猜到了那个口令,整个工作就算是开了个好头。这绝对是一件让人兴奋的亊情。我们之前在不同的工作站上工作?起初,当我们进行穷举式的端口扫描时,我们每个人在我们自己的机器上工作,然后共享彼此的信息。但当他一发现那个端口允许他进入登录界面时,我也就到了他的机器上,开始在同一台机器上一起工作了。

简直太棒了。这确实是一个3COM设备。同时我们还获取了对它的控制台访问权限,或许我们找到了一个研究我们到底能做什么的途径。

我们想要做的第一件亊就是查明这个3COM设备到底是什么,还有为什么它允许在Cisco路由器的一个TCP高端口上被访问。

通过这个命令行界面,他们能够查询到关于这个设备的信息。“我们认识到,或许是有人将控制台电缆从这个3COM设备插到了Cisco设备上,并且不经意间允许了访问。”那样做是有意义的,因为这是一种使雇员通过路由器远程登录到3COM设备上的便捷方法。“或许在数据中心(Data Center)没有足够的显示器和键盘”,Louis猜测,或许他们将一个应急光缆作为一个临时装置。而当不再需要这个临时装置时,拉上光缆的主管人员却早己将这事忘到九霄云外了。他就这么走开了,Lcnxis描绘着,“根本没有意识到他的行为后果。”

9.1.5、查看3COM设备的配置

这两个家伙开始了解到,3COM设备在防火墙的后面,主管人员的过失为他们提供了一条迂回的线路,这条线路使得攻击者能够经过打开的高端口,从防火墙之后连接至3COM设备。

现在他们能够访问3COM设备的控制台,查看它的配置信息,其中包含分配了IP地址的单元,还有在虚拟专用网络连接中使用的协议。然而他们发现,该设备处于与邮件服务器一样的地址范围中,该地址范围在内部防火墙之外,在DMZ上。“我们作出了这样一个结论。设备实际上在边界防火墙之后,并通过使用某类过滤规则来达到保护设备并阻止其连接至Internet的目的。”他们试着通过查看设备自身的配置信息,来弄明白引入的连接是如何建立的,但是通过控制台界面,他们得小到足够的信息。不过,他们还是猜测,当Internet上其他地方的用户连接到Cisco路由器上的端口4065时,很可能会连接到插在Cisco路由器上的3COM设备上。

这个时候,我们相信自己能够访问后端网络,荻取对内部网络更多的控制权。此时此刻,我们虽然处在英国人所谓的“极度疲惫状态”下,但是心情却是格外的好,也算是跟整整两天的辛苦扯平了。

我们去了酒吧,讨论着下一天该是多么精彩,因为我们将查看一些更后台的系统,因而有深入网络内部的希望。

出于对3COM设备的好奇,他们开始捕捉实时的控制台日志信息。无论在夜里发生了什么,他们都会在第二天早上看到。

9.1.6、第三天

当Brock早晨检査控制台的日志信息时,他发现出现了许多不同的IP地址。Louis解释道:

经过对3COM设备的略微仔细地查看,我们意识到它是一种VPN设备,远程用户可以通过它从Internet上的其他地方连接到公司的网络上。

此时,我们的热情真的被激发起来了,因为我们将可以获得访问权,就跟合法用户获得的访问权一样。

他们试着通过在3COM设备上创建另一个接口,来设立一个他们自己的个人VPN接口,该接口会具有不同的IP地址,这样防火墙就不能把它显式过滤掉了。

但是这种方法并不奏效。他们发现在不打断合法服务的前提下,设备不能进行配置。他们不能创建一个同样配置的VPN系统。由于网络体系构建方式的这种限制,足以使得他们不能为所欲为。

所以这种攻击策略的魅力很快就消退了。

我们有些消沉,此时显得有些沉默。但是归根结底这不过是第一次尝试,肯定还会有其他的方法。我们还有足够的激情,我们最起码还有设备的访问权限这一立足之处。我们还有进一步深入下去的热情。

他们现在位于公司网络的DMZ上,但当他们试着从他们自己的系统向外连接时,并没有成功。他们还试着对整个网络作了一个ping扫描(尝试向网络上的每一个系统发出ping命令),不过他们是从防火墙之后的3COM设备发出ping命令的,以确定任何可以加入他们目标列表的潜在系统。如果他们占据了高速缓存中的任何一个机器地址,那将意味着某个设备将会被高层协议拒绝访问。“经过几次尝试”,Louis说,“我们确实在ARP高速缓存中发现了入口,这表明有机器曾经对外广播了它们的机器地址。”(ARP即地址解析协议,用来从一个主机的IP地址得出其相应的物理地址。每个主机维护了一个地址转换的高速缓存,用来减少在转发数据包中的延迟)。

所以在域中一定有其他的机器,“但是它们并没有响应ping命令——这是防火墙的典型特征。”

(对那些不熟悉pinging的读者来说,它是一种网络扫描技术,它将特定类型的数据包——Internet报文控制协议,或简称为ICMP——发送到目标系统,以确定主机是否出于“活动”状态。如果主机处于活动状态,该主机将以“ICMPecho回答”报文作为响应)。Louis继续说道,“这看起来确实证实了我们的猜想,一定还有其他的防火墙,在3COM设备和公司的内部网之间一定还有其他的安全层。”

Louis觉得他们似乎到达了一个死胡同。

我们可以访问这个VPN设备,但是却无法创建我们自己的VPN入口。此时,热情又褪却了一点点。我们开始有这样一种感觉:实际上,我们将无法继续深入这个网络。因此我们需要新的思路。

他们决定对他们曾在控制台日志信息中发现的IP地址进行研究。“我们隐约认识到,下一步应该看看3COM设备的远程通信有些什么内容,因为如果你能够闯入一个设备,那你将能够截获一个网络中的现有连接。”或许他们能够获得乔装成合法用户的必要认证。

Louis说,他们知道一些过滤规则,同时正在寻找从防火墙的这些规则迂回的方法。他希望他们能够“找到被信任的系统,然后借助它真正通过防火墙。因此,我们对出现的IP地址很感兴趣。”当他们连接到3COM设备的控制台的时候,他解释道,任何时候一个远程用户建立连接或是一个配置文件发生改变,在屏幕的底部都会闪现一个提示信息。“我们将可以看看这些IP地址对应连接的建立过程。”某个机构登记的特定IP地址的注册记录将清晰地说明这个组织的特征。另外,这些记录中也会包含组织的管理人员和组织网络的技术负责人的联系方式。使用这些IP地址,他们又转向了RIPE上的登记数据库记录,他们将从那里获得分配了这些IP地址的公司的情况。

其实,搜索过程还给他们带来了额外的惊喜。“我们发现这些地址注册给了一家较大规模的通信提供商,该提供商就在这个国家里。此时我们的思路完全乱了,我们实在不能理解这些IP地址分配给了谁,为什么连接会来自于一个通信提供商”,Louis说道。使用英国的业内术语,通信提供商就是我们所谓的ISP。两个人开始怀疑VPN连接是否甚至会来自于该提供商的远程用户,或者其中还有一些此时他们根本没有猜到的完全不同的情况。

我们真的需要坐下来,好好反思一下了。我们需要将此刻的情景拼凑起来,以便我们能够重新尝试新的思路和想法来解决问题。

一大早的希望并没有实现。我们访问了系统,但是我们无法举足向前,感觉一天以来没有任何进展。不过,我们没有选择呆在家里沮丧着,希望下一个早晨能够差不多打起精神重新开始。我们觉得需要去趟酒吧,喝一杯酒去除点压力,坐公车回家的路上,还能让脑袋清醒清醒。

这是一个早春时节,空气中还些许有着剌骨的寒风。我们离开办公室,走过一个拐角,来到一家有点黑暗慵懒格调的传统英国酒吧。

我狂饮着,Brock也喝着桃色的杜松子酒和柠檬水——一种不错的搭配,你真应该试试。我们只是坐在那里聊着,有点懊恼白天的亊情并没有按照计划进展下去。一杯下去,紧绷的神经松弛了一些。我们拿出了一张纸和一支笔,开始就下一步该干什么畅所欲言。

我们真的迫切想要布置好一些方案,这样的话,当我们明天早晨一回到办公室,就能够立刻坐下,尝试这些方案。我们按我们想像的画出了网络体系结构,试着确认什么样的用户需要VPN访问权限,各个系统在物理上是如何分布的,设想着当系统实现者创建好了该公司的远程访问服务之后,他下一步最可能的想法是什么。

我们画出了已知的系统,然后从那一点出发,试着设计出一些细节和其他系统的分布情况[见图9-1]。我们需要弄明白3COM设备在整个网络中的位置。

9.1、伦敦的某个地方 - 图1

Louis在想,除了公司的内部雇员,谁还需要访问这个网络。要知道这是一家以其技术革新性为荣的公司,因此Louis和Brock设想,或许该公司已经研发了一个“真正实现了大规模部署的应用程序”,使得警卫在完成一次发送之后仍可以登录该系统,接着还可以查明他们下一步又会接收什么。该应用程序被设计成自动实现智能化的过程。或许用户仅仅需要按下一个图标,就能告诉应用程序连接到应用程序服务器,获取他的指令。

我们在想,这些用户很可能对计算机并不熟悉,所以他们需要一个易于使用的系统设置。我们开始从商业的角度思考问题:什么样的系统容易进行设置,什么样的系统容易维护并且安全系数高?

他们想到了拨号服务。“也许是从工作间‘用户的操作间’里的一个膝上计算机上进行拨号服务的。这家公司要么在我们进入的服务器上架设主机,要么将这些服务器外包给了第三方。我们假定第三方就是一个通信提供商,信息会从通信提供商流向我们的目标公司,信息还会流经Internet,通过VPN隧道。”他们猜测警卫将会呼叫ISP,在他被允许连接进入目标公司的内部网之前,会被ISP要求进行认证。

但是还有另一种可能。Louis继续说道:

我们假定,“我们想看看是否可能设计出一个体系结构,使得VPN中的某个人能够借助它进行拨号,传送他的认证信息,而实际上,认证他们的是目标公司,而不是通信提供商。公司的VPN该如何建立,才能使得任何从警卫向目标公司发送的信息在未加密的情况下无法在Internet上传送?”

他们还在思考,公司是如何对待认证用户的。如果某个警卫不得不向位于通信提供商内部的这些系统拨号和向通信提供商出示认证,他们推断,认证服务只是外包出去了而已。他们考虑或许还有其他的解决方案,那就是,是目标公司而不是通信提供商将主机寄宿在认证服务器上。

通常认证工作会移交给提供认证功能的一个独立的服务器。3COM设备就可能用来在目标公司的内部网上对一个认证服务器进行访问。一个警卫可以通过从蜂窝调制解调器拨号,连接到ISP上,再转到3COM设备上,然后他的用户名和口令就可以发送给其他的用来认证的服务器。

所以此时他们的工作场景假设就是当一个安全警卫初始化一个拨号连接时,他会在他自己和3COM设备之间建立一个VPN。

Louis和Brock明白:要想获得对内部网的访问权限,他们就必须先获得对ISP上通信系统的访问权限(VAN用户都建立了到ISP的连接)。但是“我们不知道这些拨号设备的电话号码。它们都在国外,而且我们也不知道它们属于哪种类型的电话线路。光靠我们自己发现这些信息的可能性并不大。而我们知道的一件很重要的事情就是这个VPN的协议类型是PPTP。”它之所以重要就是因为,Microsoft默认的VPN安装设置可谓是一个众人皆知的秘密,连接到服务器或域内的信息通常就是Windows的登录名和口令。

在此之前他们都喝了不少,接着他们决定釆取一种“豪不留情”的方式来解决这个问题。

亊情发展到这一阶段,你一定会将这张画上了你所有思路的草稿纸保留下来,因为一旦我们闯入系统,这张纸就将成为一个绝佳的黑客攻击方案。对于这项我们即将完成的工作,我们两个开始有些骄傲了。

9.1.7、关于“黑客直觉”的一些想法

两个人那晚作出的猜测最终被证明是相当正确的。Louis总结了一下出色的黑客应该具备怎样的洞察力:

很难描述是什么使你获得那种感觉。它仅仅来源于经验和对系统配置方式的观察。

攻击一开始的时候,Brock就有一种感觉:我们应该继续。因为他觉得从研究中我们最终将得到结果;很难解释为什么会有这种感觉。难道这就是人们所谓的黑客直觉吗?

一开始,你可能只得到了少之又少的信息;不久之后,便开始对事物的表达方式有了一些了解;再过一段时间,对于该公司及其IT系统的负责人,你开始有了自己的见解;接着,你会有一种感觉:尽管他们明白安全的重要性,但是他们仍旧会犯一些小错误。

我个人对于这个话题的见解是:黑客之所以能够获得对在商业环境下的网络和系统的一般配置方式的洞察力,是因为到处摸索总结的经验。通过这些经验,我们获得了一种对系统管理者和实行者所拥有的想法的认知。这就像是一个下棋游戏,游戏中你总是努力让自己比对手思考得更深入、更精明。

所以,我相信,在这里真正起作用的是对系统管理者会如何构建网络以及他们会如何犯常见错误的一种经验。或许Louis对于这个话题的最初评论是对的:一些人所说的直觉最好标上经验的标签。

9.1.8、第四天

他们开始了另一个早晨。他们坐在那里,盯着3COM设备上的控制台日志信息,等待有人建立连接。一旦有人建立了连接,他们都对发起接入连接的IP地址进行尽可能快的端口扫描。

他们发现这些连接的建立大约只有一分钟左右,然后就会断开。如果他们的猜测是正确的,那么一个警卫将拨入并获得他的工作指令,然后又重新回到离线状态。他们不得不很迅速地离开意味着什么呢?“当我们看到这些闪现的IP地址,我们真是猛击了一下客户端系统的键盘,”Louis说道,他使用了“猛击”这个词,来表达很激动地敲击键盘的动作,那情形就像玩一个很刺激的计算机游戏一样。

他们选出了一些可能存在漏洞的端口服务,希望能发现一个可以被攻击的服务器,比如说,一个telnet或FTP服务器,或一个不安全的Web服务器。或许他们可以访问NetBIOS的共享文件。他们还试图寻找GUI-based(基于图形用户界面)的远程桌面程序,如WinVNC和但是一上午过去了,他们仍然看不到任何在两个主机之外运行的服务。

我们实际上哪都没去,只是坐在那里,不停地扫描远程用户发起的每一次连接。就在这时,一个机器连接了进来。我们做了一次端口扫描,发现有一个打开的端口,该端口平常是被PCAnywhere使用的。

这个应用程序允许对一台计算机进行远程控制。但是这种情况只有在另一台机器上也运行了同样的这个应用程序时才会奏效。

看着端口扫描中出现的那个端口,我们又有了一种激情重燃的感觉——“啊,这个3COM设备盒子里装有PCAnywhere程序。它可以成为一个用户终端。让我们必须抓住这个发现!”

我们在房间里大叫,“谁安装了PCAnywhere?”

有人回答,“我有PCAnywhere。”

接着我大声说着IP地址,以便他可以尽快地连接上系统。

把这次连接到一个PCAnywhere系统的努力称作“一个有决定性意义的时刻”。他凑到那个家伙的机器跟前,机器屏幕上出现了一个窗口。“起初它是一个黑色的背景,”Louis说道,“然后两件事中的一件发生了——或者是显示出一个灰色口令的命令行提示,或者是背景变成了蓝色,随后出现了一个Windows桌面。”

出现的桌面选项正是我们屏住呼吸所期待的。我们等待着希望黑色屏幕能够消失的过程中,它看起来似乎并不会消失。我暗自忐忑着:“它正在连接,它正在连接,天啊,它快要超时了。”要不就祈祷“我将会马上获得一个口令命令行提示了。”

就在最后一刻,当我正在祈祷“会出现口令命令行提示”时,最终出现了Windows桌面!啊哈!此时我们竞然得到了一个Windows桌面。屋子里的其他人都涌了过来。

我的反应是,“我们从这里继续,抓住这个机会,千万不要让这个机会溜掉。”

这样,他们现在己经成功进入那个连接到3COM设备上的客户端应用程序。

我们知道,你死我活的时刻到了——我们知道这些人的连接时间转瞬即逝,我们知道我们可能不会再有其他的机会了。

需要做的第一件事就是打开PCAnywhere的会话,按下屏幕上的两个按钮,就是Louis所指的“黑屏按钮”和“将用户锁定在控制台之外的按钮”,他解释道:

当你使用PCAnywhere时,在默认情况下,那个在机器桌面程序前的人和那个使用PCAnywhere的人,两个人都会同时拥有鼠标的操作权:将鼠标在屏幕中来回移动,运行应用程序,打开文件或者其他的操作。而实际上,通过PCAnywhere,你也可以将键盘前的那个用户锁定。

他们这样做了,获得了对会话的控制权,而且确保了用户无法看到他们的行为,因为他们让显示器黑屏了。Louis知道这一招不能太久,黑屏太久会使得用户产生怀疑,或是以为产生了计算机故障,接着就会关机,所以这意味着这些家伙们时间不多。

我们现在尝试抓住这个闯入的最后机会。此时,我们需要反应敏捷,迅速在我们两人间做出决定下一步我们干什么,我们可以从这台机器中析取到什么样有价值的信息。

我发现这台机器上运行的是Microsoft Windows98操作系统,所以我们接下来应该找到一个人,这个人要能够告诉我们他可以从装有Windows98系统的机器上得到什么信息。

幸运的是,这间屋子里有个家伙…只是出于有点感兴趣,他其实并没有为我们这个项目工作,但是他却知道怎样从系统中得到信息。

他建议的第一件事就是査看口令列表(PWL)文件(这个文件在Windows95,Windows98和WindowsMe操作系统下使用,它包含了如拨号和网络口令等敏感信息。例如,如果你使用了Windows下的拨号网络服务,那么所有的认证细节信息,包含拨号的号码、用户名和口令,都很可能存储在一个PWL文件里)。

在下载这个文件之前,他们需要关掉反病毒软件,以免它会检测到他们使用的工具。接着,他们试着使用PCAnywhere中的文件转换功能,以从用户的机器上转换PWL文件到他们自己的机器上。但是这不起作用。“我们不能确定这是为什么,但是我们没有时间坐下来讨论这个。我们需要趁着用户仍然在线的时候,立即将PWL信息从机器上下载下来。”他们还能够做些什么?一个可能是:上传一个破解工具,破解用户机器上的PWL文件,将信息转换成一个文本文件,然后将文本文件发送给他们自己。他们试着登录到一个FTP服务器,来下载PWL破解工具。然而他们遇到了一个困难:用户机器上的键盘布局是针对另一国语言的,这将给他们试图进行的认证带来问题。“由于是外国语的键盘布局,我们仍然得到的是一个‘登录信息错误’的消息。”

时间在一秒一秒地流过。

我们想时间快要到了。这个家伙处在一个安全的vpn里,他可能正在转移一大笔钱,或是罪犯。他自己感到奇怪,“这里究竟发生了什么亊?”

我害怕他会在我们获得我们想要的东西之前拔掉电源插头。

这边,他们承受着巨大的时间压力,屋子里没有一个人可以解决外国语—键盘问题。或许作为一种解决方案,他们可以输入用户名和口令对应的ASCII码值,而不输入实际的字母和数字。但是没有人可以随即知道怎样从键盘输入相应的ASCII码值。

然而,在当今世界,人们在很迫切地需要一个答案时会做些什么呢?下面就是Louis和Brock做的:“我们选择迅速扑向Internet,开始搜索,看能否找到一种不用键盘上的字母就可以输入字母的方法。”

很快他们就有了答案:激活NiimLock键,然后按住<ALT>键不放,在数字键区键入ASCII码值。剩下的事情就很简单了:

我们常常需要将字母和符号转换成ASCII码值或是相反的操作。接下来仅仅需要站起身,看一眼我们挂在墙上的某一张有用的表格就行了。

这些家伙没有在墙上挂上女明星的照片,而是挂着ASCII表。“ASCII明星”,Louis是这样描述它们的。

就是这一丁点胡乱写下的信息,一个人在键盘上输入,另一个告诉他该输入什么,他们成功地输入了用户名和口令。接着他们就可以下载PWL破解工具,再运行它,从PWL文件提取信息到一个文本文件中,然后在他们的控制下,将这个文本文件从用户的膝上计算机转移到一个FTP服务器上。

当Louis检查这个文件时,他发现了他要找的认证信息,包含拨号的号码和登录信息,用户就是使用这些登录信息连接到公司的VPN服务上的。Louis想,这就是他需要的所有信息。

当进行清理工作,确保他们没有留下任何曾经访问过的痕迹时,Louis检查了桌面上的图标,注意到有一个看起来像是用来让警卫运行应用程序的图标,警卫可以借此从公司获得他们的信息。这样他们就知道了这些机器的用途,实际上,它们是用来连接到公司,然后查询一个应用程序服务器,以获取域中用户需要信息的。

9.1.9、访问公司的系统

“我们很清楚的知道”,Louis回忆道,“这个用户很可能现在正在汇报一些他遇见的奇怪情况,所以我们迅速从这个事件中脱身而出。因为如果这个事件汇报了上去,VPN服务就会关闭,那样我们获得的登录认证信息将丧失价值。”

片刻之后,他们发现他们的PCAnywhere连接掉线了——警卫断开了连接。Louis和他的同伴们恰好在这个时间的间隙里从PWL文件中提取了信息。

Louis和Brock手头上现在有一个电话号码,正是他们预想的某一个拨号设备的号码。前一天晚上在酒吧里,他们曾经在草图上画出过拨号设备。然而,又一次发现它是一个外国号码。通过使用鳌卫所使用的操作系统,他们拨号到了该公司的网络上,输入用户名和口令,“我们发现我们成功建立了一个VPN会话。”

按照VPN配置的方式,他们被分配了一个虚拟的IP地址,该地址处于公司内部的DMZ中,这样他们就在第一层防火墙之后,但是仍然面对着保护公司内部网的防火墙——他们之前就曾发现了它的存在。

VPN分配的IP地址在DMZ的范围之内,很可能被内部网的某些机器所信任。Louis猜测既然他们已经通过了第一层防火墙,那么要渗透到内部网将会非常非常容易。“此时,”他说,“我们预测,穿过防火墙进入内部网将不会很难。”但是他试了之后,发现不能直接进入运行着应用程序服务器的机器上一个可利用服务。“有一个很奇怪的TCP端口,该端口允许通过过滤,我们猜想这个端口是给警卫使用的应用程序打开的。但是我们并不知道它是如何工作的。”

Louis想要找到一个可以访问的系统,该系统必须在公司的内部网上,访问将从被分配的IP地址发起。他采用了“常用黑客规则”,试图发现一个可以在内部网上使用的系统。

他们期望着能够发现一个内部网上的系统,该系统没有被远程访问过,他们明白,这样的系统才有町能没有针对安全漏洞打上补丁,它才“更可能被当作一个仅供内部使用的系统”。他们利用一个端口扫描软件,扫描任何可以访问的Web服务器(端口80上),扫描区域是整个内部网的IP地址范围,接着他们发现一个可以与之通信的Windows服务器,其上运行着Internet信息服务器(IIS),但是只是使用了该流行服务器软件一个旧一些的版本——IIS4。这可是一个棒极了的消息,因为他们很可能可以发现一些未打补丁的安全漏洞或是配置错误,这将是他们通向王国的金钥匙。

他们做的第一件事就是,运行了一个针对IIS4服务器的Unicode漏洞探测工具,看看它是否存在漏洞,结果是肯定的(Unicode是一个16比特位的字符集,它用单一的字符集给来自许多不同语言的字符进行统一编码)。“这样我们就能使用这个Unicode工具,在IIS Web服务器上执行命令了”,利用系统的安全漏洞穿过内部网上的第二层过滤防火墙,“仿佛是一个被信任的领土的腹地”,Louis这样描述着。这种情况下,黑客精心构思一个Web请求(HTTP),该请求使用特殊的编码字符,绕开Web服务器的安全检查,黑客们将被允许执行任意命令,具有与运行服务器账户一样的特权。

之前他们苦恼没有权限上传文件,现在他们看到了一个机会。他们利用Unicode漏洞,运行“echo”内核命令来上传一个活动服务器页面(ASP)脚本——种简单的文件上传工具,它将把传送更多的黑客工具到webroot下一个目录的这个过程变得容易许多,webroot被授权来运行服务器端的脚本(webroot是Web服务器下的根目录,区别于特定硬盘下的根目录,如C:\)。

echo命令仅仅写下传送给它的任何参数信息;输出可以重定向到一个文件,而不一定是用户的屏幕。例如,输入“echoowned>mitnick。txt”将在文件mitnick。txt中写入单词“owned”。他们使用一系列的echo命令来将一个ASP脚本中的源代码写入Web服务器下的一个可执行目录。

接着,他们上传了其他的黑客工具,包括流行的网络工具netcat,这是一个很有用的工具,它用来建立一个侦听接入端口的命令内核。他们还上传了一个叫作HK的exploit工具,它用来发现旧版本WindowsNT系统中的安全漏洞,以获得系统管理员级别的使用权限。

他们上传了另一个简单脚本,用它来运行HKexploit,然后使用netcat打开一个返回他们自己的内核连接,使他们可以向目标机器发送命令,很像获得了DOS操作系统时代的一个“DOS命令行”。“我们试着对一个从内部网服务器对我们计算机在DMZ上的外向连接进行初始化”,Louis解释道。“但是没有成功,因此我们不得不使用一种叫作‘portbarging’的技术。”经过运行HK程序获得权限之后,他们配置netcat来侦听端口80;临时“barge”IIS服务器的工作方式,监视接入端口80的第一个连接。

Louis这样解释barging,“实质上,你只是临时将IIS推离它的工作方式,窃取一个内核,然后在维持对你的内核访问的同时,允许IIS暗地里恢复原来的运行方式。”在Windows环境里,不像Unix类型的操作系统,它允许两个程序同时使用同一个端口。攻击者可以利用这个特征,通过发现一个防火墙没有过滤掉的端口,然后“barging”到这个端口。

Louis和Brock就是这么干的。他们已经具有的对IIS主机内核的访问权限,以一个可以运行Web服务器的账户的权限为上界。所以他们运行了HK和netcat,然后获得了系统的完全访问权——可以像系统用户一样操作,就是操作系统中的最高权限。通过使用标准的方法,这个权限允许他们获得对目标的Windows环境的完全控制权。

服务器上运行的是WindowsNT4.0。攻击者们想要对安全账户管理者(SAM)文件进行复制,这个文件包含了用户账户、组、策略和访问控制的细节信息。在这个旧版本的操作系统下,他们运行了“rdisk/s”命令,来创建一个应急恢复盘。这个程序最初在名为“repair”的目录中创建了几个文件。在这些文件中有一个最新版本的SAM文件,其中含有服务器上所有账户口令的散列信息。早些时候,Louis和Brock从一个安全警卫的膝上计算机恢复了PWL文件,其中含有敏感的口令信息。而现在,他们获得了公司内部一个服务器上用户的加密口令信息。他们将这个SAM文件简单复制到Web服务器的webroot下。“然后,通过一个网络浏览器,我们从服务器上重新获得了这个文件,文件最终到了我们办公室里自己的机器上。”当他们从SAM文件破解口令时,他们注意到,在本地机器上还有另一个管理员账户,这个账户不同于内置的管理员账户。

在花费了两个小时的破解时间之后,我们破解了该账户的口令,然后尝试着在主域控制器上对它进行认证。接着我们发现,具有管理员权限的本地账户,就是在Web服务器上我们攻击的那个账户在域内也有着相同的口令——这个账户也拥有域管理员权限。

因此,在Web服务器上有一个本地管理员账户,它跟整个域的域管理员账户有着相同的用户名,同时这两个账户的口令也相同。显然一个系统管理员偷了懒,他创建了第二个账户,这个账户和本地系统上的管理员账户的用户名相同,更绝的是,他连口令都设成了同一个。

步步为营。这个本地账户仅仅是Web服务器上的管理员,它不具有对整个域的访问权限。但是多亏了这个粗心懒惰的系统管理员,他们通过恢复本地Web服务器账户上的口令,现在可以获得域管理员账户了。域管理员的职责是管理或控制整个域,这跟一个本地桌上计算机或膝上计算机的管理员(单机)不同。在Louis看来,这个域管理员也不例外。

这是我们始终都会看到的一个惯例。一个域管理员将在其机器所在的网络上创建本地账户,他创建的具有域管理员权限的账户将使用同样的口令。这就意味着本地系统中的每一个安全性信息都可以用来获得整个域的安全性信息。

9.1.10、达到目标

又迈进了一步。Louis和Brock发现他们现在可以获得对应用程序服务器和其中的存储数据的完全控制了。他们获得了连接到应用程序服务器上的IP地址,这些连接从安全警卫的膝上计算机发起。从这儿,他们发现应用程序服务器在同一个网络上,该网络可能也是同一个域的一部分。最终,他们获得了对整个公司运作的完全控制。

现在我们已经到达了整个事情的正中心。我们可以改变应用程序服务器上的指令,这样我们就可以让警卫将钱交付到我们所说的地方。我们实际上可以向警卫发号施令,就像“从这单生意上拿钱,向这个地址送钱”,然后你可以在那里,等着他们到来,最后拿上钱。

或者“押上罪犯A,带他到这个地点,把他交给这个人监管”,然后你就可以把你表兄的好朋友救出监狱。或者是一个恐怖分子。

他们手中拥有了一个致富工具,或者是一个破坏制造器。“要是我们能让这些不引起他们注意的话,那将会是一种震惊,因为他们丝毫不知道已经发生了什么”,Louis说。

公司认为的“安全”,他相信,“实质上是不可信的安全。”