文章出处:FreeBuf
文章链接:http://www.freebuf.com/articles/neopoints/144967.html
注:本人还会定期更新自己的博客并给大家介绍更多的漏洞挖掘方法,感兴趣的朋友可以关注一下【博客地址】。
问题:怎样发现漏洞?
首先,你可能已经发现了这个问题其实是一个“高度抽象的”的问题。因为漏洞挖掘不仅涉及到很多有趣的技术,而且更重要的是,你所讨论的漏洞指的是一般人在网络渗透测试过程中所要寻找的一个系统漏洞,还是说在一个应用程序、服务、驱动程序、内核模块、操作系统或固件中发现一个之前从未被人发现过的漏洞?对于我个人而言,与渗透测试相比我对漏洞研究更加的感兴趣,所以我在本文中将主要讨论后面这种情况。
就我个人的理论体系而言,主要有以下三种类型的漏洞挖掘方法:
1. 代码审查(有可能涉及到代码的逆向工程分析);
2. 黑盒测试(包括使用扫描器和模糊测试工具等软件);
3. 文档研究;
上面这三种方法都有其各自的前提条件以及相应的限制,并且还有各自的适用场景,因为没有什么方法是通用的,我们需要根据自己的目标来选择相应的测试方法。一般来说,我在对一个目标进行安全测试的时候都会同时使用上面这三种方法。
1. 代码审查
要求:
-熟悉常见的漏洞类型;
-熟悉逆向工程技术;
用处:
-能够找到十分复杂的安全漏洞;
限制:
-需要花费很多的时间和精力;
(a) Common Weakness Enumeration (MITRE)
(b) AdversarialTactics, Techniques & Common Knowledge (MITRE)
(c) OWASPPeriodic Table of Vulnerabilities
2. 黑盒测试
要求:
-熟悉常见的漏洞类型;
-【自动化黑盒测试】了解黑盒测试工具的运行机制以及使用和配置方法;
用处:
-【自动化黑盒测试】测试规模和范围非常大;
-【手动黑盒测试】如果你触发了一个漏洞,那么你就找到了一个漏洞,这种场景下的假阳性会比较低;
-【自动化黑盒测试】扫描器/模糊测试器都是非常好的工具,而且也有很多现成的工具可以使用,但是很多复杂的漏洞它们是发现不了的;
-【手动黑盒测试】这种方法比代码审计要节省时间,但是测试规模和范围会受到限制。除此之外,测试效果还会受到研究人员的经验以及想象力的限制;
3. 文档研究
要求:
-熟悉常见的漏洞类型;
-曾经当过程序员,或者了解程序员得思维方式;
用处:
-有可能在同一个目标中发现多个相同的安全漏洞;
限制:
-测试效果会受到研究人员的经验以及想象力的限制;
-往往针对的是系统中的单个协议、格式或某个部分;
总结
版权申明:内容来源网络,版权归原创者所有。除非无法确认,都会标明作者及出处,如有侵权烦请告知,我们会立即删除并表示歉意。祝愿每一位读者生活愉快!谢谢!
本文始发于微信公众号(网络安全编程与黑客程序员):漏洞挖掘小白入坑指南
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论