因为我写过很多网络安全技术相关的故事和文章,所以很多读者都知道我从事的是网络安全相关的工作,所以经常有人在微信里问我:刚入行网络安全,我应该怎么做学习?学什么?方向是什么?如何选择?不同于Java、C/C++等后端开发岗位有非常清晰的学习路线,网络安全更多的是自己摸索,要学的东西很多,很难形成体系。经常看我文章的朋友都知道,我的文章基本上都是以故事为主的技术输出为主,很少谈职场和面试。主要是大家压力已经很大,节奏也很快。公众号是大家放松的地方,尽量写一些轻松的内容。不过随着越来越多的人问我上面的问题,我今天就专门写一篇文章来炫耀一下这个龙阵。近年来,随着网络安全被列为国家安全战略的一部分,这一细分领域的发展也加速了很多。除了一些传统的安全厂商,一些主要的互联网公司也加大了在这方面的投入,随之而来的是吸引越来越多的新鲜血液涌入。网络安全这个分支其实是基于网络安全的概念,还有一个更大的概念:信息安全。本文不讨论这两个学术部门之间的区别。如无特别说明,视为文章中的概念。我们来看看实际工作方向的细分路线。在技??术类这个圈子里,岗位主要有以下三个方向:安全研发安全研究:二元方向安全研究:网络渗透方向下面我一一说明。安全研发安全行业的研发岗位主要分为两类:与安全业务关系不大的研发岗位和与安全业务密切相关的研发岗位。每个行业都有自己的软件研发,网络安全作为一个行业也不例外。不同的是,这个行业的研发是开发与网络安全业务相关的软件。既然如此,安全行业还有其他行业的常见工作,比如前端、后端、大数据分析等,属于上面的第一类,和安全业务关系不大。这里着重介绍与安全业务密切相关的第二类研发岗位。该类又可细分为安全产品开发、反安全工具开发、安全行业待开发产品两个子类,主要(但不限于)以下:防火墙、IDS、IPSWAF(Web网站应用防火墙)数据库网关NTA(网络流量分析)SIEM(安全事件分析中心,态势感知)大数据安全分析EDR(终端设备安全软件)DLP(数据泄露防护)杀毒软件安全检测沙箱总结起来,最安全研发产品主要用于检测和防御安全攻击,涉及终端侧(PC电脑、手机、网络设备等)和网络侧。开发这些产品所用到的技术主要是C/C++、Java、Python三大技术栈,也有少量的GoLang和Rust。安全研发岗位,相对于其他两个方向,对网络安全技术的要求较低(只是相对而言,部分产品的研发对安全技能的要求并不低),甚至见过很多研发公司无所事事与安全。知道。在这种情况下,如果你除了具备基本的开发技能外,还对网络安全技术有所了解,那么在面试这些职位时自然会成为加分项。安全研发岗位,除了一般的开发技能要求外,可以重点关注以下技术:以上列举的只是最直接相关的部分,需要了解更多的安全技术才能更好的开发产品。继续往下看。Binarysecurity二进制安全方向,这是安全领域的两大技术方向之一。该方向主要涉及软件漏洞挖掘、逆向工程、病毒木马分析等,涉及操作系统内核分析、调试与反调试、反病毒等技术。因为我们经常和二进制数据打交道,所以随着时间的推移,二进制安全被统称为这个方向。这个方向的特点是:需要耐得住寂寞。不如安全研发可以有真实的产品输出,不如网络渗透方向爽。这个方向花更多的时间在默默的分析和研究上。以漏洞挖掘为例,仅仅学习各种攻击技术就需要花费大量的时间。在这个领域,研究一个问题可能需要几个月甚至几年的时间,这绝对不是一般人能够坚持下来的。不仅如此,成功不是靠努力得来的,更多的是靠天赋。腾讯各大安全实验室的负责人、业内知名的TK大佬、吴石等人,都已经深谙漏洞挖掘的深意,掌握了这门绝技。他们可以在梦中想出新的玩法。不过这样的天才,真的是凤毛麟角,绝大部分人都望尘莫及。如果说程序员是勤奋的,那么二进制安全研究就是勤奋的Plus。如果看完这些你仍然有勇气进入这个领域,那么你需要学习以下内容:与安全研发相比,这个方向不仅技术难度更高,而且提供这些职位的公司也很少,并且他们基本分布在北方的广州和深圳的几个一线城市。网络渗透的方向更符合大多数人对“黑客”的认知。他们可以黑手机,可以黑电脑,可以黑网站,可以黑服务器,可以黑内网,什么都能黑。相对于二进制安全方向,这个方向前期更容易上手。掌握了一些基本技术后,就可以使用各种现成的工具进行破解了。但是,如果你想从一个脚本小子变成黑客大师,在这个方向上越往前走,需要学习和掌握的东西就越多:网络渗透方向更倾向于“实战”,所以有对技术的广度要求更高,从网络硬件设备、网络通信协议、网络服务(web、email、文件、数据库等),到操作系统、攻击方式等等,都需要了解。我更倾向于做一个全能的计算机高手,能够综合各种技术进行“实战”。网络渗透方向的工作有以下方向:安全服务,俗称乙方,这是最重要的方向,为甲方公司提供安全能力支持,如渗透测试、产品安全测试等。安全能力建设,俗称甲方,国内规模小的公司都有自己的SRC(SecurityEmergencyResponseCenter),也就是自己的安全团队。国家队:你知道学习路线。上面说了三大技术方向之后,我们来说说如何上路?下面我谈谈我的看法。首先,不要试图分方向,先打好基础!第一步:计算机基础,这第一步,其实和网络安全关系不大,但是是任何进入IT领域的人都必须掌握的基本能力。下面这五门大课是大学老师教我们不管是什么技术方向都要学的技术,现在看来还不算过时:计算机网络计算机组成原理操作系统算法数据结构数据库各门课程中其实里面是有宇宙的,基本上不是一门学问就能掌握的,但是随着每个人的职业,不同的技术阶段会有不同的理解和感受。具体学习,建议参考敏捷开发,不断迭代:粗略了解->深入了解->彻底掌握->温故知新。在继续学习下一门课程之前,不要沉迷于学习所有课程。第二步:编程能力当你具备了以上的一些基本技能之后,这时候你就需要开始写一些代码来磨练你的编程能力了。以下三项是安全行业从业者最好掌握的语言:Shell脚本掌握常用的Linux命令,能够编写简单的shell脚本,处理一些简单的事务。C语言(C++可选)C语言没有复杂的特点。它是现代编程语言的始祖。适合编写低级软件。它还可以帮助您了解内存、算法和操作系统等计算机知识。建议学习一下。PythonC语言帮助你理解底层,Python帮助你编写网络、爬虫、数据处理、图像处理等功能性软件。它是程序员,尤其是黑客非常喜爱并且不得不学习的一门编程语言。第三步:安全初体验有了前面两步的基础,就可以开始接触一些网络安全技术了。刚开始这个阶段,还是不要圈自己,只学某个方向的技术。现阶段,我的建议是:但在涉猎时,看过去。网络协议攻击、web服务攻击、浏览器安全、漏洞攻击、逆向破解、工具开发等,去接触它,知其然,在过程中发现自己的兴趣点,让你了解各种网络安全领域。对技术有了初步的了解。第四步:划分方向第三步,慢慢发现自己的兴趣点,是喜欢开发各种工具,还是喜欢破解网站,又或者是痴迷于上位机的攻击……这时候,你可以想好自己后一个方向,然后围绕这个方向,通过上面思维导图中各个方向的技术不断修炼,成为某个领域的高手。以上学习方法介绍了技术分类和学习路线。下面说说读书学习的学习方法。这是最基本的实践。开发路线需要多写代码,阅读优秀的开源代码,多分析二进制路线中的样本,写EXP等。渗透测试用网站练手(合法方法)等,玩CTF,参加一些网络安全竞赛,在接近实战的环境中锻炼动手能力,在圈子里混,在安全高手出没的社区、社区、论坛混。行业资讯,了解最新技术动向(高清版思维导图有)总结以上是对刚接触网络安全的朋友的一些个人建议。最后,有一点需要说明一下:上面列举的不同方向的技术并不严格。意义是独立的,相反,它们往往是相辅相成的,需要结合和整合。每个人的认知都是有限的,我也不例外。这篇文章只是我家人的意见。建议大家多看人家的总结和经验,横向比较。本文转载自微信公众号“编程技术宇宙”,可通过以下二维码关注。转载本文请联系编程技术宇宙公众号。
