本文轉自:https://wang66.top/2018/soyouwantobeahacker.htmljavascript
最近,我讀到不少關於參與「信息安全」比賽的問題,還有文章和通常性討論,在我看來,其中存在着很多令人誤導的信息。這個結論可能有點苛刻,我確信他們是出於善意的目的,甚至這些建議也能起到幫助做用(沒有一個標準適合全部建議),但我想我仍是把本身的想法寫出來,但願能幫助新開始學習黑客的人走得更遠。 php
我想作體育鍛煉,我該如何開始?
這是一個不明確的,開放式的和很是模糊的問題,就和有些人提出的他們該怎麼作才能進入信息安全領域的問題十分類似。這裏首先要認識到的是,信息安全有大量的領域,在這些數量巨大的領域中,每個領域都是一個終生的學習內容。就像選擇一項運動進行鍛鍊同樣,沒有「最好」的運動,有時候你認爲是最好的,只是由於你最喜歡它。在個人腦海中,有一些信息安全領域的例子,但它們毫不是最詳盡的:html
•web應用安全(Web Application Security)
•逆向工程(Reverse Engineering)
•惡意軟件逆向工程(Malware Reverse Engineering)
•網絡安全(Network Security)
•應急響應(Incident Response)
•標準符合性(Standards Compliance)
•第三方編程/創做工具(Programming / Creating Tools for Others)
•漏洞利用程序開發(Exploit Development)
•取證(Forensics)java
其中一些更具備技術性,而另外一些則更重點關注理論。我保證不管你喜歡什麼總會有一些人以爲無聊,正如你有時會對別人感興趣的事情同樣。如今,若是你讀到這篇文章,你可能對這些領域的任何一個都知之甚少,但重要的是你願意學習,以及你所具備的動力。python
黑客進階
在這個領域中,一個幾乎廣泛存在這些人身上的標誌就是他們自始至終都專一於獨立自主地學習安全技術。不幸的是,在某些方面,安全技術仍然被認爲是一種「黑暗藝術」。我想明白的是爲何有些人會想去知道怎麼樣侵入計算機系統,除非他們本就打算這麼作?所以,當不少人在這個錯誤(有時候是真的)的認知下,遇到有人詢問與安全技術相關的問題時,就會對他有直接的敵意和表現出輕蔑的態度——這只不過是一個「腳本小子」想要學習破解系統,而不是爲了一個好的目的而學習和使用這些知識。事實上,信息安全的「學習」資源是至關脫節的,沒有真正的學習材料的中央存儲庫。linux
須要強調的一點是,若是你想順利併成功地進入信息安全領域,你應該作充分的準備和找到你本身的方法,而不是等待別人拉着你的手,引導你走上正確的道路。能夠在Google上搜索一些相關的看起來和聽起來都有趣的詞條。儘管這有時候彷佛是一場持續不斷地要找到「最好」的學習領域,或者「最好的」資源,或者「最好」的學習方式的鬥爭,每每就會花更多的時間去思考這些問題,而不是花時間去真正地學習。也還能夠在youtube上查找一些實例視頻——若是你不知道其中講的一些是什麼含義的話,那就能夠把這些記下來,列出一個清單,而後用google搜索這些知識點。要學會利用感興趣的點來衍生出你喜歡的話題的知識網絡。web
我須要先學什麼什麼做爲基礎嗎?
固然有了(壞笑~),在你開始以前,你須要對OSI層有充分的瞭解。你須要閱讀那本關於TCP協議的1000頁的書。你還須要在你學習黑客技術以前,精通5種編程語言(至少是!)。你能從源代碼編譯你本身的Linux內核嗎?不會?那就別去接觸黑客技術了。事實上…以上這些都是扯淡,但也是那些想要學習信息安全的人所經常認爲的。成爲一個合格的黑客的話只有一個要求——興趣。將來真正的黑客和腳本小子直接的區別不是知識的差別,而是學習的意願。shell
只要你對如何使用電腦有一個模糊的概念,你就能夠開始了。是的沒錯,就如你沒有完全的搞懂TCP是如何工做的的話,你能夠把它列在本身的任務清單上,並尋找查閱有關它的教程。認爲本身須要大量的必備知識做爲基礎才能夠開始學習本身感興趣的話題的想法是很好笑的。當你在查找出登陸驗證圖形在網站上如何運行是使用了javascript的時候,你就會知道javascript是如何工做的。當你閱讀緩衝區溢出是如何產生的時候,而且有一個python模板,你將會學到不少python的基礎知識。雖然你不會在這基礎語言學習結束以後就能找到一份開發人員的工做(就是把這門語言學的很熟的意思),可是你會找到各種語言之間的通用方法。編程
「好吧,我明白了——我須要本身學一些東西,但你至少能給我一個起點嗎?」安全
固然,有大量免費或者廉價的學習資源,這取決於你對什麼主題感興趣,這裏有一些例子。
Web應用安全
• HackThisSite – 一些基於web的基本挑戰題(link)
• Enigma Group – 與HackThisSite這個網站相似(link)
• OWASP Top 10 –最多見的漏洞的概念(link)
• OWASP Broken Wep Apps –你能夠下載上面的虛擬機來練習黑客技能(link)
• Pentesting Lab –另外一個以網絡爲中心的虛擬機(link)
• 事實上,在vulnhub上有任何你感興趣的東西(link)
• web應用程序黑客手冊-關於網絡黑客和漏洞的書(link)
逆向工程/惡意軟件逆向
• Lena’s Tutorials –被稱爲逆向工程最佳教程之一(link)
• The Legends of Random –另外一套可靠的逆向工程教程(link)
• Reversing: Secrets of Reverse Engineering –一本關於逆向工程基礎的好書(link)
• Practical Malware Analysis –一本專一於逆向惡意軟件的好書(link)
• Malware Analysts Cookbook – 另外一本專一於逆向惡意軟件的書 (link)
網絡安全
• 虛擬機在這一類別中是主要的,由於它們容許你對真實機器進行練習,前往vulnhub 並下載任何看起來頗有趣的VM (link)
• Metasploit Unleashed –經過metasploit測試框架的可靠運行,與VM的鏈接一塊兒使用。(link)
• The Basics of Hacking and Penetration Testing –對那些徹底陌生的人來講,滲透測試是很是基本的。(link)
• Metasploit –滲透測試指南– 另外一本關於在滲透測試中使用metasploit的書(link)
• 由於這是一個很是大的領域,常常把它分解成一個方面,而後專門研究這方面。博客是你最好的朋友。(link)
漏洞利用
• Corelan –到目前爲止,這是學習漏洞利用開發的最好資源(link)
• FuzzySecurity –另外一個很好的學習資源,有一些教程(link)
• Exploit-DB –你能作的最好的事情之一就是找到一些漏洞的例子(一般是附加應用程序),並嘗試獨立地複製這個漏洞。(link)
• Hacking – The Art of Exploitation –這是一本很是棒的書,涵蓋了不少不一樣的開發技術(link)
• The Shellcoders Handbook –另外一本關於漏洞利用開發和shell編程的好書(link)
除此以外,谷歌,谷歌,仍是谷歌。我遺漏了一些領域,好比取證和規範性,由於我我的對它們不感興趣因此我沒有去尋找資源,但我確定有一些很棒的資源。
在免費資源以外,若是你想把本身的職業生涯轉變爲職業道路,你也能夠開始得到證書,讓本身對僱主更有吸引力。若是您對網絡安全感興趣的話,我強烈推薦的一些認證是「Kali Linux的滲透測試」(課程) 。這很容易成爲我在這個領域所經歷過的最好的學習經歷之一,在60天裏教會了我比我本身一年學到的更多的東西。他們的「突破邊界」也是一個很好的課程,更多地關注漏洞利用開發(link).
若是你正在考慮開發你的編程技能,好比SecurityTube的「用於測試人員和黑客的Python」 (link),這是一個很好的基礎教程,它將教你如何作大量的漂亮事情,好比構建你本身的端口掃描器、密碼破解器等等。我並無從就業的角度對他們的認證給予巨大的價值,但我更傾向於把它看做是一個整合的知識和例子,它仍然是有價值的。
「白帽子(Certified Ethical Hacker)」課程是另外一個常常被說起的課程。老實說,這是典型的輕視(關於「道德黑客」的這個說法,譯者也持反感態度,不必這麼區分嘛。),因此我不認爲這是值得的——可是若是你須要一個正式的課程來學習,那麼它多是值得你去作的。在這裏的ethicalhacker.net的論壇上討論了不少這樣的認證和它們的價值。(link)
「Just seeing if you can」
黑客攻擊的目的是獲取信息,但這並非咱們所爲的。建立一個exploit,尋找到一處SQL注入,密碼破解,所作的這些都是爲了讓咱們能朝着控制咱們攻擊的目標發展。我敢保證,幾乎每個新學黑客技術的人開始都想着「看看他們是否能」進入那個學校的網站。「看看他們可否」得到鄰居的WiFi網絡。向他們的朋友發送一個木馬病毒只是爲了「看看他們是否能」被控制。更糟糕的是,你可能會訪問像HackForums.net這樣的地方,看到不少人試圖用RATs來感染別人,創建僵屍網絡等等,在印象中這是黑客行爲,或者更可悲的是,這是你惟一能夠學習的方法。
我須要強調的是,事實並不是如此。任何類型的「只是看看你能不能」的類型練習均可以經過虛擬機、你本身的路由器甚至是CTF或攻防比賽來模擬。即便你能獲取到別人的機器的權限,你打算怎麼處理它呢?你真的會試圖竊取信用卡信息並進行欺詐性交易嗎?你真的會竊取密碼,並偏執地進行追蹤帳戶的行動,以便偷看別人的電子郵件嗎?有不少初學者被起訴的例子,他們沒有意識到本身所犯的罪行的嚴重性。若是你去FBI找工做,在他們看了你文章記錄後,你會但願他們讀到你問如何主持一個僵屍網絡的帖子嗎?這是互聯網上的一個經典例子,若是你真的想要一個信息安全的職業,你須要一個乾淨的記錄來得到你須要作的任何安全許可。由於愚蠢的東西而被抓住是不值得的。
結術語 因此聊了這麼多以後,到底什麼纔是關鍵? •黑客會主動尋找信息,而不是等着別人把信息給他。 •腳本小子和新黑客之間的區別在於學習的慾望。 •你須要嘗試各類信息安全領域來找到你感興趣的東西。 •不要放任何人告訴你的有關學習信息安全是有先決條件的說法,事實並不是如此。 •不值得"看看你是否能"作任何不合法的事情,所獲得的風險和回報是沒有意義的。 •有了課程,攻防競賽,CTF,更重要的是虛擬機,這裏有任何你能夠合法模擬的黑客攻擊場景。 祝你愉快,抱歉,立刻接近尾聲了,享受 pwning boxes(不知道怎麼翻,感受像是黑客的俚語)吧!信息安全是一個很棒的領域,你天天都會學習新的東西。除了全身心投入勇於嘗試以外,沒有比這更好的進入信息安全領域的方式。就像開始學習游泳,從弄溼身體,到學會踩水,再到保持漂浮,一點點的嘗試,總有一天你會學會它的!