第一章 黑客概述
1.1 什么是黑客
随着计算机及互联网技术的迅猛发展,“黑客”这个词语,也象其他新兴事物那样,日益地为人们耳熟能详。在普通人眼里,“黑客”是个汇聚着众多矛盾和冲突因素的略显神秘的概念,它有时代表着正义和侠气,有时代表着高深莫测,有时又代表着另类甚至是。简单来看,“黑客”是“Hacker”这个英语名词的“泊来品”,它源于对应的动词“hack”,意思是“劈砍”,引申一下,“Hacker”最直接的意思也就成了“劈东西的人或砍东西的人”。有意思的是,只要简单地在金山词霸中输入“Hacker”来进行查询,就可以得到对“Hacker”的多种解释:“计算机窃贼”、“砍伐工”、“剁碎机”、“从网络中擅自存取的人”等。在日本出版的《新黑客词典》中,对“黑客”是这样定义的:“喜欢探索软件程序奥秘,并从中增长了其个人才干的人。他们不像绝大多数电脑使用者那样,只规规矩矩地了解别人指定了解的狭小的一部分知识。”而在Open Source(开放源码运动)旗手Eric S. Raymond的《The New Hacker’s Dictionary》一文中,对“Hakcer”的解释则包括了下面几类人(参见网址http://tuxedo.org/jargon/jargon.html):
¨ 那些喜欢发掘程序系统内部实现细节的人,在这种发掘过程中,他们延伸并扩展着
自己的能力,这和许多只满足于学习有限知识的人是截然不同的。
¨ 那些狂热地沉浸在编程乐趣中的人,而且,他们不仅仅在理论上谈及编程。 ¨ 一个高超的程序设计专家。
¨ 一个喜欢智力挑战,并创造性地突破种种环境的人。
¨ 一个恶意的爱管闲事的家伙,他试图在网络上逡巡溜达的同时发现一些敏感的信
息。
对最后一类人,Eric S. Raymond赋予其更恰当的一个称谓,那就是“Cracker”,也就是我们常说的“骇客”。
人们对“黑客”形形色色的解释,基本上可以归为两大阵营,一种是从正面来看待的,认为黑客是那些探索和掌握高深的技术知识,并崇尚自由和创造精神的人;另一种则带有轻蔑的意思,认为所谓“黑客”,无非是那些利用工具和技术,取得并破坏非授权访问信息的人。其实,这两种解释,正是“黑客”历史演变过程中自然发展的结果。
一般认为,黑客最早起源于20世纪50年代麻省理工学院的实验室中。那时,一群群才华横溢的学生结成不同的课题小组,通霄达旦地在实验室操作机器,他们擅长抓住瞬间的思想灵感去尽情地发挥,对解决难题充满了由衷的热爱。他们刻苦、勤奋、精力充沛,甚至有些玩世不恭。60年代,黑客代指思考、奉公守法的计算机迷,他们利用分时技术使得多
– 1 –
黑客攻防技术进阶
个用户可以同时执行多道程序,这扩大了计算机及网络的使用范围。70年代,黑客倡导了一场个人计算机,他们发明并生产了个人计算机,打破了以往计算机技术只掌握在少数人手里的局面,并提出了计算机为人民所用的观点。这一代黑客是电脑史上的英雄,其领头人就是苹果公司的创建人史蒂夫·乔布斯。80年代,黑客的代表是软件设计师,包括比尔·盖茨在内的这一代黑客为个人电脑设计出了各种应用软件。同一时期,随着计算机重要性的提高,大型数据库也越来越多,信息越来越集中在少数人手里,黑客开始为信息共享而奋斗,他们频繁入侵各大计算机系统,在提升着互联网共享精神的同时,也给网络的发展注入了众多不稳定的因素。
老一代的黑客精英,他们更多专注的是创造和奉献,在他们身上,体现更多的是真正的黑客精神。而那些乐于破坏的家伙,在给这个社会制造着麻烦和噱头的同时,就只能被冠以“骇客”之名了。正是因为“骇客”的存在,纯正而古老的黑客精神才愈来愈被人们曲解,但在真正崇尚黑客精神的一类人眼里,“骇客”(Cracker)与“黑客”(Hacker)是如此的泾渭分明、不可混淆。
做为独特的群体,黑客们信奉着几十年一直延续下来的一种独特的文化理念。在这种滋生于网络的文化理念中,真正意义上的黑客,用技术手段来维护电脑和网络世界的宁静,构筑着网络的便捷和安全,他们是正义的侠士,而他们所崇尚的所谓“黑客文化”则强调的是信息共享的精神,这种精神恰是自由主义与个人英雄主义的结合。黑客们不断地创造(而不是破坏),不断地证明着自己,在解决问题与克服的过程中永远不知疲倦。
深入来看,黑客文化首先包含了一种自由不羁的精神。黑客们在网络上自由驰骋,他们喜欢不受束缚,喜欢挑战任何技术制约和人为。黑客们认为所有的信息都应当是免费的和公开的。黑客行为的核心目的,就是要突破强加给信息本身的种种。黑客就是那些在网络上对信息“劫富济贫”的人,他们从事黑客活动,意味着接受艰巨的智力挑战,意味着尽可能地使计算机的使用和信息的获得成为免费和公开的,意味着坚信完美的程序将人类的头脑和精神。其次,黑客文化也包含了反传统、反权威、反集权的精神,这是对60年代反主流文化价值观的继承。黑客们蔑视现行电子世界的行为规则,认为这些规则并不能起到维持法律秩序和保护公共安全的作用,相反只是为了获取利润和异己,是不道德的,而他们自己是既有反抗精神又身怀绝技的天才,是电子时代的“侠盗罗宾汉”。
这个独特的群体也遵循着其特有的一套行为准则,美国学者史蒂夫・利维在其著名的《黑客电脑史》中所指出的“黑客道德准则”(the Hacker Ethic)就是对其最深刻的表述:
(1) 通往电脑的路不止一条;
(2) 所有的信息都应当是免费共享的; (3) 一定要打破电脑集权;
(4) 在电脑上创造的是艺术和美; (5) 计算机将使生活更加美好。 可以看出,“黑客道德准则”正是这个独特的文化群体一直心照不宣地遵循着的“江湖规矩”。以这种“江湖规矩”作为参照,黑客们的行为特征也就清晰的呈现给我们了。
l 热衷挑战
黑客们多数都有很高的智商,至少在某些方面表现突出。他们喜欢挑战自己的智力,编写高难度程序、破译电脑密码给他们带来了神奇的魔力。而运用自己的智慧和电脑技术去突
– 2 –
第一章 黑客概述
破某些著名的、防卫措施森严的站点更是一件极富刺激性和挑战性的冒险活动。
l 崇尚自由
黑客文化首先给人的突出感觉就是一种自由不羁的精神。黑客如同夜行的蝙蝠侠,任意穿梭于网络空间中。黑客在电脑虚拟世界发挥着自己极致的自由。他们随意登录世界各地网站,完成着现实生活中无法企及的冒险旅程,实现着个人生命的虚拟体验。正是这种对自由的体验,使黑客如同吸毒上瘾一样,对网络入侵乐此不疲。
l 主张信息共享
黑客们认为所有的信息都应当是免费的和公开的,认为计算机应该是大众的工具,而不应该为有钱人所私有。信息应该是不受的,它属于每个人,拥有知识或信息是每个人的天赋权利。
l 反叛精神
黑客文化带有某种反叛世界的倾向,黑客们蔑视传统,反抗权威,痛恨集权,其行为模式深深的烙上了无主义的印记。互联网的一个显著特点是平等和共享,对于网络中存在着的许多禁区,黑客们认为是有违网络特征的,他们希望建立一个没有权威、没有既定秩序的社会,所以他们一般都喜欢与传统、权威和集权做永无休止的斗争。
l 破坏心理
黑客们要在网络空间来去自由、蔑视权威,就必然夹带着某些破坏举动。只有突破计算机和网络的防护措施才能随意登录站点;只有权威设置的程序才能反抗权威;也只有摧毁网络秩序才能达至人人平等的信息共享目标。当然,由于心理动机不同,不同黑客行为的破坏程度也是有区别的。
这样一种独特的黑客文化,必然孕育出黑客群体所独有的文化态度:
(1) 这个世界不断涌现出许多迷人的问题等待人们去解决; (2) 一个问题不应该重复地被解决两次; (3) 无聊而乏味的工作是可恶的; (4) 自由是美好的,黑客们需要的是自由协作和信息共享,而不是和所谓的权威; (5) 态度并不能成为能力的替代品,想成为黑客,只有态度是不够的,更重要的,还
在于努力工作、倾心奉献、钻研和实践。
不过,自由和共享在这个商业气息浓厚的现实社会里总显得如此弱不禁风,当人们为了追逐金钱和利益而不惜心力的时候,自由和共享就带有浓浓的理想主义色彩了。传统的商业社会是拒绝共享的,为了获得并独享更多利益,对各种信息加密和措施的使用就成了传统商业必然的手段,所谓的完全共享在商业社会中实际上意味着倒闭与贫穷。但是,崇尚自由和共享的人们总是“矢志不虞”,他们要突破这些人为的,要破坏种种给信息设置的藩篱,于是,一个专门致力于搞破坏的群体就开始不遗余力大行其道了,不过,从他们身上,很少再能看到老一辈黑客崇尚创造的精神,相反,他们所表现的,除了破坏,还是破坏。这样一个群体,不光为社会所痛恨,就连承袭着传统黑客文化的“黑客”们也对此大为不齿,并极力将之归类为另一个阵营,那就是“Cracker”,也就是我们常说的“骇客”,他们不是创造者和建设者,而是真正意义上的破坏者。
– 3 –
黑客攻防技术进阶
1.2 关于黑客的传奇故事
提起黑客,就不能不说说关于黑客的一些光怪陆离的“事迹”。就像武侠小说吸引人们进入一个成人的童话世界那样,有关黑客的种种传奇故事,在媒体或夸张或引申之后,听起来是那样的神乎其神,并散发着经久不息的独特魅力。这其中,最为经典的就是关于凯文-米特尼克(Kevin Mitnick)的传奇故事。
凯文-米特尼克,这个被奉为世界头号电脑黑客的传奇人物,很久以来,一直都是许多怀有叛逆和自由不羁精神的黑客群体的心中偶像。出生于19年的凯文,从其15岁入侵北美空军防务指挥系统开始,短短十几年间,一次次给网络世界制造着麻烦,屡屡被捕但从没有放弃自己麻烦制造者的秉性。其传奇故事甚至成了好莱坞的蓝本题材而被搬上了银幕(1983年好莱坞拍摄的《战争游戏》)。
19年,凯文-米特尼克出生在美国西海岸的洛杉矶。当他只有3岁的时候,由于父母离异,跟着母亲生活的米特尼克很快就学会了自立。虽然父母离异对米特尼克幼小的心灵造成了很深的伤害,使他性格内向、沉默寡言,虽然文化水平不高的母亲并没有很好的教育孩子的经验,但这些丝毫没有妨碍米特尼克超人智力的发育。事实上,在很小的时候,米特尼克就经常显示出他在日后成为美国头号电脑杀手所具有的天才和能力。
米特尼克小时候喜欢玩一种当时很流行的名为“拿破仑的滑铁卢”的游戏。根据专家的理论推算,最快需要78步才能完成游戏中的使命,而令人吃惊的是,年仅4岁的米特尼克只用了几天功夫,就证明了这一专家耗时长达1个月才能得出的结论。
13岁时,还在上小学的米特尼克喜欢上了业余无线电活动,在进一步接触电脑之后,数字世界所蕴涵的数理逻辑知识与他的思维方式仿佛天作之和。于是,米特尼克开始着迷于电脑和网络营造的数字空间,在那里,他可以暂时摆脱所厌恶的现实生活,并运用自己的天才去发泄着对现实世界的不满。
米特尼克最初开始显露其攻击秉性是在美国兴起社区电脑网络建设的阶段。在米特尼克所在的社区网络中,家庭电脑不仅和企业、大学相通,而且和部门相连,当然,那些通往禁地的关口通常都设置有密码。于是,米特尼克那种似乎与生俱来的“突破”的欲望开始“发作”了。他用打工赚的钱买了一台性能不错的电脑,然后就以超乎多数同龄人所能具有的耐心和毅力,试图破译美国高级军事密码。不久,年仅15岁的米特尼克闯入了“北美空中防务指挥系统”,他翻遍了美国指向前苏联及其盟国的所有核弹头的数据资料,然后又悄无声息地溜了出来。这一“事迹”,随即成为黑客历史上最为经典的案例之一,甚至被好莱坞搬上了银幕。
成功突破“北美空中防务指挥系统”的防线之后,米特尼克信心大增,随后不久,他又进入到著名的“太平洋电话公司”设在南加利福尼亚州的通讯网络,并随意更改这家公司的用户信息,给太平洋公司以及其众多知名用户带来了不小的麻烦。
对太平洋公司失去兴趣之后,米特尼克的目光瞄准了联邦调查局,他开始频繁地进出联邦调查局的电脑网络。一次,他发现特工们正在调查一名电脑黑客,便饶有兴趣地偷阅起调查资料来。结果令他大吃一惊:被调查者竟然是他自己!米特尼克立即施展浑身解数,破译了联邦调查局“电脑系统”的密码,并且每天仔细地查阅“案情进展情况报告”。很快,
– 4 –
第一章 黑客概述
米特尼克就对此不屑一顾起来,他嘲笑这些特工人员漫无边际的搜索,并恶作剧式地将几个负责调查的特工的档案调出,然后全都涂改成了十足的罪犯。
不过,联邦调查局的特工人员最终还是将米特尼克捕获了。当人们得知这名弄得联邦特工狼狈不堪的黑客竟是一名不满16岁的孩子时,无不惊愕万分。这时候,人们更多考虑的并非米特尼克所制造的种种极俱威力的破坏,而是惊叹于米特尼克不同寻常的天才,许多善良的、并不了解的人们纷纷要求对他从轻发落。也许是由于网络犯罪还很新鲜,法律上鲜有先例,顺从了“”,仅仅将米特尼克关进了“少年犯管教所”,很快,米特尼克就被假释了。
自由后的米特尼克并未改邪归正,电脑网络对他的诱惑实在是太大了。这次,他把目光投向了一些信誉不错的大公司。在很短的时间里,他连续进入了美国5家大公司的网络,不断发出让人愤怒的错误账单,把一些重要合同涂改得面目全非。
1988年,因为DEC指控他从公司网络上窃取了价值100万美元的软件并造成了400万美元损失,米特尼克再次被执法当局逮捕。他甚至未被允许保释,心有余悸的当局认为,只要接触键盘,他就会对社会构成威胁。
在一年刑满后,米特尼克出狱了,不过,联邦始终认为他是对社会的一个威胁,他的一举一动,都在严密的监视之下。这让许多有心利用他高超电脑技术的雇主都望而却步,这不能不说是一个遗憾。
1993年,一直对米特尼克心有不安的联邦调查局甚至设下圈套,故意引诱米特尼克重施故伎,以便把他再次抓进监狱。面对这种“诱惑”,米特尼克很快就落入了圈套。但头号黑客毕竟不凡,他打入了联邦调查局的内部网,发现了这个圈套,在逮捕令发出之前就逃跑了。联邦调查局立即在全国范围对米特尼克进行通缉。其后两年中,米特尼克与联邦调查局就一直玩着猫捉耗子的游戏。这期间,米特尼克成功地入侵了摩托罗拉、Novell、诺基亚、Sun等多家高科技公司的计算机系统,盗走了大量的软件和数据。甚至有报道说,在逃跑过程中,米特尼克设法控制了加州的一个电话系统,以便随时窃听追踪他的警探的行踪。
1994年圣诞节,米特尼克向圣迭戈超级计算机中心发动了一次攻击,《纽约时报》称这一行动“将整个互联网置于一种危险的境地”。这次攻击的对象,包括一个因为米特尼克而一举成名的人物,即被称作“美国最出色的电脑安全专家之一”、在该中心工作的日籍计算机专家下村勉。米特尼克这种“在太岁头上动土”的举动极大地触怒了下村勉,他下决心帮助联邦调查局把米特尼克缉拿归案,于是,在米特尼克和下村勉之间,演绎出了一场颇为曲折的“江湖龙虎斗”。先是米特尼克在下村勉的电话留言机上留下这样的挑衅话语:“诅咒你!我的技术是最棒的!……”,个性倔强的下村勉显然不能容忍这样的挑衅行为,他采用一种特殊的跟踪方法,让自己的跟踪举措,并通过捕获米特尼克的无线电话指令来发现电波波长的真正来源。
时间到了1995年情人节之际,经过不懈的努力,下村勉终于发现了米特尼克的踪迹,并通知联邦调查局,在北卡罗来纳州罗利市一片布满低级公寓的街区内将其逮捕。
米特尼克与下村勉的第一次会面极具历史意义。1995年2月,在北卡罗来纳州的法庭上,带着手铐的米特尼克向出庭作证的下村勉由衷地说:“你好啊下村,我钦佩你的技术。”
作为一个处处制造混乱和破坏的电脑天才,米特尼克被指控违反了高达23条的法律,对于每一条他所违反的法律,都足以判处20年的监禁。后来,在米特尼克众多支持者的不懈努力之下,法庭仅仅判处他5年的监禁。当然,心有余悸的三位美国联邦法官一致否决了米
– 5 –
黑客攻防技术进阶
特尼克的假释要求,按法官的话说:“如果让米特尼克假释出狱,无异于放虎归山,整个美国,甚至整个世界都要乱了。”
2000年1月21日,凯文-米特尼克获释,根据美国的规定,在很长一段时期内,他必须处于严密的监控之下。他被禁止从事计算机行业的工作,禁止接触任何与电子有关的物品,包括计算机、手机、互联网等等,甚至连入学进修也不能选择计算机专业。
尽管关于米特尼克的传奇故事已经成为过去,但他所留给人们的种种话题,却成为恒久不变的一个黑客社会的焦点。
当然,米特尼克的故事之所以听起来精彩,这和媒体的演绎及渲染是分不开的。在过去的日子里,美国媒体极力将他描绘成一个恶贯满盈、手眼通天的家伙,但现实中的米特尼克果真如此吗?这个崇尚自由和挑战、将攻击当作玩乐却制造出众多麻烦甚至犯罪、种种矛盾集于一身的米特尼克,他自己是如何看待所有这一切的呢?也许,在我们看过下面有关他在牢中接受媒体采访时的真情告白后就会发现些什么的吧。
问:你如何看待媒体关于你的报道?
米:当我读到有关我的文字,我简直认不出自己,一个神话中的凯文-米特尼克,远比现实中的凯文-米特尼克有趣。如果他们说出,受众将对故事不再关心,但我不是为了引人注目才当黑客,我从来不为个人目的而发动攻击。
问:你如何看待出狱后给你所施加的各种?
米:他们要求我不能碰电脑、移动或无绳电话。这样的话,我出去后根本无法糊口。按照这些规定,我甚至无法在麦当劳餐厅打工。看来,我能做的只能是干些园艺杂活。
问:你出狱后打算干什么?
米:没想好。但一旦我能从这出去,在外面度过余生,我绝不再有意触犯法律。 问:听说你在狱中被单独监禁?
米:是的。他们认为这是看管我的惟一所在。我享受的待遇与那些杀死看守的人一样。 问:你最后一次上网是什么时候,因特网在这之后发生了怎样的巨变?
米:我最后一次上网是在1995年2月。我对网络真是怀念。我想回到网上,看看电子商务带来的新鲜事物。技术肯定是进步了,我还没入狱前,浏览器还是Mosaic1.0。
问:很多500强大公司都放出风来,要抢着雇你做信息安全顾问,你感兴趣吗? 米:它们还没有发出邀请,我将是一把好手。 问:你发动攻击的出发点是什么?
米:我干这个是因为好奇和对知识的兴趣,但最主要的还是智力上的挑战,就像攀登珠穆朗玛峰。我从来没有为了利益或危害别人而发动攻击,我那时就知道这是错的,但我真是乐在其中,因此也就自欺欺人。黑客的感觉真是太奇妙了,你觉得自己在演《星球大战》。
问:有人认为,你不是什么伟大的黑客,不过是通过所谓的“社会工程学”,也就是说通过与人的交谈诱使他们说出口令而攻进系统。这是真的吗?
米:这要看我的目标是什么了。如果我想神不知鬼不觉地待在系统里,我将采用技术攻击手段或非常小心的社会工程学方法,这样被我问到系统情况的人,永远不知道我为什么要了解这些东西。
问:那么,是否可以说,在严格的意义上,你并不是一个伟大的黑客?
米:我不认为我是世界上最好的黑客,否则我就不会被抓住了。外面有一些干的时间和我一样长的黑客,但他们从来没被抓住。我就知道一个,当然只是知道他的代码,他的技术
– 6 –
第一章 黑客概述
比我要高得多,他从来没被抓到过。
问:在你和其他一些黑客相继落网之后,网络安全提高了吗?
米:以数字设备公司(DigitalEquipment)来说吧,我在他们网络里出入过8年,他们的安全确实是提高了,但还没有提高到将我拒之门外的地步。对任何一家大公司来说,威胁都来自公司内和公司外,而公司内的威胁要更大。因为内部的人知道操作过程,知道口令和薄弱环节。
问:你认为黑客攻击是犯罪呢,还是探索因特网潜力和薄弱环节的最好办法?
米:黑客行为总不能归为公共服务行为吧,我的思想可还没到这个地步。我倒是觉得,那些被我攻击的大公司极其走运,因为这种攻击不是来自一个外国公司或其竞争对手。我确实有可能给他们造成极大的危害。
问:你对自己突然声名大噪怎么想?
米:这可以看看我收到的Email,净是些求教黑客技能的东西。 ……
从上述谈话中我们依稀可以看出,被“恶魔化”了的米特尼克其实展露更多的是凡人的一面:好奇、寻求刺激、勇于挑战,这样一种行为特征,一旦冲破了常规的束缚就显现出与世俗的冲突了。在米特尼克看来,许多举动只是恶作剧或者玩笑而已,但这些举动却破坏了社会原有的秩序,并造成了难以弥补的伤害,从这一点来看,米特尼克已经超出了纯粹的黑客精神所界定的行为规范,得到公众的口诛笔伐也在情理之中。不过,在一致声讨米特尼克的过程中,强加于他的新的规则约束就真的合适吗?比如不让他接触计算机,不让他上网,甚至不让他从事任何与计算机相关的职业,实际上这就完全杜绝了米特尼克“改邪归正”的路子,从另一个角度考虑,也许正确引导和充分利用,将米特尼克的“通天本领”转化为一种积极的力量,这才是回归到纯粹黑客精神的一条光明之路。
1.3 黑客是怎样炼成的
一直以来,许多追慕黑客威名的人,虽然对计算机和网络技术了解不多,但他们渴望成为黑客的巨大热情却丝毫不弱。在他们看来,只要能用黑客工具“炸”掉网络聊天室里的对头,只要能够“偷”到别人的QQ密码,只要能够蒙骗别人打开恶意邮件而在其机器上“种植”木马后门,他们就觉得头上戴着的已经是地道黑客的帽子了。于是,他们终日穿梭在网络中,使用下载到的各种黑客工具干着自认为“行侠仗义”的事情,尽管自己心里头都不确信这种行径是否就是真正的黑客,但只要有人对此心怀“崇敬”,他们就怡然以高手自居了。 如此看来,“黑客”似乎只是一朝一夕就能“”成功的,确实容易,可是,这样“”成的就真是黑客吗?事实上并不是那么简单。
其实,在黑客的世界里,历练的过程总是从低到高而又泾渭分明的,这可以从一般意义上黑客角色的分化而明显看出:
第一类是那些所谓“Script Kiddies”的人,即“脚本小子”。他们占据了“黑客阵营”的绝大多数。他们崇尚黑客技术(更确切说,应该是崇尚攻击技术),会使用计算机,具备非常
– 7 –
黑客攻防技术进阶
有限的网络和操作系统知识,他们没有太多技能,只是依靠下载他人制作的软件来攻击别人,甚至不知道这些软件究竟是怎样工作的。他们通常都很年轻,有着无穷的热情和冲动,但也有着年轻人所特有的浅薄。
第二类人,他们具备较为丰富的操作系统和网络知识,理解网络协议和各种网络服务,但通常并不编制程序,也不刻意去发现新的问题和漏洞,他们是所谓的“跟随者(Followers)”。
还有很少一部分人,他们擅长发现问题,亲自编写程序以破解之,并公开发布以促使软件商及早弥补漏洞,这样的人被称作“领导者(Leaders)”。
从这种界限分明的层次划分来看,每突破一个层次,追求者所要承受的都是艰苦磨练的过程。事实上,在这一领域跋涉的过程中,对知识的积累和技术的探索起着至关重要的决定作用。不过,许多时候,尽管人们知道知识技能的重要性,但怎样让个人能力的积淀有章可循却是个难解之谜。这里,笔者摘录了一段出自著名黑客组织Rain Forest Puppy(RFP)之手的贴子(来自国外某BBS),细细读下来,也许对人有所启发。
如何成为一个网络高手
我写这个并不是因为我已经厌倦了一遍又一遍地回答同样的问题,而是考虑到这确实是一个有意义的问题,其实很多人(90%)确实需要问这个问题而从来没有去问。
我被问了很多次有关很多领域的问题,比如:什么编程语言你最推荐? 应该读什么书作为开始? 总而言之,如何在安全领域内成为一个有影响的人。既然我的答案和一般的答案有所不同,我打算把我的看法说出来。
----------------------------------------------------------------------- 从哪里开始? -----------------------------------------------------------------------
我的观点可能和一般的看法不同。如果你刚刚起步,我建议你不要从Technotronic、 Bugtraq、Packetstorm、Rootshell (不知道这个是否还在运行?)等等地方开始。没错!不要从那里开始(尽管他们是很好的站点,而且这里没有说你不要去访问他们的站点)。原因十分简单,如果你以为通晓“安全”就是知道最新的漏洞,到头来你将会发现自己一无所获。
我同意,知道什么是好的、什么有漏洞是十分必要的。但是这些并不能够给你的高手之路打下坚实的基础。很好,你知道RDS 是最新的漏洞,你知道如何下载并使用对这个漏洞进行利用的Script工具,你知道如何修补这个漏洞(也许,很多人只知如何攻击,不知道如何防护)。可是,3个月后,补丁漫天飞舞,这个漏洞已经不存在了……现在你的那些知识还有什么用?而且还不算你可能根本没有理解对漏洞的分析。
你的知识是什么?分析?还是攻击手段?
这是我想要再次强调的,人们可能没有注意,已经有很多人认为只要他们知道最新的漏洞他们就是安全专家,No!No!No!所有他们知道的只不过是“漏洞”,而不是“安全”。
例如:你知道有关于phf的漏洞、showcode.asp的漏洞、count.cgi和test.cgi的漏洞,但是你知道为什么它们会成为CGI的漏洞吗?你知道如何编一个安全的通用网关程序吗?你会根据一个CGI的工作状态来判断它可能有哪些漏洞或哪方面的漏洞吗?或者,你是不是只知道这些CGI有漏洞呢?
所以我建议你不要从漏洞开始,就当他们不存在(你知道我的意思),你真正需要做的是从一个普通用户开始。
– 8 –
第一章 黑客概述
----------------------------------------------------------------------- 做一个用户。
-----------------------------------------------------------------------
我的意思是你至少要有一个基本的常规的知识。例如:如果你要从事Web Hacking,你是否可能连浏览器都不会使用?你会打开Netscape,打开IE?很好!你会输入姓名,你知道html是网页,很好,你要一直这样下去,变成一个熟练的用户。你会区别ASP 和CGI是动态的,什么是PHP?什么是转向、Cookies、SSL?你要知道任何一个普通用户可能接触到的关于Web的事物。
不是进攻漏洞,仅仅是使用。没有基础的(也许是枯燥的)的这些东西,你不可能成为高手++,这里没有任何捷径。
好,现在你知道这里的一切了,你用过了。在你Hack UNIX 之前你至少要知道如何Login、Logout,如何使用Shell命令,如何使用一般的常用程序(Mail,FTP,Web,Lynx等等)。
你要想成为一个管理员,你要知道基本的操作。
----------------------------------------------------------------------- 成为一个管理员。 -----------------------------------------------------------------------
现在你已经超过了一个普通用户的领域了,进入了更复杂的领域,你要掌握更多的东西。例如:Web服务器的类型,和其它的有什么区别?如何去配置它。象这样的知识你知道的越多意味着你更了解它是如何工作的?它是干什么的?你理解HTTP协议吗?你知道HTTP1.0 和HTTP1.1之间的区别吗?WEBDAV是什么?知道HTTP1.1虚拟主机有助于建立你的Web服务器……深入、再深入。
操作系统?如果你从来没有配置过NT,你怎么可能去进攻一个NT 服务器?你从来没有用过Rdisk、用户管理器,却期望Crack一个管理员的密码、得到用户权限?你想使用RDS而一切你在NT下的操作一直使用图形界面?再一次,你需要从管理员提升到一个“超级管理员”,这里不是指你有一个超级用户的权限,而是你的知识要贯穿你的所有领域。很好, 你会在图形界面下添加用户,命令行方式怎么样?而且,那些在system32里的.exe文件都是干什么的?你知道为什么USERNETCTL必须要有超级用户权限?你是不是从来没有接触过USERNETCTL?深入,深入……成为一个“百晓生”是关键,不要以为知道如何做到就行了(骗老板可以,骗进攻者??),尽可能知道得越多越好,成为一个技术上的首脑,但是……
-----------------------------------------------------------------------
你不可能知道所有的事情。
-----------------------------------------------------------------------
这是生命中不得不面对的悲惨事实。不要以为你能……如果你认为你可以,你在自欺欺人。你需要做的是选择一个领域,一个你最感兴趣的领域,并进一步学习更多的知识。
成为一个用户,成为一个管理员,成为一个首脑,成为在某领域最优秀的家伙(小伙,姑娘),不要仅仅学习如何使用Web浏览器、怎样写CGI就行了。知道HTTP,知道Web服务器是干什么的?怎么干的?知道在哪里找答案?知道当服务器不正常工作时应该怎样让它工作?当你在你的领域内有一定经验时,你自然就知道怎样进攻了。
这其实是很简单的道理,如果你知道所有的关于这方面的知识,那么,你也就知道安全
– 9 –
黑客攻防技术进阶
隐患在哪里。所有的漏洞,新的、旧的、将来的,你自己就能够发现未知的漏洞(你这时已经是一个网络高手了),你,找漏洞,是的,可以,但你必须首先了解你要找的一切。
所以,放下你手中的Whisker的拷贝,去学习到底那些CGI 是干什么的?它们怎么使通过HTTP的Web服务器有漏洞的?很快你就会知道到底Whisker是干什么的了。
----------------------------------------------------------------------- 编程语言。 ----------------------------------------------------------------------- 在所有最近被问的问题中,最常听到的就是:“你认为应该学习什么编程语言?”
我想,这要看具体情况了。大致上是你准备花费多少时间在上面?你想让这种语言有多少用途?一个程序要多长时间完成?这个程序能完成多么复杂的任务?
以下有几个选项(排列没有什么意义)。 l Visual Basic
一种非常容易学习的语言。有很多关于这方面的书,公开的免费原代码也很多。你应该能够很快的使用它。但是这个语言有一定局限,它并不象诸如C++那样强大,你需要在Windows下运行它,需要一个VB的编程环境(不论盗版还是正版的,反正它不是免费的)。想用VB来编攻击代码或补丁是十分困难的。
l C++
也许是最强大的语言了。在所有的操作系统里都存在。在网上有上吨的原代码和书是免费的,包括编程环境。它比VB要复杂一点,也许掌握它花费的时间要比VB多一点。简单的东西容易学,干复杂活的东西理解起来也要复杂一点,你自己衡量。
l Assembly
最复杂的语言,也是最难学习的语言。如果你把它当作第一个要学习的语言,那么将会难得你头要爆裂。但是,先学会了汇编,其余的还不是小菜;)有一些这样的书,但这方面的教材有减少的趋势。不过,汇编知识对某些方面来说的却至关重要,比如缓冲溢出攻击。
l Perl
一种很不错的语言。它象VB一样容易学习,也象VB一样有局限性。但是它在多数操作平台中都能运行(UNIX和Windows),所以这是它的优势。有很多这方面的书籍,而且它是完全免费的,你可以用它来制作一些普通的攻击工具。它主要用于一些文本方式的攻击技巧,并不适合制作二进制程序。
我想,这是所有你想知道的,有把握地说,C/C++是最佳选择。
------------------------------------------------------------------------ 推荐的书。
----------------------------------------------------------------------- 另外一个问题是我推荐去读什么书。
我个人手边总是有以下的几本书做为参考: Applied Cryptography (Bruce Scheiner)
Linux Application Development (Mike Johnson and Erik Troan)
Windows Assembly Language and Systems Programming (Barry Kauler) Perl Cookbook (Tom Christiansen and Nathan Torkington)(O'Reilly) Linux Programmer's Reference (Richard Petersen)(Osborne)
– 10 –
第一章 黑客概述
All the O'Reilly 'Pocket Reference' books,which include vi、emacs、python、perl、pl/sql、NT、javascript、sendmail、tcl/tk、perl/tk
我总是在这些书的一些基本规则里思考。
我的心得,大部分O'Reilly书非常耐读,找一个你感兴趣的领域专心去钻研吧。:)
RFP在文中引述的问题确实非常典型,可以说是任何初涉网络领域的人都可能迷茫而疑惑的东西。就象RFP所说,最关键的是从哪里开始,并沿着一条怎样的轨迹发展自己。从某种意义上讲,一个网络高手,必然是一个优秀的系统用户,也必然是优秀的系统管理员。只有技术的积淀充实而稳重,在这一领域人的层次才会越来越高。当然,这个渐变为高手的过程,不单说明的是真正黑客的历练程序,对所有酷爱技术并渴望有所成就的人来说,都是值得参考的。
笔者之所以对此进行探讨,并不是鼓励人们去成为黑客,事实上这的确是一个艰苦而曲折的过程,需要人们不断地学习和钻研。在笔者看来,只有具备了某种素质,只有充分积蓄知识和技能,人们才能解决各种层出不穷的难题。就拿网络安全来说,要想杜绝潜在的破坏因素并积极进取和奉献,用纯正的“黑客技术”来武装自己是非常必要的,要防范,就要首先了解攻击,只有知己知彼,才能立于不败之地,这也正是阅读本书从始至终所要贯彻的一种精神。
接下来,就让我们从了解最基本的黑客手段入手,循序渐进地探索与网络安全相关的各种攻防技术吧。
– 11 –
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- huatuo7.cn 版权所有 湘ICP备2022005869号-9
违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务