专利名称:一种面向网络的渗透测试方案自动生成方法
一种面向网络的渗透测试方案自动生成方法技术领域
本发明属于网络信息安全领域,特别涉及一种面向网络的渗透测试方案自动生成方法。
背景技术:
渗透测试是测试者模仿受控攻击,找出绕开应用程序、系统、网络的安全特征方法的安全测试。渗透测试作为一种专业的安全服务,在国内外逐渐开始得到较多的应用。通常,渗透测试有明确的范围、目标和时间限制,一般用于测试企业安全的实时状况和安全措施的效果,适用于安全审计部门做评估测试,也可以成为大型评估的一部分。
在渗透测试过程中,主要依靠渗透测试人员,依靠自己的经验和知识,对一次渗透的测试过程进行计划,然后执行渗透测试的计划完成一次渗透的测试,此次渗透的测试的执行结果,可能并没有达到渗透测试的目标,但获得了一些新的信息,因此还可以进行一次渗透的测试,因此还需要人工根据新的信息,进行又一次的渗透测试过程的计划。因此在渗透测试中,人工始终参与整个过程,这使得渗透测试依赖于测试人员的水平,并且繁琐。计算机是擅长机器推理和符号转换的自动系统,它比人工准确、快速,如果用计算机自动完成渗透测试方案的自动生成,可以将人工从制定渗透测试方案繁琐的细节中解脱出来,而专注于渗透测试目标、渗透测试规定等的制定。
因此,提出一种面向网络的渗透测试方案自动生成技术,根据人工制定的渗透测试信息、渗透测试目标信息,自动生成其渗透测试方案。本技术通过从初始条件为起点,渗透目标为终点,根据漏洞等信息,建立从起点到达终点的图,称为渗透图,根据渗透图生成渗透测试方案。
目前关于渗透测试,已经有美国NIST提出的模型(参考文献K. karfone, Μ. Souppaya, A. Cody, A. Orebaugh. Technical Guide to Information Security Testing and Assessment[J]National Institute of Standards and Technology, 2008 :36-39)。 但是目前的渗透测试过程人工始终参与过多。
渗透测试方案生成研究,目前存在的问题是没有建立渗透测试方案明确的抽象模型,而这是渗透测试方案自动生成的基础。
基于搜索的渗透图生成方法,现在多采用基于前向搜索的渗透图生成方法(参考文献孙亮,李东,张涛.网络攻击图的自动生成[J].计算机应用研究,2006,(3) 119-122)和基于后向的渗透图生成方法(参考文献Swiler,L. P. Phillips, C.Ellis, D.Chakerian, S.Computer-attack graph generation tool[R]. Sandia Nat. Labs., Albuquerque, NM ;. In :DARPAInformation Survivability Conference&Exposition II, 2001 :307-321)。这样存在的问题是单纯一个方向的搜索,会造成搜索的无关节点过多。 而在渗透测试中,由于初始条件和目标都是给定的,我们提出可以从两个方向交替进行搜索,生成渗透图,以减少无关节点的搜索。发明内容
本发明要解决的技术问题渗透测试方案自动生成技术中目前存在的不足单纯的基于前向搜索的渗透图生成算法和基于后向搜索的渗透图生成算法,会导致搜索大量无关节点;并且目前缺少渗透测试方案的抽象模型和相应的生成算法。为了克服这些不足,本发明提供一种面向网络的渗透测试方案自动生成方法,能够根据制定的渗透测试信息,由计算机自动生成其渗透测试方案。它采用前向搜索和后向搜索相结合的渗透图生成算法, 以减少对无关节点的搜索;它给出包含渗透测试用例的渗透测试方案的模型,并给出渗透测试方案的生成算法。
本发明解决上述技术问题的技术方案是一种面向网络的渗透测试方案自动生成方法,其特征在于包括“计划”、“信息收集”和“渗透图生成”、“渗透测试方案生成”四个处理流程;
其中,“计划”的功能是给出关于渗透测试的渗透测试信息;
“信息收集”的功能是根据设定的渗透测试信息,收集网络上的漏洞信息;其中,渗透测试信息包括渗透测试约束条件和渗透测试目标;网络上的漏洞信息包括网络上的漏洞和主机之间的连接关系;
“渗透图生成”的功能是根据信息收集模块收集到的信息,生成从渗透测试初始条件节点到渗透测试目标节点的渗透“渗透测试方案生成”的功能是根据渗透图,生成渗透测试方案。
其中,所述的“渗透图生成”流程采用后向搜索与前向搜索相结合的渗透图生成方法,此方法实现过程如下
首先,初始化目标节点和初始节点以渗透测试目标作为目标节点,以渗透测试初始条件作为初始节点;
然后,从目标节点开始的后向搜索和从初始节点开始的前向搜索,交替进行,生成渗透图;处理步骤如下1)目标节点向后匹配搜索,生成新的节点和边;将新的节点,减去包含在初始节点中的节点,设为新的目标节点;幻从初始节点向前匹配搜索,生成新的节点和边;将生成的节点和边;将新的节点,减去包含在目标节点中的节点,设为新的初始节点;3)交替迭代进行后向匹配搜索的步骤1)和前向匹配搜索的步骤幻,直到有一个方向无法继续匹配下去,或者新的初始节点或者新的目标节点为空集如果有一个方向无法继续匹配下去,则只从另一个方向不断向前匹配搜索,直到无法继续匹配,则渗透图生成;如果新的目标节点或者新的初始节点为空集,说明两个方面的匹配已经完成,则渗透图生成。
其中,渗透测试方案生成方法,是根据渗透图自动生成渗透测试方案;此方法具体在于渗透测试方案的模型,和渗透测试方案生成方法;其中渗透测试方案模型特征,和渗透测试方案生成方法的步骤如下
(1)渗透测试方案的模型
渗透测试方案模型如下渗透测试方案是由渗透测试信息、渗透测试用例序列构成的二渗透测试信息包括渗透测试约束条件、渗透测试目标;
渗透测试用例是一个四元组包含了渗透测试用例目标、渗透测试环境、渗透测试手段、渗透测试用例期望结果;
其中,渗透测试用例目标是获取主机的权限和主机之间的关系,其中信任关系ftp的· rhost漏洞造成的;
渗透测试环境是有漏洞信息和已获取的主机权限和主机之间连接关系和服务关系构成的;
渗透测试手段是漏洞利用手段和获取主机之间关系的手段;渗透测试用例期望结果是获取某个IP的主机的某种权限;
(2)渗透测试方案生成方法
渗透测试方案的生成方法的分为“渗透图的环路检测”、“渗透测试路径生成”、 “渗透测试路径排序”、“渗透测试方案生成”四个处理;几个处理分别如下
“渗透图的环路检测”处理的输入是渗透图;首先对渗透图进行环路检测,然后去除检测出的环路。输出是去除环路的渗透“渗透测试路径生成”处理的输入是去除环路的渗透图;对渗透图,采用广度优先搜索的方法生成从起点到终点的各条路径;输出是从渗透图的起点到终点的所有的渗透测试路径;
“渗透测试路径排序”处理的输入是“渗透测试路径生成”处理输出的所有的渗透测试路径;输出是按照渗透测试可能的成功率的高低顺序排好序的,渗透测试路径构成的序列;
“渗透测试方案生成”输入是排好序的渗透测试路径构成的序列,根据渗透测试方案模型,对渗透测试路径序列进行处理,得到渗透测试方案输出。
本发明与现有技术相比的优点在于
1、本发明考虑到基于搜索的渗透图生成方法中,搜索的无关节点过多的问题;现有的基于搜索的渗透图生成方法,或者采用基于前向搜索的方法生成渗透图,或者采用基于后向搜索的方法生成渗透图;本技术利用渗透测试中渗透测试初始条件、渗透测试目标都明确的优势,采用后向搜索和前向搜索相结合的方法生成渗透图,可以在渗透图生成过程中,减少对无关节点的搜索。
2、本发明考虑了渗透测试方案没有明确的抽象模型的问题,考虑到渗透测试本质上是一种测试,借鉴软件测试中“测试用例”的概念,给出“渗透测试用例”的概念,进而给出渗透测试方案的模型。使得形式化的渗透测试方案可以被计算机处理。在此基础上,给出一种由渗透图生成渗透测试方案的方法。
图1为本发明的渗透测试方案自动生成方法的流程图2为图1中渗透图生成方法的流程图3为图1中渗透测试方案生成方法的流程图4为图1中的渗透测试方案的概念划分图。
具体实施方式
下面结合附图和实施例对本发明进一步说明。
1.如图1所示,本发明给出一种面向网络的渗透测试方案自动生成方法,此方法包括“计划”、“信息收集”和“渗透图生成”、“渗透测试方案生成”四个处理流程。其中,“计划”处理流程是给出关于渗透测试的渗透测试信息。“信息收集”处理流程是根据设定的渗透测试信息,收集网络上的漏洞信息,其中渗透测试信息包括渗透测试约束条件和渗透测试目标;网络上的漏洞信息包括网络上的漏洞和主机之间的连接关系。“渗透图生成”处理流程是根据信息收集模块收集到的信息,生成从渗透测试初始条件节点到渗透测试目标节点的渗透图。“渗透测试方案生成”处理流程是根据渗透图,生成渗透测试方案。其中
“计划”处理流程的输入是渗透测试规定、渗透测试范围、渗透测试目标信息;输出是渗透测试信息,包括渗透测试约束和渗透测试目标,渗透测试约束是本次渗透测试的约束条件,如渗透测试的可利用主机的范围、渗透测试的初始条件等,渗透测试目标是要渗透的目标主机上的权限。
“收集信息”处理流程的输入是渗透测试约束条件和渗透测试目标,输出是渗透测试信息和漏洞信息,其中渗透测试信息包括渗透测试约束条件和渗透测试目标,漏洞信息包括漏洞相关信息和主机之间的关系信息。这些输出结果,存放在“渗透测试信息和漏洞信息库”中,以供下一个处理流程“渗透图生成”作为输入。
“渗透图生成”处理流程的输入是“渗透测试信息和漏洞信息库”中的漏洞信息, 输出是渗透图。
“渗透测试方案生成”处理流程的输入是渗透图、“渗透测试信息和漏洞信息库” 中的渗透测试约束条件;输出是渗透测试方案。
2.如图2给示,本发明“面向网络的渗透测试方案自动生成方法”中的“渗透图生成方法”的流程图。
方法中涉及的两个实体渗透图和漏洞模版库。
渗透图,由节点和边构成。其中,节点包括三种类型的节点初始属性节点、利用节点、可达属性节点;初始属性节点代表网络中的初始安全属性,利用节点代表对网络上的漏洞信息可进行的利用,可达属性节点代表成功利用网络上的漏洞信息后所获得的安全属性;边表示初始节点与利用节点、利用节点与初始节点之间的因果关系,代表在初始节点表示的初始安全属性下,通过可进行的利用,利用成功后获得新的安全属性。渗透图是以渗透测试初始条件为起点,以渗透测试目标为终点的由以上的节点和边组成的图。
生成渗透图,需要提前构建好“漏洞模板库”。漏洞模板库中的每一条信息包括漏洞信息、前提条件、结果条件。其中漏洞信息是主机上的漏洞,或者主机之间的连接关系; 前提条件是网络的初始安全属性,结果条件是漏洞信息利用成功之后获得的安全属性。
渗透图的生成方法即是要给出从渗透测试初始条件、渗透测试目标、漏洞信息, 得到渗透图的方法。有了构造好的漏洞模版库,就可以从渗透测试初始条件,结合漏洞信息,前向搜索匹配漏洞模版库中的每一条信息,匹配成功则前向生成渗透图。或者从渗透测试目标,结合漏洞信息,后向搜索匹配漏洞模版库中的每一条信息,匹配成功则后向生成渗透图。本发明采用后向搜索和前向搜索相结合的渗透图生成方法。因此
渗透图的生成分为“初始化目标节点和初始节点”、“后向搜索和前向搜索交替进行生成渗透图”两个处理,在构造好漏洞模版库的基础上,两个处理涉及的步骤如图2所示, 其中主要的步骤为(A1)-(A8)。渗透图的生成如下
(1)初始化目标节点和初始节点,涉及的步骤为(Al)。
(Al)首先初始化目标节点集合和初始节点集合
目标节点集合中的元素和初始节点集合中的元素,都是由IP地址和权限构成的二元组。
初始节点集合中的初始值,其中的每一个元素是渗透测试的一个初始条件。
目标节点结合中的初始值,其中只有一个元素,即渗透测试的目标。
(2)从目标节点开始的后向搜索和从初始节点开始的前向搜索,交替进行,生成渗透图。涉及的步骤为(A2)-(A8)
(A2)从目标节点集合,后向搜索匹配
目标节点集合,后向匹配搜索匹配。
对目标节点集合中的每一个节点调用漏洞模版库,匹配库中的每一条信息中的结果条件,如果匹配成功,则根据漏洞模版库中的此条信息中的漏洞(或者主机之间的关系)、前提条件,后向生成新的边和节点。将目标节点集合的值,置为新生成的节点集合;转 (A4)。
如果目标节点集合中没有匹配成功的节点,则说明此方向的搜索匹配不能继续进行,则转(A3)。
(A3)从初始节点集合,单一前向一个方向不断搜索匹配
对初始节点集合中的每一个节点调用漏洞模版库,匹配库中的每一条信息中的前提条件,如果匹配成功,则根据漏洞模版库中的此条信息中的漏洞(或者主机之间的关系)、结果条件,前向生成新的边和节点。对新生成的节点,继续前向匹配搜索,生成新的节点,直到不能继续匹配为止。这说明渗透图已经生成,转(A8)。
(A4)重置目标节点集合和初始节点集合
重置目标节点集合目标节点集合=目标节点集合-初始节点集合。
重置初始节点集合初始节点集合=初始节点集合-目标节点集合。
判断目标节点集合是否为空?如果为空,则渗透图生成,转(A8),否则转(A5)。
(A5)从初始节点集合,后向搜索匹配
初始节点集合,前向匹配搜索匹配。
对初始节点集合中的每一个节点调用漏洞模版库,匹配库中的每一条信息中的前提条件,如果匹配成功,则根据漏洞模版库中的此条信息中的漏洞(或者主机之间的关系)、结果条件,前向生成新的边和节点。将初始节点集合的值,置为新生成的节点集合;转 (A7)。
如果目标节点集合中没有匹配成功的节点,则说明此方向的搜索匹配不能继续进行,则转(A6)。
(A6)从目标节点集合,单一后向一个方向不断搜索匹配
对目标节点集合中的每一个节点调用漏洞模版库,匹配库中的每一条信息中的结果条件,如果匹配成功,则根据漏洞模版库中的此条信息中的漏洞(或者主机之间的关系)、前提条件,后向生成新的边和节点。对新生成的节点,继续后向匹配搜索,生成新的节点,直到不能继续匹配为止。这说明渗透图已经生成,转(A8)。
(A7)重置目标节点集合和初始节点集合
重置目标节点集合目标节点集合=目标节点集合-初始节点集合。
重置初始节点集合初始节点集合=初始节点集合-目标节点集合。8
判断目标节点集合是否为空?如果为空,则渗透图生成,转(A8),否则转(A2)。
(A8)渗透图生成。
3.如图3给示,本发明“面向网络的渗透测试方案自动生成方法”中的“渗透测试方案生成”方法的处理流程。图4给出了 “渗透测试方案”的概念划分图。
首先对渗透图进行环路检测,然后生成各条渗透测试路径,对渗透路径进行排序, 然后生成各个渗透测试用例序列,进而生成渗透测试方案。
渗透测试方案的概念划分图如图4所示。渗透测试方案是由渗透测试信息、渗透测试用例序列构成的二元组。其中
渗透测试信息包括渗透测试约束条件、渗透测试目标。
渗透测试用例是一个四元组包含了渗透测试用例目标、渗透测试环境、渗透测试手段、渗透测试用例期望结果。
其中,渗透测试用例目标是获取主机的权限和主机之间的关系。
渗透测试环境是有漏洞信息和已获取的主机权限和主机之间关系构成的,这种关系包括连接关系和服务关系。
渗透测试手段是漏洞利用手段和获取主机之间关系的手段。渗透测试用例期望结果是获取某个IP的主机的某种权限。
图3所示的渗透测试方案自动生成的具体实现如下
(Bi)渗透图环路检测和去除;
如图3中的前三个处理是进行环路检测和去除的处理。
al)对渗透图进行正向拓扑排序选择没有入度的节点,作为正向拓扑排序中的第一个节点,然后从图中将此节点及相关的边都去掉。选择新的没有入度的节点,重复这样的处理,直到没有这样的节点为止。
bl)对渗透图进行反向拓扑排序选择没有出度的节点,作为反向拓扑排序中的第一个节点,然后从图中将此节点及相关的边都去掉。选择新的没有出度的节点,重复这样的处理,直到没有这样的节点为止。
cl)经过对渗透图进行正向拓扑排序和反向拓扑排序后,如果还有剩余的节点及边,即为环路。如果没有剩余的节点和边,则转el)。
dl)选择其中的一条边去掉,转al)。
el)环路去除完毕。
(B2)从去除环路的渗透图生成渗透测试方案;
如图3中所示的后四个处理,是关于从去除环路的渗透图生成渗透测试方案的处理。
a2)对去除环路的渗透图,利用广度优先搜索的方法,生成各条从起点到终点的渗透测试路径。
b2)对各渗透路径,按照路径中的漏洞及主机间关系的可利用成功的经验值,进行排序。
c2)对排好序的各条路径,进行这样的处理根据路径中的每个原子渗透节点和其相邻的前后节点,生成每个渗透测试用例,根据路径中的渗透测试用例的前后顺序,生成渗透测试用例序列。
d2)从库中获取渗透测试信息。渗透测试用例序列、渗透测试信息组成的二元组, 为渗透测试方案,因此渗透测试方案生成。将渗透测试方案输出。
本发明考虑到基于搜索的渗透图生成方法中,搜索的无关节点过多的问题;现有的基于搜索的渗透图生成方法,或者采用基于前向搜索的方法生成渗透图,或者采用基于后向搜索的方法生成渗透图;本技术利用渗透测试中渗透测试初始条件、渗透测试目标都明确的优势,将渗透测试初始条件初始化为初始节点集合,将渗透测试目标初始化为目标节点集合,采用后向搜索和前向搜索相结合的方法生成渗透图,可以在渗透图生成过程中, 减少对无关节点的搜索。本发明考虑了渗透测试方案没有明确的抽象模型的问题,考虑到渗透测试本质上是一种测试,借鉴软件测试中“测试用例”的概念,给出“渗透测试用例”的概念,进而给出渗透测试方案的模型,使得形式化的渗透测试方案可以被计算机处理。在此基础上,给出了生成渗透测试方案的方法。
本发明未详细阐述的部分属于本领域公知技术。
权利要求
1.一种面向网络的渗透测试方案自动生成方法,其特征在于包括“计划”、“信息收集”和“渗透图生成”、“渗透测试方案生成”四个处理流程;其中,“计划”的功能是给出关于渗透测试的渗透测试信息;“信息收集”的功能是根据设定的渗透测试信息,收集网络上的漏洞信息;其中,渗透测试信息包括渗透测试约束条件和渗透测试目标;网络上的漏洞信息包括网络上的漏洞和主机之间的连接关系;“渗透图生成”的功能是根据信息收集模块收集到的信息,生成从渗透测试初始条件节点到渗透测试目标节点的渗透图;“渗透测试方案生成”的功能是根据渗透图,生成渗透测试方案。
2.根据权利要求1所述的一种面向网络的渗透测试方案自动生成方法,其特征在于 所述的“渗透图生成”流程采用后向搜索与前向搜索相结合的渗透图生成方法,此方法实现过程如下首先,初始化目标节点和初始节点以渗透测试目标作为目标节点,以渗透测试初始条件作为初始节点;然后,从目标节点开始的后向搜索和从初始节点开始的前向搜索,交替进行,生成渗透图;处理步骤如下1)目标节点向后匹配搜索,生成新的节点和边;将新的节点,减去包含在初始节点中的节点,设为新的目标节点;幻从初始节点向前匹配搜索,生成新的节点和边;将生成的节点和边;将新的节点,减去包含在目标节点中的节点,设为新的初始节点; 3)交替迭代进行后向匹配搜索的步骤1)和前向匹配搜索的步骤幻,直到有一个方向无法继续匹配下去,或者新的初始节点或者新的目标节点为空集如果有一个方向无法继续匹配下去,则只从另一个方向不断向前匹配搜索,直到无法继续匹配,则渗透图生成;如果新的目标节点或者新的初始节点为空集,说明两个方面的匹配已经完成,则渗透图生成。
3.根据权利要求1所述的一种面向网络的渗透测试方案自动生成方法,其特征在于 所述的“渗透测试方案生成”方法,是根据渗透图自动生成渗透测试方案;此方法具体在于 渗透测试方案的模型,和渗透测试方案生成方法;其中渗透测试方案模型特征,和渗透测试方案生成方法的步骤如下(1)渗透测试方案的模型渗透测试方案模型如下渗透测试方案是由渗透测试信息、渗透测试用例序列构成的二渗透测试信息包括渗透测试约束条件、渗透测试目标;渗透测试用例是一个四元组包含了渗透测试用例目标、渗透测试环境、渗透测试手段、渗透测试用例期望结果;其中,渗透测试用例目标是获取主机的权限和主机之间的关系,其中信任关系ftp 的· rhost漏洞造成的;渗透测试环境是有漏洞信息和已获取的主机权限和主机之间连接关系和服务关系构成的;渗透测试手段是漏洞利用手段和获取主机之间关系的手段;渗透测试用例期望结果是获取某个IP的主机的某种权限;(2)渗透测试方案生成方法测试路径排序”、“渗透测试方案生成”四个处理;几个处理分别如下“渗透图的环路检测”处理的输入是渗透图;首先对渗透图进行环路检测,然后去除检测出的环路,输出是去除环路的渗透图;“渗透测试路径生成”处理的输入是去除环路的渗透图;对渗透图,采用广度优先搜索的方法生成从起点到终点的各条路径;输出是从渗透图的起点到终点的所有的渗透测试路径;“渗透测试路径排序”处理的输入是“渗透测试路径生成”处理输出的所有的渗透测试路径;输出是按照渗透测试可能的成功率的高低顺序排好序的,渗透测试路径构成的序列;“渗透测试方案生成”输入是排好序的渗透测试路径构成的序列,根据渗透测试方案模型,对渗透测试路径序列进行处理,得到渗透测试方案输出。
全文摘要
本发明提供一种面向网络的渗透测试方案自动生成方法,其解决的技术问题为目前的渗透测试方案主要靠渗透测试人员根据渗透测试的目标,人工制定渗透测试的方案;这样人工始终处在渗透测试的细节中。本方法由“计划”、“收集信息”、“渗透图生成”、“渗透测试方案生成”四个流程组成;本方法采用后向搜索与前向搜索相结合的渗透图生成算法来解决基于搜索的渗透图生成算法会搜索过多的无关节点的问题;采用对渗透测试方案建模并提供其生成算法来解决目前缺少渗透测试方案的抽象模型及其生成算法的问题。本发明将人工从渗透测试方案生成的细节中解脱出来,并使渗透测试方案的生成快速、准确。
文档编号H04L12/26GK102546639SQ20121000943
公开日2012年7月4日 申请日期2012年1月12日 优先权日2012年1月12日
发明者夏春和, 梁晓艳, 沈路, 胡俊顺, 薄阳 申请人:北京航空航天大学