当前位置:首页 期刊杂志

一种自动化安全渗透测试系统的设计与研究

时间:2024-09-03

◆卜佑军 王涵 胡静萍 张桥

(1.中国人民解放军战略支援部队信息工程大学 河南 450002;2.网络通信与安全紫金山实验室 江苏211100)

渗透测试是指渗透测试人员模拟黑客使用的信息系统渗透技术、渗透方法和漏洞测评技术,对目标系统的脆弱性做深入的分析,发现系统漏洞的过程[1]。渗透测试的结果可以作为信息系统脆弱性解决的依据,有助于确定组织信息系统资源面临的安全威胁,降低组织的ⅠT 安全成本,发现和解决存在的安全威胁,掌握漏洞的基本原理、设计和执行,为组织提供一个相对安全的信息系统运行环境[2]。

渗透测试是基于漏扫工具对目标信息系统进行扫描并结合已知的漏洞利用工具对信息系统漏洞进行渗透和测试,以此来获取系统控制权限。在渗透测试过程中,目前使用较为广泛的开源渗透测试工具有metasploit 渗透测试框架,仅仅利用metasploit 渗透测试框架加载漏洞扫描工具目前依然无法满足全面、完整的智能化渗透测试需求。目前已公开的渗透测试系统存在以下共性问题:

(1)渗透测试过程需要调用各式各样的安全性分析工具,由于各类工具的渗透策略、功能及使用方式都不相同,所以无法满足高效的、智能化的渗透测试需求。

(2)缺乏有效的人工和自动化相结合的测试平台,渗透测试所调用的各类工具间的数据格式无法统一,很难进行自主交互,需要相关人员花费大量的时间和精力进行数据整合。

1 相关理论研究

该自动化渗透系统的设计基于如下方法:(1)采用关联规则挖掘算法Apriori 对渗透测试数据进行建模分析;(2)基于CVE、CPE、OVAL 等一系列标准来分析目标信息系统漏洞。

1.1 Apriori 算法

Apriori 算法是一种最有影响力的挖掘布尔关联规则的频繁项集的算法,该算法使用一种称作逐层搜索的迭代方法,k-项集用于探索(k+1)-项集。关联规则的一般步骤:(1)找到频繁集;(2)在频繁集中通过可信度筛选获得关联规则。关联规则的应用:Apriori 算法应用广泛,可用于消费市场价格分析、高校管理信息系统、移动通信领域、网络安全领域等,在网络安全领域主要应用于网络入侵检测技术中。

1.2 CVE、CPE、OVAL

非营利性组织MⅠTRE 在漏洞评估方面采用了CVE、CPE、OVAL等一系列标准来评估信息系统,这些标准可以用来进行信息系统的渗透测试,通过与多源漏洞库对比扫描出被测网络及设备的漏洞,可以有效提高漏洞评估的准确性和完整性[3]。

CVE(Common Vulnerabilities and Exposures)是信息安全通用漏洞披露库,该库只是一个漏洞描述的标准或者说是列表[4]。

CPE(Common Platform Enumeration)以标准化方式为软件应用程序、操作系统及硬件命名的方法[5]。例如:cpe:/{part}:{vendor}:{product}:{version}:{update}:{edition}:{language}格式。

OVAL(Open Vulnerability and Assessment Language)是开放漏洞评估语言,明确规定了漏洞的定义、漏洞的特征、漏洞的评估算法以及漏洞评估各个阶段产生的文档表示形式[6]。

2 系统设计

针对以上所述的问题,本论文设计了一种人工和自动化相结合的安全渗透测试系统,该系统通过建立渗透测试平台,针对目标信息系统进行人工与自动化相结合的测试方法,分析目标信息系统的脆弱性。本系统采用的技术方案是:建立渗透测试平台,通过人工和自动化相结合的手段对信息系统拓扑结构和主机状态进行深度的扫描和分析。在分析漏洞过程中,调用漏洞验证库中验证脚本对目标信息系统进行渗透测试,并在渗透测试结束后对整个渗透测试结果以及测试过程进行分析并生成测试报告,具体如图1、图2 所示。

图1 系统流程图

图2 渗透测试流程图

根据图1、图2 所示,本论文所设计的系统基于Python 开发并采用标准接口,能够与其他安全系统对接(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:扫描主机的详细信息,包括操作系统类型、MAC 地址、ⅠP 地址、网络端口等具体信息。

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

步骤2:扫描目标信息系统,获取系统脆弱性信息。

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

步骤2.2:对比公开的CVE(Common Vulnerabilities and Exposures)漏洞库和人工渗透过程中建立的通用型漏洞信息数据库,提取漏洞公开的描述、漏洞类型、载体信息、漏洞的触发条件、漏洞脆弱性等信息。

步骤2.3:将扫描整合的漏洞基本信息进行分类后存储到漏洞信息表。

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

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

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

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

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

步骤3.5:按照策略的执行步骤,运行工具执行渗透测试,多次执行攻击直到攻击成功返回预期的结果并记录相关结果。当调用的某攻击工具没有攻击成功时,则会回到步骤3.4,调用优先级低一位的攻击工具,当攻击工具尝试次数达到设定的阈值时,回到步骤3.3。

步骤3.3,调用优先级低一位的攻击策略并继续下一步攻击工具选择,以此类推,当攻击策略尝试次数达到阈值时,会提示由渗透测试人员制定个性化的攻击策略,包括渗透目标、攻击方法、工具选型、预期结果等内容,形成人工渗透测试。

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

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

自动化响应模型训练,建立对应模型的算法是基于Apriori 算法的关联规则挖掘算法。

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

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 都需要一次数据库扫描。基于算法的核心思想,更为具体的描述如下:

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

(1)扫描

(2)计数

(3)比较

(4)产生频繁项集

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

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

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

3 结束语

本论文所设计的一种自动化的安全渗透测试系统主要有如下优势:

(1)综合考虑了渗透测试过程中人工和自动化相结合的测试方式,尽量利用公开的安全性分析工具,设计自动化渗透测试模块并封装各类工具,实现了工具的自动调用和执行,提高了渗透测试过程的效率以及准确性。

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

(3)通过持续收集人工渗透的过程数据,产生响应模型训练集,更好地把机器学习技术应用于渗透测试过程中。例外,攻击策略库、攻击工具库和其他自动化响应模型都具备自学习功能,可以自适应地学习和更新响应模型的优先级。

当然,实现该技术方案的方法和途径有很多,以上所述仅是本论文的优选实施方式。后续将对该系统进行更多的功能设计优化,比如融合机器学习技术使该系统更加自动化、智慧化。

免责声明

我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!