很多朋友问我,想搞网络安全,编程重要吗,选什么语言呢?
国内其实正经开设网络安全专业的学校很少,大部分同学是来自计算机科学、网络工程、软件工程专业的,甚至很多非计算机专业自学的。因此不像这三个专业,有系统的课程体系,大一教什么,大二教什么,大三又教什么,那么清晰明白,网络安全这条路很多都是自学摸索。
我从大二开始入坑网络安全,至今也有十个年头了,也见过许许多多自学成才的例子,工作这些年,先后学习过C、C++、Java、Python、Objective-C、JavaScript、TypeScript,现在回过头来,有一些自己的思考。
很多培训班,一上来就给你讲一堆各种攻击手法、各种工具使用,很多人搞得一头雾水,为什么要学这些,这些背后的原理是什么全都不知道。
我主张学习网络安全可以像做软件开发中的“敏捷开发”,先从一个最小的核心开始,逐步迭代,已臻完善。
这个最小的核心是什么呢?
如果你是偏向于搞网络渗透的方向,这个最小核心就是:
HTTP + Web + 漏洞扫描工具
先把HTTP协议的工作机制掌握了,然后学习Web技术,包括前后端如何协同工作,浏览器如何工作,服务器又是如何处理一个HTTP请求,一个网站是如何搭建起来的等等。接着再学习使用一些Web漏洞扫描工具,学习网站漏洞的概念,开始有“安全”这个意识。
围绕Web相关的知识掌握得差不多了,然后可以开始迭代起来了:
1、有了上面这些基本知识,可以开始学习各种花式的Web漏洞攻击,什么XSS、CSRF、SQL注入、SSRF等等。
2、学习漏洞原理的过程中,开始熟悉一些Web服务器的工作机制,日志技术,容器技术这些知识,以及背后的操作系统Linux/Windows的基础知识。
3、对Web安全有了一些基础,开始把眼光从Web放宽到更广阔的网络安全,这个时候,就需要进一步学习HTTP背后的TCP/IP网络协议族。这时你将会陆续接触到什么是TCP劫持、DNS劫持、ARP欺骗、TCP SYN洪水攻击等等。
4、对网络攻击的手法了解到这个阶段,现有的工具可能就满足不了你的需要,你需要定制一些爬虫、扫描、漏洞POC或其他工具了,是时候来学习一些工具编写了,你可以开始学习Python编程,门槛最低,实用性最强。
5、安全玩到后面,都是在玩漏洞。而学到后面,越来越多时间开始接触到操作系统层面的漏洞,这个时候你就要开始学习一些C语言,通过C知道代码程序底层的执行原理,拓展自己在操作系统层面的知识深度。
6、有了上面这些技术的打底,你的眼界将会被打开,但随之而来,你会发现自己要学的还有很多,但至少到这个时候,你不再像一开始那么迷茫,而是知道自己接下来该去补充哪些东西。
核心:
1.web安全
2.二进制安全(包括逆向工程和漏洞利用)
3.密码学知识
其他基础:
1.软件开发
2.数据库原理
3.编程语言
4.计算机取证分析和隐写术
5.网络协议及网络算法
6.算法与数据结构
7.研究开源工具的基本原理,懂得自制工具
Web安全:
1.注入类:SQL注入;XSS跨站脚本攻击;XXE;命令执行命令注入(bash);文件上传文件下载
2.信息漏洞:源码泄露;敏感信息接口;员工资料泄露;服务器信息泄露
3.逻辑类:权限绕过;条件竞争;数据篡改
网站工作原理:
HTTP协议;Webserver
HTTP协议构成:
1.http-header构成(request response)
2.http-body 构成(request response)
3.http方法
Webserver:
1.Webserver分类
2.Webserver解析流程
3.Webserver基础安全
编程语言:
前端:html,css,javascript
后台和脚本语言:php,java,python
数据库原理:
关系型数据库(MySQL)和非关系型数据库
逆向工程:
1.体系结构:机器指令和汇编语言
2.编译原理:自动机,词法分析,语法分析
3.操作系统:系统的加载与引导
4.计算机组成原理
漏洞挖掘与利用:
1.逆向工程
2.模糊测试
3.什么是漏洞
4.程序员在什么时候会犯错
5.信息收集工具:端口,子域名,代码泄露,员工字典
6.数据包抓取修改重放工具
7.顺手的浏览器及插件(火狐Hackbar)
8.VPS,漏洞验证
9.分析业务功能
10.分析web架构
11.针对性的罗列可能的漏洞类型
12.详细测试:不放过任何一个数据包
13.单一利用:Getshell;敏感信息接口
14.组合利用:XSS+CSRF
密码学:
1.古典密码学:凯撒密码;移位密码
2.现代密码学:对称加密体系(DES;AES)和非对称加密体系
(RSA)
三、网络安全学习路线
先放上路线图
第一阶段:基础操作入门
入门的第一步是学习一些当下主流的安全工具课程并配套基础原理的书籍,一般来说这个过程在1个月左右比较合适。在这个部分我介绍的课程和书籍都属于难度非常低的,就算是完全零基础的小白只要认真学也是能够学会的
课程我推荐下面这套Web安全入门基础课程,难度不大而且完全免费。这套课程至今已经有19万的学习人次,好评度99%。一共包含了40节课,课程内容主要包含了burp、awvs、cs、msf等当下主流工具的使用,而且每节课程都配备了练习靶场。听完课程后再去靶场进行练习,靶场当中有任何不懂的问题也可以在学习群里请教前辈,这样能够大大提升你的学习效率
在学习基础入门课程的同时,推荐同时阅读相关的书籍补充理论知识,这里比较推荐以下几本书:
- 《白帽子讲Web安全》
- 《Web安全深度剖析》
- 《Web安全攻防 渗透测试实战指南》
第二阶段:学习基础知识
在这个阶段,你已经对网络安全有了基本的了解。如果你认真看完了上面推荐的书籍和课程,相信你已经在理论上明白了上面是sql注入,什么是xss攻击,对burp、msf、cs等安全工具也掌握了基础操作。这个时候最重要的就是开始打地基!
所谓的“打地基”其实就是系统化的学习计算机基础知识。而想要学习好网络安全,首先要具备5个基础知识模块:
学习这些基础知识有什么用呢?
计算机各领域的知识水平决定你渗透水平的上限。
- 比如:你编程水平高,那你在代码审计的时候就会比别人强,写出的漏洞利用工具就会比别人的好用;
- 比如:你数据库知识水平高,那你在进行SQL注入攻击的时候,你就可以写出更多更好的SQL注入语句,能绕过别人绕不过的WAF;
- 比如:你网络水平高,那你在内网渗透的时候就可以比别人更容易了解目标的网络架构,拿到一张网络拓扑就能自己在哪个部位,拿到以一个路由器的配置文件,就知道人家做了哪些路由;
- 再比如你操作系统玩的好,你提权就更加强,你的信息收集效率就会更加高,你就可以高效筛选出想要得到的信息
这些基础该学到什么程度呢?
计算机各领域的知识水平决定你渗透水平的上限,但是零基础并不是要把上面的全部都学的很好再去搞渗透,那不仅会劝退大部分人,而且像我前面说的深度学习很容易学的囫囵吞枣,最后反而竹篮打水一场空
作为初学者,可以先学习基础。比如你先学一个编程语言的基础,用PHP做例子,你起码要懂if else这些、连接数据库;比如学数据库,用MySQL做例子,那至少也是要会增删改查、子查询这几个操作;网络的话比较难,也是很抽象的,你做外网的渗透,至少要懂基础的http协议,知道端口是什么,知道网站是怎么架设起来的;操作系统的基础相对比较好学,主要是各种命令的作用,各种软件的安装和使用
学习书籍和资源推荐:
《HTTP权威指南》
《Python核心编程》
《PHP和MySQL Web开发》
《JavaScript高级程序设计》
靶场:
Damn Vulnerable Web Application
Audi-1/sqli-labs
BUUCTF
bugku
网络信息安全攻防平台
第三阶段:实战操作
1.挖SRC
挖SRC的目的主要是讲技能落在实处,学习网络安全最大的幻觉就是觉得自己什么都懂了,但是到了真的挖漏洞的时候却一筹莫展,而SRC是一个非常好的技能应用机会
SRC平台:
2.从技术分享帖(漏洞挖掘类型)学习
观看学习近十年所有0day挖掘的帖,然后搭建环境,去复现漏洞,去思考学习笔者的挖洞思维,培养自己的渗透思维!
安全大佬博客:
书籍推荐:
- 《WEB之困-现代WEB应用安全指南》
- 《内网安全攻防渗透测试安全指南》
- 《Metasploit渗透测试魔鬼训练营》
- 《SQL注入攻击与防御》
- 《黑客攻防技术宝典-Web实战篇(第2版)》
到这一步,再加上之后对挖掘漏洞的技术多加练习与积累实战经验,基本就可以达到安全工程师的级别
最后
为了帮助大家更好的学习网络安全,小编给大家准备了一份网络安全入门/进阶学习资料,里面的内容都是适合零基础小白的笔记和资料,不懂编程也能听懂、看懂,所有资料共282G,朋友们如果有需要全套网络安全入门+进阶学习资源包,可以点击免费领取(如遇扫码问题,可以在评论区留言领取哦)~
😝有需要的小伙伴,可以点击下方链接免费领取或者V扫描下方二维码免费领取🆓
————————————————
👉CSDN大礼包🎁:全网最全《网络安全入门&进阶学习资源包》免费分享(安全链接,放心点击)👈