学习方法

漏洞挖掘学习方法

时间:2021-02-03 10:05:08 学习方法 我要投稿

漏洞挖掘学习方法

  导语:首先我会从一个较高的角度总结于我眼中何谓漏洞挖掘;然后详细讨论在软件漏洞挖掘过程中我们需要掌握的技能以及需要的知识和工具等。下面由小编为大家整理的漏洞挖掘学习方法,希望可以帮助到大家!

漏洞挖掘学习方法

  一、什么是漏洞挖掘

  从某个角度来讲,我们可以将漏洞挖掘工作比作玩迷宫游戏,不同的是,这个迷宫与我们平时所见的游戏中的迷宫略有不同:

  (1)你无法立即看到它整体的外观;

  (2)随着漏洞挖掘工作的深入,这个迷宫的形状逐渐扩大;

  (3)你将会拥有多个起点及终点,但是无法确定这些点具体在哪里;

  (4) 最终这个迷宫可能永远也无法100%的完整,但是却能够弄清楚A点至B点的一条完整路径。

  二、漏洞挖掘需要具备的知识

  从事漏洞挖掘工作需要具备的知识是极其广泛的,并且随着时间在不断改变,也取决于你所研究的对象(web程序、桌面程序、嵌入式等等)。不过,万变不离其宗,所需要掌握的知识领域却总可以认为是确定的,我认为大致可以分为以下四个方面:

  (1) 程序正向开发技术。这是一个开发者需要掌握的能力,包括编程语言、系统内部设计、设计模式、协议、框架等。拥有丰富编程经验与开发能力的人在漏洞挖掘过程中往往比那些只对安全相关领域有所了解的人员对目标应用能有更深入的理解,从而有更高的产出。

  (2)攻防一体的理念。这些知识涵盖了从基本的安全原则到不断变换的漏洞形态及漏洞缓解措施。攻击和防御结合的理念,能够有效帮助研究者既能够发现漏洞,同时也能够快速给出有效的漏洞缓解措施和规避方法。

  (3)有效使用工具。能够高效的使用工具能够快速将思路转化为实践,这需要通过花时间去学习如何配置和使用工具,将其应用于自己的任务并构建自己的工作流程来不断积累经验。更进一步,需要深入掌握所使用工具的原理,以及如何对其进行二次开发,以使得其能够更加高效的应用于当前的工作实际。事实上,我认为面向过程的学习方法往往比面向工具的学习方法更加高效以及有价值,当自己发现一个在使用一个工具遇到瓶颈时,先不要退缩,尝试去改造它,或者通过自己动手实践去完成能够适应当前工作的工具,这往往能够帮助快速积累大量实践经验。帮助我们以后更加高效的去实践漏洞挖掘工作。

  (4)对目标应用的`理解。最后,也是最重要的,作为一个漏洞挖掘人员,对自己研究的应用程序在安全性方面必须要比这个程序的开发者或维护者有更深的理解。这样你才能尽可能的发现这个程序中的漏洞并修复它。

  三、 漏洞挖掘需要做什么

  当我分析一个应用程序时,我通常采用下图展示的四个“分析模型”,每当我遇到障碍导致我思路受阻时,我就会从其中一个模型切换到下一个模型,当然,这不是一个线性的切换,我不知道这个方法是否对每个人都有用,但是对于我的确是帮助巨大:

  (1) 理解有关漏洞的相关模型(2) 试图假设一个场景去破坏程序(3) 尝试去破坏程序

  漏洞的复杂性分布非常广。一方面,有很多漏洞非常简单与直观,并且利用代码一目了然,比如说经典的sql注入。另一方面,在系统中有的看似并不相关,并且就其自身而言并非不安全,但是当这些东西以一种特定的方式结合起来的时候,就有可能引发大的漏洞,比如说条件竞争,或者一些其他的复杂的逻辑漏洞。我尝试将这些漏洞按照复杂级别分为“一级漏洞”和“二级漏洞”,不过也有其他分类方法。引用一局来自Project Zero的Ben Hawkes说过的一句话:

  Themodern exploit is not a single shot vulnerability anymore。 They tend to be achain of vulnerabilities that add up to a full—system compromise。

  如今想要完成一个完整的利用,只靠单一的漏洞往往行不通。很多时候我们需要靠一连串的漏洞才能完成一起完整的利用,致使系统“妥协”。

【漏洞挖掘学习方法】相关文章:

探析法律漏洞分类的研究06-08

长尾关键词挖掘,网站关键词挖掘01-05

数据挖掘实习报告04-08

挖掘机转让合同05-09

计算机安全漏洞的动态检测02-26

信息安全漏洞闭环管理探讨论文10-29

计算机软件安全漏洞检测02-15

长尾关键词挖掘方法01-02

承包挖掘机租赁合同04-28

数据挖掘电子商务论文03-09