关于漏洞挖掘的一点想法

1. 官方文档永远都是最好的一手资料,通常它包含原理,使用方法以久示例代码,对于攻击面分析非常有参考价值,而且如果自写fuzzer,甚至可能因此少写很多代码。有时候单纯把系统API过一遍都可以挖到一堆,即使是现在的windows与macOS/iOS系统,只要你愿意,依然可以挖到0day,如果运气好的话,一个API挖出10+CVE也是有可以的,因为我早已验证过!

2. Fuzzing三要素:目标、策略、样本。假设有人开源一款fuzzer或者新型方法论的paper,很多人的第一印象都会是:漏洞刷光了才发出来的吧。从发布者的角度来看,确实如此,但是从上述三要素来看,刚不一定。以afl刚开源为例,虽然很多开源库已被挖了不少,但后来被移植到很多地方,如android,还有内核,也有不错的产出;afl变异策略本身还是暴力为主,一些条件语句有时难进入,所以有人拿比较语句中常量值作为变异值插入,以增加代码路径;有人拿afl 去fuzz stagefright,使用相同的测试程序,但因样本不同,导致结果不一样。所以,fuzzer的效果主要还是依赖这三要素的。

3. 保持学习,但有时方法更重要。每个月都会一些安全工具或技术文档公开,以前我都会及时跟进学习,但很多只是被动学习,遗忘率太高了。下面一张图就很好的介绍了这一情况,但要求你老教授他人,显然是不现实,或者写作是一种更好的方式。学习也不在量多,关键还是在于主动思考与实践的投入时间的长短。就像大家都看project zero的buglist,有的人用来搞pr研究,有的人用来刷src,有人动手调试分析,甚至试着写fuzzer验证思路……


关于漏洞挖掘的一点想法_第1张图片

4. 专业与业余的差别有时只体现在细枝末节上。以前刚开始做渗透测试时,可能就是开网站,看见输入框时写句测试下,还有踩点收集信息这种小事,很随意,自然难逃"随机挖洞"的命运。正是这些看似小事的东西,很多专业者都搞出了很自动化、工程化的系统出来,从子域收集,ip提取,字典定制化生成,新业务监控,威胁情报收集,漏洞扫描、告警,甚至自动生成报告,提交至zdi、hackerOne及各大SRC平台,实现技术套现……

5. 肉眼挖洞的能力是需要,但不能全部人工,否则产出相当有限,如果你想追求精品漏洞又有很多时间(不代表自动化就出不了精品),不嫌累的话,请随意!我挖到的CVE大多是在睡觉的时候挖的。

你可能感兴趣的:(关于漏洞挖掘的一点想法)