8.1、长达两年的黑客攻击

Erik大约30岁,是一个安全顾问。他抱怨道:“每当我提交关于系统漏洞分析报告的时候,我总会听到这样的话:‘这不算什么。有什么大不了的?这些黑客能做些什么?’”而他的故事证明了一个完全被忽视了的事实:再小的一个错误也能将你置于死地。

下面的有些内容对于那些只懂得皮毛的黑客来说,可能有些艰涩繁琐。然而这个故事最精彩的地方是,它向我们展示了许多黑客的耐心与执着。从最近发生的一些相关事件中我们可以看出,与本书其他许多主人公一样,Erik白天是一个有职业道德的白帽黑客,帮助一些商业公司保护他们的信息资产,但是一到夜深人静的时候,他就经不住诱惑,享受攻破那些毫无戒心的目标后刺激的快感。Erik属于黑客中的异类:他将自己的目光集中在一个目标上,对这个目标进行不断的攻击,直到入侵成功……即使这个过程可能需要几个月甚至几年。

8.1.1、一颗探险之星

几年之前,Erik和一些远方的黑客密友开始不断搜集不同类型的服务器软件,并且几乎己经“拥有”了这个领域中所有主要产品的源代码……但是有一个例外。“这是最后一个我还没有拥有的”,他解释道,“我也不知道这是为什么,可我就是很感兴趣,很想要攻破它。”我完全能够理解他这种感受。Erik迷恋于对战利品的追逐,资源越有价值,战利品对他来说就越珍贵。

这是最后一个能让Erik感觉到成功的喜悦的目标了。然而这个目标也的确要比他预期的更富有挑战性得多。“有些站点我很想攻破,但是由于某种原因,要想攻破它们确实很困难。”他简单地解释道。同样,我还是能够体会到他的这种感受。

一开始,他用自己熟悉的方法,从“Web服务器的一个端口扫描”着手。“当我试图攻破Web服务器的时候,端口扫描通常都会是我的第一步。因为这里常常会有更多的脆弱点。然而这一次,我并没有很快找到任何蛛丝马迹。”在开始正式攻击之前,他一般会先对目标进行轻微的探测,这样就可以避免因为日志里的多次登录记录而引起管理员的警惕,甚至被发现——尤其在那段日子里,很多公司都在运行入侵检测系统来侦察端口扫描的探测,以及攻击者常常使用的一些其他类型的探测。

对Erik来说,“我知道,我所寻找的那几个端口将会是我感兴趣的目标。”他豪不费力地说出了一连串端口号。这些端口号用于Web服务器、终端服务、Microsoft SQL服务器,Microsoft Virtual Private Network(VPN),NetBIOS,邮件服务器(SMTP)等其他服务器。

在Microsoft服务器中,端口1723(正如第7章“银行是否绝对可靠”所提到的一样)通常用作点到点通道的协议。它是Microsoft对VPN通信的实现,并且使用了基于Windows的认证。Erik说,探测端口1723“让我有了一个想法:服务器到底扮演的是什么角色”,因为“有时候,你完全可以猜出口令,或者使用蛮力攻击出口令”。

在这个阶段中,他甚至没有烦恼过应该如何努力隐藏自己的身份——既然“(一个公司)每天会收到如此多的端口扫描,所以没有人会去关心这些东西,没有人会发现每天成千上万的端口扫描中的这一次扫描”。

对于被发现以及暴露身份的低风险估计主要基于他大胆的假设:他的端口扫描将会被掩埋在Internet的“噪音”当中。虽然目标公司的网络管理员确实有可能会操劳过度,或者总是懒于检查日志,但是总有可能,他也会遇上一个工作热情的管理员,使得他的计划最终破产。一般更慎重一些的黑客可能都不愿意去冒这个风险。

在这个案例中,尽管冒了很大的风险,端口扫描还是没有找到任何有价值的东西。接着,他使用了一个定制的软件,这个软件工作起来很像一个公共网关接口(CGI,common gateway interface)扫描器。他找到了——个由“WS-FTP服务器”生成的日志文件,其中包含了一个上传至服务器的文件名列表。它与其他所有的FTP(文件传输协议)日志很相似,“除了这个日志被存储在了文件上传的每个目录中之外”,Erik说。所以如果你发现某个列入日志的文件很有趣的话,那么它就在那儿——你已经无须去搜寻它了。

Erik对这个FTPU志作了分析,找到了那些最近上载至“/include”目录的文件的名字。这个目录通常用来存储“.inc”文件类型——一种来自于其他主要源代码模块的通用编程函数。

在Windows下,这些文件是默认的,而不是被保护的。在重新杳看了日志中的文件名列表之后,Erik用他的Internet浏览器查看了一些他认为可能会包含有价值信息的特定文件名的源代码。他还特别査看了那些可能已经包含后台数据库服务器口令的文件。终于,他发现了宝藏。

“到那个时候为止”,Erik说,“我应该已经攻击Web服务器达10次之多了——然而,我依然没有在日志中找到任何重要的资料。”尽管发现了数据库服务器的口令很令人激动,但与此同时,他也很快发现它所要攻击的计算机上根本没有运行数据库服务器。然而从这时候开始,一切开始变得“有趣”起来。

在那个Web服务器上,我无法找到任何东西,但是我有一个自制的‘软件’工具,能够基于普通主机名列表猜测主机名——比如说,网关、备份、测试等,再加上域名。这个软件在普通主机名列表中搜索,从而确认所有可能在域中存在的主机名。

通常,‘在选择主机名的时候’人们都是如此平庸,所以非常容易我就找到了服务器。

找到服务器的确是豪不费劲,但是这并不意味着他又向成功迈进了一步。紧接着,有个问题很让他伤脑筋:这个公司不在美国。所以,“我利用主机名扫描工具找到大量主机,接着我就用那个国家的扩展名一个个地试。”比方说,一个日本的公司的主机名可能是:

hostname.companyname.com.jp

通过这样的方法,他发现了一个备份Web和邮件服务器。接着,他用曾在“include”(.inc)源文件中找到的口令访问了这个服务器。然后,他就能够通过一个标准系统程序(xp—cmdshell)来执行命令了。这个标准系统程序可以在任意一个正在运行SQL服务器的用户之下运行shell命令——通常在一个拥有特权的账户之下。成功啦!这一次他拥有了全部Web/邮件服务器的系统访问权限。

Erik立即开始继续钻硏这些目录,寻找源代码的备份以及其他吸引人的好东西。他的主要目标是获取keygeii——正如上文所提到的那样,它是用来产生客户许可证号的专有代码。

事情的第一步就是搜集尽可能多的关于系统及其用户的信息。实际上,Erik使用了Excel电子表格来记录所有他找到的有趣的信息,比如说口令、IP地址、主机名,以及通过开放的端口可以访问的服务等等。

他还探测了操作系统中通常会被那些业余爱好的攻击者忽视的隐藏部分,比如说,用来存储着服务口令以及最后一位用户用来登录到机器的缓存口令的散列的Local Security Authority(LSA)、Remote Access Services(RAS)拨号账户名和口令、用于域访问的工作站口令等等。他还察看了受保护的存储区域(Protected Storagearea),在这个区域里,Internet浏览器和Outlook Express存储着口令。

第二步就是提取口令的散列,然后攻破它们来恢复口令。因为这个服务器是一个备份域控制器、邮件服务器,以及二级域名服务(DNS,Domain Name Service)服务器。通过打开包含计算机所使用的域和主机名的完全列表的DNS管理面板,他能够访问所有的DNS资源记录(包括主机名和相应的IP地址,以及其他记录)。

现在我已经有一个包含他们所有主机名的列表,并且我还在系统与系统之间跳转,从各处搜集口令。

这种“跳转”是可能的,因为以前,他在利用了他所获取的Microsoft SQL口令之后,曾成功地攻破了备份Web服务器上的口令。

但是他仍然不知道哪个服务器是存储产品源代码和许可证管理代码的应用程序开发机器。为了寻找线索,他非常仔细地查阅了邮件和Web日志,来识别所有指向那些机器的行为模式。一旦他从那些看起来很有趣的日志中搜集到其他IP地址的列表,他就能够把那些机器定为攻击目标。既然任何一个开发人员都很可能拥有整套源代码的访问权,那么这个阶段的目标就是开发人员的工作站。

从那之后的数周时间内,他都在安静地等待时机。除了搜集了一些口令,这几个月之内他都没有得到很多有用的东西,“除了偶尔能下载到一两条我认为有用的信息,大约八个月的时间就这样过去了。期间,他耐心地“在服务器与服务器之间跳转”,但是没有找到任何源代码或是许可证密钥生成器。然而最终他还是取得了突破。他开始更加细致地查看他第一次攻破的备份Web服务器,发现其中存储着所有人们在检索邮件、记录用户名称和所有雇员的IP地址时生成的日志。在仔细查看了日志之后,他已经有能力恢复CEO的IP地址了。最后,他总算找到了一个有价值的目标。

最后,我终于发现了CEO的计算机,感觉挺有趣的。我花了两天时间对它进行了端口扫描,但没有任何响应。但是我知道他的计算机肯定就在那里。从邮件标题中我发现,他很可能使用的是一个固定的IP地址,但是他从来不在那里。

所以我试着每隔两小时对他的机器进行端口扫描,检验一些普通端口。尽量让自己不被察觉,以防CEO运行了某种入侵检测软件。我总是在一天中的不同时间段内来做这些工作,并且限制了扫描端口的数目,24小时之内不超过5个。

我花费了几天时间才在他在那里的时候,真正找到一个开放的端口。我最终在他的机器上找到的那个开放的端口——1433。这个端口运行着一个MS SQL服务器的实例。这证明了这是CEO的一台便携机,而且他只在每天早上使用大约两个小时。所以,他应该是来到他的办公室之后,查阅完电子邮件,然后就离开或是关掉了他的便携机。

8.1.2、入侵CEO的计算机

到那时候为止,Erik已经搜集了一些东西,比如说20到30个公司的口令。“他们使用的口令很棒很强,但是他们是按照固定的模式来的。一旦计算出这个模式,我就能够很容易地猜出口令了。”估计了一下,他巳经为这个目标工作了似乎整整一年了。而就在这个时候,他的努力也收到了回报:他的工作有了一个重大突破!

Erik感觉已经到了关键时刻了,他似乎很快就要得到这个公司的口令策略了。于是他再次从CEO的计算机着手,重点攻破口令。那么到底是什么,让他感觉自己应该有能力猜出CEO正在使用的MS SQL服务器的口令?

“你知道的,其实我无法解释原因。这只是一种我所拥有的能力,一种猜对人们使用口令的能力。我甚至还能够猜出将来他们可能会使用什么样的口令。我只是有一种这方面的直觉。我能够感觉到。就好像我已经变成了他们,然后说如果我是他们,我将会用什么样的口令一样。”

他并不确定是否能将这种直觉称为运气还是技能,对这种“我是一个很好的猜测家”的能力一笑了之。不管他的解释如何,他确实获得了正确的口令。他回忆说:“这个口令不是字典里有的一个单词,远比单词要复杂得多。”

不管他的解释如何,反正他现在已经拥有了口令,这让他能够以一个数据库管理员的身份访问SQL服务器。现在Erik就相当于拥有CEO的权限了。

他发现这个计算机保护得很好,有防火墙,并且只有一个开放的端口。然而在其他方面,Erik发现了许多可笑的地方。“他的系统真的是糟糕透顶。我无法在那里找到任何东西。我的意思是,那上面只有到处分布的文件。”因为几乎所有文件都是用一种Erik不懂的外语记录的,所以Erik借助了一些在线词典和Babblefish免费在线翻译服务的帮助来搜寻关键字。他还有一个会说这种语言的朋友,给他帮了不少忙。从会话日志里,他能够找到更多的IP地址和更多的口令。

因为这个CEO便携机上的文件如此杂乱无章,以至于无法找到任何有价值的资料,所以Erik采取了另一种方法:通过使用“dir/s/od<drive!etter>”,根据日期,对所有文件进行列表和分类,这样他就能够找到那些最近访问过驱动器的文件,并且能在脱机状态下对它们进行检查。在这个过程中,他发现有一个Excel电子表格的名字很明显。这个表格中有好儿个不同服务器以及程序的门令。通过这个电子表格,他找到了能够进入他们公司主要DNS服务器的有效账户名和口令。

为了使紧接下来的工作变得容易一些——也就是说,获取一个更好的立足点,更加容易地上载和下载文件——他想将他的黑客工具包移至这个CEO的便携机。他只能够通过他的Microsoft SQL服务器连接,来与这个便携机进行通信,但是他也可以使用上文所提到的存储过程,将命令发送至操作系统,就好像他正坐在Windows中的一个DOS提示符旁边一样。Erik写入了一些脚本,希望FTP下载他的黑客工具,但是当他进行第三次尝试时,还是仍旧什么都没有发生。于是,他使用了便携机上已有的一个名为“pslist”的命令行程序,列出了所有正在运行的程序。

一着错棋!

因为CEO的便携机正在运行着细小个人防火墙(Tiny Personal Firewall),任何使用FTP的尝试都会使CEO的计算机屏幕上弹出一个警告框,询问是否允许连接Internet。幸运的是,这位CEO为了操作程序,已经从www.sysinternals.com下载了一套普通的命令行工具。Erik使用了其中的“pslist”实用程序取消了这个防火墙程序,所以弹出的对话框在CEO看到之前就已经消失了。

Erik明白,为了不让他人发现自己行动,不露声色地再等两周会更明智一些。两周过后,他卷土重来,尝试着釆取了另外一个完全不同的行动方针来把他的工具弄到CE0的便携机上。他使用“Internet Explorer object”来欺骗个人防火墙,使之相信Internet浏览器正在发出准许连接至Internet的请求。然后他写入了一个脚本,检索他的几个黑客工具。大部分人都会允许Internet浏览器拥有经由他们个人防火墙的完全访问权(我敢打赌,你也是如此),而Erik也指望他的脚本能够很好地利用这一点。好消息!他成功了!现在,他能够开始用自己的工具对便携机进行搜索,来提取他想要的信息了。

8.1.3、CEO发现了黑客入侵

Erik说,与此相同的方法直到今天依然管用。紧接着发生了一件事。Erik连接到这位CEO的计算机,并且又一次取消了防火墙程序,这样他就能够将文件传送至另一个系统,然后再从这个系统下载这些文件。就在这个时候,他突然意识到CEO应该正在计算机旁,而且肯定已经注意到正在发生一些不寻常的事情。“他发现防火墙的图标从系统托盘区上消失了。他发现了我!”Erik立即断开了连接。几分钟以后,这个笔记本计算机重新启动,防火墙也重新启动了。

我不知道他是否发现了我。所以我等待了好几周的时间,才重新回到他的计算机并且决定再次开始我的行动。最后,我终于弄清楚了他的工作模式,看来已经是进入他的系统的时候了。

8.1.4、获取应用程序的访问权

在等待了一段时间并对自己的策略进行反思之后,Erik卷土重回CEO的便携机,开始更加仔细的检查系统。一开始他运行了LsaDump2的公开命令行工具,来转储一些存储在注册数据库中Local Security Authority Secrets特殊部分的敏感信息。LSASecrets包含进入服务账户的明文口令、最后10位用户的cached口令的散列、FTP以及Web用户口令,以及用来迸入拨号网络的账户名和口令。

他还运行了“netstat”命令来查看在那个时刻建立了哪些连接,以及哪些端口正在侦听一个连接。他注意到有一个高端口正在侦听一个进来的连接。当他从那个已被他攻破的备份服务器连接上一个打开的端口的时候,他认识到,这是一个被当作某种邮件接口使用的简易Web服务器。他也很快意识到可以绕开邮件接口,将所有文件都放置在服务器的根目录上用作邮件接口。然后他将能够很容易地从CEO的便携机下载文件至备份服务器。

一年来,尽管Erik取得了一点点成功,但是仍然没有得到产品的源代码或者密钥生成器。然而,他并没有产生放弃的念头。相反,他觉得一切都变得越来越有趣了。“我在CEO的便携机里的发现了‘tools’目录的备份。在这个备份里,有一个密钥生成器的界面,但是它无权访问活跃的数据库。”他还是没有找到运行着包含所有用户密钥的活跃数据库的许可证服务器——只有一些指向这个服务器的东西。“我不知道真正的雇员许可证工具存储在什么地方。”“我需要找到这个活跃的服务器。”他有一种预感:这个服务器一定就是那个被他们当作邮件服务器的服务器,因为公司操作的Web站点允许顾客即时购买软件产品。一旦信用卡交易被批准,顾客就会收到一封含有许可证号的电子邮件。现在只剩下一个Erik无法定位和入侵的服务器了;这个服务器上肯定有生成许可证号的应用程序。

到目前为止,Erik已经在网络里花费了数月时间,但是仍然没有得到他想要得到的东西。他决定在他己经攻破了的备份服务器上看看,并开始从他已经“拥有”的其他服务器上,通过使用一个更宽的端口范围,扫描邮件服务器。希望这样能够发现一些在非标准端口运行的服务。他也在想,以防防火墙只允许一定的IP地址进行访问,那么通过信得过的服务器来扫描,可能是最好的办法了。

接下来的两周时间,他尽可能快地扫描了网络,来识别所有正在运行不同寻常的服务,或是正试图在非标准端口上运行普通服务的服务器。

Erik一面继续着他的端口扫描任务,一面开始检查管理员账户以及其他几个用户的Internet浏览器的历史记录文件。他有了新的发现:备份服务器的用户正通过Internet浏览器连接着一个主邮件服务器上的高数字端口。他意识到主邮件服务器也封锁了对这个高数字端口的访问,除非连接是来自“授权”的IP地址。

最后,他发现了在一个高端口上的Web服务器——“1800或者类似于1800的数字”,他回忆着过去的岁月——并且猜出了一个用户名和口令组合从而调出了一个表项菜单。其中一个选项是查询顾客信息。另外一个选项正是为他们的产品生成许可证号。

瞧!成功啦!

这就是那个拥有活跃数据库的服务器。当Erik意识到自己正在接近他的目标的时候,他开始变得异常兴奋。但是“这个服务器真的很严密,难以置信的严密”。他又一次闯进了死胡同。他只得按原路返回,仔细回想所发生的一切。突然,他有了一个崭新的想法”:

我拥有了这些Web网页的源代码,因为我在CEO的便携机上发现了Web站点的备份。而且我发现了一个在Web网页上的链接,进行一些网络诊断,比如说netstat、traceroute以及ping——你可以把一个IP地址放入Web表单,然后点击“OK”键,命令将被执行并且结果会列在你的显示屏上。

他注意到在一个程序中的有个bug。当他登录至Web网页时,他能够运行这个bug。如果他选择了这个选项来执行一个tracert命令,这个程序将允许他来执行一次traceroute追踪欲到达IP目的地址的数据包的路由。Erik意识到,通过进入一个IP地址,并在其后加上“&”符号的方法,他能够成功地欺骗这个程序,来运行一个外壳程序命令。所以,他将以下面的形式进入某种程序:

Localhost>nul && dir c:\

在此例中,用CGI脚本写进表格的信息被放在traceroute命令的后面。第一部分(一直到“&”符号)指示程序对自己执行traceroute命令(这豪无用处),然后将输出重定向到mil。这使得输出被丢弃到位桶里(换句话说,就是保持不变)。一旦程序执行了第一个命令,“&&”符号所指的就是:将会有另一个shell命令被执行。在这种情况下,这个命令是指显示C驱动器上的根目录内容的命令——这对黑客来说非常有用,因为它允许黑客使用Web服务器正在其下运行的账户的权限,来执行任意shell命令。

“它给了我所有我所需要的访问权”,Erik说,“我能够随意访问服务器上的任何东西。”

Erik开始忙了起来。他很快就注意到这个公司的开发者们每天深夜总会将他们源代码的一份备份放在服务器上。“真的是一大堆备份啊——所有的备份加在一起约有50M。”他能够执行一系列命令,来将他想要的任何文件移动至Web服务器的根目录下,然后将这些文件下载到第一台他攻破的机器——备份Web服务器。

8.1.5、被逮

这个CEO似乎在劫难逃了。很明显,这位主管人己经开始怀疑了,但是因为他繁忙的工作日程,加上Erik的力量在日益增长,再也没有出现过任何危险情况了。然而,当他一点一点地深入到这个公司系统的心脏时,对Erik来说,保持低调变得越来越困难了。因为他长时间在一个陌生系统中频繁地进入导致了严重的后果。他开始下载他长期寻求的程序的源代码了,然而,就在这个时候。

下栽了大约一半的时候,我突然发现下栽停止了。我浏览了一下目录,发现文件都没有了。我开始查看一些日志文件和变动了的日期,我意识到这个家伙在那个时候也正在服务器上查看日志文件。他知道我在行动——可以说,他逮住我了。

无论谁察觉到了Erik的存在,都会以最快的速度删除重要的文件。游戏结束了……但是,还有继续的可能呢?

Erik断开了连接,并且一个月内再没有到CEO的计算机上去。到现在为止,他己经为获得软件费力折腾了好几个月了。你也许会认为他已经变得不耐烦了。但他告诉我,并非如此。

我从来不会有挫败感,因为对我来说,这正是一个更大的挑战。如杲一开始我无法进入,那也只是说明原本就复杂的难题现在更复杂了一点。当然这并不会让我灰心。这就好像一个电视游戏,你会一级一级地升级,游戏也会变得越来越富有挑战性。这仅仅还只是整个游戏的一部分。

Erik实践着他自己的座右铭。一个拥有矢志不移的恒心的人总是会成功。

当一个方法行不通的时候,我会试着用其他的方法。因为我知道一定会有行得通的方法。世上总会有行得通的方法,关键在于能否找到它。

8.1.6、返回敌方领地

尽管受到了挫败,他仍旧在大约一个月之后卷土重来:连接上CEO的计算机,再次查看聊天日志(他实际上保存了他的聊天日志),来确定是否有任何关于某人被黑客侵袭的报告记录。在他上次被发现的地方,他浏览了当天他被发现时的确切的时间段内的日志。没有任何内容提及有黑客存在,或者有人在未授权的情况下试图下载文件。于是,他长长地松了一口气。

这次他发现其实他一直都很幸运。因为在几乎完全相同的时间里,这个公司的一个客户出现了紧急情况。这个IT业的家伙只得扔下了所有他手头的事情来处理这一突发事件。Erik发现了随后的一条登记项,表明这个家伙查看了日志并且运行了病毒扫描,但是并没有采取任何其他措施。“他可能觉得这看起来有点可疑,于是他做了一点点调查,但是还是不能解释为什么”,所以他只能随它去了。

Erik安全撤退了。为了能够安全通过,他花了更多的时间来等待。然后再一次进入。但是这一次他要小心谨慎得多:他只在下班时间才进入,并且要在确定没有人会在附近之后。

通过使用一个位于国外的中间服务器的跳转——因为这样他才可以在家里操纵一切——他一点点地下载了整个源代码文件。

这些形容他对公司网络如何熟悉的描述,可能一开始让人听起来会觉得有些浮夸,但是如果你想一想他不计其数地出入这个公司的系统,并且在他了解了它最隐蔽的习性与怪癖之后,一点点地将它彻底攻破所花费的时间总量,你就会明白:他的叙述肯定是可信的。

我比那儿所有的人都要更了解他们自己的网络。如果他们的网络出了问题,我很可能比他们更能解决这些问题。我的意思是说,我对他们的网络的内外部都非常了解。

8.1.7、此地不再留

现在Erik所拥有的,也就是那些最终安全下载到他计算机上的资源,就是服务器软件的源代码……但是他还无法打开和查看这些源代码。因为这个软件非常的大,所以开发者将它存储在备份服务器上,并且将其压缩为加密ZIP文件。他首先用了一个简单的ZIP口令攻击程序,但是失败了。该是B计划上场的时候了!

Erik开始用另外一种新的改良后的口令攻击程序Pk Crack,它使用了一种“已知明文攻击”的技术。了解一部分加密归档的明文数据对破解归档中所有其他文件的口令是非常必要的。

我打开了这个ZIP文件,发现一个名为“logo.tif”的文件。于是我登录他们的主Web站点,查找所有名为“logo.tif”的文件。之后我下栽了所有这些文件,并且将之压缩打包。我发现其中有个文件与被保护ZIP文件的校验和很相似。

现在Erik已经获得了被保护的ZIP文件和“logo.tif”文件未被保护的版本。Pk Crack只花了五分钟时间就对同一个文件的两种版本进行了比较,并且恢复了口令。用这个口令,他很快就对所有文件进行了解压缩。

在数以百计的漫漫长夜之后,Erik最后终于获取了他苦苦寻求的所有源代码。

Erik谈到是什么让他对这个目标锲而不舍地坚持如此之久,Erik说道:

哦,其实原因很简单,因为这极具诱惑力。我喜欢接受挑战,我不愿意被打败。我喜欢安静地做与众不同的事情。我喜欢用最具有创造力的做事方式。当然,上载一个脚本会容易得多;但是我自己的方式却要酷得多啊。如果可以避免,千万不要做一名照本宣科者——要做就做个名副其实的黑客。

那他是如何处理这些软件和密钥生成器的呢?答案是他和Robert——接下来这个故事的主人公——两人都遵循了彼此相同的例行做法,而这种做法在世界各地的很多破解者中很是普遍。你将会在本章结尾一节“与你共享:一个破解者的世界”里找到这个故事。