Monyer 的多年安全经验分享

安全经验 2019-11-09

回想起来,我从高中时期 02 年左右开始接触学习网络安全,到大学时期 06 年博客流行时成为网络安全活跃分子,再到 11 年进入某部门的网络沉寂期,再到18年离开后再次的不安分,可算得上是一段跌宕起伏的岁月了。

很多人说:“网络会记住你一辈子!”。

我以一个过来人的经验告诉你:不会的!网络有着它的记忆时限。

除非你能不断去刷新它的记忆,或者你成为乔布斯一般的传奇或经典,否则总有一天网络会将你忘记。

如果在 11 年左右,你到百度去搜索:Monyer,你能获得到几百万搜索结果。在有意地沉寂 6、7 年后,现在估计充其量几万条了吧!

有很多网络安全老人儿可能还记得那个 monyer's game:

http://monyer.com/game/game1/

那上面长长的通关列表见证了中国网络黑客的进步和成长,也见证了中国网络安全的快速发展。里面有一些熟悉的 ID 现如今要么是各个互联网大公司的顶梁柱大佬,要么自己创办了网络安全公司成为了老板。有些人依然奋斗在技术的前沿,有些人已经转型创业或做了管理。

时代变迁,白驹过隙。社会在发展、网络在发展、人也在进步和发展,而这个速度实在是太快了。我在 07 年做monyer’s game 时从来没想到,未来这种模式其实可以做成比赛,做成平台,甚至一个公司能靠此达到上市的地步;与 08 年我和余弦创建 XEYE 团队时相比,今天的网络安全团队朝着更专业化、更职能化、更商业化来运作;CTF、AWD、PWN2OWN 当年只是一种业余的消遣,如今也可以成为一种职业。

近期又见有很多新的小伙伴儿问询:如何才能成为一名黑客?

事实上这个问题从我 06 年有博客以来就从来没有断过。我几乎很少去给人正面回复。因为说实话,黑客是一个很模糊很笼统的概念,会破解软件算不算黑客?会渗透技术算不算黑客?会挖掘二进制漏洞算不算黑客?广义来看,肯定都算。那怎么来学?各有各的学法。

如果把黑客作为一个兴趣爱好,我是非常赞同的。入门其实也不一定需要大师指引,学会用好百度、谷歌,去搜索“黑客技术入门”,简直是一搜一大把。但如果想把网络安全作为一个终身职业,那么可能就需要想清楚了:你是否愿意把你终身都投入到网络技术的事业上?如果只是因为看到了目前网络安全的热门,或者只是对网络攻防技术心血来潮,那么我建议要充分想好、调研好再做决定。

有句俗话讲:女怕嫁错郎,男怕入错行。其实网络安全并不是一个理想的行当,甚至相对于一些传统行业而言是一个相对糟糕的行当。一方面,一个人能力强否并不取决于他所接受的教育程度,身边学医、学广告、学化学出身的黑客比比皆是;另一方面一个不能孜孜不倦,始终处于新知识、新技术学习状态下的安全爱好者,必然会被超越和取代。

如果你找补习老师,一个是有着 20 年教龄的老教师,另外一个是 20 岁刚毕业的新老师,你会选哪一个?

如果你去医院挂号,一个是有着 20 年工作经验的老专家,另外一个是 20 岁刚毕业的小伙子,你会挂哪一个?

如果你找木匠做工,一个是有着 20 年工作经验的老木匠,一个是刚出徒的年轻人,你认为谁的手艺更高超?

我认为在薪酬一样的情况下,大多数人都会选择老教师、老医生、老木匠。因为老则意味着经验丰富。(如果你都选择年轻的,也不必太在意,你一定与众不同)

那么同样类比过来,如果我们选择 IT 人才,一个是有着20年编程经验的老码农,另一个是有 2 年编程经验的新人,那么应该选择哪一个呢?

我不知道别人怎样抉择,若是我去选择,在他们同样满足招聘条件,展现相似技术能力的情况下,我会优先选择年轻人。原因就是 2 年工作经验的人会有更大的技术上升空间,有更高的活力,而单纯的20年的编程经验可能未必会强于2年编程经验。

为什么会出现 20 年的技术经验赶不上 2 年技术经验的情况?最主要的原因还是互联网以及 IT 技术的发展和迭代速度太快了。20 年前,估计大部分程序员汇编都玩的很溜,一些凤毛麟角的网站还是用 C 或 Perl 开发的;20 年后的今天,纯 C 开发都没那么多了,但 python、go 等语言大行其道。此外还有一个原因是网络技术开始分化,并且这些年技术分化和派生的越来越厉害了。

记得前些日子跟人聊天谈到:这些年随着网络技术的发展,最先淘汰的是哪一拨人?我半开玩笑的说:应该是学 Flash 的人吧!因为随着 ES6、CSS3、HTML5 的发展,WEB 展示的进化,iOS 的不兼容,Chrome 对 Flash 的逐步冷漠,一名有着 10 年或 20 年 Flash 制作经验的工程师很有可能会面临失业的风险,而他掌握的 ActionScript 也很可能不再有任何用武之地。

拿我个人为例,我除了研究网络安全以外,其实还是一个“全栈”的开发程序猿。仅拿前端举例:十多年前,HTML、JS、CSS 我就玩的很溜了。之后流行 web2.0 我也与时俱进研究 Ajax、研究响应式布局,出现 jquery、bootstrap 各种新潮流我亦步亦趋。然后开始出现 HTML5、ES5、ES6、CSS3、TypeScript、CoffeScript、less、sass、webpack、angular、react、jsx、vue…… 因为我不是专业前端,后来有些技术我就选择性不跟了。我不知道目前的全职前端工程师如何,但是一定有一大群人依然时刻在跟进技术前进的脚步,甚至在带领技术的发展,那么在这方面他们一定是强于我的。

在这些新知识的学习上老手并不比新手有太大的优势。你会 jquery,跟你在学习 angular 上不会带来任何的便利。一个会 css2 的人和一个会 css3 的人在学习 less 上的时间也不会相差太多。而若开发一个项目,仅会 css,跟先学会 less,之后再应用的程序员相比,也不会慢太多。但新人总是会率先学习新的东西,而刨除之前的学习成本,显然工作效率上就会有所提高。而会一大堆老技术的人,却又不表现在新技术学习上的优势,反而由于固有的技术思维,老技术则有可能变成累赘。

网络安全上同样存在这个问题,像我当年也是加密破解、二进制漏洞挖掘利用、入侵渗透通吃的。缓冲区溢出也能简单玩一玩,然而在 DEP、SEHOP、ASLR 等一些防护技术普及后,又没有精力照顾这些,这块的技术积累上早已被时代远远地抛到了后面。现如今,一名黑客且不说通吃所有网络安全技术,甚至我看连 WEB 渗透和内网渗透都划分成了两个方向,同时精通的人都不多。

随着无线技术、移动系统、IoT、工控互联网、云计算、大数据、AI……一大堆新技术的出现,其实带来了一大堆新的安全问题。这些安全问题既有共通性,又有独特性。然而随着一大堆安全方案的产生,漏洞要么被挖掘了出来,要么隐藏得更深。再想挖掘漏洞,要么靠浸淫,要么靠运气。吴瀚清也说过:前端越来越猥琐,底层越来越变态。研究无线安全的人可能不会再有精力研究 iOS 或 android 系统的漏洞,研究渗透技术的人可能也没有精力再去研究逆向工程……这是技术分化的必然结果。在 10 年前,有很多“全栈”的黑客;现在不是说没有,但肯定已经不多了。再下去,可能研究智能汽车安全的人仅研究这一点就可以研究一辈子。

泛而不精的人在网络安全技术分化的形势下会面临很大劣势,而选错方向的人同样不容乐观。在 06 年、07 年读过我博客的人会知道我在 XSS 上是十分精通的,Gmail、YahooMail 的洞也不是没挖过。然而随着安全技术解决方案和防护能力的提升,Chrome 基本上把一半的 XSS 给咔嚓掉了,CSP 又咔嚓掉了另一半,使得外链脚本几无执行可能,同时一些规则的限制使得即便插入了脚步也执行不了。虽然现在 XSS 还是很有市场,但照比 10 年前已经是巨大的萎缩了,可能再过 10 年就将成为一项边缘化的技术。

我最近研究谷歌的 BeyondCorp 也很受感触,这是一个力争终结企业内网的网络安全架构。如果内网都没有了,那么内网渗透技术还有存在的必要么(当然这是指未来,现在大可不必杞人忧天)?这种安全架构要达到普及可能还需要 10 到 20 年或更久的时间,但也有可能像 Chrome、Android、云 WAF 等产品或技术一样以更短的时间占领市场,你看今年 ISC 大会的主题就已经是零信任架构了。

前两天跟人聊起技术人员的发展路线,我总结了几个阶段:技术输出阶段、经验输出阶段、思路输出阶段和决策输出阶段。可以分别对标技术人员、团队 Leader、部门技术经理和公司技术总监或 CTO。这不是所有人都适合的发展路线,因为不是所有的人都能够在技术工作中总结经验并形成输出,更不会有太多人能够掌握市场、分析形势、预测动向形成新思路,而能正确作出决策的人更是寥寥无几。如果有相关的能力,能一步步往上走固然是好事;但如果由于主观或客观原因,没办法走到下一阶段,那么就要时刻学习、学习、再学习,不断研究、研究、再研究,掌握自身在技术上的领先优势,保持对新兴技术的把控能力,才能够不被新人所淘汰。

前两天一个老同学打电话过来,跟我述说“中年危机”:说已经在公司做了近十年,感觉很有危机感,很迷茫,有再择业的想法。我帮他深入分析了下发现,技术输出上他已比不过新来公司的年轻人,而又没有经验输出的能力,这导致了他在工作上必然有很大危机。然而若是一切都是自身原因造成的,再择业可能问题会更大。而这一切都是由于技术分化和派生造成的,他没进步,技术在进步,别人在进步,所以就有被淘汰的危机。“熟读唐诗三百首,不会作诗也会吟”这种通过反复熟练来成为专家的路数在 IT 技术行业上不会出现。在 IT 技术行业如果没有每天在进步,那么就是退步,那么就是被后浪拍在沙滩上的前浪。

有很多在校的大学生及网络安全爱好者想学习网络安全、黑客技术,那么请先询问自己的内心:你要学习的目的是什么,爱好还是就业?你是否要把这当作你未来的职业?你是否有毅力始终学习、进步不被淘汰?是否有能力持续性地做高效率技术输出,或达到技术输出的下一个阶段?如果是的,那么我建议你入坑,你能在学习、工作中体验到畅游互联网络、突破边界限制的刺激感;如果不是,那就仅把它当作一个业余爱好就好。

对于那些已经工作了 N 年,看到网络安全蓬勃发展,想要再择业的人,同样要多问自己:你是因为什么对现有的工作失去的兴趣,是否会在未来网络安全的学习和工作上产生同样的问题?你要通过怎么样的学习追上其他人的脚步,尤其是年轻人的脚步,并且在工作中持续性具有领先的优势?虽然TK或黑哥都是弃医从黑的成功案例和业界典范,然而他们亦有着一个由兴趣爱好向安全职业化转换的过程,那么这种形式是否对自身受用?所有的问题都需要做好思考,给定答案,确定无误后,再义无反顾投入网络安全的大坑中。

这个世界最刺激的事情莫过于脱离现状、摆脱束缚、迎接挑战,攀岩、跳伞、蹦极、竞技都可以达成这一目的,而网络黑客几乎能够满足这一切刺激的幻想,畅游网络、突破限制、斗智斗勇,这是最吸引人的地方。然而对于旅游的人来说,爬山是兴奋的;对于景区捡垃圾的人,爬山只是为了完成生计。当黑客成为了生计,则有可能不再一切尽如人意;此外由于目前网络安全市场的分工细化,可能最终给定你的职位未必是你当初想要的那个网络安全职位。

黑客是场电子梦。我们这些老鸟在这场梦里畅游了十来年,也将继续畅游下去。然而作为安全爱好者的你是否已经准备好了入梦?又是否会将梦一直做下去呢……


本文由 信安之路 创作,采用 知识共享署名 3.0,可自由转载、引用,但需署名作者且注明文章出处。

楼主残忍的关闭了评论