一、黑客培训从哪里开始? 我的观点可能和一般的看法不同,如果你刚刚起步,我建议你不要从Bugtrap,Technotronic,Rootshell等站点开始。没错!不要从那里开始(尽管它们是很好的站点,而且我的意思并不是说不要去访问这些站点)原因非常简单。如果你认为你通晓“安全”,就是知道最新的漏洞,到头来你将会发现自己一无所获;我同意,知道什么地方有漏洞是十分必要的,但是这些并不能够为你的高手之路打下坚实的基础。比如,你知道RDS是最新的漏洞,知道如何下载并使用对这个漏洞进行利用的Script工具,知道如何修补这个漏洞(也许,很多人只知道如何攻击,并不知道如何防范),可是,3个月后,补丁漫天飞舞,这个漏洞已经不存在了。。。。。现在你的那些知识还有什么用?而且你可能根本没有理解对漏洞的分析! 二、你应该学习的知识是什么?是分析?还是攻击手段? 这是我想要再次强调的,人们可能没有注意,已经有很多人认为他们只要知道最新的漏洞就是安全专家,NO!所有他们知道的只不过是“漏洞”,而不是“安全”;例如,你知道有关于phf的漏洞,showcode.asp的漏洞,但是你知道它们为什么会成为GGI漏洞的吗?你知道如何编一个安全的 通用网关程序吗?你会根据一个GGI的状态来判断它有可能有哪些漏洞或哪方面的漏洞吗?或者,你是不是只知道这些GGI有漏洞呢?所以,我建议你不要从漏洞开始,就当它们不存在(你知道我的意思),你真正需要做的是从一个普通用户开始。 三、从做一个用户开始入手 我的意思是你至少要有一些基本的常规的知识。例如:你如果要从事Web Hacking,你是否连浏览器都不会用?你会打开Netscape,打开IE?很好!你会输入姓名,你知道HTML是网页,很好,你要一直这样下去,变成一个熟练的用户。你会区别ASP和GGI是动态的,什么是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浏览器,怎样写GGI就行了,你知道HTTP和WEB服务器的原理吗?知道当服务器不正常工作时应该怎样使它工作吗?当你在这个领域内有一定经验时,自然就知道怎样攻击和防御了! 这其实是很简单的道理,如果你知道所有的 关于这方面的知识。那么,你就可以知道安全隐患在哪里?面对所有的漏洞时(新的,旧的,将来的)你自己就能够发现未知的漏洞(你这时已经是一个黑客高手了);你找漏洞可以,但你必须首先了解漏洞的来源。所以,放下你手中的Whisker的拷贝,去学习GGI到底是干什么的?它们是怎么使通过HTTP的Web服务器有漏洞的?很快你就会知道到底Whisker是干什么的了! 六、学习网络编程语言 在所有最近被提及的问题中,最唱听到的就是:“你认为应该学习什么编程语言”;我想,这要看具体情况了,如你花费多少时间来学习?你想用这种语言来做什么事?想用多长时间来完成一个程序?这个程序将完成多复杂的任务?以下有几个选项: (1)*Visual Basic:一种非常容易学习的语言,有很多关于这方面的书,公开的免费源代码也很多,你应该能够很快地使用它。但是这个语言有一定的局限。它并不像C++那样强大,你需要在Windows下运行它,需要有一个VB的编程环境。想用VB来编写攻击代码或补丁是十分困难的 (2)*C++:也许是最强大的语言了。在所有的操作系统里都存在。在网上有成吨的源代码和书是免费的,包括编程环境。它比VB复杂,掌握它需要花费的时间也比掌握VB长。简单的东西容易学,功能强大的东西理解起来也要困难一些,这需要你自己衡量 (3)*Assembly:也许是最复杂的语言,也是最难学的语言。如果你把它当作自己的初入门语言。那么将会难的你的头要爆裂。但是,先学会了汇编,其余的编程语言也就变得容易多了。市场上的汇编书籍有减少的趋势。不过,汇编知识在某些方面至关重要,比如缓冲溢出攻击。 (4)*perl:一种很不错的语言。它像VB一样容易学习,也像VB一样有局限性。但是它在多数操作平台上都能运行(unix和windows,所以这是它的优势。有很多这方面的书籍而且是完全免费的。你可以用它来制作一些普通的攻击工具,它主要用于一些文本方式的攻击技巧,并不适合制作二进制程序我想,这是你所有想知道的,有把握的说,C/C++是最佳选择。 |