天天看點

網絡安全這條路到底該怎麼走?

作者:秃頭程式員ya

我之前就寫過一篇文章專門解答了這個問題。但是還是有很多小夥伴并不清楚這條路該怎麼走下去!

不同于Java、C/C++等後端開發崗位有非常明晰的學習路線,網路安全更多是靠自己摸索,要學的東西又雜又多,難成體系。

網絡安全雖然是計算機衆多方向中的一支,但這個方向中,還可以進一步細分諸多細分方向,不同的方向要學的東西差别還是挺大的,是以需要分開讨論。

網絡安全分支

其實在網絡安全這個概念之上,還有一個更大的概念:資訊安全。我們不去探讨二者在學術劃分上的差別,如無特殊說明,文中将其視為一個概念,我們來看下實際工作方向上,有哪些細分路線。

網絡安全這條路到底該怎麼走?

在這個圈子技術門類中,工作崗位主要有以下三個方向:

安全研發

安全研究:二進制方向

安全研究:網絡滲透方向

下面逐一說明一下。

安全研發

安全行業的研發崗主要有兩種分類:

與安全業務關系不大的研發崗位

與安全業務緊密相關的研發崗位

你可以把網絡安全了解成電商行業、教育行業等其他行業一樣,每個行業都有自己的軟體研發,網絡安全作為一個行業也不例外,不同的是這個行業的研發就是開發與網絡安全業務相關的軟體。

既然如此,那其他行業通用的崗位在安全行業也是存在的,前端、後端、大資料分析等等,也就是屬于上面的第一個分類,與安全業務關系不大的類型。這裡我們重點關注下第二種,與安全業務緊密相關的研發崗位。

這個分類下面又可以分為兩個子類型:

做安全産品開發,做防

做安全工具開發,做攻

安全行業要研發的産品,主要(但不限于)有下面這些:

防火牆、IDS、IPS

WAF(Web網站應用防火牆)

資料庫網關

NTA(網絡流量分析)

SIEM(安全事件分析中心、态勢感覺)

大資料安全分析

EDR(終端裝置上的安全軟體)

DLP(資料洩漏防護)

防毒軟體

安全檢測沙箱

總結一下,安全研發的産品大部分都是用于檢測發現、抵禦安全攻擊用的,涉及終端側(PC電腦、手機、網絡裝置等)、網絡側。

開發這些産品用到的技術主要以C/C++、Java、Python三大技術棧為主,也有少部分的GoLang、Rust。

安全研發崗位,相對其他兩個方向,對網絡安全技術的要求要低一些(隻是相對,部分産品的研發對安全技能要求并不低),甚至我見過不少公司的研發對安全一無所知。在這種情況下,如果除了基本的開發功底以外,對網絡安全技術有所了解,自然會是你面試這些崗位時的加分項。

安全研發崗位,除了通用開發技能的要求以外,可以重點關注一下下面這些技術:

網絡安全這條路到底該怎麼走?

上面列舉的隻是最直接相關的部分,還需要有了解更多安全技術才能更好的開發産品,繼續往下看。

二進制安全

二進制安全方向,這是安全領域兩大技術方向之一。

這個方向主要涉及到軟體漏洞挖掘、逆向工程、病毒木馬分析等工作,涉及作業系統核心分析、調試與反調試、反病毒等技術。因為經常都是與二進制的資料打交道,是以久而久之用二進制安全來統稱這個方向。

這個方向的特點是:需要耐得住寂寞。

比不上安全研發可以有實實在在的産品輸出,也比不上網絡滲透方向聽起來的狂拽炫酷,這個方向更多時間是在默默的分析和研究。

以漏洞挖掘為例,光是學習五花八門的攻擊手法就需要花不少的時間。在這個領域,為了研究一個問題,可能花費數月甚至數年時間,這絕非一般人能堅持下來的。不僅如此,不是勤奮就可以成功,更多還要靠天分。

像騰訊幾大安全實驗室的掌門人,業界知名的TK教主、吳石這些人物,他們已經深谙漏洞挖掘的奧義,并将這門絕技融會貫通,做個夢都能想到新的玩法。不過像這樣的天才實在是少之又少,絕大多數人都無法企及。

如果說程式員是苦逼的話,那二進制安全研究就是苦逼Plus。

如果看了這些你還是有勇氣進入這個領域,那下面這些東西是你需要學的:

網絡安全這條路到底該怎麼走?

這個方向比起安全研發,不僅技術難度更大,提供這些崗位的公司也很少,且基本上分布于北上廣深幾個一線城市。

網絡滲透

這個方向更符合于大部分人對“黑客”的認知,他們能夠黑手機、黑電腦、黑網站、黑伺服器、黑内網,萬物皆可黑。

相比二進制安全方向,這個方向初期更容易入門一些,掌握一些基本技術,拿起各種現成的工具就可以開黑了。

不過,要想從腳本小子變成黑客大神,這個方向越往後,需要學習和掌握的東西就多了:

網絡安全這條路到底該怎麼走?

網絡滲透的方向更偏向于“實戰”,是以對技術在廣度上有更高的要求,從網絡硬體裝置、網絡通信協定、網絡服務(web、郵件、檔案、資料庫等)、到作業系統、攻擊手法等等都需要了解。更偏向于一個全能型的計算機專家,将各種技術融會貫通,以用于“實戰”。

網絡滲透方向的工作有下面幾個方向:

安全服務,俗稱乙方,這是最主要的一個方向,為甲方公司提供安全能力支援,如滲透測試,産品安全檢測等。

安全能力建設,俗稱甲方,國内稍微有點規模的公司都有自己的SRC(安全應急響應中心),也就是有自己的安全團隊。

國家隊:你懂的

學習路線

上面說完了三個大的技術方向後,下面來聊聊該怎麼上路呢?下面說說我的看法。

我們落到具體的技術點上來,網絡安全學習路線,整體學習時間大概半年左右,具體視每個人的情況而定。

如果你把每周要學的内容精細化到這種程度,你還會擔心學不會,入不了門嗎,其實說到底就是學了兩個月,但都是東學一下,西學一下,什麼内容都是淺嘗辄止,沒有深入進去,是以才會有學了2個月,入不了門這種感受。

1、Web安全相關概念(2周)

  • 熟悉基本概念(SQL注入、上傳、XSS、CSRF、一句話木馬等);
  • 通過關鍵字(SQL注入、上傳、XSS、CSRF、一句話木馬等)進行Google/SecWiki;
  • 閱讀《精通腳本黑客》,雖然很舊也有錯誤,但是入門還是可以的;
  • 看一些滲透筆記/視訊,了解滲透實戰的整個過程,可以Google(滲透筆記、滲透過程、入侵過程等);

2、熟悉滲透相關工具(3周)

  • 熟悉AWVS、sqlmap、Burp、nessus、chopper、nmap、Appscan等相關工具的使用;
  • 了解該類工具的用途和使用場景,先用軟體名字Google/SecWiki;
  • 下載下傳無後門版的這些軟體進行安裝;
  • 學習并進行使用,具體教材可以在SecWiki上搜尋,例如:Brup的教程、sqlmap;
  • 待常用的這幾個軟體都學會了可以安裝音速啟動做一個滲透工具箱;

3、滲透實戰操作(5周)

掌握滲透的整個階段并能夠獨立滲透小型站點。 網上找滲透視訊看并思考其中的思路和原理,關鍵字(滲透、SQL注入視訊、檔案上傳入侵、資料庫備份、dedecms漏洞利用等等);

  • 自己找站點/搭建測試環境進行測試,記住請隐藏好你自己;
  • 思考滲透主要分為幾個階段,每個階段需要做那些工作;
  • 研究SQL注入的種類、注入原理、手動注入技巧;
  • 研究檔案上傳的原理,如何進行截斷、雙重字尾欺騙(IIS、PHP)、解析漏洞利用(IIS、Nignix、Apache)等;
  • 研究XSS形成的原理和種類,具體學習方法可以Google/SecWiki;
  • 研究Windows/Linux提權的方法和具體使用;

4、關注安全圈動态(1周)

  • 關注安全圈的最新漏洞、安全事件與技術文章;
  • 通過SecWiki浏覽每日的安全技術文章/事件;
  • 通過Weibo/twitter關注安全圈的從業人員(遇到大牛的關注或者好友果斷關注),天天抽時間刷一下;
  • 通過feedly/鮮果訂閱國内外安全技術部落格(不要僅限于國内,平時多注意積累),沒有訂閱源的可以看一下SecWiki的聚合欄目;
  • 養成習慣,每天主動送出安全技術文章連結到SecWiki進行積澱;
  • 多關注下最新漏洞清單,推薦幾個:exploit-db、CVE中文庫、Wooyun等,遇到公開的漏洞都去實踐下。
  • 關注國内國際上的安全會議的議題或者錄像,推薦SecWiki-Conference;

5、熟悉Windows/Kali Linux(3周)

  • 學習Windows/Kali Linux基本指令、常用工具;
  • 熟悉Windows下的常用的cmd指令,例如:ipconfig,nslookup,tracert,net,tasklist,taskkill
  • 等;
  • 熟悉Linux下的常用指令,例如:ifconfig,ls,cp,mv,vi,wget,service,sudo等;
  • 熟悉Kali Linux系統下的常用工具,可以參考SecWiki《Web Penetration Testing with Kali Linux》、《Hacking with Kali》等;
  • 熟悉metasploit工具,可以參考SecWiki、《Metasploit滲透測試指南》;

6、伺服器安全配置(3周)

  • 學習伺服器環境配置,并能通過思考發現配置存在的安全問題;
  • Windows2003/2008環境下的IIS配置,特别注意配置安全和運作權限,;
  • Linux環境下的LAMP的安全配置,主要考慮運作權限、跨目錄、檔案夾權限等;
  • 遠端系統加強,限制使用者名和密碼登陸,通過iptables限制端口;
  • 配置軟體Waf加強系統安全,在伺服器配置mod_security等系統;
  • 通過Nessus軟體對配置環境進行安全檢測,發現未知安全威脅;

7、腳本程式設計學習(4周)

  • 選擇腳本語言Perl/Python/PHP/Go/Java中的一種,對常用庫進行程式設計學習;
  • 搭建開發環境和選擇IDE,PHP環境推薦Wamp和XAMPP,IDE強烈推薦Sublime;
  • Python程式設計學習,學習内容包含:文法、正則、檔案、網絡、多線程等常用庫,推薦《Python核心程式設計》,不要看完;
  • 用Python編寫漏洞的exp,然後寫一個簡單的網絡爬蟲;
  • PHP基本文法學習并書寫一個簡單的部落格系統,參見《PHP與MySQL程式設計(第4版)》、視訊;
  • 熟悉MVC架構,并試着學習一個PHP架構或者Python架構(可選);
  • 了解Bootstrap的布局或者CSS;

8、源碼審計與漏洞分析(3周)

  • 能獨立分析腳本源碼程式并發現安全問題。
  • 熟悉源碼審計的動态和靜态方法,并知道如何去分析程式;
  • 從Wooyun上尋找開源程式的漏洞進行分析并試着自己分析;
  • 了解Web漏洞的形成原因,然後通過關鍵字進行查找分析;
  • 研究Web漏洞形成原理和如何從源碼層面避免該類漏洞,并整理成checklist。

9、安全體系設計與開發(5周)

  • 能建立自己的安全體系,并能提出一些安全建議或者系統架構。
  • 開發一些實用的安全小工具并開源,展現個人實力;
  • 建立自己的安全體系,對公司安全有自己的一些認識和見解;
  • 提出或者加入大型安全系統的架構或者開發;

這裡可以參考下面這張成長路線圖:

網絡安全這條路到底該怎麼走?

我也整理了一些網安學習資料

部分内容展示

視訊教程

網絡安全這條路到底該怎麼走?

書籍資料

網絡安全這條路到底該怎麼走?

SRC資料包&HW護網行動

網絡安全這條路到底該怎麼走?
網絡安全這條路到底該怎麼走?

面試題資料

網絡安全這條路到底該怎麼走?

源碼&安裝包

網絡安全這條路到底該怎麼走?

需要以上所有籽料的話可以點選:《黑客&網絡安全入門&進階學習資源包》免費領取

1、很多已經買不到的絕版電子書 2、安全大廠内部的教育訓練資料 3、全套工具包 4、100份src源碼技術文檔 5、網絡安全基礎入門、Linux、web安全、攻防方面的視訊 6、應急響應筆記 7、 網絡安全學習路線 8、ctf奪旗賽解析 9、WEB安全入門筆記

最後,給大家整理了一個簡單的學習方法,可以借鑒:

1. 多看書

閱讀永遠是最有效的方法,盡管書籍并不一定是最好的入門方式,但書籍的了解需要一定的基礎;但是就目前來看,書籍是比較靠譜的入門資料。

例如:《黑客攻防---web安全實戰詳解》《Web前端黑客技術揭秘》《安全之路:Web滲透技術及實戰案例解析(第2版)》

現在Web安全書籍比較多,是以大家在學習的過程中可以少走了不少的彎路。如果以上推薦書籍閱讀有困難,那就找自己能看得進的 Web 安全的書。

當然紙上談兵終覺淺,不實踐一下怎麼好呢。

2.常用工具的學習

1.Burpsuite學習 Proxy 抓包改包學習 Intruder 爆破子產品學習實用 Bapp 應用商店中的插件2.Nmap使用 Nmap 探測目标主機所開放的端口使用 Nmap 探測目标主機的網絡服務,判斷其服務名稱及版本号3.SQLMap對 AWVS 中掃描出的 SQL 注入漏洞使用 SQLMap 進行資料擷取實踐常見漏洞類型的挖掘與利用方

3.學習開發

1.書籍《細說 PHP》

2.實踐使用 PHP 寫一個列目錄的腳本,可以通過參數列出任意目錄的清單使用 PHP 抓取一個網頁的内容并輸出使用 PHP 抓取一個網頁的内容并寫入到Mysql資料庫再輸出。

也可以找一個教育訓練班,系統的學習一下,都是可以的。

總結

以上就是我對剛入行網絡安全的朋友的一些個人的建議,最後有一點需要說明一下:

上面列舉到的不同方向的技術不是嚴格意義獨立的,相反,很多時候是相輔相成,需要結合起來,融會貫通。

每個人的認知是有限的,我也不例外。本文隻是我的一家之言,建議大家多看一些人的總結和經驗,橫向對比,兼聽則明,偏聽則暗。

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

實際上,隻要任意抓住一根藤枝,都能爬上這棵樹。 大部分人缺的,就是這麼一個開端。

需要網安資料的話可以點選:《黑客&網絡安全入門&進階學習資源包》免費分享