引言
本文是我作为信息安全专业的应届毕业生找工作的经历。若干年后,我也作为技术面试官招聘过应届毕业生。所以本文从毕业生和面试官的角度分别谈一点应届毕业生找工作的感悟,希望对读者特别是即将找工作的应届毕业生朋友有帮助。
时间回到十七年前,也就是2006年,当时我正大三在读,既然不考研,那就要准备找工作了。
作为本科应届毕业生的我,工作经验没有,项目经验没有,但大学期间在《黑客X档案》、《黑客防线》发表过技术文章,有一些渗透测试经验,在CSDN有个技术博客,写过一些安全文章、发布过一些安全工具,网名在圈子里还有点影响力,也算是当时少有的具备实际动手能力的信息安全专业学生了。
二十年前都说信息安全是未来的热门专业,但在我毕业当年网络安全人才需求比较少,想找一个网络安全相关工作,那就要看大型企业和网络安全公司的校园招聘了。四川人也不想离开成都,所以除了几家北上广深的知名企业,其他都投的成都的公司。
第一家面试的是一个外企,当时的电商新星新蛋(Newegg)。记得它的工作地在成都南边的天府软件园,我在成都读了四年书还是第一次去到那么偏远的地方(现在那边发展得很不错了)。笔试面试复试一条龙,他们主要使用ASP.Net,笔试主要是一些Web安全的题目,一面二面都问了一些Web应用安全相关的技术问题,然后就打发我回去了,流程就此hold了,等它再喊我去HR面的时候,我已经接了腾讯的offer很久了。
第二家是绿盟成都分公司(当时的网络安全公司三大巨头分别是绿盟、天融信、启明星辰),在青龙街附近,一面ok,二面的时候问我能不能接受去西藏的运营商驻厂一年(当时很向往的是绿盟研究院,那里有tompkeeper、yuange、scz、quack等一众大神在),让回去考虑下就没下文了。
同期进行的还有一个平安集团。笔试一面二面ok,三面之后就没有然后了。
接下来就是腾讯了。腾讯的成都校招宣讲会由长得像刘青云的人力资源部大佬human主持,人很多,氛围很轻松活泼。与前面的相比,腾讯的安全类笔试题明显更偏实战。当时我还没有24小时手机开机的习惯,结果笔试完的第二天八点多睡醒开机,发现半夜有一条短信是通知早上八点去面试的。于是飞马赶过去,面试官正是安全圈大名鼎鼎的、安全焦点核心成员benjurry。ben总当时看起来妥妥的一个中年大叔,其实他是79年的……随便吹嘘了一会儿,当天晚上就接到二面通知。二面是汤道生,问了一下TCP三次握手及断开的原理,还有一些其他的技术问题我不太记得了,很顺利地通过了。然后是HR面,也很顺利。几天后就发offer了,现在也不得不感慨互联网企业的效率就是高。反正QQ、QQ空间、QQ游戏这些好像还不错,去试一试了。签约现场发现这次成都招的安全毕业生还有好几个,当场就结识了未来号称“腾讯安全情报系统之父”的校友歪乐,还有现在的华为云DDoS防护专家、前腾讯DDoS防护团队元老julang3。
我是个不爱瞎折腾的人,拿到腾讯offer之后就中止了其他面试。
学生朋友们,我们来复盘一下,抛开笔试成绩,杂志文章、CSDN博客、安全工具给我加了很大的分。
后来我自己当了面试官才知道,腾讯的一面面试官一般要在两天时间面试20个甚至更多的学生,基本上一个学生就只有20到30分钟,要在这么短的时间里向面试官展示你的能力,网络上的一些东西特别是博客是比较好的助力途径。
当年受时代大环境局限,信息安全专业才刚刚开办,教材大部分都是在讲数学、密码学、电子系统,有实际安全攻防经验的老师和学生都很少,要想学安全技术只有凭着兴趣自学。好在当时的网络世界还处于混沌阶段,非常自由,各种黑客技术论坛、文章、工具应有尽有,当时圈内火爆的三大安全杂志《黑客X档案》、《黑客防线》、《非安全》,还有安全焦点、幻影旅团、灰色轨迹、邪恶八进制等一批论坛,培养了一代人。
现在大环境很好了,展现形式也不仅仅是博客,还有公众号、CTF比赛、安全类竞赛、SRC漏洞榜、实践项目、实习,都是很好的加分项。后来入职腾讯安全中心的应届毕业生像ian杆杆、riusksk、dragonltx、beck、登登、crazydiyer、xx、那个谁、ozz、Gmxp、冷焰、snaker、creasy、彦修、l0u1s、Martin、monster这些同学,都是有优质的原创博客内容、比较丰富的项目经验或者是给TSRC提交过漏洞的,在面试之前已经对他们的技术能力有一个全面的了解了。
读到这里,学生朋友们,不是让你们马上去开一个博客或者给TSRC提漏洞,而是说面试官要找的是对安全有兴趣有追求有能力有经验的应届毕业生,而博客正好成为了展示的载体 —— 看起来是一个博客,但是本质上却是长期的积累、快速学习新东西的能力以及持续的对安全的兴趣和投入。
就像咏春,好像看起来很厉害,但它的核心就是“摊、膀、伏”三板斧而已。与之类似,个人认为学习信息安全的诀窍无非也就是逆向思维、攻防对抗、动手实践、知其所以然和持之以恒而已。
逆向思维其实就是正常路径的逆行,反其道而行之。程序最怕的是什么?不符合预期的行为。信息安全工作就是找到各种能产生安全危害的不符合预期的行为。所有的出口封闭了,是不是可以从入口出去呢。
举个例子。X-Forwarded-For的安全隐患现在想必大家都知道了。但是十几年前,大家都习惯它记录真实IP的作用,程序会通过它来获取客户端真实的IP,有些还带入SQL语句中,完全没想过做合法性校验。直到有一天我想到,诶,在HTTP请求里自己加上X-Forwarded-For头,不就可以伪造IP甚至可以进行SQL注入了么。
安全的本质是攻防对抗。作为安全从业者,看到一个技术、架构、系统,首先就要去想怎么攻击它(以前我看到URL里面带参数就会习惯性地最后加一个单引号,一样的举手),进而再想怎么防住刚刚的攻击方法,接着再想绕过防护继续攻击,再防,再攻……有点左右互搏的感觉,如此反复几个来回,整体防护思路就清晰了。
大学时期我对ASP安全研究得比较深入,使用、研究过当年风靡一时的如海阳顶端、一句话、FSO等ASP WebShell,也写过几个ASP WebShell。后来我又写了一个检测ASP Webshell的程序(雷客图ASP站长安全助手) —— 这是真正的攻防对抗,几轮优化下来我自己也绕不过去了。这部分经历让我对WebShell有深刻的理解,对未来的工作帮助很大。
信息安全技术是个工程问题,不仅要学习和思考,还需要去动手实践,又要在实践中学习和升华。
关于动手实践,个人有一个方法,那就是“黑客实用主义”:定下一个小目标,要达成这个目标需什么就去学什么。这种方法有个既定目标,往往学得比较快,同学们可以试试。比如前文提到的写ASP WebShell,一通学习下来我就把涉及的域名、虚拟机、ASP、VBScript、HTML、CSS、JavaScript、IIS、HTTP、SQL、正则表达式、Linux运维、FTP等等基础知识都学会了,啊,这就是传说中的全栈。
工具可以提升效率,但是也屏蔽了背后的技术原理。不要不学习原理而纯去使用工具,那样就是个只会用工具的工具人,遇到问题无法变通。所以我们不仅要知其然,还要知其所以然,去了解工具背后的技术原理,未来才有机会变通、突破和超越。以前我们80SEC有个口号叫做:know it,then hack it,就是这个意思。
持之以恒就是要坚持,最容易但是也最困难,其实也就是一个字:心。兴趣是最好的老师,做到心无旁骛,不忘初心,方得始终。
当你沉淀得足够多的时候,再遇到问题即使是以前没见过的问题也会触类旁通。我的很多新想法就是灵光一闪。
FTP反弹攻击(FTP Bounce Attack)是一个很古老的攻击方式,我在尝试Serv-U的FTP反弹攻击的时候突然灵光一闪就举一反三:既然可以让Serv-U将转发过来的文本文件当成FTP命令来执行提权,那如果用ASP的XMLHTTP组件构造特殊的HTTP协议发到Serv-U的43958端口,那这段“HTTP协议”也可能当成FTP命令执行!于是,著名的ASP版Serv-U提权0day攻击Exp横空出世,横扫大江南北。
现在回过头来看,大学时代的经历对我的职业生涯有很大的帮助。一方面是具备了实际攻防经验,很多黑客攻击方式都见过且亲身实践过,再加上思路比较活跃,自然能够提炼出防御规则 —— 很多时候做安全工作,大家学到的安全理论、安全方案、安全技术都是一样的,但是精通攻防的人往往更理解精髓,接近实际的需求场景,最终的效果又是不一样的;另一方面也融入了安全技术圈子,认识了很多朋友,他们有的退出江湖了,有的仍然活跃在安全行业,推动着行业的发展。
所以,学生朋友们,“台上一分钟,台下十年功”,如果还有时间,现在就要努力奋斗起来了,朴实无华的背后是长期的积累。
最后还是那句话,年轻人,好好干。