一种自动化安全渗透测试方法与流程

文档序号:13075609阅读:764来源:国知局
一种自动化安全渗透测试方法与流程

本发明属于网络安全领域,涉及一种自动化安全渗透测试方法。



背景技术:

随着信息技术的快速发展,安全漏洞对信息系统造成极大的安全隐患,成为木马病毒等恶意代码传播的入口和途径。为及早发现信息系统存在的安全问题,确定危害程度,必须周期性地针对信息系统进行渗透测试并根据渗透测试结果进行系统的安全性修复。

渗透测试是指安全工程师模拟黑客使用的信息探测技术、漏洞评估技术和攻击手段,对目标的安全性作深入的探测,发现系统最脆弱环节的过程[1]。渗透测试的结果需要记录在案,并以此作为信息系统脆弱性解决的依据。渗透测试具有确定组织信息资源面临的威胁,参考风险量化保障支出,降低组织的it安全成本,提供更好的安全保障投资收益,发现和解决存在的弱点,了解弱点的基本技术、设计和执行,保证为组织提供一个全面和彻底的安全架构[2]。

渗透测试依赖漏洞扫描工具对目标信息系统进行扫描,结合相关的漏洞利用工具对系统漏洞进行攻击和利用,以此来获取系统控制权限。在渗透测试过程中,目前使用较为广泛的开源渗透测试工具为metasploit渗透测试框架,但此框架仅仅提供渗透测试中漏洞攻击和利用阶段的功能。利用metasploit渗透测试框架加载漏洞扫描工具目前依然无法满足全面、完整的自动化渗透测试需求。从实践的角度来看,目前的渗透测试工作存在以下不足:

(1)渗透测试过程需要使用多种安全性分析工具,由于各类工具的渗透策略、功能及使用方法不尽相同,这一状况无法满足高效的、自动化的渗透测试需求。

(2)缺乏有效的人工和自动化相结合的测试平台,测试所需的各类工具间的数据格式不统一,无法进行自主交互,需要测试人员花费大量的时间和精力进行数据整合以驱动渗透测试过程,无法满足高频的渗透测试需求。

文献引用:

[1]scambrayj,mcclures,kurtzg.hackingexposed[m]2nded[s1]:brooks,2001.

[2]arcei,caceresmautomatingpenetrationtestsanewchallengefortheisindustry[m][s1]:coresecuritytecnologies,2001.



技术实现要素:

针对现有技术中存在的问题,本发明提出了一种自动化安全渗透测试方法,通过建立渗透测试平台,对信息系统安全性进行人工及自动化的测试,深入分析目标系统的安全性。

为达到上述目的,本发明采用的技术方案是:建立渗透测试平台,通过人工和自动化相结合的手段对信息系统主机状态和拓扑结构进行深度的扫描和分析。在分析漏洞过程中,自动调用漏洞验证库中验证脚本对目标系统进行渗透测试,并在渗透测试结束后对整个渗透测试过程和结果进行分析并生成测试报告。

本发明包括以下步骤:

步骤1,自动化响应模型训练,建立对应模型生成攻击策略库;

步骤2,扫描目标信息系统,获取主机信息;

步骤3,扫描目标信息系统漏洞,获取漏洞信息;

步骤4,根据步骤2和步骤3获取的主机信息和漏洞信息,结合攻击策略库建立攻击模型,根据攻击模型对目标信息系统尝试攻击,获取攻击反馈结果;

步骤5,对渗透测试全过程进行综合分析,生成渗透测试报告并梳理测试步骤及中间结果,并对系统安全性进行分析,根据渗透过程和结果,结合渗透测试发现的漏洞及采用的解决方案生成报告性文件,提供相关解决方案;

步骤6,响应模型自适应更新,调整响应策略。

步骤1包括如下步骤:

步骤1-1,通过众测或其他方式,持续收集人工渗透测试的过程信息,保存渗透测试过程中的3个记录元组<o1,o2>、<o3,o4>、<o4,o5>,其中o1表示目标信息,o2表示扫描工具,o3表示漏洞信息,o4表示攻击策略,o5表示攻击工具;所有记录元组组成一个记录数据库,同时,对人工渗透测试已收集到的漏洞信息进行规格化处理,整理以下字段:漏洞描述、漏洞类型、漏洞触发条件、漏洞危害,形成应用级通用漏洞信息数据库;

步骤1-2,在大量人工渗透的训练数据的基础上,将这3个记录元组作为训练集,通过apriori关联规则挖掘算法,可分别获得不同元组对应的支持度和置信度,统一表示为权重,对权重设置阈值,判定大于阈值的元组才是有意义的。本自动化安全渗透测试采用关联规则挖掘算法是apriori算法,使用频繁项集的先验知识,使用一种称作逐层搜索的迭代方法,即“k-1项集”用于搜索“k项集”:

通过扫描所有记录元组数据库,找出所有的频繁1项集,该集合记做l1,利用l1找频繁2项集的集合l2,如此下去,直到不能再找到任何频繁k项集lk,在所有的频繁集中找出强规则,即产生权重大于阈值的关联规则,找每个频繁项集都需要一次记录元组数据库扫描。算法核心思想是:连接步和剪枝步。连接步是自连接,原则是保证前k-2项相同,并按照字典顺序连接。剪枝步,是使任一频繁项集的所有非空子集也必须是频繁的。反之,如果某个候选的非空子集不是频繁的,那么该候选肯定不是频繁的,从而可以将其从候选集中删除。

最终获得如下响应关系:

目标-扫描工具:

a目标-b1扫描工具-权重0.8,

a目标-b2扫描工具-权重0.15;

漏洞-策略:

c漏洞-d策略-权重0.4;

策略-攻击工具:

d策略-e攻击工具-权重0.8;

其中,响应关系的权重表示采取这种响应的优先级,a,b1,b2,c,d,e依次序分别表示需扫描的目标系统、一种漏洞扫描工具、一种与之前不同的扫描工具、一种攻击策略以及一种漏洞攻击工具,符号-表示响应关系,并表示-连接的前后2项具有关联性,权重是对他们关联性的衡量;

步骤1-3,将模型训练得到的响应关系保存在数据库中,分别构成目标信息与扫描工具响应模型、漏洞信息与攻击策略响应模型和攻击策略与工具响应模型,作为自动化渗透测试的依据。

步骤2包括如下步骤:

步骤2-1,扫描目标信息系统网段内的主机,通过扫描得到信息系统拓扑结构和主机状态,以及初步获取主机的操作系统的版本信息。

步骤2-2,根据白帽子提供的信息,选择渗透测试目标主机并配置参数,包括运行环境、操作系统版本等。

步骤2-3,深入扫描主机的详细信息,包括操作系统类型和具体版本、中间件类型和具体版本、ip地址和mac地址、系统运行的网络服务、开放的网络端口等具体信息。

步骤2-4,通常经过步骤2-3获得的主机信息由于操作系统及中间件版本差异,得到的具体信息表示格式和内容会有所不同,将获取的目标信息系统或主机信息经过数据分析,对涉及域名和ip地址进行关键字匹配或相似度计算,提取上述字段进行预处理,按字段规格化,整合处理后储存到数据库中。

步骤3包括如下步骤:

步骤3-1,分析步骤2-4得到的目标信息系统和主机信息,从目标信息与扫描工具响应模型中调用响应关系中权重最大的工具扫描目标信息系统漏洞。

步骤3-2,对比公开的cve(commonvulnerabilitiesandexposures)漏洞库和人工渗透过程中建立的通用漏洞信息数据库,提取漏洞公开的描述、漏洞类型、载体信息、漏洞触发条件、漏洞危害等信息。

步骤3-3,将扫描整合的步骤3-2中所述漏洞信息按照相应的字段进行处理后形成一条漏洞信息,根据持续获得的漏洞信息,形成完整漏洞信息表。

步骤4包括如下步骤:

步骤4-1,分析主机、web应用、数据库、网络设备、相似ip或域名和漏洞信息,解析能够进行攻击利用的目标信息,包括目标ip地址、系统端口号等攻击入口信息及漏洞类型、漏洞载体、触发条件等攻击利用信息。

步骤4-2,判断是否有能够进行攻击利用的漏洞,若有漏洞,转步骤4-2;若无漏洞,结束。

步骤4-3,查找攻击策略库是否有相关漏洞,在大量收集历史渗透测试数据的基础上,正常情况下可以认为系统已包含现阶段全量漏洞信息和攻击策略。但是对于训练集中没有出现过的新项目,这种一般可以认为是新型漏洞,只能以人工渗透为主,只有在有稳定漏洞测试过程后加入对应模型。若没有漏洞记录相关策略,则有测试人员根据经验自主制定攻击策略,包括攻击目标、攻击途径、工具脚本调用、预期结果等内容,形成人工渗透测试;若有相关漏洞,从漏洞信息与攻击策略响应模型中调用优先级最高的攻击策略,执行步骤4-4。

步骤4-4,从攻击策略与攻击工具响应模型中调用权重最大的工具,按照生成的响应关系,优先选择权重最高的攻击工具;

步骤4-5,按照攻击策略的执行步骤,运行工具执行渗透测试,不断尝试执行攻击直到攻击成功返回预期的结果并记录相关结果。当调用的某攻击工具没有攻击成功时,则会回到步骤4-4,调用优先级低一位的攻击工具,当攻击工具尝试次数达到设定的阈值时,例如按照当前权重排名第一策略,使用3种不同攻击工具,都没有攻击成功时,回到步骤4-3,调用优先级低一位的攻击策略并继续下一步攻击工具选择,以此类推,当攻击策略尝试次数达到阈值时,会提示由测试人员根据经验自主制定攻击策略,包括攻击目标、攻击途径、工具脚本调用、预期结果等内容,形成人工渗透测试。

步骤6包括:每次通过该自动化响应模型进行渗透的新数据则会组成一个新测试集,用来验证形成的对应模型的准确率并加以调整。在有新的自动化或人工渗透数据增加时,根据步骤4-5的攻击尝试次数、结果或成功率,调整对应模型权重或系数,从而改变优先级高的响应关系,使整个系统更加智能化。

有益效果:与现有的技术相比,本发明具有如下优点:

(1)综合考虑了渗透测试过程中人工和自动化相结合的测试方法,充分利用现有安全性分析工具,设计自动化渗透测试模块并封装各类工具,实现了工具的自动调用和执行,提高了渗透测试过程的完整性和准确性。

(2)实现对不同模块间数据的交换利用,自动化分析整理安全性分析工具的结果输出,减少了测试人员手动调用工具、人工分析结果数据的时间花费和劳动力消耗,提高了渗透测似的效率和自动化程度。

(3)通过持续收集人工渗透的过程数据,产生响应模型训练集,实现人工渗透测试向自动化转移。并且攻击策略库、攻击工具库和其他自动化响应模型都具备自学习功能,可以自适应地学习和更新响应模型的优先级,会随着长期使用更新趋向于全自动安全渗透测试。

附图说明

下面结合附图和具体实施方式对本发明做更进一步的具体说明,本发明的上述或其他方面的优点将会变得更加清楚。

图1为本发明的流程示意图。

图2为本发明的渗透方式示意图。

图3为本发明的渗透攻击流程图。

具体实施方式

下面结合附图及实施例对本发明做进一步说明。

如图1、图2和图3所示,本发明方法采用脚本语言ruby开发,采用标准接口,可以和其他安全系统对接(nessus、nexpose、appscan、wvs等)。本发明支持人工和自动化相结合的渗透方法,覆盖常见的渗透测试方式,可以对网络、web应用、数据库、网络设备、移动终端等进行渗透测试。本发明所有功能都是模式化式开发,支持多用户、多任务操作,可以满足不同的渗透测试需求,具体流程如下:

步骤0:自动化响应模型训练,建立对应模型。

步骤0.1:通过众测或其他方式,持续收集人工渗透测试的过程信息,保存渗透测试过程中的<目标信息,扫描工具>、<漏洞信息,攻击策略>、<攻击策略,攻击工具>。

步骤0.2:在大量人工渗透的训练数据的基础上,将这3个记录元组作为训练集,通过关联规则或特征选择分析,可分别获得不同元组对应的支持度和置信度,统一表示为权重,对权重设置阈值,认为大于阈值的元组才是有意义的。那么可以获得如下响应关系:

目标-扫描工具:

a目标-b1扫描工具-权重0.8,

a目标-b2扫描工具-权重0.15;

漏洞-策略:

c漏洞-d策略-权重0.4;

策略-攻击工具:

d策略-e攻击工具-权重0.8;

其中,响应关系的权重可看成采取这种响应的优先级。a,b1,b2,c,d,e依次序分别表示需扫描的目标系统、一种漏洞扫描工具、一种与之前不同的扫描工具、一种攻击策略以及一种漏洞攻击工具,符号-表示响应关系,并表示-连接的前后2项具有关联性,权重是对他们关联性的衡量;

步骤0.3:将训练结果保存数据库,分别构成目标信息与扫描工具响应模型、漏洞信息与攻击策略响应模型和攻击策略与工具响应模型,作为自动化渗透测试的依据。

步骤1:扫描目标信息系统,获取主机信息。

步骤1.1:扫描目标信息系统网段内的主机,通过扫描得到信息系统拓扑结构和主机状态,以及初步获取主机的操作系统的版本信息。

步骤1.2:根据白帽子提供的信息,选择渗透测试目标主机并配置参数。

步骤1.3:深入扫描主机的详细信息,包括操作系统类型和具体版本、ip地址和mac地址、系统运行的网络服务、开放的网络端口等具体信息。

步骤1.4:将获取的目标系统和主机信息经过数据分析、数据提取、整合等处理后储存到数据库中。

步骤2:扫描目标信息系统漏洞,获取系统漏洞信息。

步骤2.1:分析步骤1.4得到的目标信息,从目标信息与扫描工具响应模型中调用优先级最高的工具扫描目标信息系统漏洞。

步骤2.2:对比公开的cve(commonvulnerabilitiesandexposures)漏洞库和人工渗透过程中建立的通用型漏洞信息数据库,提取漏洞公开的描述、漏洞类型、载体信息、漏洞触发条件、漏洞危害等信息。

步骤2.3:将扫描整合的漏洞基本信息按照相应的字段进行处理后保存到漏洞信息表。

步骤3:根据步骤1和步骤2获取的主机和漏洞信息,结合攻击策略库建立攻击模型,根据攻击模型对目标系统尝试攻击,获取攻击反馈结果。

步骤3.1:分析主机和漏洞信息,解析可进行攻击利用的目标信息,包括目标ip地址、系统端口号等攻击入口信息及漏洞类型、漏洞载体、触发条件等攻击利用信息。

步骤3.2:判断是否有可以进行攻击利用的漏洞,若有漏洞,转下一步;若无漏洞,结束。

步骤3.3:查找攻击策略库是否有相关漏洞,在大量收集历史渗透测试数据的基础上,正常情况下可以认为系统已包含现阶段全量漏洞信息和攻击策略。但是对于训练集中没有出现过的新项目,这种一般可以认为是新型漏洞,只能以人工渗透为主,只有在有稳定漏洞测试过程后加入对应模型。若没有漏洞记录相关策略,则有测试人员根据经验自主制定攻击策略,包括攻击目标、攻击途径、工具脚本调用、预期结果等内容,形成人工渗透测试;若有相关漏洞,从漏洞信息与攻击策略响应模型中调用优先级最高的攻击策略,转下一步。

步骤3.4:从攻击策略与攻击工具响应模型中调用优先级最高的工具,转下一步。

步骤3.5:按照策略的执行步骤,运行工具执行渗透测试,不断尝试执行攻击直到攻击成功返回预期的结果并记录相关结果。当调用的某攻击工具没有攻击成功时,则会回到步骤3.4,调用优先级低一位的攻击工具,当攻击工具尝试次数达到设定的阈值时,回到步骤3.3,调用优先级低一位的攻击策略并继续下一步攻击工具选择,以此类推,当攻击策略尝试次数达到阈值时,会提示由测试人员根据经验自主制定攻击策略,包括攻击目标、攻击途径、工具脚本调用、预期结果等内容,形成人工渗透测试。

步骤4:综合分析渗透测试过程,梳理测试步骤、使用的工具等内容,生成渗透测试报告。测试报告将详细记录目标系统存在的安全漏洞信息并提出脆弱性修复的解决方案。

步骤5:响应模型自适应更新,各模型元组响应策略会自动调整。每次通过该系统进行渗透的新数据则会组成一个测试集,用来验证形成的对应模型的准确率并加以调整。在有新的自动化或人工渗透数据增加时,根据步骤3.5的攻击尝试次数、结果或成功率,调整对应模型权重或系数,从而改变优先级高的响应关系,使整个系统更加智能化。

自动化响应模型训练,建立对应模型的算法是基于apriori算法的关联规则挖掘算法,介绍算法流程之前,先对该算法预备知识进行概述:

关联规则是数据挖掘领域中的一个非常重要的研究课题,广泛应用于各个领域,既可以检验行业内长期形成的知识模式,也能够发现隐藏的新规律。而apriori算法是关联规则挖掘中的一个重要的无监督学习算法,其中的数据并不被标识,学习模型是为了推断出数据的一些内在结构。

在数据挖掘当中,通常用“支持度”(support)和“置信度”(confidence)两个概念来量化事物之间的关联规则。它们分别反映所发现规则的有用性和确定性。

关联规则a->b的支持度support=p(ab),指的是事件a和事件b同时发生的概率。

置信度confidence=p(b|a)=p(ab)/p(a),指的是发生事件a的基础上发生事件b的概率。

例如一条漏洞,攻击策略与攻击工具的关联规则:

sql注入,枚举数据库名—>sqlmap,其中support=2%,confidence=80%

表示的意思是所有的渗透测试记录中,有2%的渗透测试者提交的过程是:发现sql注入漏洞,采用枚举数据库名策略,且采用sqlmap工具进行渗透;并且发现sql注入漏洞,采用枚举数据库名策略的情况下,有80%的渗透者使用了sqlmap工具。在关联规则的挖掘过程中,通常会设定最小支持度阈值和最小置性度阈值,如果某条关联规则满足最小支持度阈值和最小置性度阈值,则认为该规则可以给用户带来感兴趣的信息。

如果事件a中包含k个元素,那么称这个事件a为k项集,并且事件a满足最小支持度阈值的事件称为频繁k项集。

apriori算法使用频繁项集的先验知识,使用一种称作逐层搜索的迭代方法,即“k-1项集”用于搜索“k项集”。

首先,通过扫描所有记录,找出所有的频繁1项集,该集合记做l1,然后利用l1找频繁2项集的集合l2,l2找l3,如此下去,直到不能再找到任何频繁k项集。最后再在所有的频繁集中找出强规则,即产生有用的关联规则。找每个lk都需要一次数据库扫描。

算法核心思想是:连接步和剪枝步。连接步是自连接,原则是保证前k-2项相同,并按照字典顺序连接。剪枝步,是使任一频繁项集的所有非空子集也必须是频繁的。反之,如果某个候选的非空子集不是频繁的,那么该候选肯定不是频繁的,从而可以将其从候选集中删除。

具体的说,

1、发现频繁项集,过程为:

(1)扫描

(2)计数

(3)比较

(4)产生频繁项集

(5)连接、剪枝,产生候选项集

2、重复步骤(1)~(5)直到不能发现更大的频繁项集。

3、由频繁项集产生关联规则

采用本发明所述的方法进行信息系统渗透可获得比传统方法更多的漏洞信息,最重要的是在漏洞测试的效率方面有大幅度的提高,主要是由于本方法对各类攻击工具进行封装,集中管理和调用,并对不同工具的数据格式进行统一,实现不同工具间数据自主交互,减少了人工干预的影响,提高了测试效率。本方法能实现对不同信息系统进行渗透测试,并能对渗透目标进行快速、准确、详细的评估,使渗透测试更加智能化。

本发明提供了一种自动化安全渗透测试方法,具体实现该技术方案的方法和途径很多,以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。本实施例中未明确的各组成部分均可用现有技术加以实现。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1