寫在前面:
本片文章是寫給社團中學習網絡安全的同學的一點指導性文章,大家眾所周知,我們學校並沒有網絡安全這門專業,所有的學習將是完全靠大家自學,社團建立網絡安全戰隊就是為了力所能及的給大家提供最好的資源,幫助大家。本片文章內容只是我的個人觀點,並不全面,本人也是一個剛入門的CTF練習生,所有的東西也是自學,並不全面,沒有系統化學習過,更多資源還需靠自己查找。祝願各位打算從事網安事業的同學加油!理論是枯燥的,但所有的實踐需要理論去支撐!
對於剛剛涉足安全界的同學來說,在沒有老師帶領的情況下,在如何學習網絡安全上充滿了迷茫,網絡安全是一個綜合性學科,涉及領域非常廣,常指網絡系統的硬件、軟件及其系統中的數據受到保護,不因偶然的或者惡意的原因而遭受到破壞、更改、泄露,系統連續可靠正常地運行,網絡服務不中斷。 網絡安全包含網絡設備安全、網絡信息安全、網絡軟件安全。從廣義來說,凡是涉及到網絡上信息的保密性、完整性、可用性、真實性和可控性的相關技術和理論都是網絡安全的研究領域。網絡安全是一門涉及計算機科學、網絡技術、通信技術、密碼技術、信息安全技術、應用數學、數論、信息論等多種學科的綜合性學科。
這么多內容,對於一個剛入門的小白來說,剛開始摸不着頭腦,所以,我根據自己的學習、工作以及實踐經驗列出了我的學習方法,希望可以幫助到更多的學弟學妹。
0x00 計算機基本常識:
首先學習網絡安全,要了解和掌握計算機基本常識,常用軟件使用。這是最最最~基礎的東西。
需要學會基本使用的軟件或技術有:Word、VMware、VPN、Visual Studio、FireFox及其插件、一款編輯器,學會如何截圖、編譯運行程序、使用 Baidu Google查詢資料等,掌握搜索引擎的用法,就等於掌握了網絡上的所有資源,隨取隨用。
0x01 C語言基礎:
學習基礎的 C 語言,不管是否是編程方向,我覺得都有必要了解一些 C 語言,會編 寫簡單的 C 程序代碼。 我們需要的並不是你能想大神一樣用C來寫一個操作系統,我們要的是編程思想,要的是邏輯判斷和程序的執行思想。
在這里,我推薦的入門書籍有:譚浩強《C程序設計》這本書洗的有點亂,需要有一點基礎的人看、《C和指針》,如果從來都沒了解過C,建議去某寶買一本清華大學出版社出版的C語言來看,寫的比較全面。或者去學校圖書館借一本輕松學C也可以。C語言對於初入門的同學來說是一座大山,但一旦翻過了這座大山,前面將會是一馬平川。如果想深入研究C語言,《C和指針》這本書將是你最好的選擇。
0x02 web安全基礎:
你需要了解web應用的各種常見漏洞(知道是什么,如何形成):SQL注入、XSS、CSRF、上傳漏洞、解析漏洞、任意文件包含漏洞、點擊劫持、弱口令、cookie欺騙等,會使用一些常用入侵檢測工具和輔助工具,並入侵一些安全系數較低的web應用。要能判斷某密碼的hash類型、能識別一些常用的web指紋、能在互聯網上搜索目標相關信息、了解一句話木馬並會利用等等。
了解關於web安全的周邊知識,經常去看一些技術論壇或者大神的博客,自己最好搭建有一個博客,來記錄和分享自己對知識點的理解。同時也可以分享給他人學習。
0x03 常用Windows命令:
選做滲透測試的同學,尤其需要首先學習一些常用的 windows 命令(最好在實戰中邊運用 邊練習),特別是入侵檢測是常用命令,如 net user、net localgroup、net use、net share、net start、arp、whoami、regedit、tasklist、find、cp、mkdir、del、dir、 print…… ,我在后期會在博客中將一些Windows的相關命令寫出來供大家參考,同時你也可以去個搜索引擎搜索,不要嫌煩,網絡安全就是要勤動手,才能掌握更多知識。要自己能寫一些批處理腳本,完成一些重復性任務。腳本這個東西,將在你的網絡安全道路上一直伴隨你。
0x04 數據結構:
有走開發方向的同學,這是必學的,其他方向的同學也可以適當了解。
在C語言學習到一定階段后,可以開始了解數據結構,它和C語言相輔相成,可以說在我們學習C語言的后期,很好的對我們C語言知識進行了整理。當學習完成數據結構后就可以寫一些ACM的競賽題目了,我也看到社團中有一部分人也參加了ACM程序設計集訓隊。
0x05 Windows編程:
在數據結構學習完成之后,我覺得就是一個分水嶺了。做滲透方向的就不必繼續深
入 Windows 編程,大可繼續積累網絡安全經驗,但開發、逆向的同學就需要學習 windows 編程了。
Windows 編程無非就是閱讀 MSDN,熟悉每個 windowsAPI 的用法,平時想到的 好點子可以嘗試寫成程序,增加自己的代碼量積累。
windows 編程也是一個積累的過程,需要慢慢了解每個 API,所以學習起來並不緊 張。
0x06 web安全積累期:
其實積累是一個長期的過程,所以也不分期限的。平時可以在如博客園、csdn、看雪,安全科之類的安全社區和大家一起討論,多關注最新的技術、漏洞,平時注意 搜集每個漏洞的成因、利用方法、修補方法,並嘗試在網上尋找實戰的機會。 這段時間還可以學點腳本語言,當掌握了一門順手的腳本語言后就能更快速、更便捷地做很多針對性的攻擊。
0x07 匯編語言
匯編也是一門基礎課程,對以后的逆向破解、漏洞挖掘、木馬免殺的學習都有直接 影響,在 windows 編程的學習期間可以開始學習匯編。 大概了解16位的匯編語言,知道基本語法,重點在32位匯編的學習上。學習匯編語言可以結合自己寫的C程序,將自己寫好的程序調試,單步調試每一句匯編語言,不懂就查。
0x08 逆向破解
在匯編基本語法學習完畢后,可以選擇性地開始學習逆向、破解相關操作。在學習逆向的過程中就可以熟悉之前學習的匯編指令的使用推薦圖書:《加密與解密》
0x09 一門腳本語言
對於做滲透測試方向的同學尤為重要,對於做開發的同學也可以學習一門腳本語言。
我推薦的是python或php,學習 python 可以快速開發出一些有針對性的腳本,而學習 php 可以嘗試進行 web 漏洞的挖掘。 同時也要掌握正則表達。
0x10 Linux使用
學習滲透的同學在這段時間又能分為兩條路,一是web安全,二是內網滲透。web安全偏重於web應用漏洞挖掘和利用,內網滲透偏重於網絡環境的分析、內網計算機的漏洞利用。內網中大部分重要計算機屬於Linux,所以學會Linux基礎的使用,Linux各種服務的搭建、維護、漏洞利用修補是必須的。 推薦圖書:《鳥哥的 Linux 私房菜》 非常好的一本書。
0x11 木馬免殺
在逆向學習完成后,又可以分為幾個小方向:深入破解、exploit、木馬免殺。能夠自己編寫木馬后,最需要的就是免殺。如果編寫的病毒木馬不能運行,也無濟於事。免殺成功與否是運氣、經驗、靈感、技術、耐心的集合體,缺一不可。所以雖然很多人嘗試學習,但最后真正能做到完美的人並不多 推薦圖書:《黑客免殺攻防》
0x12 Exploit二進制漏洞
在逆向學習完成后,又可以分為幾個小方向:深入破解、exploit、木馬免殺。其中Exploit對技術要求較高,回報也最豐厚,所以是很多大牛集結之地。學習exp需要對C、C++有牢固的基礎,並有一雙發現問題的眼睛。在他人眼中可能只是一個軟件崩潰或錯誤信息,在exper眼里就可以是無窮無盡的財富。
0x13 網絡環境利用與win服務器
在Linux基礎學習到一定程度后,可以開始學習網絡,如何利用內網內各種計算機開啟的各種服務,來達到滲透進目標機器的目的。當然,同時也要學習 Windows 服務器的使用,了解什么是域,如何在 windows 環境下使用各種服務。因為一個大內網下一般個人機、目標機是windows系統。
0x14 Windows核心編程
在Windows編程學習到一定程度后就可以開始核心編程,其實二者並無太大區別,只是核心編程更加偏重windows內核的一些機制。當你的技術不僅限於開發桌面應用以后,木馬、病毒這些更接近系統底層的東西既可以滿足要求。這本書對於以后做開發的同學必看不可:《Windows核心編程》、《天方夜譚》、 《寒江獨釣》。
以上是學習過程的總結,作參考使用。
下面是我在網上找的關於網絡安全學習的思維導圖。
供11張,后面附有原圖的下載地址
● 網絡安全緒論
● 掃描與防御技術
● 網絡監聽及防御技術
● 口令破解及防御技術
● 欺騙攻擊及防御技術
● 拒絕服務供給與防御技術
● 緩沖區溢出攻擊及防御技術
● Web攻擊及防御技術
● 木馬攻擊與防御技術
● 計算機病毒
● 網絡安全發展與未來
查看鏈接:https://blog.egsec.cn/archives/402
附件:思維導圖下載
最后:
學習網絡安全還需要學習網絡安全法,要知道什么事情能做,什么事情不能做,一個法律邊緣徘徊的學科,所有我們學習的同時也要守住自己的底線。別動不動就攻擊入侵他人計算機!