1
零基础如何做黑客?这个话题你应该在知乎看到过很多次。
当然,黑客的分类很多,出于不想见到警察蜀黍的原因,本文探讨的是黑客界比较友好的白帽子。当然,有愿意聊聊的黑帽子,欢迎来跟雷锋网编辑探讨人生。你敢来,我敢写。
《漏洞战争:软件漏洞分析精要》的作者林大夫是鹅厂安全从业者,他打死不承认自己是枚白帽子,更愿意用“安全从业者”这个称呼来定位自己。不过,从一名大夫(对,你没有看错,我说的是医生)到一名安全从业者,由他来指导一名小白如何成为小白帽,还是很有信服力的。
这是一个身在曹营心在汉的故事。
林大夫在踏上这条道路前,先被五年制医学院收了编。
——一个医学生为什么会转行做安全?
——因为小说看多了。
事实上,有这么一个不太妥当的例子。如果你刚交了一个为了结束单身生活而交的女朋友,突然又遇到了内心的女神,那么你是不是会对女神朝思暮想,做一些和女神能勾搭上的事情?别说谎,说的就是你。
专业与爱好的博弈,尤其在学生时代,无异于此。
大一时,由于喜欢看黑客小说,林大夫就去图书馆找一些黑客书籍学习,每天中午都不休息,几乎天天都泡在图书馆看书,甚至翘课去看计算机书,《黑客传说》《地狱黑客》《指间的黑客》……让他着了迷。
作为学生党,手里没有太多钱,林大夫在大四才买上计算机,之前只能去网吧、学校机房或者借用舍友的计算机。
读者应该可以感同身受——借来的书才是真正看得又快又好的书,没有条件创造条件也要学才能学得深刻。
结果,当年,林大夫就用诺基亚手机看完了《Windows程序设计》、《Windows核心编程》和《Windows环境下32位汇编语言程序设计》。后来干脆网购纸质书来看,只有一个原因——因为这样比在网吧看电子书更实惠。
除了节流是硬道理,“开源”也是一条重要途径。来,我们记下这句话,爱看书的小伙子运气不会太差,因为说不定还能用来赚钱。
林大夫就是这样,在大学期间,他常给《黑客防线》杂志投稿,一方面可以提高个人技术,一方面可以用稿费作生活补贴。后来,用稿费和哥哥的经济支持,他买下了第一台属于自己的计算机。后来,《漏洞战争:软件漏洞分析精要》这本书有一半内容是在那台计算机上完成的。
”在求学这条道路上,我一直是一个人默默地前行着,就连一块生活了几年的舍友也不知道我在学习安全方面的知识,我买的一堆计算机书籍一直藏在宿舍衣柜最里面。在此过程中,自己走过很多弯路,甚至多次差点放弃,但很庆幸最后还是坚持下来了,并直至今日,依然在安全这条道路上前行着……“
在圈内朋友的建议下,林大夫在大五(医学五年制)上学期开始找安全相关的工作,最终顺利拿到鹅厂的offer。
林大夫告诉雷锋网——
”那年我还在厦门市第二医院骨伤科实习,门诊部刚好不是特别忙,我在给一位腰椎患者做完针灸后,就接到来自腾讯安全中心的面试电话。然后趁主任不在,偷偷躲到门诊部后面的楼梯口进行电话面试,整个面试过程还算比较顺利,第二天腾讯安全中心就来电说希望我到深圳总部面试。
HR面试我时,是以腰椎间盘突出的话题开场的,也算是一次别开生面的面试经历。
回到厦门后,我跟带教老师说明了转行情况,之后有上手术台的机会,我都会主动让给其他同班同学,让他们有更多上台练手的机会,而我自己自然有更多的时间去专研安全技术。“
听完林大夫的故事,你是否觉得这又是一个“别人家的孩子”?没关系,在小白下定决心走向这条道路前,我们再来看看一个黑客的日常,看是否能吸引到你。
如果想成为一名专业安全从业者,请走A口,如果想当业余白帽子,请走B口。
A口:攻防兼备是基本要求,很多时候研究攻击技术是为了更好地防御。经常要对业务产品作安全评估,针对漏洞制定修复方案,对于上线后的产品还要作安全监控,有时大半夜服务器被入侵,还得爬起来加班。
或许有时就是下面这帮白天不用上班/课的业余爱好者搞的。——林大夫说。
B口:更多人热衷于研究攻击技术,因为攻击更容易引起别人的兴趣。据说成都那边有一些白天搞站,晚上卖烧烤的白帽子,但他们在技术上其实与安全职业者没什么区别,只是他们不用过多考虑产品安全防御的问题,他们可以刷刷各大SRC平台或者国外其它漏洞奖励平台,如HackOne等。
总而言之,业余爱好者可以让安全职业者加班,但安全职业者却不能。林大夫很“沮丧”——可见有时职业者的地位比业余者还低。
当然,雷锋网宅客频道编辑并没有鼓励你走上“业余者”的道路,如果你像《微微一笑很倾城》里的黑客KO一样能做得一手好烧烤除外,这样也许成都特别欢迎你。
如果A或B选项都能接受,我们再看看看你是否一定要是“别人家的孩子”才能走上这条道路。
Q:林大夫,具备什么潜质或者特质的人适合做黑客?或者根本没有限制?
A:平常我们所谓的聪明人,大体可以分为三种:神经型(先天智商高,比如著名数学家天才约翰纳什)、经验型(后天长期经验习得,比如“日本寿丝之神“小野二郎)和反省型(自我反省、监控和管理,比如“股神”巴菲特)。
这三类人里,我觉得对安全人才最重要的是经验型,靠的是后天长期不断地学习和积累,很多时候根本谈不上比智商;而反省型的人才可能更适合搞安全领域技术研究的,不断地从错误中总结和启发,研究一些新的技术,比如,不断地改进现有的漏洞挖掘和利用思路,以发现更多的漏洞,制定出更加全面的防御方案。当然,这类人也需要后天长期学习。
所以,做安全最重要的是持之以恒的学习能力,以及不断自我总结和提升的反省能力。
如果非要提供一种简易衡量和测试方法来判断小白适不适合进军安全领域的话,林大夫认为,或许可以对实习生或毕业生尝试下面这种方法:为测试者分配一项无任何相关安全领域知识的项目,看其如何在最短的时间内完全所需知识储备的学习,并以最快的速度完成项目工作。
在判断自己是否适合踏上“征程”的这一刻,我们将迎来一个干货分享——到底怎么学才能成为黑客?
——少年,我看你骨骼精奇,是个当黑客的好材料。
——嗯?
——所以,不如来我们黑客教育学校吧?!
——滚!
看到这段对话,想必你要会心一笑,当年号称“系统全面、包教包会、价格优惠”的黑客教育平台,基本上该进去的都进去了,你懂的……
这条道路看上去行不通,我们换一条。
安全可以细分很多领域,比如Web安全、软件安全、移动安全、无线安全、网络安全……林大夫建议,根据自己兴趣选择就是了,但相信依然会有很多人搞web,因为“黑站”酷炫。
小白进阶,总会遇到诸多困惑,林大夫的心得如下:
1、 初学时经常会找一些带有”黑客“字眼的书名或文章来学习,但慢慢会发现,最后还是回归到一些计算机基础课程上面,比如C、汇编和系统原理等等;
2、 “用以致学“可能比”学以致用“效率更高,就是在需要用的时候,带有目的去专门学习相关知识,然后运用到实践中,比如开发个工具之类的,这种方式往往比学了之后等待被用,更高效,更掌握得牢固;
3、 遇到解决不了的技术问题和困惑是再所难免的,有时不妨先放一放,学习一段时间后再回头看看,如果解决了也是一种进步,当然也可以上一些论坛(比如看雪)去请教他人;
4、 最后就是坚持、坚持、再坚持地不断学习……
那么,到什么程度可以把手伸向漏洞?
林大夫说——
从事Web安全可能更容易入门,但时间久了,会遇到瓶颈,属于“前期英雄”。
从事二进制安全入门门槛高,需要较长的学习时间,拼的是技术底子,属于“后期英雄”;
如果是想尽早有漏洞产出,可能Web漏洞是最好的选择方向,对于初学者可以帮助树立信心和兴趣。可以跟着一些Web安全教程或书籍,针对一些漏洞实验平台进行实践,比如WebGoat。
Fuzzing(模糊测试)是当前主流的软件漏洞挖掘技术,一般不根据漏洞类型来划分,而是依据攻击面来开发相应的Fuzzer工具,或者基于开源Fuzzer做二次开发。当然,最理想的还是各种通用型的Fuzzer,只不过越通用,可能被挖过,被撞洞的机率就越大。挖洞都是拼思路,思考一条少有人走过的路,然后开发相应的fuzzer,或许就能有所收获。
在向白帽子进阶的过程中,有一件事林大夫和雷锋网编辑要友情提醒:
白帽子被捕事件与乌云升级事件再次敲响警钟,一切非授权的渗透测试都是非法的。很多白帽子没有认清测试与入侵的区别,有的人都拖了别人数据库,仍美其名为”友情测试“,即使是授权的测试行为,如果测试过程中仍采用破坏式、入侵式的手段,厂商依然可以追究法律责任。“出来混,早晚要还的!”
不要碰黑产,不要搞入侵破坏,才能在安全这条道路上走得更久更远。
最后,附上林大夫在2014年个人博客上撰写的安全书籍阅读心得,各取所需,丰俭由人。
1.移动安全篇
国内移动安全书籍很少,主要还是以国外的居多,虽然大部分未引进,但是很多可以在网上找到高清彩色英文原版,有些可能就是官方自己发出来的。虽然国外这方面的书籍多,但看过几本Andorid安全书籍,感觉还是一般,深度不够,比如《Android Security:Attacks and Defenses》《Android Apps Security》《Mobile Application Security》《Mobile Malware Attacks and Defense》,国内的《移动互联网之智能终端安全揭秘》也是不推荐,过多列点组装,缺乏个人主观理解,《Android安全机制解析与应用实践》更是别买,学术派写的wiki式书籍。
笔者推荐几本:《Android Security Cookbook》《Android 软件安全与逆向分析》主要是讲Android应用安全,Android系统安全的书籍尚无专著出版,不过4月份《Android Hacker’s Handbook》就要出版了,看目录还是感觉蛮有料的,iOS安全书籍相对少一些,主要有《iOS Hacker’s Handbook》(主要讲系统安全,别买中文版,译者缺乏软件安全基础,错误太多,令人不忍直视)、《iOS应用安全攻防》(英文版,偏向应用安全)、 《iOS应用逆向工程:分析与实战》(iOS应用逆向方面的书籍),其它关于Android与iOS开发的书籍,网上电子版很多,自己挑着看 吧,移动安全方面的书籍,我大多是看电子书,买的纸质书基本都是不行。所以目前,移动安全书籍,还是尽量看国内英文原版吧,如果对Android安全感兴 趣的,看下《Android Hacker’s Handbook》一书(补充:目前网上已有电子版)。
2.程序设计篇
此处 程序语言主要以C、ASM为主,毕竟自己主要也只是学这两门语言,其它脚本语言,如PHP、ASP就不提了。关于C语言的书籍就有传说中的 “C语言四大名著”,即《C程序设计语言》《C和指针》《C陷阱与缺陷》《C专家编程》,感觉在C编程上这几本书就够用了,至于数据结构和算法可参 考其它国外名著。国产的编程书籍没几本可出手的,关于C入门书籍,很多人会推荐谭浩强那书,最初我也是读这本书入门的,但后来慢慢地发觉那书不是很好,错误不少,编程风格也不好。对于那些写着精通XXX、24小时XXX、30天XXX、XXX从入门到精通,这些书都是拿书名来忽悠人的,纯粹是作者用来骗稿 费的,对比一下那些国外名著的书名就知道了,一本好书一般是不会用那些土名字的。
我很赞成——半年之内不接触的技术,就不用去买这方面的书籍了。关于ASM主要就《80x86汇编语言程序设计》《windows环境下的32位汇编程序设 计》这两本,汇编语言的书籍相对会少一点,一些网上书店的程序设计一栏中甚至没有asm一类。很多编程书籍的内容写的都是千篇一律,比如C语言书籍, 不外乎都是些变量、数组、指针这些,但是某些书籍中就会有提到编程风格、内存优化、树、链表、折半搜索法,GDB调试,linux方面的知识,比如《c primer plus》《C和指针》,这些也算是书本的一个亮点。关于windows编程,首推《windows程序设计》上下册、《windows核心编程》,其它的感觉也没必要看太多,还是以实践为主。
编程书籍由于附有很多代码,在电脑上看电子版的感觉很伤眼,容易眼疲劳,有必要的话,可以买实体书来看,而且在实际应用中,有时可以再拿出来参考参考,方便查阅。与此同时,也要奉劝大家“纸上得来终觉浅,绝知此事要躬行”,特别是对于编程学习者,一定要动手写代码,光看书是没用,这也是我曾经犯过的错误!而且有些书是用来参考查阅,不是用来看的,不然即使你把那些牛书都看完 ,到最后也可能连几句代码也写不出来,最后受伤的永远是你自己!
3.逆向工程篇
关于逆向工程这方面的书籍,自然是首 推看雪出版的《加密与解密》,在这方面,看雪的实力不会比国外的差,那里是逆向学习交流的好场所。在加解密第3版出版的时候就曾出现过山寨版的,因此大家 在购买时得看清楚了,最好到正规的书店购买,目前可能网上买不到了,不过网上有电子版。另外,这方面的书籍还有《黑客反汇编揭密》《黑客调试技术揭密》 《逆向工程揭密》,国内出版的《软件调试》也是本牛书,弥补了国内这方面的空缺。还有出版的《IDA权威指南》也是本不错的书籍,详细讲解了IDA的 方方面面,看了之后,你会发现,会用IDA与不会用的差别有多大了。
看雪翻译小组也曾出版过一本《IDA Pro代码破解揭秘》,不过这书我也没看过。在逆向工程这方面的书籍也差不多就这么几本了,其它像加解密入门实战,加密与解密实战超级手册,加解密全攻 略……这些基本上都可以摒弃,基本都是抄看雪加解密一书上的东西,大家无须花金钱、时间和精力在此上面。关于获取最新书讯的方法,大家可以订阅互动出版网 计算机新书的RSS,只要有计算机新书出来立马就知道了,它上面经常更新,不过很也是应用技术书籍,对于这些书籍,很多是没必要买的,比如什么 windows 7使用大全,精通注册表,windows操作XXX,有必要的话,直接百度、google就行了,没必要花钱去买这类书籍。
4.脚本安全篇
在 脚本攻防方面的书籍,最早的曾云好写的《精通黑客脚本》,这书写得相当全面,由浅入深,虽然不厚,但排版密集,内容还是很多的,只是纸质不太好,很 粗糙,里面有很多渗透实战案例,当年国内这方面的法律还不是很严格,若是放在今天,可能里面一些内容会被删除掉。另外大家也可看看老外的 《黑客攻防技术宝典:WEB实战篇》(重点推荐)《xss attack》《sql injection》(中译本:《SQL注入攻击与防御》),以及《WEB安全测试》,英文版的网上有电子书。近两年国内出版的,主要就《白帽子讲WEB 安全》、《WEB前端黑客技术》,推荐一阅。
5.系统底层篇
当年看的第一本系统原理书籍是《深入理解计算机系统》,很不错的一本书。其它此类书籍还有《深入解析windows操作系统》《widnows系统原理与 实现》等,国内之前还出了本《windows操作系统原理》,上面还写着重点大学计算机教材,后面看了乱雪博客上一篇文章后才知道那书是抄袭的,还被原作者控告了,最后还赔偿了,当年我还从头看完了。
关于溢出攻击的书籍,国内主要有《网络渗透技术》、《0day安全:软件漏洞分析技术》《灰帽黑客》,虽然网渗一书很早出版,其中有些已经过时,但是其思想是不会过时的。若想获取最新书籍,最好的方法还是上面说的:订阅RSS。对于一些不熟悉的技术书籍,一定要先看完整目录,然后找找网上是否有电子版的,如果有就先看看再决定是否再买,另外如果你已经买或看过同类的经典书籍,就需要重新考虑是否真的有必要买 了。讲了那么多要花钱的书,下面讲讲免费的一套,那就《intel开发手册》,这一套是由英特尔公司免费向全球赠送的书籍,共五本,之前我还订了两套,全都从美国寄到学校来了,原本以为第一封邮件没收到,就再发了一封,没想到Intel居然连送两套过来,真是大方得不行啊!现在他们已经不再寄送纸质书,仅寄送包含电子版的光盘。’
雷峰网原创文章,未经授权禁止转载。详情见转载须知。