首先说一下成就吧,研究生从0开始学,现在手握8个CVE(现在11个,论文中申请的几个CVE也分配下来了),但都是垃圾CVE,只有一个我认为有点价值。
然后说一下我当时的路线。
刚开始学习二进制安全的时候,各种搜集资料,在知乎上看了一个人写的路线,就按照那个学习。但是每当过了一个阶段就很茫然不知道该干啥。
一开始就直接啃《加密与解密》。
然后学习PE,疯狂逆向,看了小甲鱼,还有《C++反汇编与逆向分析技术揭秘》,Windows编程,win API。
后面看了《0day》那本书受益匪浅,为了实践后面开始打CTF,熟练了一些漏洞利用的东西。这里我觉得《CTF竞赛权威指南》非常友好。
然后实验室的课题学习了APK逆向,还有一些渗透的知识,病毒编写,分析了当时一些比较经典的病毒,如熊猫烧香。
并最后在软件安全性分析课程上接触了fuzzing,符号执行之类的漏挖工具,并去看了《模糊测试 强制挖掘安全漏洞的利器》,然后在这段时间疯狂复现漏洞,自己挖漏洞,
并且去学习了Linux操作系统,以及了解了对应的内核fuzzer,复现了一些Windows漏洞,并用了对应的框架练习,是HEVD还是啥来着,之前有写。
最后去qax实习直接上手挖掘漏洞,并挖到了多个设备漏洞,然后在那段时间学习了IOT漏洞挖掘,并看了一些操作系统漏洞vxworks。说实话通过实践进步是真的快。
以上是我走的学习路线,还有很多没写,但是可以看到全是弯路,可以全都学,但是没必要。不过也正是逆向学习的比较久,所以基本功还可以。接下来主要说一下漏洞方向的路线。
首先,要明确一下自己想要走哪个方向。1、逆向(可以多个平台)。2、病毒分析。3、漏洞挖掘。4、安全研究。还会分细小的方向,可以自己再去了解。
确定方向之后就开始专门看该方向的一些知识,在熟练并精通之后开始扩展知识面。
无论哪个方向,哪个平台,基础知识很重要,Linux系统,Windows系统。然后是逆向,反汇编。这些是基础。
接下来就是选择的各个方向的学习了。:逆向就继续逆向的知识,多练。病毒分析也要多练。安全研究要多看论文,知道并熟悉漏洞利用方式。
总结就是多练
漏洞挖掘也分好多方向:浏览器漏挖,虚拟化,iot,车联网,应用安全等。而且也要区分一下平台,Linux,Android,Windows,还有一些其他的系统。
在基础知识拿捏以后,Windows下如OD,windbg,x64dbg。IDA,GDB要会并联调。然后需要了解一下漏洞的知识,漏洞利用的知识。可以从复现漏洞,CTF来学习,学习完之后就可以通过审计源码或者反汇编二进制程序来挖掘。然后就是练就行了,多关注一下最新安全消息,安全漏洞。
漏洞利用建议多复现,尤其是哪些经典漏洞,漏挖其实就是看运气了,前面掌握了,基本挖到漏洞就是时间问题了。而且现在有一些开源漏挖工具,可以用那个试试,然后进行漏洞分析。boofuzz,afl,syskaller,winafl等
推荐几个安全网站:看雪,freebuf,吾爱破解 ,CTF ALL in one。
推荐的学习书籍:觉得自己脑子不够用的建议看视频学习,小甲鱼的汇编,逆向,破解,还有漏挖。
想快点的,就看书,逆向看黄皮书《C++反汇编与逆向分析》,漏洞知识,0day必看,也可以通过《CTF竞赛权威指南》
较口语且冗余,请谅解。