肝了7天,讓你從小白變黑客!
大家好,我是軒轅。
上一次的《C/C++后端開發(fā)路線圖》的末尾,預(yù)告了網(wǎng)絡(luò)安全方向的學(xué)習(xí)路線,讓大家久等了,今天終于來了。
算上從學(xué)校開始學(xué)習(xí),軒轅已經(jīng)在網(wǎng)安這條路上走了10年了,無論是以前在學(xué)校做安全研究,還是畢業(yè)后在百度、360從事內(nèi)核安全產(chǎn)品和二進(jìn)制漏洞攻防對(duì)抗,我都深知學(xué)習(xí)方法的重要性。沒有一條好的學(xué)習(xí)路徑和好的學(xué)習(xí)方法,往往只會(huì)事倍功半。
回頭看來自己踩過不少坑,走過不少冤枉路,希望我的經(jīng)驗(yàn)?zāi)軐?duì)大家有幫助,尤其是畢業(yè)季的萌新,如果有想從事網(wǎng)絡(luò)安全道路的,歡迎添加軒轅的微信私聊。
網(wǎng)絡(luò)安全再進(jìn)一步細(xì)分,還可以劃分為:網(wǎng)絡(luò)滲透、逆向分析、漏洞攻擊、內(nèi)核安全、移動(dòng)安全、破解PWN等眾多子方向。今天的這篇,主要是針對(duì)網(wǎng)絡(luò)滲透方向,其他方向僅供參考,學(xué)習(xí)路線并不完全一樣,有機(jī)會(huì)的話我再單獨(dú)梳理。
路線圖
先來看一張整體的路線圖,初步了解下這個(gè)方向需要學(xué)習(xí)的知識(shí)有哪些

由于微信壓縮的厲害,想要高清圖的同學(xué)可以在文末添加我的微信,我發(fā)給你。
我一共劃分了六個(gè)階段,但并不是說你得學(xué)完全部才能上手工作,對(duì)于一些初級(jí)崗位,學(xué)到第三四個(gè)階段就足矣。
來吧,話不多說,一起學(xué)起來,見證從青銅變身王者的旅程!
石器時(shí)代
第一個(gè)階段——石器時(shí)代,針對(duì)的是純新手小白剛剛?cè)雸?chǎng)。在這個(gè)階段,主要是打基礎(chǔ),需要學(xué)習(xí)的有五部分內(nèi)容:
Windows
Windows上基礎(chǔ)的一些命令、PowerShell的使用和簡單腳本編寫,以及Windows以后經(jīng)常會(huì)打交道的幾個(gè)重要組件的使用:注冊(cè)表、組策略管理器、任務(wù)管理器、事件查看器等。
除此之外,學(xué)習(xí)在Windows上面搭建虛擬機(jī),學(xué)會(huì)安裝系統(tǒng),為接下來學(xué)習(xí)Linux做準(zhǔn)備工作。
Linux
網(wǎng)絡(luò)安全,必然要與Linux經(jīng)常打交道,我看到很多新人一上來就跟著一些培訓(xùn)班學(xué)習(xí)Kali,學(xué)的云里霧里的。連基本的Linux概念都沒建立起來,就急著學(xué)Kali,這屬于還沒學(xué)會(huì)走路就去學(xué)跑步,本末倒置了。

在基礎(chǔ)階段,主要以使用為主,學(xué)習(xí)文本編輯、文件、網(wǎng)絡(luò)、權(quán)限、磁盤、用戶等相關(guān)的命令,對(duì)Linux有一個(gè)基本的認(rèn)知。
計(jì)算機(jī)網(wǎng)絡(luò)
網(wǎng)絡(luò)安全,計(jì)算機(jī)網(wǎng)絡(luò)肯定是非常重要的存在。作為基礎(chǔ)階段,這一小節(jié)主要從宏觀上學(xué)習(xí)計(jì)算機(jī)網(wǎng)絡(luò),而不是死扣某一個(gè)協(xié)議的某些字段意義。
首先從局域網(wǎng)出發(fā),了解計(jì)算機(jī)通信的基本網(wǎng)絡(luò)——以太網(wǎng),局域網(wǎng)內(nèi)是如何通信的?集線器、交換機(jī)有什么區(qū)別?MAC地址、IP地址、子網(wǎng)、子網(wǎng)掩碼分別是做什么用的?

隨后引出更大的廣域網(wǎng)、互聯(lián)網(wǎng),什么是網(wǎng)絡(luò)通信協(xié)議,通信協(xié)議分層的問題,通過七層和四層模型快速建立起計(jì)算機(jī)網(wǎng)絡(luò)的基礎(chǔ)概念,各層協(xié)議的作用,分別有哪些協(xié)議,這些協(xié)議在當(dāng)今的互聯(lián)網(wǎng)中具體是怎么應(yīng)用的。
Web基礎(chǔ)
網(wǎng)絡(luò)滲透中非常重要的一個(gè)組成部分就是Web安全,要學(xué)習(xí)Web安全,得先從Web前端基礎(chǔ)開始入手。
這一小節(jié)非常簡單,就是學(xué)習(xí)最原始的Web前端三板斧:HTML+CSS+JS的開發(fā)使用,為將來學(xué)習(xí)Web相關(guān)的安全知識(shí)打下基礎(chǔ)。

這一小節(jié)是相對(duì)偏實(shí)際動(dòng)手多一些,需要自己多動(dòng)手進(jìn)行一些網(wǎng)頁編程,尤其是JavaScript的熟悉掌握,了解Ajax是什么東西,常用的jQuery庫也學(xué)習(xí)一下,這都是Web前端中非?;A(chǔ)和常用的內(nèi)容。
數(shù)據(jù)庫基礎(chǔ)
基礎(chǔ)階段的最后一部分,可以來接觸一些數(shù)據(jù)庫的基礎(chǔ)知識(shí)了。
這個(gè)階段主要學(xué)一些理論知識(shí),重點(diǎn)掌握庫、表、索引等概念,然后學(xué)習(xí)SQL的編寫,學(xué)會(huì)增刪改查數(shù)據(jù)。暫時(shí)不用編程來操作數(shù)據(jù)庫。
青銅時(shí)代
度過了石器時(shí)代,你已經(jīng)儲(chǔ)備了一些計(jì)算機(jī)的基礎(chǔ)知識(shí):操作系統(tǒng)的使用,網(wǎng)絡(luò)協(xié)議,前端基礎(chǔ),數(shù)據(jù)庫初識(shí),但這距離做網(wǎng)絡(luò)安全還不夠,在第二個(gè)青銅階段,你還需要再進(jìn)一步學(xué)習(xí)基礎(chǔ),在第一階段之上,難度會(huì)開始慢慢上升。
這一階段需要學(xué)習(xí)的知識(shí)有:
Web進(jìn)階
在前面的石器時(shí)代,咱們初步接觸了網(wǎng)頁編程,了解了網(wǎng)頁的基本原理。不過那時(shí)候是純前端的,純靜態(tài)的網(wǎng)頁,沒有接觸后端。在這個(gè)進(jìn)階的階段,你要開始接觸Web后端的內(nèi)容了。
首先從常用的兩大主流Web服務(wù)器出發(fā),學(xué)習(xí)Apache和Linux的基本知識(shí),隨后引出動(dòng)態(tài)網(wǎng)頁的基本原理,從CGI/Fast-CGI過渡到后來的ASP/PHP/ASPX/JSP等動(dòng)態(tài)網(wǎng)頁技術(shù),了解它們的發(fā)展歷史,演變過程和基礎(chǔ)的工作原理。

最后再學(xué)習(xí)一些Web開發(fā)中的基礎(chǔ)知識(shí):表單的操作、Session/Cookie、JWT、LocalStorage等等,了解這些基本的術(shù)語都是什么意思,做什么用,解決了什么。
PHP編程
學(xué)習(xí)Web后端開發(fā),得搭配學(xué)習(xí)一個(gè)后端開發(fā)語言才行。在這一小節(jié),選擇從PHP入手。
不過要記住,這里選擇PHP不是讓你以后從事PHP的后端開發(fā),也不是說PHP現(xiàn)在有多流行,而是特定歷史背景下,PHP相關(guān)的網(wǎng)站安全問題非常具有代表性,選擇這門語言更方便我們研究安全問題。
由于學(xué)習(xí)的目的不同,所以在學(xué)習(xí)方法上和普通的后端開發(fā)就有所不同了。在這里咱們學(xué)習(xí)一下語法基礎(chǔ),基本的后端請(qǐng)求處理,數(shù)據(jù)庫訪問,然后再接觸一下常用的ThinkPHP框架即可,當(dāng)然如果你有興趣,學(xué)的更深入當(dāng)然更好。
計(jì)算機(jī)網(wǎng)絡(luò)進(jìn)階
第二階段需要再充實(shí)一下計(jì)算機(jī)網(wǎng)絡(luò)的學(xué)習(xí)。這一次,重點(diǎn)把精力放在HTTP/HTTPS以及抓包分析之上。
Linux上的tcpdump必須掌握,包括常見的參數(shù)配置。然后重點(diǎn)學(xué)習(xí)Wireshark分析數(shù)據(jù)包,用Fiddler抓取分析加密的HTTPS流量。

通過在抓包軟件下查看通信流量,對(duì)計(jì)算機(jī)網(wǎng)絡(luò)的認(rèn)識(shí)從抽象變得具象。
加解密技術(shù)
接著,來了解一些網(wǎng)絡(luò)安全領(lǐng)域內(nèi)經(jīng)常打交道的編解碼技術(shù)和加解密技術(shù)。包括base64編碼、對(duì)稱加密、非對(duì)稱加密、哈希技術(shù)等等。

了解它們基礎(chǔ)的概念、做什么用的,解決什么問題,最后再了解下工作原理。
推薦書籍:《加密與解密》
白銀時(shí)代
現(xiàn)在進(jìn)入第三個(gè)階段——白銀時(shí)代,激動(dòng)人心的時(shí)刻就要到來了,在這個(gè)階段,我們開始全面學(xué)習(xí)真正的網(wǎng)絡(luò)安全技術(shù)了,前面兩個(gè)階段打下的基礎(chǔ),在這個(gè)階段,也將派上用場(chǎng)。
這一階段需要學(xué)習(xí)的知識(shí)有:
Web安全入門
有了前面的Web前端和PHP編程的基礎(chǔ),可以來正式學(xué)習(xí)Web安全了。Web安全領(lǐng)域內(nèi)幾大典型的攻擊手法:SQL注入、XSS、CSRF、各種注入、SSRF、文件上傳漏洞等等,每一個(gè)都需要詳細(xì)學(xué)習(xí),一邊學(xué)習(xí)理論,一邊動(dòng)手實(shí)踐。

千萬注意別拿互聯(lián)網(wǎng)上的網(wǎng)站來攻擊學(xué)習(xí),這是違法的行為。自己可以在虛擬機(jī)中搭建一些包含漏洞的網(wǎng)站(網(wǎng)絡(luò)上有很多可以下載來玩),拿自己建的網(wǎng)站練手。
網(wǎng)絡(luò)掃描與注入
前面學(xué)習(xí)了一些Web安全的攻擊手法,但光有這些還不夠,當(dāng)我們面對(duì)攻擊目標(biāo)后,如何尋找攻擊點(diǎn),獲取目標(biāo)的信息至關(guān)重要。
這些信息包括:目標(biāo)運(yùn)行了什么操作系統(tǒng),開放了哪些端口,運(yùn)行了哪些服務(wù),后端服務(wù)是什么類型,版本信息是什么等等,有哪些漏洞可以利用,只有獲取到了這些信息,才能有針對(duì)性的制定攻擊手段,拿下目標(biāo)。

常見的網(wǎng)絡(luò)信息掃描包括端口掃描、網(wǎng)站后臺(tái)掃描、漏洞掃描等等。需要學(xué)習(xí)常用的掃描工具以及它們的工作原理。
信息搜集 & 社會(huì)工程學(xué)
除了上面需要掃描的信息,在網(wǎng)絡(luò)安全中,經(jīng)常還需要調(diào)研很多信息,比如網(wǎng)站的注冊(cè)信息、相關(guān)聯(lián)的人物、網(wǎng)站內(nèi)部的內(nèi)容檢索等等。這就需要學(xué)習(xí)掌握信息搜集和社會(huì)工程學(xué)的相關(guān)技術(shù)。

whois信息用來查詢域名信息,shodan、zoomeye、fofa等網(wǎng)絡(luò)空間搜索引擎檢索IP、域名、URL等背后的信息,Google Hacking利用搜索引擎來檢索網(wǎng)站內(nèi)部信息,這些東西都是在網(wǎng)絡(luò)信息搜集中經(jīng)常用到的技能。
暴力破解
在網(wǎng)絡(luò)攻擊中,當(dāng)掃描到目標(biāo)開放的服務(wù)后,最直接的就是想要登錄進(jìn)去。常見的服務(wù)有SSH、RDP、MySQL、Redis、Web表單等等。
這個(gè)時(shí)候,暴力破解通常會(huì)派上用場(chǎng),通過使用各種服務(wù)常見用戶名密碼組成的字典,通過程序暴力破解。
常用的爆破工具有hydra、超級(jí)弱口令,另外還有一個(gè)mimikatz,常用來獲取Windows系統(tǒng)的密碼。
黃金時(shí)代
上一個(gè)階段,學(xué)習(xí)了一些安全攻擊技術(shù),在這一個(gè)階段,需要學(xué)習(xí)一下安全防御和安全檢測(cè)技術(shù),安全具有攻防兩面性,缺一不可。
WAF技術(shù)
首先要學(xué)習(xí)的就是WAF——Web應(yīng)用防火墻。
Web安全學(xué)習(xí)的是通過Web技術(shù)攻擊計(jì)算機(jī)系統(tǒng),WAF就是檢測(cè)和防御這些安全攻擊。正所謂知己知彼才能百戰(zhàn)百勝,作為攻方,要掌握WAF的工作原理,找到弱點(diǎn)繞過檢測(cè),作為守方,需要不斷加強(qiáng)安全檢測(cè)和防御能力,有效的發(fā)現(xiàn)和抵御Web攻擊。

需要學(xué)習(xí)當(dāng)下主流的WAF軟件所采用的架構(gòu)比如openresty、modsecurity,以及主要的幾種檢測(cè)算法:基于特征的、基于行為的、基于機(jī)器學(xué)習(xí)的等等。
網(wǎng)絡(luò)協(xié)議攻擊 & 入侵檢測(cè)
WAF主要針對(duì)的是Web相關(guān)的安全攻擊,到這一小節(jié),將視野進(jìn)一步拓展到整個(gè)網(wǎng)絡(luò)協(xié)議棧,TCP劫持、DNS劫持、DDoS攻擊、DNS隧道、ARP欺騙、ARP泛洪等等,需要掌握這些傳統(tǒng)經(jīng)典攻擊手段的原理,搭建環(huán)境實(shí)踐,為后續(xù)的內(nèi)網(wǎng)滲透打下基礎(chǔ)。

另外作為防守的一方,還需要學(xué)習(xí)通過網(wǎng)絡(luò)流量分析技術(shù)來進(jìn)行安全檢測(cè),了解常用的網(wǎng)絡(luò)分析技術(shù),檢測(cè)框架,規(guī)則語法,對(duì)以后從事安全相關(guān)開發(fā)或安全防御工作進(jìn)行儲(chǔ)備。
日志技術(shù)
通過日志來發(fā)現(xiàn)攻擊行為是一種最常見的行為,攻擊者的Web請(qǐng)求,系統(tǒng)登錄,暴力破解嘗試等等都會(huì)被系統(tǒng)各種軟件記錄在案,攻擊者得手后也經(jīng)常會(huì)抹除相關(guān)的日志記錄,所以學(xué)習(xí)掌握這些日志,是攻防兩隊(duì)的人都需要學(xué)習(xí)的技能。
常見的日志有系統(tǒng)登錄日志(Windows、Linux)、Web服務(wù)器日志、數(shù)據(jù)庫日志等等。
Python編程
在這個(gè)階段,是時(shí)候來學(xué)習(xí)一些Python編程開發(fā)了。雖然網(wǎng)絡(luò)安全不用經(jīng)常做大量的工程開發(fā),但掌握基本的編程能力,可以用來編寫爬蟲、數(shù)據(jù)處理、網(wǎng)絡(luò)掃描工具、漏洞POC等等,都是非常有用的,而眾多編程語言中,Python無疑是最適合的。
瀏覽器安全
這個(gè)階段的最后一部分,來學(xué)習(xí)了解一些瀏覽器側(cè)的安全知識(shí),夯實(shí)Web安全中與瀏覽器相關(guān)的漏洞攻擊。
需要重點(diǎn)掌握IE、Chrome兩款最主流的瀏覽器特性,瀏覽器的沙盒機(jī)制是什么,同源策略和跨域技術(shù)等等。
鉑金時(shí)代
第三方組件漏洞
前面Web安全相關(guān)的攻擊都是一些很多年的經(jīng)典手法了,經(jīng)過多年的發(fā)展已經(jīng)相當(dāng)成熟,相關(guān)的漏洞早已不如以前多,現(xiàn)在很多時(shí)候的攻擊,都是依靠各種各樣的第三方組件漏洞完成的,所以學(xué)習(xí)研究這些常見第三方組件的漏洞,一方面掌握這些攻擊手法用于實(shí)戰(zhàn)中使用,另一方面觸類旁通,對(duì)從事漏洞挖掘的工作也是非常有幫助的。
研究的對(duì)象主要涵蓋目前互聯(lián)網(wǎng)服務(wù)中實(shí)際使用的一些工程組件,比如Java技術(shù)棧系列Spring全家桶、SSM、Redis、MySQL、Nginx、Tomcat、Docker等等。
內(nèi)網(wǎng)滲透
網(wǎng)絡(luò)滲透中,攻下一個(gè)點(diǎn)后,只是一個(gè)開始,攻入以后如何轉(zhuǎn)移,控制更多的節(jié)點(diǎn),是內(nèi)網(wǎng)滲透研究學(xué)習(xí)的范疇。典型的如當(dāng)年的永恒之藍(lán)病毒,通過SMB協(xié)議漏洞,快速擴(kuò)散傳播,造成了大面積的中招。

內(nèi)網(wǎng)滲透中要學(xué)的東西既多且雜,難度要上升不少,但這是做網(wǎng)絡(luò)滲透的非常重要的一塊兒,必須多啃一啃。這一部分理論較少,偏實(shí)戰(zhàn)性多一些,需要多搭建環(huán)境模擬學(xué)習(xí)。
操作系統(tǒng)安全技術(shù) & 提權(quán)技術(shù) & 虛擬化技術(shù)
通過web等手段滲透進(jìn)入計(jì)算機(jī)后,由于各種限制原因,經(jīng)常會(huì)有提權(quán)的需求,還會(huì)涉及到許多跟操作系統(tǒng)安全機(jī)制緊密相關(guān)的內(nèi)容,所以學(xué)習(xí)一些操作系統(tǒng)的安全知識(shí)也是非常有必要的。
像Windows、Linux上各自的權(quán)限管理機(jī)制,提權(quán)方法和常用的漏洞,工具等等。
最后,再學(xué)習(xí)一些虛擬化技術(shù)相關(guān)的知識(shí),應(yīng)對(duì)可能需要從虛擬機(jī)中逃逸的場(chǎng)景。
王者時(shí)代
CobalStrike & MetaSploit
搞網(wǎng)絡(luò)滲透,這兩個(gè)神器是絕對(duì)少不了的。前面學(xué)習(xí)的信息掃描、漏洞攻擊、內(nèi)網(wǎng)滲透、木馬植入、端口反彈等等各種技術(shù),都可以通過這兩個(gè)神器進(jìn)行綜合運(yùn)用,融會(huì)貫通。同時(shí),這兩個(gè)也是各大黑客團(tuán)隊(duì)經(jīng)常使用的工具軟件。


學(xué)習(xí)使用這兩個(gè)神器,將大大提升攻擊效率,是網(wǎng)絡(luò)滲透人員居家旅行必備之選!
其他安全技術(shù)拓展
到了網(wǎng)絡(luò)滲透的后期階段,想成為一個(gè)安全高手,絕不只是固步自封在自己擅長的領(lǐng)域,需要多學(xué)習(xí)網(wǎng)絡(luò)安全的其他領(lǐng)域,拓展自己的知識(shí)面。
比如二進(jìn)制漏洞攻擊、逆向工程、木馬技術(shù)、內(nèi)核安全、移動(dòng)安全、側(cè)信道攻擊等等,當(dāng)然在學(xué)習(xí)的時(shí)候,不用像專業(yè)方向的同學(xué)那么深入,但需要涉獵了解,豐富自己的知識(shí)面,構(gòu)建全方位的網(wǎng)路安全知識(shí)技能棧。
推薦書籍
以上就是我推薦的學(xué)習(xí)路線圖了,最后再送大家一張圖:

