学习黑客十余年,如何成为一名高级的安全工程师?

news/2024/11/29 19:51:11/

  1. 前言 

说实话,一直到现在,我都认为绝大多数看我这篇文章的读者最后终究会放弃,原因很简单,自学终究是一种适合于极少数人的学习方法,而且非常非常慢,在这个过程中的变数过大,稍有不慎,就会与当初的理想失之交臂。

文末准备了学习路线。

但是,毕竟有像我当年一样的年轻人,他们有毅力、有理想,他们真的可以坚持十年来学习这门技术,而如果有人稍加指导,就有可能将他的自学时间缩短一倍,甚至更多。因此,本着不漏掉一个人的初心,便有了这篇长文,这篇文章除了提炼了我自己长达十年的自学历程,就我这么多年的经验来看,更多的人之所以没能学好,其实就是内在的东西准备的过于潦草了,希望本文能对想要自学的读者提供力所能及的帮助。

 2. 经验

学习十余年的经验,最终我的心得是——决定大多数人是否能够学会这个技术的关键点,是对一些基本问题的理解是否准确。

用人话说就是,用遵循世间规则的智慧(道)去引导内心的冲动与目标(术)的能力决定你这次学习的最终结局(甚至是更大的,这一生的结局)。

下面我就从三个典型的认知谬误分别讲解这个问题:

首先,是终点与成长的博弈。

我曾经问过很多学习黑客技术的初学者为什么要学习这个,我得到的最多答案就是“我要变得很牛逼”,然而至于如何才算牛逼呢,他们的答案是“如果我学会黑客技术,我就_____”,而当你继续问要学习什么才能这么牛逼时,基本上就给问住了。

当然,我这篇文章的目的就是为了解决这个被问住的问题,但是笔者现在的经验毕竟不同于八年前学习的状态,我感觉自己有义务、也有能力给出各位初学者一个更好的,可以受用一生的答案,因此才有了这段废话,但就我个人而言,我认为这才是我的心得的精华之所在。

我相信绝大多数阅读本篇文章的同学都在高中时听到过一句话,那就是“只要如何如何学习,就能考上好大学,就成功了!”这种一劳永逸的想法源自于我们人类千百万年的进化,但是随着近几千年的发展,这种想法逐渐成为了我们的桎梏。而可悲的是,作为新人类的我们,却还要忍受高中教育的这种错误价值观的强化,最终的结果是接受更多教育的我们反而被削弱了自己的价值。

经历过高考的各位同学都应该心有感触:

  • 当你在高中时,你被告知必须考上大学才能成功

  • 当你在初入大学认为已经成功之时,你被告知必须修够学分拿到毕业证才能成功

  • 而当你成功毕业认为已经成功之时,你被告知必须找个好工作才能成功

  • 而当你千辛万苦终于找个好工作时,你被告知必须出色完成 KPI 快速升职加薪才能成功

  • 当你使出吃奶的劲儿升职加薪之后,你被告知必须在北京买上几百万的房子才能成功

  • ……

而如果你一直以这种思维生活/学习下去,那么你基本上就不会成功,你的每一次目标的达成都会让你多一分怨气,少一分斗志,最后大多数人就局限在这个死循环中被吞没了。而且更加要命的是,由于你过于关注每次达成“成功”的局部,而无法以更大的格局思考问题。

如果你突破不了基因带给你的桎梏,那么你将永远是芸芸众生,而我们都知道芸芸众生中是不可能有黑客这种精英出现的。

因此,在你正式准备学习黑客之前,建议你要先了解一个客观事实,那就是——只有成长才是永恒的主题,过程中的成功仅仅是你成长路上的里程碑而已。

也就是你要搞清楚一件事,所谓的成功只不过是供你意淫的一个小目标,而并非就是终点,如果你认识不到这一点,那么就会出现很严重的问题。

举例来说,如果小明认为“如果我要学会黑客技术,我就可以盗美女的 QQ 号啦”,那么如果小明是按照一个专业黑客的路线发展的话(无此想法的读者请右上角点击关闭,出门左转各大黑客网站),小明首先需要做的就是要精通 C 语言。

而学习 C 语言与盗 QQ 这种工具流比起来,简直不知道要高级多少倍,因此自然也要更困难些,这样就会导致小明做着一件实际价值很高,但在小明看来却不值一提的事(C 语言在小明心里远不及盗 QQ 高级),这种落差带来的认知失调最终会将你学习黑客技术的激情冲的一干二净。

因此,学习黑客技术的第一条铁律就是不要有终点思维,深刻理解成长才是永恒的主题

其次,是幻想与价值的博弈。

懒惰是最容易容易让人们产生幻想的行为。因为懒惰,所以不能得到,但是内心又无比渴求,所以只能通过幻想来麻痹自己。这里的幻想可能是自己有意识的幻想,也有可能是无无意识的幻想,甚至自己都不知道正处于幻想中。

但是你大可不必为此而自责,最起码对于我来说,或者我通过观察周围的人而得出的结论,包括我在内的几乎所有人都在无时不刻的与懒惰做着斗争,例如“事情太多”、“这太难了”、“没有灵感”等等都是因懒惰而产生的幻觉。因此,任何一位你眼中的大牛无不是通过了无数次与懒惰的殊死博弈才取得的今天的成就。

因此,你要知道,只有你真正俯下身子去一点点的学习知识,才会使得你离黑客越来越近。但可怕的是,大多数初学者并不懂得这些,他们在内心深处始终都认为有那么一种灵丹妙药可以让他在更短的时间内掌握黑客技术,从而去花费数倍于所谓的“更短时间”的时间去寻求这本就不存在的方法。

因此,学习黑客技术的第二条铁律就是不要抱有任何幻想、任何偷奸取巧,只要你决定这条路是自己去走,那么无论你如何寻找奇技淫巧,最终都不会让你少走半步。

最后,是浮躁与耐心的博弈。

自大、自满、眼高手低皆来源于浮躁,而最致命的是,如今这个社会的整体就是浮躁的。

如果你理解了成长的意义,如果你已坚定信心笃学技术,那么,你还有可能被最后一块石头所绊倒,那就是对自己的耐心

包括我在内的绝大多数人,在制定目标时都会高估自己的精力、高估自己的效率、高估自己的智商,甚至高估自己对此事的兴趣。

这一系列的高估会在学习后半段严重干扰我们的学习效果,那种现实与理想的差距会导致你对自己能力的认知失调,进而过低的估计自己各方面能力,最终导致失败。

因此,学习黑客技术的第三条铁律就是时刻葆有对低效率的自己的耐心

3. 要考虑的问题

想要做任何事情之前,一定要想清楚三个问题,分别是你为什么要做,你愿意为此付出什么,你想要的结果是什么。而所谓的智慧,就是一个人通过这种方式不断的调整自己对于各种事情的预期,从而达到一种与外界的平衡。如果将这个思路映射到黑客学习这件事上,大体可以分为如下三个问题。

首先,要考虑清楚你为何要学这个。说白了就是你的动机是什么,如果你的动机是不可持续的,例如盗个扣(甚至是挖个系统级 0Day 漏洞),那么我建议你将自己的动机修改为可持续的,例如你想保持一项什么记录(甚至是让其他人更加尊敬你),因为这类动机是在不断变换的,只有这类动机才能让你有一个更加长久的动力源泉,才能促使你坚持的更久,也就能取得更大的成就。

其次,要考虑明白你可以付出什么。你要清楚的是,任何事情都是有代价的,而且如果你此时的年龄越小,你那么你对“代价”的理解就越不深刻,这点一定要着重加以注意。

黑客技术是一件非常有魅力、非常有价值,同时也是非常酷的一件事,但是这么有魅力的事情,如果你想要完成它,要么需要极佳的运气,要么就是需要你付出非人的努力。

举例来说,最近我们经常看到媒体在报道时说国内某组织的某黑客在几秒内就攻破了 IE 浏览器,在几秒内就绕过了 XX 保护机制。但事实的真相是他们其实就是运行了一个自己准备好的代码而已,而媒体上说的这几秒钟的时间其实是代码的运行时间。据我说知,他们在参赛之前,整个团队为了这几秒钟的 ShowTime,需要经历至少十余个甚至数十个不眠之夜,然后才能打造出可能仅有几百个字节的艺术品般的代码(也就是 Exploit),最后才能拿去现场过五关斩六将。

如果在这个十三亿人口的国度里最牛逼的黑客都需要如此付出,那么作为目前默默无闻的你来说,想要学会这门技术应该需要多少个不眠之夜呢?

最后,要考虑你的学习方向是什么。信息安全领域的方向太多了,如果最粗旷的分,大致可以分为网络安全、软件安全、基础安全这三类。其中网络安全包括网络渗透、通讯安全、电信安全等,软件安全包括授权控制、漏洞挖掘、加密解密等,基础安全分为理论安全、密码学等。

我收到的最多的、也是令我最郁闷的问题就是“你的那幅图我已经看了,但是我想知道我应该怎么学呢?或是从何处开始呢?”是的,你没看错,纵然我这幅图获得了超乎想象的关注,但是仍有很大一部分人似乎并没有因为这个世界上多出这幅珍贵的图而获得什么,他们仍然是迷茫的,当然,这也并不能全怪他们。

所有人的成长都是从知道自己不需要什么东西开始的,举例来说,几乎 95%以上的大学生其实根本就不知道自己想要什么,只知道自己不想要什么,这其实就是不成熟的一种表现,用我们那个方言讲就是“青瓜蛋子”。

那么“青瓜蛋子”们最需要的是什么呢?就是前辈们的指导,告诉他们,他们真正的需求是什么,然后他们恍然大悟,似乎这就真的是他们此时所最需要的东西了。

而就大多数事情而言,根本没那么复杂,随意挑选一个你最感兴趣的方向就好了;如果挑不出来,那就随意挑一个你感觉自己最擅长的;如果还挑不出来,那就挑一个你感觉最顺眼的即可。

学习信息安全技术如同做其他事情一样,最终如果你要想有所成就,必然是登上这个领域数座高峰的强者,然而你一开始并不能做到这一点,因此最简单的方法就是随便挑选一座不是太低的山峰蹬一蹬试试看。因为只要你能登上其中的一座山峰,就能一览众山小,就掌握了快速登顶相邻山峰的方法。

学习信息安全技术同样如此,你应该想找一个不是太浅的方向(例如渗透就有些浅)深入研究下去,等你将这个领域彻底研究明白后,其他方向的技术自然就能触类旁通了。

4. 学习路线详解

https://mp.weixin.qq.com/s/rB52cfWsdBq57z1eaftQaQ

【一一帮助网络安全提升点我一一】
①网络安全学习路线
②20份渗透测试电子书
③安全攻防357页笔记
④50份安全攻防面试指南
⑤安全红队渗透工具包
⑥网络安全必备书籍
⑦100个漏洞实战案例
⑧安全大厂内部视频资源
⑨历年CTF夺旗赛题解析

第一步:计算机基础

这第一步,其实跟网络安全关系都不太大,而是进入IT领域的任何一个人都要掌握的基础能力。下面五大课程,是大学老师当年教给我们的,不管你是什么技术方向最好都好好学的技术,如今看来,仍然不过时:

  • 计算机网络
  • 计算机组成原理
  • 操作系统
  • 算法与数据结构
  • 数据

这每一门课程其实都内有乾坤,基本都不能做到一次学习就能掌握,而是伴随每个人的职业生涯,不同的技术阶段都会有不一样的认识和感受。
具体学起来建议参考敏捷开发,不断迭代:有一个粗略的认识**->有了进一步的认识->彻底掌握->温故而知新。**不用纠缠于把一门课程全部学完学懂才进入下一门课程。

第二步:编程能力

有了上面的一些基本功后,这个时候就需要动手,来写点代码,锤炼一下编程的功底。
下面三项,是安全行业的从业者都最好能掌握的语言:

  • Shell脚本:掌握常用的Linux命令,能编写简单的Shell脚本,处理一些简单的事务。
  • C语言(C++可选):C语言没有复杂的特性,是现代编程语言的祖师爷,适合编写底层软件,还能帮助你理解内存、算法、操作系统等计算机知识,建议学一下。
  • Python:C语言帮助你理解底层,Python则助你编写网络、爬虫、数据处理、图像处理等功能性的软件。是程序员,尤其是黑客们非常钟爱的编程语言,不得不学。

第三步:安全初体验

有了前面两步的打底,是时候接触一些网络安全的技术了,刚刚开始这个阶段,仍然不要把自己圈起来只学某一个方向的技术。这个阶段,我的建议是:但当涉猎,见往事耳。
网络协议攻击、Web服务攻击、浏览器安全、漏洞攻击、逆向破解、工具开发都去接触一下,知道这是做什么的,在这个过程中去发现自己的兴趣,让自己对网络安全各种领域的技术都有一个初步的认识。

第四步:分方向

在第三步中,慢慢发现自己的兴趣点,是喜欢做各种工具的开发,还是喜欢攻破网站,还是痴迷于主机电脑的攻击···
这个时候就可以思考自己后面的方向,然后精力开始聚焦在这个方向上,通过上面思维导图中各自方向的技术去持续深耕,成为某一个领域的大拿。

尾言

说实话,上面讲到的资料包获取没有任何门槛。
但是,我觉得很多人拿到了却并不会去学习。
大部分人的问题看似是 “如何行动”,其实是 “无法开始”
几乎任何一个领域都是这样,所谓 “万事开头难”,绝大多数人都卡在第一步,还没开始就自己把自己淘汰出局了。
如果你真的确信自己喜欢网络安全/黑客技术,马上行动起来,比什么都重要

网络安全领域就像是一棵硕果累累的参天大树,底下站着无数观望者,他们都声称自己喜欢网络安全,想上树摘果,但面对时不时垂下来的藤枝,他们却踌躇不前,犹豫不决。

实际上,只要任意抓住一根藤枝,都能爬上这棵树。
大部分人缺的,就是这么一个开端。

参考书籍列表

所有书籍共计 2632.50 元,大概 15000 页。这些内容脱产自学的话至少需要 3 年。边工作边自学的话,如果工作内容不能与学习内容高度重合,那么至少需要 5 年以上时间。


http://www.ppmy.cn/news/34618.html

相关文章

用源表测试软件如何输出I-V曲线、I-P曲线、恒定输出

IV曲线测试 是一种常用的电源表测试方法,它可以测量电源表的输出电压和电流之间的关系,以及电源表的负载特性。在测试测量实验中,可以借助NS-SourceMeter源表测试软件来测试I-V曲线、I-P曲线、恒定输出等。下面纳米软件Namisoft小编给大家分享…

STL--vector

vector 头文件 #include<vector>向量的定义&#xff1a; vector<int> vec&#xff1b;//定义一个vec型的向量a vector<int> vec(5); //定义一个初始大小为5的向量 vector<int> vec(5,1); //初始大小为5&#xff0c;值都为1的向量二维数组&#xff1…

手写一个简单的RPC框架

学习RPC框架&#xff0c;由繁化简&#xff0c;了解其本质原理 文章目录项目简介什么是RPC&#xff1f;项目模块项目代码common模块client模块server模块framework模块测试项目简介 什么是RPC&#xff1f; RPC&#xff08;Remote Procedure Call&#xff09;即远程过程调用&am…

【Nginx二】——Nginx常用命令 配置文件

Nginx常用命令 配置文件常用命令启动和重启 Nginx配置文件maineventshttp常用命令 安装完成nginx后&#xff0c;输入 nginx -&#xff1f;查询nginx命令行参数 nginx version: nginx/1.22.1 Usage: nginx [-?hvVtTq] [-s signal] [-p prefix][-e filename] [-c filename] [-…

从0到1深度学习环境搭建

目录第一步&#xff1a;安装anaconda第二步&#xff1a;创建一个虚拟环境试一下第三步&#xff1a;确定cuda算力&#xff0c;配置cudapytorch官网找版本pycharm配置pycharm进行设置setting 能够打开conda的shell终端如何给下载的项目设置合适的环境如果必须要低版本的pytorch才…

Windows安装Redis7

文章目录Redis下载与安装访问Redis官网下载Redis7 for Windows解压Redis7压缩包配置Redis7环境变量启动Redis7服务Redis可视化工具使用建立连接查看ip和端口还有用户认证修改Redis.conf守护进程关闭保护模式设置密码Redis是一款高性能的NoSQL数据库&#xff0c;常用于缓存、消息…

go-zero学习及使用中遇到的问题

go-zero学习及使用中遇到的问题1 go-zero入门--单体服务demo1.1 单体服务【官方示例】1.1.1 创建greet服务1.1.2 目录结构1.1.3 编写逻辑1.1.4 启动并访问服务1.2 修改GET入参1.2.1 去除options限制的入参值1.2.2 重启并访问服务1.3 添加post请求【新增方法】1.3.1 修改 greet/…

Vue3 学习总结补充(一)

文章目录1、Vue3中为什么修改变量的值后&#xff0c;视图不更新&#xff1f;2、使用 ref 还是 reactive&#xff1f;3、reactive 为什么会有响应性连接丢失情况&#xff1f;4、watch的不同使用方法5、watchEffect和 watch 的区别区别1&#xff1a;数据源的区别区别2&#xff1a…