黑客技術/信息安全/網路安全如何從零學起?(最後更新2018-01-10)
本文將持續更新:
- 2018-01-10 修改文章格式,增加2條典型問題
- 2017-11-15 遴選推薦答案
- 2017-03-20 原始版本
目錄:
- 緣起——為何撰寫此文
- 心法——術與道的博弈
- 準備——要考慮的問題
- 經驗——學習路線詳解
- 結尾——參考書籍列表
- 迭代——典型問題解答
1. 緣起——為何撰寫此文
從2003年開始接觸黑客技術以來,前前後後解答關於如何學習黑客技術的問題近百次,也曾經多次被一些初學者的誓言所打動,義務當了十餘次老師,一直教到曾經海誓山盟的初學者不好意思聯繫我(有的甚至直接將我拉黑-_-!)為止。說實話,一直到現在,我都認為絕大多數看我這篇文章的讀者最後終究會放棄,原因很簡單,自學終究是一種適合於極少數人的學習方法,而且非常非常慢,在這個過程中的變數過大,稍有不慎,就會與當初的理想失之交臂。
但是,畢竟有像我當年一樣的年輕人,他們有毅力、有理想,他們真的可以堅持十年來學習這門技術,而如果有人稍加指導,就有可能將他的自學時間縮短一倍,甚至更多。因此,本著不漏掉一個人的初心,便有了這篇長文,這篇文章除了提煉了我自己長達十年的自學歷程外,更綜合了這三年我在15PB教出的數百名優秀的信息安全工程師的經驗,由於我已經在《黑客如何學起? - 任曉琿的回答 - 知乎》回答過具體的執行問題,因此這裡主要談內在的東西,其實就我這麼多年的經驗來看,更多的人之所以沒能學好,其實就是內在的東西準備的過於潦草了,希望本文能對想要自學的讀者提供力所能及的幫助。
2. 心法——術與道的博弈
經過我總結提煉數百位自己學生的學習路徑,加上我自己學習十餘年的經驗,最終我的心得是——決定大多數人是否能夠學會這個技術的關鍵點,是對一些基本問題的理解是否準確。
用人話說就是,用遵循世間規則的智慧(道)去引導內心的衝動與目標(術)的能力決定你這次學習的最終結局(甚至是更大的,這一生的結局)。
下面我就從三個典型的認知謬誤分別講解這個問題:
首先,是終點與成長的博弈。
我曾經問過很多學習黑客技術的初學者為什麼要學習這個,我得到的最多答案就是「我要變得很牛逼!」,然而至於如何才算牛逼呢,他們的答案是「如果我學會黑客技術,我就_____」,而當你繼續問要學習什麼才能這麼牛逼時,基本上就給問住了。
當然,我這篇文章的目的就是為了解決這個被問住的問題,但是筆者現在的經驗畢竟不同於八年前我繪製《Windows下Hacker學習發展流程圖 V0.2 Beta》的狀態,我感覺自己有義務、也有能力給出各位初學者一個更好的,可以受用一生的答案,因此才有了這段名為「心法」的廢話,但就我個人而言,我認為這才是我的心得的精華之所在。
我相信絕大多數閱讀本篇文章的同學都在高中時聽到過一句話,那就是「只要如何如何學習,就能考上好大學,就成功了!」這種一勞永逸的想法源自於我們人類千百萬年的進化,但是隨著近幾千年的發展,這種想法逐漸成為了我們的桎梏。而可悲的是,作為新人類的我們,卻還要忍受高中教育的這種錯誤價值觀的強化,最終的結果是接受更多教育的我們反而被削弱了自己的價值。
經歷過高考的各位同學都應該心有感觸:
- 當你在高中時,你被告知必須考上大學才能成功
- 當你在初入大學認為已經成功之時,你被告知必須修夠學分拿到畢業證才能成功
- 而當你成功畢業認為已經成功之時,你被告知必須找個好工作才能成功
- 而當你千辛萬苦終於找個好工作時,你被告知必須出色完成KPI快速升職加薪才能成功
- 當你使出吃奶的勁兒升職加薪之後,你被告知必須在北京買上幾百萬的房子才能成功
- ……
而如果你一直以這種思維生活/學習下去,那麼你基本上就不會成功,你的每一次目標的達成都會讓你多一分怨氣,少一分鬥志,最後大多數人就局限在這個死循環中被吞沒了。而且更加要命的是,由於你過於關注每次達成「成功」的局部,而無法以更大的格局思考問題。
如果你突破不了基因帶給你的桎梏,那麼你將永遠是芸芸眾生,而我們都知道芸芸眾生中是不可能有黑客這種精英出現的。
因此,在你正式準備學習黑客之前,建議你要先了解一個客觀事實,那就是——只有成長才是永恆的主題,過程中的成功僅僅是你成長路上的里程碑而已。
也就是你要搞清楚一件事,所謂的成功只不過是供你意淫的一個小目標,而並非就是終點,如果你認識不到這一點,那麼就會出現很嚴重的問題。
舉例來說,如果小明認為「如果我要學會黑客技術,我就可以盜美女的QQ號啦」,那麼如果小明是按照一個專業黑客的路線發展的話(無此想法的讀者請右上角點擊關閉,出門左轉各大黑客網站),小明首先需要做的就是要精通C語言。
而學習C語言與盜QQ這種工具流比起來,簡直不知道要高級多少倍,因此自然也要更困難些,這樣就會導致小明做著一件實際價值很高,但在小明看來卻不值一提的事(C語言在小明心裡遠不及盜QQ高級),這種落差帶來的認知失調最終會將你學習黑客技術的激情沖的一乾二淨。
因此,學習黑客技術的第一條鐵律就是不要有終點思維,深刻理解成長才是永恆的主題。
其次,是幻想與價值的博弈。
你要知道,只有你真正俯下身子去一點點的學習知識,才會使得你離黑客越來越近。但可怕的是,大多數初學者並不懂得這些,他們在內心深處始終都認為有那麼一種靈丹妙藥可以讓他在更短的時間內掌握黑客技術,從而去花費數倍於所謂的「更短時間」的時間去尋求這本就不存在的方法。
毫不誇張的說,這篇文章本身,就是幻想的一部分,而其實這是我給各位準備的糖衣炮彈,用幻想的外衣包裹著砸碎幻想的內核,期望能以此來拯救包括你在內的芸芸眾生。
因此,學習黑客技術的第二條鐵律就是不要抱有任何幻想、任何偷奸取巧,只要你決定這條路是自己去走,那麼無論你如何尋找奇技淫巧,最終都不會讓你少走半步。
最後,是浮躁與耐心的博弈。
如果你理解了成長的意義,如果你已堅定信心篤學技術,那麼,你還有可能被最後一塊石頭所絆倒,那就是對自己的耐心。
包括我在內的絕大多數人,在制定目標時都會高估自己的精力、高估自己的效率、高估自己的智商,甚至高估自己對此事的興趣。
這一系列的高估會在學習後半段嚴重干擾我們的學習效果,那種現實與理想的差距會導致你對自己能力的認知失調,進而過低的估計自己各方面能力,最終導致失敗。
因此,學習黑客技術的第三條鐵律就是時刻葆有對低效率的自己的耐心。
3. 準備——要考慮的問題
想要做任何事情之前,一定要想清楚三個問題,分別是你為什麼要做,你願意為此付出什麼,你想要的結果是什麼。而所謂的智慧,就是一個人通過這種方式不斷的調整自己對於各種事情的預期,從而達到一種與外界的平衡。如果將這個思路映射到黑客學習這件事上,大體可以分為如下三個問題。
首先,要考慮清楚你為何要學這個。說白了就是你的動機是什麼,如果你的動機是不可持續的,例如盜個QQ(甚至是挖個系統級0Day漏洞),那麼我建議你將自己的動機修改為可持續的,例如你想保持一項什麼記錄(甚至是讓其他人更加尊敬你),因為這類動機是在不斷變換的,只有這類動機才能讓你有一個更加長久的動力源泉,才能促使你堅持的更久,也就能取得更大的成就。
其次,要考慮明白你可以付出什麼。你要清楚的是,任何事情都是有代價的,而且如果你此時的年齡越小,你那麼你對「代價」的理解就越不深刻,這點一定要著重加以注意。
黑客技術是一件非常有魅力、非常有價值,同時也是非常酷的一件事,但是這麼有魅力的事情,如果你想要完成它,要麼需要極佳的運氣,要麼就是需要你付出非人的努力。
舉例來說,最近我們經常看到媒體在報道時說國內某組織的某黑客在幾秒內就攻破了IE瀏覽器,在幾秒內就繞過了XX保護機制。但事實的真相是他們其實就是運行了一個自己準備好的代碼而已,而媒體上說的這幾秒鐘的時間其實是代碼的運行時間。據我說知,他們在參賽之前,整個團隊為了這幾秒鐘的ShowTime,需要經歷至少十餘個甚至數十個不眠之夜,然後才能打造出可能僅有幾百個位元組的藝術品般的代碼(也就是Exploit),最後才能拿去現場過五關斬六將。
如果在這個十三億人口的國度里最牛逼的黑客都需要如此付出,那麼作為目前默默無聞的你來說,想要學會這門技術應該需要多少個不眠之夜呢?
最後,要考慮你的學習方向是什麼。信息安全領域的方向太多了,如果最粗曠的分,大致可以分為網路安全、軟體安全、基礎安全這三類。其中網路安全包括網路滲透、通訊安全、電信安全等,軟體安全包括授權控制、漏洞挖掘、加密解密等,基礎安全分為理論安全、密碼學等。
我收到的最多的、也是令我最鬱悶的問題就是「任老師,你的那幅圖我已經看了,但是我想知道我應該怎麼學呢?或是從何處開始呢?」是的,你沒看錯,縱然我這幅圖獲得了超乎想像的關注,但是仍有很大一部分人似乎並沒有因為這個世界上多出這幅珍貴的圖而獲得什麼,他們仍然是迷茫的,當然,這也並不能全怪他們。
所有人的成長都是從知道自己不需要什麼東西開始的,舉例來說,幾乎95%以上的大學生其實根本就不知道自己想要什麼,只知道自己不想要什麼,這其實就是不成熟的一種表現,用我們那個方言講就是「青瓜蛋子」。
那麼「青瓜蛋子」們最需要的是什麼呢?就是前輩們的指導,告訴他們,他們真正的需求是什麼,然後他們恍然大悟,似乎這就真的是他們此時所最需要的東西了。
而就大多數事情而言,根本沒那麼複雜,隨意挑選一個你最感興趣的方向就好了;如果挑不出來,那就隨意挑一個你感覺自己最擅長的;如果還挑不出來,那就挑一個你感覺最順眼的即可。
學習信息安全技術如同做其他事情一樣,最終如果你要想有所成就,必然是登上這個領域數座高峰的強者,然而你一開始並不能做到這一點,因此最簡單的方法就是隨便挑選一座不是太低的山峰蹬一蹬試試看。因為只要你能登上其中的一座山峰,就能一覽眾山小,就掌握了快速登頂相鄰山峰的方法。
學習信息安全技術同樣如此,你應該想找一個不是太淺的方向(例如滲透就有些淺)深入研究下去,等你將這個領域徹底研究明白後,其他方向的技術自然就能觸類旁通了。
4. 經驗——學習路線詳解
我已經在《黑客如何學起? - 任曉琿的回答 - 知乎》解答了,這裡把圖複製過來一份,省得各位麻煩。
5. 結尾——參考書籍列表
所有書籍共計2632.50元,大概15000頁。這些內容脫產自學的話至少需要3年。邊工作邊自學的話,如果工作內容不能與學習內容高度重合,那麼至少需要5年以上時間。
安利:如果你想6個月內學會以上超過70%的內容,可以考慮來十五派(15PB?)學習,有十五派(15PB?)加持,至少可以幫你節省兩年以上的成長時間,相當於遊戲里花買裝備,從此成為「黑客遊戲世界」中的人民幣玩家!
6. 迭代——典型問題解答
有什麼問題請在留言里提問,我會將一些典型問題彙集到這裡。
A:我想學習黑客技術/信息安全技術,應該如何去學習呢?
Q:我能回答的全部都在這篇文章里了,如果文章里未能包含你感興趣的內容,你方便的話最好有針對性的提出來,這樣我才能有的放矢,否則類似這種比較寬泛的問題我確實難以回答。
A:如果我想學習這門技術,究竟需要一個什麼樣的英語及數學功底呢?
Q:這主要看你對自己的定位,毫不誇張的說,任何理工科崗位,如果你英語和數學很好,相對其他人都會更有競爭力(達到同樣的高度花的力氣相對更少)、更有潛力(職業生涯中更有可能獲得稀缺資源及機會)。但是就目前而言,計算機領域內的分工會越來越細,數學好的人可以專門去設計演算法,而技術好的人可以專門去做實施,因此如果你給自己的定位不是頂級信息安全公司中的技術核心,一般情況下都涉及不到到拼數學底子、拼英語底子的級別。就整體而言,英語與數學疊加起來對一個人技術的影響絕對是低於20%的(其實對於絕大多數人而言低於5%)。
推薦閱讀:
※為什麼radare2普及度不及ida,作為開源工具它有什麼值得改進的地方嗎?
※現在優秀信息安全的公司招實習生標準是什麼?
※作為個人參與網路活動,如何盡量避免被社會工程和降低風險?
※Windows 下最好的文件夾加密軟體有哪些?