寫在開篇?
筆者本人 17 年就讀于一所普通的本科學校,20 年 6 月在三年經驗的時候順利通過校招實習面試進入大廠,現就職于某大廠安全聯合實驗室。
我為啥說自學黑客(網絡安全),一般人我還是勸你算了吧。因為我就是那個不一般的人。
首先我談下對黑客&網絡安全的認知,其實最重要的是興趣熱愛,不同于網絡安全工程師,他們大都是培訓機構培訓出來的,具備的基本都是防御和白帽子技能,他們絕大多數的人看的是工資,他們是為了就業而學習,為了走捷徑才去參加培訓。
【資料圖】
而我進大廠主要是靠自學內推進來是,當時我才20歲,基于對黑客的熱愛,我每次工作做完了,就天天抱著本書看,甚至不會計較和主動研究各個技術和包攬一些任務(和大多數躺平族不一樣),可能還是覺得自己不足,我又把tcp/ip協議大全,路由交換°這些基礎啃了一遍,c++都學了一陣子。基于自己的學校出身,我身上也不可避免存在一些自卑心理,老覺得自己是野路子出來,想游擊隊變正規軍系統的梳理。我近個月還在看php(對就是那個最好的編程語言)、后續我也打算在看http權威指南。工作之余還把幾個廠家的設備也主動請纓的摸熟了,可能我身上的這些“匠心”的精神。這就是我不一般的表現吧!
自學網絡安全方向會遇到哪些問題?
1.打基礎的時間長
學基礎花費了很長的時間,光學語言都有好幾門,有的人會止步于學習linux系統及命令的路上,更多的人會停在學習語言上面;
2.知識點掌握的不夠清楚
對于網絡安全基礎內容,很多人不清楚到底需要學到什么程度,導致在基礎上花費了太多的時間;很多同學,買了HTML,PHP,數據庫,計算機網絡
等書籍,每本還很厚,很多寫得也很深,卻發現越學越沒自信,別人學個PHP或者數據庫就可以找到工作,而網絡安全要學這么多,越來越懷疑自己到底是不是選錯了方向;
3.知識點不清楚重點
很多同學花費了很大精力學完了基礎內容,但是發現很多知識和后續網絡安全關聯不大,沒有分清重點,浪費了很多的時間;
4.知識點學習不夠系統
看到很多同學在b站找了好多學習視頻,也到別的平臺購買了一些小課,百度云盤上也有1-2T的學習資料和視頻內容,但每學完一類都需要花費不少的時間,且內容很多有重復性,學完SQL注入后,后面又看到另一家講這個SQL注入,還不錯,又會去學習一遍,發現學完所有web漏洞原理后,自己還是不太確定自己是否把Web漏洞這塊的知識點學全了沒有,導致自己到底學沒學完都不知道;
5.自己解決問題的能力不足
對于初學者來說,很多人都會自己搭建一些靶場,但是由于配置環境的原因,耽誤的時間會很多,尤其對于初學者碰到連續3個問題無法解決的時候,很容易放棄;對于一些動手能力較差的同學,這塊可能會直接影響到繼續學習的信心;
6.實戰水平不足
對于學網絡安全,滲透測試方向的技術,其實很大程度上學習的就是“黑客”技術,通過學習怎么進攻和入侵,才能夠更清楚系統和應用怎么去防御;而這塊也恰恰是網絡安全的核心,如果光有理論,實戰經驗少,也是較難去就業;在平時學習中,除了可以搭建一些開源的靶場用于練習,最好還是要有真實漏洞組成的靶場用于學習,當然也可以去SRC平臺去滲透測試一些真實網站(一定要獲得授權才可以滲透真實網站),但是難度發現又比較大,很多初學者會喪失信心,懷疑自己的能力;
7.內網的學習困難比較大
Web滲透這塊的資料在互聯網各各平臺到處都是,學習起來相對較為輕松,但是內網這塊的資料在互聯網平臺上面相對較少,能夠借鑒的資料不多,另外也需要有相應的靶場配合練習,才能有技術上的提高和經驗的積累,學習難度會比較大。
成為一名合格的網絡安全工程師需要具備哪些能力?
1、網絡安全技術方面
包括端口、服務漏洞掃描、程序漏洞分析檢測、權限管理、入侵和攻擊分析追蹤、網站滲透、病毒木馬防范等。
2、對計算機系統有深入的了解,掌握常用的編程語言
例如windows及企業常用的linux系統,編程語言如:Java、php 、python、c、c++。編程語言理論上來說是多多益善, 如果精力不足,至少要會常用的。
3、了解主流網網絡安全產品
比如防火墻、入侵檢測系統、掃描儀等等。
4、安全協議方面
這部分內容很多和web安全是相通的。熟悉sql 注入原理和手工檢測、熟悉內存緩沖區溢出原理和防范措施、熟悉信息存儲和傳輸安全、熟悉數據包結構、熟悉ddos攻擊類型和原理有一定的ddos 攻防經驗,熟悉iis安全設置、熟悉ipsec、組策略等系統安全設置。
5、機器學習算法
機器學習是一門人工智能的科學,該領域的主要研究對象是人工智能,特別是如何在經驗學習中改善具體算法的性能,涉及概率論、統計學、逼近論、凸分析、算法復雜度理論等多門學科。
6、人工智能
人工智能是研究使計算機來模擬人的某些思維過程和智能行為的學科,主要包括計算機實現智能的原理、制造類似于人腦智能的計算機,使計算機能實現更高層次的應用。人工智能將涉及到計算機科學、心理學、哲學和語言學等學科。可以說幾乎是自然科學和社會科學的所有學科,其范圍已遠遠超出了計算機科學的范疇,人工智能與思維科學的關系是實踐和理論的關系,人工智能是處于思維科學的技術應用層次,是它的一個應用分支。
7、大數據分析
大數據分析是指對規模巨大的數據進行分析。大數據可以概括為4個V, 數據量大(Volume)、速度快(Velocity)、類型多(Variety)、價值(Value)。大數據作為時下最火熱的IT行業的詞匯,隨之而來的數據倉庫、數據安全、數據分析、數據挖掘等等圍繞大數據的商業價值的利用逐漸成為行業人士爭相追捧的利潤焦點。
8、逆向匯編
匯編語言是一切程序的起點和終點,畢竟所有的高級語言都是建立在匯編基礎之上的。在許多高級語言中我們都需要相對明確的語法,但是在匯編中,我們會使用一些單詞縮寫和數字來表達程序。 一句話總結,咱們搞網絡安全的人簡直是全能型人才,文能提筆安天下,武能上馬定乾坤,說的有點浮夸了。
怎么入門?
我們落到具體的技術點上來,網絡安全學習路線整體學習時間大概半年左右,具體視每個人的情況而定。
高清可展開腦圖點擊這里獲取
如果你把每周要學的內容精細化到以下這種程度,你還會擔心學不會,入不了門嗎?
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護網行動
面試題資料
這份完整版的網安學習資料已經上傳,朋友們如果需要可以點擊下方↓鏈接免費領取【保證100%免費】
B站大禮包:《黑客&網絡安全入門&進階學習資源包》免費領取
最后,給大家整理了一個簡單的學習方法,可以借鑒:
1. 多看書
閱讀永遠是最有效的方法,盡管書籍并不一定是最好的入門方式,但書籍的理解需要一定的基礎;但是就目前來看,書籍是比較靠譜的入門資料。
例如:《黑客攻防---web安全實戰詳解》《Web前端黑客技術揭秘》《安全之路:Web滲透技術及實戰案例解析(第2版)》
現在Web安全書籍比較多,因此大家在學習的過程中可以少走了不少的彎路。如果以上推薦書籍閱讀有困難,那就找自己能看得進的 Web 安全的書。
當然紙上談兵終覺淺,不實踐一下怎么好呢。
2.常用工具的學習
學習 Proxy 抓包改包學習 Intruder 爆破模塊學習實用 Bapp 應用商店中的插件使用 Nmap 探測目標主機所開放的端口使用 Nmap 探測目標主機的網絡服務,判斷其服務名稱及版本號對 AWVS 中掃描出的 SQL 注入漏洞使用 SQLMap 進行數據獲取實踐常見漏洞類型的挖掘與利用方
3.學習開發
1.書籍《細說 PHP》
2.實踐使用 PHP 寫一個列目錄的腳本,可以通過參數列出任意目錄的列表使用 PHP 抓取一個網頁的內容并輸出使用 PHP 抓取一個網頁的內容并寫入到Mysql數據庫再輸出。
也可以找一個培訓班,系統的學習一下,都是可以的。
尾言
說實話,上面講到的資料包獲取沒有任何門檻。 但是,我覺得很多人拿到了卻并不會去學習。 大部分人的問題看似是 “如何行動”,其實是 “無法開始”。 幾乎任何一個領域都是這樣,所謂 “萬事開頭難”,絕大多數人都卡在第一步,還沒開始就自己把自己淘汰出局了。 如果你真的確信自己喜歡網絡安全/黑客技術,馬上行動起來,比什么都重要。
網絡安全領域就像是一棵碩果累累的參天大樹,底下站著無數觀望者,他們都聲稱自己喜歡網絡安全,想上樹摘果,但面對時不時垂下來的藤枝,他們卻躊躇不前,猶豫不決。
實際上,只要任意抓住一根藤枝,都能爬上這棵樹。 大部分人缺的,就是這么一個開端。