前言
想自学网络安全(黑客技术),首先得了解什么是网络安全,什么是黑客。网络安全可以基于攻击和防御视角来分类,我们经常听到的'红队'、'渗透测试'等就是研究攻击技术,而'蓝队'、'安全运营'、'安全运维'则研究防御技术。
无论网络、Web、移动、桌面、云等哪个领域,都有攻与防两面性。例如 Web 安全技术,既有 Web 渗透,也有 Web 防御技术(WAF)。作为一个合格的网络安全工程师,应该做到攻守兼备,毕竟知己知彼,才能百战百胜。
一、自学网络安全的误区和陷阱
1. 不要试图先成为一名程序员再开始学习
行为: 从编程开始掌握,前端后端、通信协议、什么都学。
缺点: 花费时间太长,实际向安全过渡后可用到的关键知识并不多。很多安全函数知识甚至名词都不了解,如 unserialize、outfile 等。
2. 不要把深度学习作为入门第一课
很多人都是冲着要把网络安全学好学扎实来的,于是就很容易用力过猛,陷入一个误区:就是把所有的内容都要进行深度学习,但是把深度学习作为网络安全第一课不是个好主意。原因如下:
- 黑箱性明显: 深度学习的黑箱性更加明显,很容易学的囫囵吞枣。
- 门槛高: 深度学习对自身要求高,不适合自学,很容易走进死胡同。
3. 以黑客技能、兴趣为方向的自学误区
行为: 疯狂搜索安全教程、加入各种小圈子,逢资源就下,逢视频就看,只要是黑客相关的。 缺点: 就算在考虑资源质量后的情况下,能学习到的知识点也非常分散,重复性极强。代码看不懂、讲解听不明白,一知半解的情况时而发生。在花费大量时间明白后,才发现这个视频讲的内容其实和自己看的其他知识点是一样的。
4. 不要收集过多的资料
网上有很多关于网络安全的学习资料,动辄就有几个 G 的材料可以下载或者观看。而很多朋友都有'收集癖',一下子购买十几本书,或者收藏几十个视频。 网上的学习资料很多重复性都极高而且大多数的内容都还是几年前没有更新。在入门期间建议'小而精'的选择材料,耐心往下看。
二、自学成功的关键要素
我的学习心得,我认为能不能自学成功的要素有两点。
1. 自身意愿
虽然想要转行学习网络安全的人很多,但是非常强烈的想要转行学好的人是小部分。大部分人只是抱着试试的心态来学习网安,这是完全不可能的。所以能不能学成网安并且就业,最关键的一点就是自己的愿望是否强烈。如果是那种三天打鱼两天晒网的情况,尽早放弃不要浪费时间。
2. 导师指导
如果全程都靠自己摸索是非常难的,对于一个不是本专业的人来说从开始的时候就'无从下手'。更不要说在学习过程中遇到的无数问题很难得到解决,因为我们在学习过程中会遇到无数问题,有的时候一个小问题就能困扰我们几个小时的时间,会导致我们的学习效率很低。而当有一个大佬去给你解答后,你会很快得到答案,并且能理解为什么要这样做,到底是哪里出现了问题,学习效率会非常高。
总结就是自身自觉主动学习再加上导师全程带你,其实学习就是这么简单的事情,无非就是这两个关键的要素,少了其中一个都很难成功。
三、自学网络安全必须注意的问题
(1)打好基础
初学者一定要注意打好基础。其实一个初学者在开始的时候能培养出好的基础很难,这源于在整个学习过程中有专业指导的原因。基础不牢,地动山摇。
(2)交流沟通
切记不要认为自己可以摸索自学成功,能达到一定高度的水平,一定离不开很多专业人的指导,所以多认识一些专业人士尤为重要,圈子真的可以决定我们可以达到什么水平。
(3)效率学习
能快尽量快,如果你已经决定要转行学习网安,就千万别拖泥带水,把大部分的精力都投入进来。高效学习意味着制定计划并严格执行。
(4)学习心态
一定要抱着决心转行的心态来学,自身的意愿强度决定了你是否能转行成功。保持积极乐观,面对困难不退缩。
四、给自学网络安全的初学者的学习建议
- 了解市场: 了解如今的市场,都需要掌握哪些主要技术就可以快速就业,目前的企业都需要什么人才,这是你学习的方向和目标。
- 系统规划: 有一个整体学习大纲,要知道自己每天学习什么,做什么练习进行知识巩固,一个阶段学完后应该完成什么项目实战,进行循序渐进的学习,不可以盲目的瞎学。
- 寻求指导: 作为一个初学者一定要记得找专业人士指导你,即使是花点钱也没关系,只要你能把技术学好就行。自己摸索基本都是弯路,很多人为什么学了一两个月就放弃了,因为他不知道路在哪里,整个人都是迷茫的,自然容易放弃。但如果你有了一个导师带你,他就会给你做详细的学习计划,给你安排好一切,在整个学习过程中给你解答疑问,你学习起来就会思路清晰,简单效率。
五、网络安全主要的学习内容
1. 基础阶段
入门的第一步是系统化的学习计算机基础知识,也就是学习以下这几个基础知识模块:操作系统、协议/网络、数据库、开发语言、常用漏洞原理。
- 中华人民共和国网络安全法: 包含 18 个知识点,法律红线不可触碰。
- Linux 操作系统: 包含 16 个知识点,安全人员必备环境。
- 计算机网络: 包含 12 个知识点,TCP/IP 协议栈是核心。
- SHELL: 包含 14 个知识点,脚本自动化能力。
- HTML/CSS: 包含 44 个知识点,Web 前端基础。
- JavaScript: 包含 41 个知识点,前端交互逻辑。
- PHP 入门: 包含 12 个知识点,常见 Web 语言。
- MySQL 数据库: 包含 30 个知识点,数据存储与查询。
- Python: 包含 18 个知识点,安全工具开发首选。
前面的基础知识学完之后,就要进行实操了。因为互联网与信息化的普及网站系统对外的业务比较多,而且程序员的水平参差不齐和运维人员的配置事务,所以需要掌握的内容比较多。建议搭建本地靶场环境(如 DVWA、Pikachu)进行合法授权下的练习。
2. 渗透阶段
掌握常见漏洞的原理、使用、防御等知识。Web 渗透阶段还是需要掌握一些必要的工具。
- SQL 注入: 渗透与防御,包含 36 个知识点。
- XSS 相关: 渗透与防御,包含 12 个知识点。
- 上传验证: 渗透与防御,包含 16 个知识点。
- 文件包含: 渗透与防御,包含 12 个知识点。
- CSRF: 渗透与防御,包含 7 个知识点。
- SSRF: 渗透与防御,包含 6 个知识点。
- XXE: 渗透与防御,包含 5 个知识点。
- 远程代码执行: 渗透与防御,包含 7 个知识点。
主要要掌握的工具和平台:Burp Suite、AWVS、Appscan、Nessus、sqlmap、nmap、shodan、fofa、代理工具 ssrs、hydra、medusa、airs spoof 等。以上工具的练习完全可以利用上面的开源靶场去练习,足够了。
3. 安全管理(提升)
主要包括渗透报告编写、网络安全等级保护的定级、应急响应、代码审计、风险评估、安全巡检、数据安全、法律法规汇编等。
- 渗透报告编写: 包含 21 个知识点。
- 等级保护 2.0: 包含 50 个知识点。
- 应急响应: 包含 5 个知识点。
- 代码审计: 包含 8 个知识点。
- 风险评估: 包含 11 个知识点。
- 安全巡检: 包含 12 个知识点。
- 数据安全: 包含 25 个知识点。
这一阶段主要针对已经从事网络安全相关工作需要提升进阶成管理层的岗位。如果你只学习参加工程师方面的岗位,这一阶段可学可不学。
4. 提升阶段(进阶)
主要包括密码学、JavaSE、C 语言、C++、Windows 逆向、CTF 夺旗赛、Android 逆向等。
- 密码学: 包含 34 个知识点。
- JavaSE 入门: 包含 92 个知识点。
- C 语言: 包含 140 个知识点。
- C++ 语言: 包含 181 个知识点。
- Windows 逆向: 包含 46 个知识点。
- CTF 夺旗赛: 包含 36 个知识点。
- Android 逆向: 包含 40 个知识点。
主要针对已经从事网络安全相关工作需要提升进阶安全架构需要提升的知识。
六、推荐书单
计算机操作系统
- 《编码:隐藏在计算机软硬件背后的语言》
- 《深入理解操作系统》
- 《深入理解 windows 操作系统》
- 《Linux 内核与实现》
编程开发类
- 《windows 程序设计》
- 《Windows 核心编程》
- 《Linux 程序设计》
- 《Unix 环境高级编程》
- 《IOS 编程》
- 《第一行代码 Android》
- 《C 程序语言设计》
- 《C primer plus》
- 《C 和指针》
- 《C 专家编程》
- 《C 陷阱与缺陷》
- 《汇编语言(王爽)》
- 《Java 核心技术》
- 《Java 编程思想》
- 《Python 核心编程》
- 《Linux shell 脚本攻略》
- 《算法导论》
- 《编译原理》
- 《编译与反编译技术实战》
- 《代码整洁之道》
- 《代码大全》
- 《TCP/IP 详解》
- 《Rootkit:系统灰色地带的潜伏者》
- 《黑客攻防技术宝典》
- 《加密与解密》
- 《C++ 反汇编与逆向分析技术揭秘》
- 《Web 安全测试》
- 《白帽子讲 Web 安全》
- 《精通脚本黑客》
- 《Web 前端黑客技术揭秘》
- 《程序员的应用》
- 《英语写作手册:风格的要素》
七、法律与伦理声明
此教程为纯技术分享!本教程的目的决不是为那些怀有不良动机的人提供及技术支持!也不承担因为技术被滥用所产生的连带责任!本教程的目的在于最大限度地唤醒大家对网络安全的重视,并采取相应的安全措施,从而减少由网络安全而带来的经济损失。
重要提示: 所有技术实践必须在法律允许的范围内进行,严禁未经授权扫描、攻击他人系统。遵守《中华人民共和国网络安全法》及相关法规,做一名合法的网络安全从业者。

