你好,我是周杰伦!
最近有同学问我,网络安全的学习路线是什么?
事不宜迟,我们去一个镇楼,看看网络安全有哪些方向,有什么联系和区别,需要学习什么。
在这个技术范畴的圈子里,工作主要有以下三个方向:
研发安全研究:二元安全研究:网络渗透方向
让我们逐一解释。以下卡片可以免费领取网络安全相关的学习资料,帮助你在学习过程中少走弯路:
【你要的网络安全知识,戳这里!!!】
第一个方向:安全研发
你可以把网络安全想成电商行业、教育行业等行业。每个行业都有自己的软件研发,网络安全作为一个行业也不例外。不同的是,这个行业的研发是网络安全业务相关软件的开发。
在这种情况下,安全行业的其他一般性工作也是存在的,比如前端、后端、大数据分析等。然而,除了这类一般的开发工作外,还有一些与保安业务密切相关的RD工作。
这种分类可以分为两个子类型:
做安全产品开发,安全工具开发,攻击。
防火墙、IDS、IPS WAF数据库网关NTA SIEM大数据安全分析EDR DLP杀毒软件安全检测沙盒综上所述,安全研发的大部分产品都是用来检测和防御安全攻击的,涉及到终端端。这些产品开发使用的技术主要是C/C++、Java和Python,也有少量的GoLang和Rust。
相比其他两个方向,RD职位对网络安全技术的要求较低,甚至我见过很多RD公司对安全一无所知。在这种情况下,如果你除了基本的开发技能之外,还懂一些网络安全技术,自然会是你面试这些职位的加分项。
第二个方向:二进制安全
二进制安全方向,这是安全领域的两个技术方向之一。
该方向主要涉及软件漏洞挖掘、逆向工程、病毒木马分析等。,并涉及操作系统内核分析、调试和反调试、反病毒等技术。因为我们经常处理二进制数据,所以随着时间的推移,我们使用二进制安全作为这个方向的通用术语。
这个方向的特点是要耐得住寂寞。
能有实实在在的产品产出比不上安全研发,比不上疯狂酷炫的网络渗透方向。这个方向更多的是时间进行默默的分析和研究。
以漏洞挖掘为例,学习各种攻击技术需要花费大量时间。在这个领域,为了研究一个问题,可能需要几个月甚至几年的时间,这绝不是一般人能坚持下来的。不仅如此,你能成功不是靠努力,而是靠天赋。
像腾讯各大安全实验室的负责人,业内知名的TK领军人物,早已掌握漏洞挖掘奥秘的吴石等人,掌握了这个绝技,做梦都能想到新玩法。然而像这样的天才少之又少,一般人都比不上。
如果说程序员是苦的,那么二进制安全研究就是苦的Plus。
第三个方向:网络渗透
这个方向更符合大多数人对“黑客”的认知。他们可以黑手机,电脑,网站,服务器,内网,什么都可以黑。
相对于二进制安全方向,这个方向前期更容易上手。掌握一些基础技术后,拿起各种现成的工具就可以黑了。
但是,要想从脚本小子成为黑客大神,在这个方向上走的越远,需要学习和掌握的东西就越多。
网络渗透的方向更倾向于“实战”,所以在广度上对技术有更高的要求,从网络硬件设备、网络通信协议、网络服务,到操作系统、攻击战术等等。更倾向于一个全能的计算机专家,集成各种技术进行“实战”。
先说学习路线。有点长了。可以先赞一下,这样不迷路就能及时找回来。
学习路线
我们以网络渗透为例。我们来看看一个新手从零开始需要学习什么,具体的学习路线是什么?
先来个大局观,从大局来把握:
有的图片比较大,上传后压缩的很厉害。想要获得高清图片的朋友可以来这里:
7天之后,一份超级网络渗透学习路线图!
在这个路线图中,有六个阶段,但并不是说你要学完所有的课程才能入门。对于一些初级岗位来说,学习第三或第四阶段就足够了。
以下内容一定要结合上图才能看到最好的效果。建议在浏览器新建一个标签页,打开那张图片,组合着看。
石器时代
第一阶段,石器时代,针对刚进入市场的新手小白。现阶段主要是打基础。有五个部分需要学习:
Windows操作系统
基于Windows的一些命令,PowerShell和简单脚本的使用,以及Windows以后会经常处理的几个重要组件的使用:注册表、组策略管理器、任务管理器、事件查看器等。
另外,学习在Windows上搭建虚拟机,学习安装系统,为下一步学习Linux做准备。
网络安全,要经常和Linux打交道。一上来就看到很多新人跟着一些培训班学卡莉,稀里糊涂的。即使基本的Linux概念还没有建立,我也渴望学习Kali,属于先学跑,后学走。这是本末倒置。
在基础阶段,主要侧重于使用,学习与文本编辑、文件、网络、权限、磁盘、用户等相关的命令。,并具备Linux的基础知识。
计算机网络
网络安全,计算机网络必须是一个非常重要的存在。作为基础阶段,本节主要从宏观的角度研究计算机网络,而不是某个协议的某些字段的含义。
首先从局域网入手,了解计算机通信的基础网络——以太网,如何在局域网中进行通信?集线器和交换机有什么区别?MAC地址、IP地址、子网和子网掩码有什么用?
然后介绍了更大的广域网和互联网,什么是网络通信协议,以及通信协议分层的问题。通过七层和四层模型,计算机网络的基本概念,各层协议的功能,分别有哪些协议,以及这些协议在当今互联网中是如何具体应用的。
网络基础
网络渗透的一个非常重要的部分是网络安全。学习Web安全,必须从Web前端基础开始。
这一节很简单,就是学习最原始的Web前端三轴:HTML+CSS+JS的开发和使用,为以后学习Web相关的安全知识打下基础。
这部分比较实用一点,需要自己做一些web编程,特别是要熟悉Javascript,知道什么是Ajax,学习常用的jQuery库,这些都是Web前端中非常基础和常用的内容。
数据库基础
基础阶段的最后一部分,可以接触一些数据库的基础知识。
这个阶段主要学习一些理论知识,重点是数据库、表、索引等概念。,然后学习写SQL,学习添加、删除、检查数据。暂时不要编程操作数据库。
铜器时代
石器时代之后,你已经储备了一些计算机的基础知识:操作系统的使用,网络协议,前端基础,数据库的第一知识,但这还不足以做网络安全。第二个青铜阶段,需要进一步学习基础。第一阶段过后,难度会开始慢慢上升。
这一阶段需要学习的知识有:
Web高级
在之前的石器时代,我们初步接触了web编程,了解了网页的基本原理。但是,那时候是纯前端,纯静态的网页,不碰后端。在这个高级阶段,你将开始接触Web后端的内容。
首先从常用的两种主流web服务器入手,学习Apache和Linux的基础知识,然后介绍动态网页的基本原理,从CGI/Fast-CGI过渡到后来的ASP/PHP/ASPX/JSP等动态Web技术,从而了解它们的发展历史、演进过程和基本工作原理。
最后学习一些Web开发的基础知识:表单的操作,Session/cookie,JWT,LocalStorage等。,了解这些基本术语的含义、作用和解决的问题。
PHP编程
学习Web后端开发需要学习一门后端开发语言。在本节中,选择从PHP开始。
但是要记住,这里选择PHP并不是为了你以后从事PHP的后端开发,也不是为了现在PHP有多流行,而是针对特定的历史背景,PHP相关的网站安全问题很有代表性。选择这种语言更方便我们研究安全问题。
因为学习目的的不同,学习方法也和普通后端开发不一样。在这里,我们先学习基本的语法,基本的后端请求处理,数据库访问,然后再接触常用的ThinkPHP框架。当然,如果有兴趣的话,更深入的学习更好。
计算机高级
第二阶段需要丰富计算机网络的学习。这一次,重点放在HTTP/HTTPS和数据包捕获分析上。
必须掌握Linux上的Tcpdump,包括常用参数配置。然后重点学习Wireshark分析数据包,使用Fiddler捕获和分析加密的HTTPS流量。
通过查看数据包捕获软件下的流量,计算机网络知识从抽象变得具体。
加密和解密技术
那么,我们来了解一下网络安全领域经常涉及到的一些编解码技术和加密解密技术。包括base64编码、对称加密、非对称加密、哈希技术等等。
了解他们的基本概念,做什么工作,解决什么问题,最后了解他们的工作原理。
推荐书籍:加密与解密
白银时代
现在进入第三阶段——白银时代,激动人心的时刻来了。这个阶段开始全面学习真正的网络安全技术。前两个阶段打下的基础在这个阶段也会派上用场。
这一阶段需要学习的知识有:
Web安全入门
有了之前的Web前端,有了PHP编程的基础,就可以正式学习Web安全了。Web安全领域的几个典型攻击:SQL注入、XSS、CSRF、各种注入、SSRF、文件上传漏洞等。,这些都需要详细学习,一边学习理论,一边动手实践。
注意不要用网络上的网站攻击学习,这是违法的。你可以在你的虚拟机中建立一些包含漏洞的网站,用你自己的网站进行练习。
网络扫描和注入
我们之前学过一些Web安全攻击方法,但是光有这些是不够的。当我们面对攻击目标时,如何找到攻击点,获取目标的信息是非常重要的。
这些信息包括:目标运行的是什么操作系统,开放了哪些端口,运行了哪些服务,后端服务是什么类型,版本信息是什么等等。,以及哪些漏洞可以被利用。只有获得这些信息,才能制定有针对性的攻击手段,赢得目标。
常见的网络信息扫描包括端口扫描、网站后台扫描、漏洞扫描等。你需要学习常用的扫描工具以及它们是如何工作的。
信息收集和社会工程
除了以上要扫描的信息,在网络安全中,往往还需要调查很多信息,比如网站注册信息、关联字符、网站内内容检索等等。需要学习和掌握信息采集和社会工程的相关技术。
Whois信息用于查询域名信息。shodan、zoomeye、fofa等搜索引擎。空搜索IP、域名、URL等背后的信息。谷歌黑客利用搜索引擎搜索网站内部信息。这些都是网络信息收集中经常用到的技巧。
强力
在网络攻击中,当扫描到目标开放服务时,最直接的就是登录。常见的服务有SSH、RDP、MySQL、Redis、Web forms等。
这个时候,暴力破解通常就派上用场了。利用各种服务的常用用户名和密码组成的字典,通过程序进行暴力破解。
常用的爆破工具有hydra、超级弱口令、常用来获取Windows系统密码的mimikatz等。
黄金时代
最后一个阶段,学习了一些安全攻击技术。在这个阶段,我需要学习安全防御和安全检测技术。安全兼具进攻和防守的特点,缺一不可。
晶圆技术
首先要学的是WAF——Web应用防火墙。
Web安全学习就是通过Web技术攻击计算机系统,WAF就是检测和防御这些安全攻击。俗话说,知己知彼,百战不殆。作为攻击者,你要掌握WAF的工作原理,找到弱点绕过检测。作为防御方,需要不断加强自己的安全检测和防御能力,才能有效发现和抵御Web攻击。
需要学习目前主流的WAF软件采用的架构,比如openresty、modsecurity,以及几种主要的检测算法:基于特征的、基于行为的、机器学习的等等。
网络攻击和入侵检测
WAF主要针对Web相关的安全攻击。本节我们将进一步把视野扩展到整个网络协议栈,如TCP劫持、DNS劫持、DDoS攻击、DNS隧道、ARP欺骗、ARP泛洪等。我们需要掌握这些传统经典攻击方法的原理,建立环境实践,为后续的内网渗透打下基础。
此外,作为防御方,还需要学习如何通过网络流量分析技术进行安全检测,了解常用的网络分析技术、检测框架、规则语法等,为以后的安全相关开发或安全防御工作做好储备。
技术日志
通过日志发现攻击是最常见的行为之一。攻击者的Web请求、系统登录、暴力破解尝试等。会被系统的各种软件记录下来,攻击者得手后往往会把相关日志抹掉。所以,学会掌握这些日志,是攻守双方都需要学习的技能。
常见的日志有系统登录日志、Web服务器日志、数据库日志等。
Python编程
在这个阶段,是时候学习一些Python编程和开发了。网络安全虽然不用经常做大量的工程开发,但是掌握基本的编程技能还是很有用的,可以用来写爬虫、数据处理、网络扫描工具、漏洞POC等。在众多编程语言中,Python无疑是最合适的。
浏览器安全性
这个阶段的最后一部分是学习一些浏览器端的安全知识,巩固Web安全中与浏览器相关的漏洞攻击。
需要掌握IE和Chrome这两个最主流浏览器的特点,浏览器的沙盒机制是什么,同源策略和跨域技术等等。
白金时报
第三方组件漏洞
之前与Web安全相关的攻击都是一些多年来的经典技术。经过多年的发展,已经相当成熟,相关的漏洞也没有以前那么多了。现在很多攻击都是通过第三方组件的各种漏洞来完成的。因此,学习和研究这些常见的第三方组件的漏洞是很有帮助的,一方面可以掌握这些攻击技术用于实战,另一方面也可以对类似情况举一反三。
研究对象主要涵盖了当前互联网服务中实际使用的一些工程组件,如Java技术栈系列Spring Family Bucket、SSM、Redis、MySQL、Nginx、Tomcat、Docker等。
内部网渗透率
在网络渗透中,一个点的攻击只是开始。如何在攻击后转移和控制更多的节点,是内网渗透研究和学习的范畴。典型的例子就是当年的永恒之蓝病毒,它通过SMB协议的漏洞迅速传播,造成大规模攻击。
内网渗透要学的东西又多又杂,难度会上升很多。但是,这是网络渗透很重要的一环,一定要多咀嚼。这部分理论比较少,实践性比较强,需要多搭建环境模拟学习。
操作安全技术电力提升技术和虚拟化技术
通过web等方式渗透到电脑后,由于各种限制性原因,往往会有提权的需要,会涉及到很多与操作系统安全机制密切相关的内容。所以,学习一些操作系统的安全知识是非常必要的。
如Windows和Linux各自的权限管理机制、权限提升方式、常见漏洞、工具等等。
最后,学习一些虚拟化技术的知识,应对可能需要逃离虚拟机的场景。
王哲时报
CobalStrike和metaSploit
学会这两个神器会大大提高攻击效率,是网络渗透者居家旅行的必备选择!
其他安全技术扩展
在网络渗透后期,要想成为安全专家,不仅要在自己擅长的领域固步自封,还要多学习网络安全的其他领域,扩大知识面。
比如二进制漏洞攻击、逆向工程、木马技术、内核安全、移动安全、侧信道攻击等。当然,在学习的时候,不一定要像专业同学一样深入,而是需要涉猎了解,丰富知识,构建全方位的网络安全知识技能栈。
以上是我分享的网络安全学习路线。希望能给你自学一些启发和帮助。
新朋友自学不容易,我也是这样一路走来的。在这个过程中,我收集和整理了很多学习资料,包括:
1.很多买不到的绝版电子书。2.大型安全工厂的培训材料。3.国内外顶级安全会议演讲PPT 4。5.顶级安全研究团队发表的研究论文。5.顶级安全论坛精华帖。
现在免费分享给自学的你。如果觉得有帮助,请给我点个赞~,现在免费分享给自学的你。
有需要的同学可以喜欢关注私信【资讯】,免费获取。
如果觉得有帮助,请给我点个赞~
【我免费拿!!!】
冰冻三尺非一日之寒,精雕细琢才会更美!目前市面上,学习网络安全的内容比较少,没有开发语言那么广泛。建议你也可以多关注一些视频、论坛、文章、书籍来入门。万事开头难,可以多问。