天天看點

自學黑客十餘年,我是如何成為一名進階安全工程師的?

作者:秃頭程式員ya

1. 前言

說實話,一直到現在,我都認為絕大多數看我這篇文章的讀者最後終究會放棄,原因很簡單,自學終究是一種适合于極少數人的學習方法,而且非常非常慢,在這個過程中的變數過大,稍有不慎,就會與當初的理想失之交臂。

文末準備了學習路線。

但是,畢竟有像我當年一樣的年輕人,他們有毅力、有理想,他們真的可以堅持十年來學習這門技術,而如果有人稍加指導,就有可能将他的自學時間縮短一倍,甚至更多。是以,本着不漏掉一個人的初心,便有了這篇長文,這篇文章除了提煉了我自己長達十年的自學曆程,就我這麼多年的經驗來看,更多的人之是以沒能學好,其實就是内在的東西準備的過于潦草了,希望本文能對想要自學的讀者提供力所能及的幫助。

自學黑客十餘年,我是如何成為一名進階安全工程師的?

2. 經驗

學習十餘年的經驗,最終我的心得是——決定大多數人是否能夠學會這個技術的關鍵點,是對一些基本問題的了解是否準确。

用人話說就是,用遵循世間規則的智慧(道)去引導内心的沖動與目标(術)的能力決定你這次學習的最終結局(甚至是更大的,這一生的結局)。

下面我就從三個典型的認知謬誤分别講解這個問題:

首先,是終點與成長的博弈。

我曾經問過很多學習黑客技術的初學者為什麼要學習這個,我得到的最多答案就是“我要變得很牛逼”,然而至于如何才算牛逼呢,他們的答案是“如果我學會黑客技術,我就_____”,而當你繼續問要學習什麼才能這麼牛逼時,基本上就給問住了。

當然,我這篇文章的目的就是為了解決這個被問住的問題,但是筆者現在的經驗畢竟不同于八年前學習的狀态,我感覺自己有義務、也有能力給出各位初學者一個更好的,可以受用一生的答案,是以才有了這段廢話,但就我個人而言,我認為這才是我的心得的精華之所在。

我相信絕大多數閱讀本篇文章的同學都在高中時聽到過一句話,那就是“隻要如何如何學習,就能考上好大學,就成功了!”這種一勞永逸的想法源自于我們人類千百萬年的進化,但是随着近幾千年的發展,這種想法逐漸成為了我們的桎梏。而可悲的是,作為新人類的我們,卻還要忍受高中教育的這種錯誤價值觀的強化,最終的結果是接受更多教育的我們反而被削弱了自己的價值。

經曆過聯考的各位同學都應該心有感觸:

  • 當你在高中時,你被告知必須考上大學才能成功
  • 當你在初入大學認為已經成功之時,你被告知必須修夠學分拿到畢業證才能成功
  • 而當你成功畢業認為已經成功之時,你被告知必須找個好工作才能成功
  • 而當你千辛萬苦終于找個好工作時,你被告知必須出色完成 KPI 快速升職加薪才能成功
  • 當你使出吃奶的勁兒升職加薪之後,你被告知必須在北京買上幾百萬的房子才能成功
  • ……

而如果你一直以這種思維生活/學習下去,那麼你基本上就不會成功,你的每一次目标的達成都會讓你多一分怨氣,少一分鬥志,最後大多數人就局限在這個死循環中被吞沒了。而且更加要命的是,由于你過于關注每次達成“成功”的局部,而無法以更大的格局思考問題。

如果你突破不了基因帶給你的桎梏,那麼你将永遠是芸芸衆生,而我們都知道芸芸衆生中是不可能有黑客這種精英出現的。

是以,在你正式準備學習黑客之前,建議你要先了解一個客觀事實,那就是——隻有成長才是永恒的主題,過程中的成功僅僅是你成長路上的裡程碑而已。

也就是你要搞清楚一件事,所謂的成功隻不過是供你意淫的一個小目标,而并非就是終點,如果你認識不到這一點,那麼就會出現很嚴重的問題。

舉例來說,如果小明認為“如果我要學會黑客技術,我就可以盜美女的 QQ 号啦”,那麼如果小明是按照一個專業黑客的路線發展的話(無此想法的讀者請右上角點選關閉,出門左轉各大黑客網站),小明首先需要做的就是要精通 C 語言。

而學習 C 語言與盜 QQ 這種工具流比起來,簡直不知道要進階多少倍,是以自然也要更困難些,這樣就會導緻小明做着一件實際價值很高,但在小明看來卻不值一提的事(C 語言在小明心裡遠不及盜 QQ 進階),這種落差帶來的認知失調最終會将你學習黑客技術的激情沖的一幹二淨。

是以,學習黑客技術的第一條鐵律就是不要有終點思維,深刻了解成長才是永恒的主題。

其次,是幻想與價值的博弈。

懶惰是最容易容易讓人們産生幻想的行為。因為懶惰,是以不能得到,但是内心又無比渴求,是以隻能通過幻想來麻痹自己。這裡的幻想可能是自己有意識的幻想,也有可能是無無意識的幻想,甚至自己都不知道正處于幻想中。

但是你大可不必為此而自責,最起碼對于我來說,或者我通過觀察周圍的人而得出的結論,包括我在内的幾乎所有人都在無時不刻的與懶惰做着鬥争,例如“事情太多”、“這太難了”、“沒有靈感”等等都是因懶惰而産生的幻覺。是以,任何一位你眼中的大牛無不是通過了無數次與懶惰的殊死博弈才取得的今天的成就。

是以,你要知道,隻有你真正俯下身子去一點點的學習知識,才會使得你離黑客越來越近。但可怕的是,大多數初學者并不懂得這些,他們在内心深處始終都認為有那麼一種靈丹妙藥可以讓他在更短的時間内掌握黑客技術,進而去花費數倍于所謂的“更短時間”的時間去尋求這本就不存在的方法。

是以,學習黑客技術的第二條鐵律就是不要抱有任何幻想、任何偷奸取巧,隻要你決定這條路是自己去走,那麼無論你如何尋找奇技淫巧,最終都不會讓你少走半步。

最後,是浮躁與耐心的博弈。

自大、自滿、眼高手低皆來源于浮躁,而最緻命的是,如今這個社會的整體就是浮躁的。

如果你了解了成長的意義,如果你已堅定信心笃學技術,那麼,你還有可能被最後一塊石頭所絆倒,那就是對自己的耐心。

包括我在内的絕大多數人,在制定目标時都會高估自己的精力、高估自己的效率、高估自己的智商,甚至高估自己對此事的興趣。

這一系列的高估會在學習後半段嚴重幹擾我們的學習效果,那種現實與理想的差距會導緻你對自己能力的認知失調,進而過低的估計自己各方面能力,最終導緻失敗。

是以,學習黑客技術的第三條鐵律就是時刻葆有對低效率的自己的耐心。

3. 要考慮的問題

想要做任何事情之前,一定要想清楚三個問題,分别是你為什麼要做,你願意為此付出什麼,你想要的結果是什麼。而所謂的智慧,就是一個人通過這種方式不斷的調整自己對于各種事情的預期,進而達到一種與外界的平衡。如果将這個思路映射到黑客學習這件事上,大體可以分為如下三個問題。

首先,要考慮清楚你為何要學這個。說白了就是你的動機是什麼,如果你的動機是不可持續的,例如盜個扣(甚至是挖個系統級 0Day 漏洞),那麼我建議你将自己的動機修改為可持續的,例如你想保持一項什麼記錄(甚至是讓其他人更加尊敬你),因為這類動機是在不斷變換的,隻有這類動機才能讓你有一個更加長久的動力源泉,才能促使你堅持的更久,也就能取得更大的成就。

其次,要考慮明白你可以付出什麼。你要清楚的是,任何事情都是有代價的,而且如果你此時的年齡越小,你那麼你對“代價”的了解就越不深刻,這點一定要着重加以注意。

黑客技術是一件非常有魅力、非常有價值,同時也是非常酷的一件事,但是這麼有魅力的事情,如果你想要完成它,要麼需要極佳的運氣,要麼就是需要你付出非人的努力。

舉例來說,最近我們經常看到媒體在報道時說國内某組織的某黑客在幾秒内就攻破了 IE 浏覽器,在幾秒内就繞過了 XX 保護機制。但事實的真相是他們其實就是運作了一個自己準備好的代碼而已,而媒體上說的這幾秒鐘的時間其實是代碼的運作時間。據我說知,他們在參賽之前,整個團隊為了這幾秒鐘的 ShowTime,需要經曆至少十餘個甚至數十個不眠之夜,然後才能打造出可能僅有幾百個位元組的藝術品般的代碼(也就是 Exploit),最後才能拿去現場過五關斬六将。

如果在這個十三億人口的國度裡最牛逼的黑客都需要如此付出,那麼作為目前默默無聞的你來說,想要學會這門技術應該需要多少個不眠之夜呢?

最後,要考慮你的學習方向是什麼。資訊安全領域的方向太多了,如果最粗曠的分,大緻可以分為網絡安全、軟體安全、基礎安全這三類。其中網絡安全包括網絡滲透、通訊安全、電信安全等,軟體安全包括授權控制、漏洞挖掘、加密解密等,基礎安全分為理論安全、密碼學等。

我收到的最多的、也是令我最郁悶的問題就是“你的那幅圖我已經看了,但是我想知道我應該怎麼學呢?或是從何處開始呢?”是的,你沒看錯,縱然我這幅圖獲得了超乎想象的關注,但是仍有很大一部分人似乎并沒有因為這個世界上多出這幅珍貴的圖而獲得什麼,他們仍然是迷茫的,當然,這也并不能全怪他們。

所有人的成長都是從知道自己不需要什麼東西開始的,舉例來說,幾乎 95%以上的大學生其實根本就不知道自己想要什麼,隻知道自己不想要什麼,這其實就是不成熟的一種表現,用我們那個方言講就是“青瓜蛋子”。

那麼“青瓜蛋子”們最需要的是什麼呢?就是前輩們的指導,告訴他們,他們真正的需求是什麼,然後他們恍然大悟,似乎這就真的是他們此時所最需要的東西了。

而就大多數事情而言,根本沒那麼複雜,随意挑選一個你最感興趣的方向就好了;如果挑不出來,那就随意挑一個你感覺自己最擅長的;如果還挑不出來,那就挑一個你感覺最順眼的即可。

學習資訊安全技術如同做其他事情一樣,最終如果你要想有所成就,必然是登上這個領域數座高峰的強者,然而你一開始并不能做到這一點,是以最簡單的方法就是随便挑選一座不是太低的山峰蹬一蹬試試看。因為隻要你能登上其中的一座山峰,就能一覽衆山小,就掌握了快速登頂相鄰山峰的方法。

學習資訊安全技術同樣如此,你應該想找一個不是太淺的方向(例如滲透就有些淺)深入研究下去,等你将這個領域徹底研究明白後,其他方向的技術自然就能觸類旁通了。

4. 學習路線詳解

自學黑客十餘年,我是如何成為一名進階安全工程師的?

【一一幫助網絡安全提升點我一一】

①網絡安全學習路線

②20份滲透測試電子書

③安全攻防357頁筆記

④50份安全攻防面試指南

⑤安全紅隊滲透工具包

⑥網絡安全必備書籍

⑦100個漏洞實戰案例

⑧安全大廠内部視訊資源

⑨曆年CTF奪旗賽題解析

第一步:計算機基礎

這第一步,其實跟網絡安全關系都不太大,而是進入IT領域的任何一個人都要掌握的基礎能力。下面五大課程,是大學老師當年教給我們的,不管你是什麼技術方向最好都好好學的技術,如今看來,仍然不過時:

  • 計算機網絡
  • 計算機組成原理
  • 作業系統
  • 算法與資料結構
  • 資料

這每一門課程其實都内有乾坤,基本都不能做到一次學習就能掌握,而是伴随每個人的職業生涯,不同的技術階段都會有不一樣的認識和感受。

具體學起來建議參考靈活開發,不斷疊代:有一個粗略的認識**->有了進一步的認識->徹底掌握->溫故而知新。**不用糾纏于把一門課程全部學完學懂才進入下一門課程。

第二步:程式設計能力

有了上面的一些基本功後,這個時候就需要動手,來寫點代碼,錘煉一下程式設計的功底。

下面三項,是安全行業的從業者都最好能掌握的語言:

  • Shell腳本:掌握常用的Linux指令,能編寫簡單的Shell腳本,處理一些簡單的事務。
  • C語言(C++可選):C語言沒有複雜的特性,是現代程式設計語言的祖師爺,
  • 适合編寫底層軟體,還能幫助你了解記憶體、算法、作業系統等計算機知識,建議學一下。
  • Python:C語言幫助你了解底層,Python則助你編寫網絡、爬蟲、資料處理、圖像處理等功能性的軟體。是程式員,尤其是黑客們非常鐘愛的程式設計語言,不得不學。

第三步:安全初體驗

有了前面兩步的打底,是時候接觸一些網絡安全的技術了,剛剛開始這個階段,仍然不要把自己圈起來隻學某一個方向的技術。這個階段,我的建議是:但當涉獵,見往事耳。

網絡協定攻擊、Web服務攻擊、浏覽器安全、漏洞攻擊、逆向破解、工具開發都去接觸一下,知道這是做什麼的,在這個過程中去發現自己的興趣,讓自己對網絡安全各種領域的技術都有一個初步的認識。

第四步:分方向

在第三步中,慢慢發現自己的興趣點,是喜歡做各種工具的開發,還是喜歡攻破網站,還是癡迷于主機電腦的攻擊···

這個時候就可以思考自己後面的方向,然後精力開始聚焦在這個方向上,通過上面思維導圖中各自方向的技術去持續深耕,成為某一個領域的大拿。

尾言

說實話,上面講到的資料包擷取沒有任何門檻。

但是,我覺得很多人拿到了卻并不會去學習。

大部分人的問題看似是 “如何行動”,其實是 “無法開始”。

幾乎任何一個領域都是這樣,所謂 “萬事開頭難”,絕大多數人都卡在第一步,還沒開始就自己把自己淘汰出局了。

如果你真的确信自己喜歡網絡安全/黑客技術,馬上行動起來,比什麼都重要。

網絡安全領域就像是一棵碩果累累的參天大樹,底下站着無數觀望者,他們都聲稱自己喜歡網絡安全,想上樹摘果,但面對時不時垂下來的藤枝,他們卻躊躇不前,猶豫不決。

實際上,隻要任意抓住一根藤枝,都能爬上這棵樹。

大部分人缺的,就是這麼一個開端。

參考書籍清單

自學黑客十餘年,我是如何成為一名進階安全工程師的?

所有書籍共計 2632.50 元,大概 15000 頁。這些内容脫産自學的話至少需要 3 年。邊工作邊自學的話,如果工作内容不能與學習内容高度重合,那麼至少需要 5 年以上時間。如果小夥伴需要以上展示資料以及書籍pdf的話,可以點選下方連結領取!

頭條大禮包:《黑客&網絡安全入門&進階學習資源包》免費領取​

繼續閱讀