前言:
想自学网络安全(黑客技术)首先你得了解什么是网络安全!什么是黑客!
网络安全可以基于攻击和防御视角来分类,我们经常听到的 "红队"、"渗透测试" 等就是研究攻击技术,而"蓝队"、"安全运营"、"安全运维"则研究防御技术。
无论网络、Web、移动、桌面、云等哪个领域,都有攻与防两面性,例如 Web 安全技术,既有 Web 渗透,也有 Web 防御技术(WAF)。作为一个合格的网络安全工程师,应该做到攻守兼备,毕竟知己知彼,才能百战百胜。
一、自学网络安全学习的误区和陷阱
1.片面追求工具使用
- 误区:过度依赖现成的安全工具,而不深入理解其背后的原理和技术。
- 陷阱:只学会操作工具而无法应对新的、复杂的安全问题,一旦工具无法解决,就会陷入困境。
2.忽视基础知识
- 误区:急于学习高级的攻击和防御技术,忽略了计算机基础、网络基础、操作系统等基础知识。
- 陷阱:导致知识体系不牢固,在面对实际问题时缺乏系统的分析和解决能力。
3.缺乏实践
- 误区:仅仅阅读理论知识,没有进行实际的操作和实验。
- 陷阱:无法真正掌握技术,理论与实际脱节,难以应对实际的网络安全场景。
4.不注重法律和道德规范
- 误区:认为在自学过程中可以随意尝试攻击他人系统来练习。
- 陷阱:可能会触犯法律,给自己带来严重的后果。
5.盲目跟风学习热门技术
- 误区:看到某种技术热门就马上投入学习,而不考虑自身的基础和实际需求。
- 陷阱:无法形成系统的知识体系,对技术的理解也可能只停留在表面。
6.独自学习,缺乏交流
- 误区:完全依靠自己摸索,不与其他学习者或行业专家交流。
- 陷阱:进步缓慢,容易走入死胡同,错过最新的行业动态和最佳实践。
7.没有系统的学习计划
- 误区:学习内容和顺序混乱,想到什么学什么。
- 陷阱:知识碎片化,难以整合和深入,影响学习效果和效率。
6.轻易相信不可靠的资源
- 误区:从来源不明或质量不可靠的渠道获取学习资料和信息。
- 陷阱:可能学到错误或过时的知识,导致学习方向偏差。
为了避免这些误区和陷阱,在自学网络安全时,要制定合理的学习计划,注重基础知识,多实践,遵守法律法规,积极参与交流,筛选可靠的学习资源。
二、学习网络安全的一些前期准备
在开始学习网络安全之前,您可以做以下一些前期准备:
1.基础知识储备
- 熟悉计算机操作系统,如 Windows、Linux 等,了解系统的基本操作、文件管理和权限设置。
- 掌握计算机网络基础知识,包括 TCP/IP 协议、IP 地址、子网掩码、网关等概念。
- 学习一门编程语言,例如 Python,这将有助于您编写脚本和工具来辅助学习和实践。
2.硬件设备
- 拥有一台性能较好的计算机,能够支持运行虚拟机、各种安全工具和进行实验。
3.软件和工具
- 安装虚拟机软件,如 VMware Workstation 或 VirtualBox,用于创建不同的操作系统环境进行实践。
- 准备一些常用的网络安全工具,如 Wireshark(网络数据包分析工具)、Nmap(网络扫描工具)等。
4.学习资料
- 收集相关的网络安全书籍,如《Web 安全攻防:渗透测试实战指南》《白帽子讲 Web 安全》等。
- 关注一些网络安全相关的网站和论坛,如 FreeBuf、看雪论坛、安全客等,获取最新的资讯和学习资源。
5.制定学习计划
- 明确自己的学习目标,是侧重于 Web 安全、系统安全还是其他领域。
- 根据目标制定一个合理的学习计划,包括每天或每周的学习时间和内容安排。
7.法律和道德意识
- 明确网络安全相关的法律法规,了解在学习和实践过程中的法律边界,确保自己的行为合法合规。
- 培养良好的道德意识,不将所学技术用于非法和不道德的目的。
8.保持学习热情和耐心
- 网络安全知识体系庞大且不断更新,学习过程中可能会遇到困难和挫折,要保持积极的学习态度和足够的耐心。
做好以上准备工作,将为您的网络安全学习之旅打下坚实的基础。
三、网络安全学习路线
以下是一个较为系统的网络安全学习路线以及每个阶段大致的学习时间周期,请注意,具体时间可能因个人学习能力和投入程度而有所不同:
1.基础阶段(2-3 个月)
- 计算机基础知识:包括操作系统(Windows、Linux)的安装与使用、计算机硬件组成等。
- 编程语言:选择 Python 进行学习,掌握基本语法、数据结构、函数等。
- 网络基础:了解 TCP/IP 协议、IP 地址、子网掩码、路由等基础知识。
2.入门阶段(3-4 个月)
- 网络安全基础概念:包括常见的网络攻击手段(如 DDoS、SQL 注入、XSS 等)和防御方法。
- 密码学基础:学习对称加密、非对称加密算法,理解数字签名和证书。
- 系统安全:熟悉 Windows 和 Linux 系统的安全配置、用户权限管理等。
3.中级阶段(4-6 个月)
- Web 安全:深入学习 HTTP 协议、Web 漏洞原理与防范(如 SQL 注入的深入挖掘、文件上传漏洞的高级利用等)。
- 网络扫描与监测:掌握 Nmap、Wireshark 等工具的高级用法。
- 数据库安全:了解常见数据库(如 MySQL、Oracle)的安全配置和漏洞防范。
4.高级阶段(6-9 个月)
- 移动安全:学习 Android 和 iOS 系统的安全机制,以及移动应用的漏洞分析。
- 逆向工程:掌握软件逆向分析的基本方法和工具。
- 应急响应与取证:学会处理网络安全事件,进行数据取证和分析。
5.实践与项目阶段(持续进行)
- 参与开源项目或者实际的网络安全项目,积累实践经验。
- 参加 CTF 比赛,提升实战能力。
7.持续学习与更新(长期)
- 关注网络安全领域的最新动态,学习新的技术和攻击手法。
总之,网络安全的学习是一个长期的过程,需要不断地实践和学习新知识。在每个阶段结束后,都应该进行总结和复习,以巩固所学的知识。
四、书单推荐:
以下是一些学习网络安全的书籍推荐:
《Web安全攻防:渗透测试实战指南》 :
共537页7大章,实战性很强,前期踩点、后期提权、内网渗透等讲解细致,适合入门到进阶学习,还介绍了一些渗透技术、经验和工具等。
《白帽子讲Web安全》 :
499页4大篇18章,作者是阿里最年轻的高级技术专家吴翰清。这本书是作者实际工作经验的总结,也是Web安全核心知识点的集合,具有较强的可操作性和实际参考性,部分章节末尾还附上了作者以前写的博客文章,可用于延伸阅读。
《Web安全深度剖析》 :
362页16章,作者张炳帅。偏向于实战,主要讲解了Web攻击的各种经典手段、方案、核心技术等,还介绍了一些检测方式,适合渗透测试人员、Web开发人员、安全咨询顾问等人员阅读。
《黑客攻防技术宝典(Web实战篇) :
共644页21章,是Web安全领域专家的经验结晶,内容丰富且有条理。不过它是外国著作,阅读门槛相对较高,且翻译可能存在些许差错。此系列还有《黑客攻防技术宝典·系统实战篇》等其他分册。
《黑客攻防实战从入门到精通》 :
476页,作者武新华、孙振辉。围绕攻、防两个角度,采用图例、图释、标注等方式,教授防范服务器被侵入、局域网被攻击等实战技巧,重操作,图文结合的方式使阅读较为轻松,新手也可通读以提高实战技能。
《日志管理与分析权威指南》 :
共337页,由世界级日志管理与分析专家亲笔撰写。书中通过大量实例介绍了日志方面的实践,以及云计算和大数据环境下的日志分析技术和工具,讲解详细,是为数不多讲日志的书籍之一。
《Kali Linux高级渗透测试》 :
419页,印度作者编写。从攻击者的角度审视网络框架,包含大量实例、源码、渗透测试工具、方法和实践,第2版在第1版基础上增加了一些内容,技术参考性更强。
《黑客社会工程学攻防演练》 :
336页,以图片、图释、指引线的方式介绍防护黑客攻击的方法,有利于掌握反黑知识、工具和修复技巧,阅读门槛较低,除了适合安全从业者,也适合网络爱好者作为速查手册。
《XSS跨站脚本攻击剖析与防御》 :
国内第一本专门阐述 XSS 的著作,作者邱永华,共274页8章。充分讲解了跨站脚本相关知识,并贯穿很多案例分析,适合网安相关从业者、Web安全技术相关的教师和感兴趣的人员阅读。
《SQL注入攻击与防御》 :
440页11章,致力于深入讨论 SQL 注入的问题,第2版融入了一些最新的研究成果,条理清晰,包含 SQL 注入的基本原理和保护新兴技术免遭 SQL 注入攻击等方面,兼顾攻与防。
此外,还有一些计算机基础、编程语言以及其他安全技术相关的书籍也值得一读:
《深入理解计算机网络》 :
内容权威,深入、系统地阐述了计算机网络的体系结构、工作原理等,有近600幅图表帮助理解。
《Python核心编程(第三版)》 :
适合有一定经验的读者,包括正则表达式、网络编程、多线程编程、数据库编程等内容。
《代码审计-企业级 Web 代码安全架构》 :
详细介绍代码审计的思路、工具和方法,通过大量案例剖析各种代码安全问题的成因与预防策略,对开发人员和安全技术人员均有参考价值。
网络安全领域知识更新较快,除了阅读书籍,还需关注行业动态,多实践,参加相关的培训和交流活动,以不断提升自己的技能和知识水平。
五、学习网站推荐:
以下是一些学习网络安全的网站推荐:
i春秋:国内较好的安全知识在线学习平台,把复杂的操作系统、工具和网络环境完整地在网页上重现,为学习者提供贴近实际环境的实验平台。
xctf_oj 练习平台:由 xctf 组委会组织开发并面向 xctf 联赛参赛者提供的网络安全技术对抗赛练习平台,汇集了国内外 ctf 网络安全竞赛的真题题库,并支持部分可获取在线题目交互环境的重现恢复。
网络信息安全攻防学习平台:提供基础知识考查、漏洞实战演练、教程等资料。实战演练以 web 题为主,包含基础关、脚本关、注入关、上传关、解密关、综合关等。
ctf-wiki:涵盖了丰富的网络安全技术知识,导航栏展示了多个学习方向。
github:内容丰富,方向多样。包含许多相关项目和资源。
sec-wiki:包含实时行业新闻、安全人员学习方法、技术文章等。
hackdig:提供一些实时行业新闻和老的技术知识。
kali 工具网站:介绍了 kali 虚拟机中的各种工具,需安装 kali 虚拟机后使用。
adworld.xctf.org.cn:可以在此做 ctf 题目。
shentoushi.top:一个不错的聚合平台。
hacksplaining:面向开发人员的在线安全练习平台,可选择类目并根据提示进行操作,方便初学者学习。
tryhackme:提供了许多虚拟机场景,用于闯关和实战演练。
overthewire:适合初学者的靶场,主要涉及 linux 系统命令学习。
hackertest:打开后直接进入输入密码的通关游戏挑战,共20个关卡,不需要很高的编程基础,有一点 html 基础即可。
vulnhub:学习网络安全技术常用的靶场之一,提供了600多个漏洞演练的镜像靶场,可将其虚拟机镜像下载到本地,用 vmware 或 virtualbox 打开在本地使用。
vulhub:一个面向大众的开源漏洞靶场,基于 docker 和 docker-compose 的漏洞环境集合,可通过 docker 的方式部署搭建在本地进行漏洞利用测试。
pentesterlab:国外的渗透测试平台,有很多学习渗透测试的环境和例子,也可按漏洞的 cve 编号搜索练习。
ringzer0team:在线的 ctf 练习平台,有19个类目300多个挑战。
rootme:在线练习网络安全技术的网站,有171个虚拟环境和534个挑战,大部分内容免费。