[转载]安全研究者的自我修养

资深安全研究员的经验, 分享, 保留在博客里


1、刻意练习10000小时

这份“鸡汤”道理,想必大家都懂,就不解释了,不懂的自行百度,或者去读读《异类》这本经典书籍。

作者建议以月为单位来制定研究目标,他曾连续花了6个月的时间来研究Chrome Sandbox,但最终一无所获。

所以,有时坚持了不一定能达到目标,但不坚持,就更没戏了。

2、训练挖洞的双技能

(1)看洞:哪里看?历史漏洞的git log、bug报告、代码质量报告等等

(2)识洞:就是肉眼看代码找漏洞,即代码审计,难点也就是在这上面,训练方法继续往下看

3、代码审计训练

(1)根据自己目标定位,寻找相应的历史漏洞案例进行学习,比如要搞chrome就找chrome的历史漏洞

(2)掌握漏洞所在的模块或子系统,但不看完整的漏洞细节描述,尝试在漏洞版本中找出对应的漏洞

(3)如果(2)中未能找出漏洞,就去看漏洞细节描述,对比自己的审计过程,看遗漏了哪一步骤

(4)不断重复上述训练,直至相信:挖洞只是体力消耗,而非能力问题

这第4点说得,非常励志,因为挖洞挖久了,有时真的容易怀疑自己的能力,目标难度越大,越容易打击人。

作者第一次训练的漏洞是j00ru(Project Zero成员)的IDA漏洞:[已过期]

4、3~5年的训练计划

1~2年:做做 CTF 或 WarGames 题目,网上有很多CTF writeup可以参考学习

2~3年:简单点的目标,就是找相对容易挖的产品

3~5年:困难点的目标

目标的难易程度可以直接参考相应的产品的漏洞奖励计划或私有市场的价格,挑选出一份目标清单,按难易程度排序,逐一去实现它。

5、Fuzzing训练

作者代码审计2年后,才开始尝试Fuzzer开发。

(1)拿已公开的历史漏洞问自己:如何写fuzzer挖掘到此漏洞?

(2)如果自己不知道此漏洞,那又能够挖掘到呢?

(3)不断重复训练并改进fuzzer,相信会有更多漏洞被意外发现

6、努力往往比运气和天赋更重要

虽然挖洞也需要一定运气和天赋,但多数你认为的挖洞天才,其实只不过是花了比你多100倍,甚至更多的时间在这项技术研究上而已

7、进入研究者团队或社区,互相学习

国外的交流氛围会比国内的更好一些,也更愿意分享。

很多时候自己的交流圈,大多是一些熟识的同行,或者同事,一般可交流的人还是比较少的。

经常在网上看到不少人会问,如何认识xx大牛、黑客,但其实很多时候却是:

努力提高自己的专业能力,圈子最终会吸纳你进去认识更多圈内人。

8、建立自己的漏洞信息来源

RSS订阅无疑是自己最好的方式,这个需要依赖平时自己去不断收集订阅。

很多漏洞相关的博文,往往曝露出某些软件新的攻击面,抢占先机就显得尤为重要,比如当年Android stagefirght mp4漏洞、word公式编辑器、adobe图片转换器等等,如果能及时关注并尝试去挖掘,往往可以收获不少漏洞的。

9、收集和学习开源的漏洞挖掘工具

比如afl、honggfuzz、libfuzzer等很多优秀的漏洞挖掘工具,都是值得好好阅读代码,学习其中的fuzzing思路,可以更好地应用到未来的漏洞挖掘研究上。

10、很多不愿搞研究工作的挖洞人,只不过是为了权衡利弊

在《从0到1:开启商业与未来的秘密》一书中有一章叫做“秘密”,漏洞研究可以当作挖掘秘密,为什么人们不探索秘密呢?书中提到4种原因,我觉得同样适用于漏洞研究领域:

(1)渐进主义:把目标定得低一些,更容易取得好成绩;

(2)风险规避:人们害怕秘密是因为怕犯错,除此之外,可能也担心KPI没法完成,又或者挖洞拿到的奖金又该如何跟公司“分赃”呢?

(3)自满:很多时候,某些人可以坐享其成,又何必自己去挖掘秘密;国内研究氛围又喜欢搞营销吹牛逼,牛逼吹多了吹大了,有时连自己都信了;

(4)扁平化:任何一个拥有雄心壮志的人,在涉及某一研究领域之前都会问自己一个问题:如果有可能挖掘到漏洞,难道全球人才库中更加聪明、更加有技术能力的人还没有发现吗?这种怀疑的声音阻止了不少人去探索秘密,从事研究工作,因为身处的世界似乎大到任何个人都无法做出独特的贡献。

原文链接: [转载]安全研究者的自我修养 版权所有,转载时请注明出处,违者必究。
注明出处格式:流沙团 ( https://gyarmy.com/post-517.html )

发表评论

0则评论给“[转载]安全研究者的自我修养”