怎么讓自己成長為一名黑客高手呢?
黑客是一種精神,是一種永不服輸,敢于挑戰自我,不斷創新的精神.
我們是為了研討電腦的攻防技術,使它不斷完善,從而更好的為人類服務而奮斗的.
我們不是黑客,我們是光明正大的,明白自己在做什么,該做什么.
我們相信,沒有入侵不了的電腦,也沒有不可防御的入侵,只有先后問題.
黑客們的行為特征:
一,熱衷挑戰
二,崇尚自由
三,主張信息共享
四,反叛精神
五,破壞心理 什么是黑客
在日本出版的《新黑客字典》中,對黑客是這樣定義的:“喜歡探索軟件程序并從中增長了其個人才干的人。他們不像絕大多數電腦使用者那樣,只規規矩矩地了解別人指定的狹小的一部分知識”。在Open Source(開放源代碼)旗手ERIC。S。RAYMOND的《The New Hacker's Dictionary》一文中,對“Hacker”的解釋包括了下面幾類人:
一:那些喜歡發掘程序系統內部實現細節的人,在這種發掘過程中,他們延伸并擴展著自己的能力,這和只滿足于學習有限知識的人是截然不同的
二:那些狂熱地沉浸在編程樂趣的人,而且,他們不僅僅是在理論上談及編程
三:一個高超的程序設計專家
四:一個喜歡智力挑戰的,并創造性地突破各種環境限制的人
五:一個惡意的愛管閑事的家伙,他試圖在網絡上逡巡溜達的同時發現一些敏感的信息對最后一類人,ERIC。S。RAYMOND賦予其更恰當的一個稱謂,那就是“Cra
cker”,有就是我們常說的“駭客”,指那些樂于破壞的家伙。當他們在給這個社會制造著麻煩和噱頭的同時,就只能被冠以“駭客”之名。正是因為“駭客”的存在,純正而古老的黑客精神才愈來愈被人曲解,但在真正崇尚黑客精神的一類人眼里,“駭客”與“黑客”是如此的涇渭分明,不可混淆!更有甚者,有些黑客們說:在黑客界,斗爭只存在于“黑客”和“駭客”之間!
黑客群體有自己特有的一套行為準則(the hacker ethic)美國學者史蒂夫。利維在其著名的《黑客電腦史》中所指出的黑客道德準則(the hacker ethic)就是對其最深刻的表述:
(1),通往電腦的路不止一條
(2),所有的信息都應當是免費共享的
(3),一定要打破電腦集權
(4),在電腦上創造的是藝術和美
(5),計算機將使生活更加美好
可以看出,“黑客道德準則”正是這個獨特的文化群體一直心照不宣地遵循著的“江湖規矩”,以這種“江湖規矩”作為參照,黑客們的行為特征也就清晰地呈現給我們了!
一,熱衷挑戰
黑客們多數都有很高的智慧,至少在某些方面表現突出。他們喜歡挑戰自己的能力,編寫高難度程序,破譯電腦密碼給他們帶來了神氣的魔力,認為運用自己的智慧和電腦技術去突破某些著名的防衛措施森嚴的站點是一件極、富刺激性和挑戰性的冒險活動。
二,崇尚自由
黑客文化首先給人的突出感覺就是一種自由不羈的的精神。黑客如同夜行的蝙蝠俠,任意穿梭在網絡空間中。黑客在電腦虛擬世界發揮著自己的極致的自由。
他們隨意登錄在世界各地的網站,完成著現實生活中無法企及的冒險旅程,實現著個人生命的虛擬體驗。正是這種對自由的體驗,使黑客如同吸毒上癮一樣,對網絡入侵樂此不疲
三,主張信息共享
黑客們認為所有的信息都應當是免費的和公開的,認為計算機應該是大眾的工具,而不應該只為有錢人私有。信息應該是不受限制的,它屬于每個人,擁有知識或信息是每個人的天賦權利
四,反叛精神
黑客文化帶有某種反叛世界的傾向,黑客們蔑視傳統,反抗權威,痛恨集權,其行為模式以深深烙上了無政府主義的印記。互聯網的一個顯著特點是平等和共享,對于在網絡中存在的許多禁區,黑客們認為是有違網絡特征的,他們希望建立一個沒有權威,沒有既定程序的社會,所以他們一般都喜歡與傳統,權威和集權做永無休止的斗爭
五,破壞心理
黑客們要在網絡空間來去自如,蔑視權威,就必然夾帶著某些破壞行動。只有突破計算機和網絡的防護措施才能隨意登錄站點,只有顛覆權威設置的程序才能表示反抗權威,也只有摧毀網絡秩序才能達至人人平等的信息共享目標。當然,由于心理動機不同,不同黑客行為的破壞程度也是有所區別的!
這樣一種獨特的黑客文化,必然孕育出黑客群體所讀有的文化態度!
(1)這個世界不斷涌現出許多迷人的問題等待人們去解決
(2)一個問題不應該重復地解決兩次
(3)無聊而乏味的工作是可惡的
(4)自由是美好的,黑客們需要的是自由協作和信息共享,而不是專制和所謂的權威
(5)態度并不能成為能力的替代品,想成為黑客,只有態度是不夠的,更重要的是,還在于努力工作,傾心奉獻,鉆研和實踐!
言語
我寫這個并不是因為我已經厭倦了一遍又一遍地回答同樣的問題,而是考慮到這確實是一個有意義的問題,其實很多人(90%)確實需要問這個問題而沒有問!
我被問了很多次有關安全領域的問題,比如,什么編程語言你最推崇?應該讀什么書作為開始?總而言之,就是如何安全領域內成為一個有影響的人。既然我的答案和一般的答案有所不同,我打算把我的看法說出來!
-------------------------------------------
從哪里開始?
-------------------------------------------
我的觀點可能和一般的看法不同,如果你剛剛起步,我建議你不要從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是干什么的了!
編程語言
在所有最近被提及的問題中,最唱聽到的就是:“你認為應該學習什么編程語言”
我想,這要看具體情況了,如你花費多少時間來學習?你想用這種語言來做什么事?想用多長時間來完成一個程序?這個程序將完成多復雜的任務?
以下有幾個選項:
*Visual Basic
一種非常容易學習的語言,有很多關于這方面的書,公開的免費源代碼也很多,你應該能夠很快地使用它。但是這個語言有一定的局限。它并不像C++那樣強大,你需要在Windows下運行它,需要有一個VB的編程環境。想用VB來編寫攻擊代碼或補丁是十分困難的
*C++
也許是最強大的語言了。在所有的操作系統里都存在。在網上有成噸的源代碼和書是免費的,包括編程環境。它比VB復雜,掌握它需要花費的時間也比掌握VB長。簡單的東西容易學,功能強大的東西理解起來也要困難一些,這需要你自己衡量
*Assembly
也許是最復雜的語言,也是最難學的語言。如果你把它當作自己的初入門語言。那么將會難的你的頭要爆裂。但是,先學會了匯編,其余的編程語言也就變得容易多了。市場上的匯編書籍有減少的趨勢。不過,匯編知識在某些方面至關重要,比如緩沖溢出攻擊。
*perl
一種很不錯的語言。它像VB一樣容易學習,也像VB一樣有局限性。但是它在多數操作平臺上都能運行(unix和windows,所以這是它的優勢。有很多這方面的書籍而且是完全免費的。你可以用它來制作一些普通的攻擊工具,它主要用于一些文本方式的攻擊技巧,并不適合制作二進制程序我想,這是你所有想知道的,有把握的說,C/C++是最佳選擇。
-----------------------------------------
推薦的書
-----------------------------------------
另外一個問題是我推薦去讀什么書。
我個人手邊有以下的幾本書作為參考。
Applied Cryptography (Btuce Scheiner)
Linux Application Development (mike johnson and troan)
windows assembly language and systems programming(barry kauler)
perl cookbook (tom chirstiansen and nathan torkington)(o'reilly)
linux programmer's reference (richard petersen)(osborne)
all the o'reilly 'pocket reference'books,which include vi.emacs.python.
perl.pl/sql。nt.javascript.sendmail.tcl/tk.perl/tk
我總是在這些書的一些基本規則里思考。
我的心得是,大部分o'reilly的書都非常耐讀,找一個你感興趣的領域專心去鉆研吧!