一种基于Q-Learning的自动化渗透测试系统和方法与流程
一种基于q-learning的自动化渗透测试系统和方法
技术领域
1.本发明属于网络安全技术领域,涉及一种基于q-learning的自动化渗透测试系统和方法。
背景技术:
2.随着互联网深入社会的方方面面,网络安全已经成为国家安全的一部分。任何组织和个人都不能忽略网络安全的重要性。为保证网络安全,传统的防御性安全措施已经无法满足现实需求。不断涌现的新兴技术使得网络环境更加复杂,同时网络攻击手段也日新月异,这些使得网络安全态势极为严峻。渗透测试作为一种新型的网络安全审计手段,能够从攻击者角度对目标网络进行可控攻击,以此来评估防御措施的有效性。
3.在网络安全领域,渗透测试是一种由渗透测试人员模拟攻击者对计算机网络执行受控攻击,以评估其安全性的方法。当前,它是组织用来评估其网络防御措施有效性的关键方法之一。无论手动还是自动化渗透测试,都需要按照一定的标准来执行。依据渗透测试执行标准(penetration testing execution standard,简称ptes),渗透测试包含前期交互、信息收集、威胁建模、漏洞分析、漏洞利用、后渗透和生成报告共七个阶段。
4.相比手动渗透测试,自动化渗透测试的关键在于没有渗透测试人员指导的情况下完成渗透测试。对此,需要根据上述各阶段的主要工作内容,分析渗透测试人员在各阶段中的必要性。前期交互阶段和生成报告阶段都需要与客户进行交流。因此在这两个阶段中,渗透测试人员都不可或缺。而在其他阶段,渗透测试人员则可以利用现成的工具来完成工作。例如:用于情报收集的recon-ng和maltego,用于漏洞分析的nessus、openvas、awvs和nexpose,以及常用于漏洞利用和后渗透阶段的metasploit框架。因此在自动化渗透测试中主要考虑情报收集、漏洞分析、漏洞利用和后渗透这四个阶段。
5.虽然上述这些工具无疑对网络安全行业人员带来了极大的便利,但是仍然需要深入学习才能熟练使用这些工具。另外,对现有渗透测试工具的分析表明,这些工具大都未在渗透测试过程中提供自动化决策,无法独立于渗透测试人员而进行动作。
技术实现要素:
6.针对现有渗透测试工具无法自主决策和学习的不足,本发明解决的技术问题在于提供一种基于q-learning的自动化渗透测试系统和方法,将强化学习算法与渗透测试技术相结合,实现能够自主学习、自主决策的自动化渗透测试工具。
7.本发明是通过以下技术方案来实现:
8.一种基于q-learning的自动化渗透测试系统,包括以下组件:
9.控制管理组件,保持渗透测试员与渗透测试系统之间交互的组件;
10.学习决策组件,以强化学习算法q-learning为基础来学习所述渗透策略和采取渗透操作决策,包括学习渗透策略的渗透测试学习模块、采取渗透操作决策的渗透测试决策模块、处理渗透测试信息的信息处理模块和利用处理后信息进行建模的环境建模模块;
11.执行组件,支持对渗透测试目标执行信息收集、漏洞分析、漏洞利用和后渗透,包括支持信息收集和漏洞分析动作的辅助模块、支持漏洞利用的漏洞利用模块和有效载荷模块,以及支持执行后渗透动作的后渗透模块;
12.存储组件,存储系统运行过程中产生的可用动作信息、渗透测试目标信息、训练数据和测试数据,其中可用动作信息用于统计可用的信息收集、漏洞分析、漏洞利用和后渗透动作,渗透测试目标信息包括渗透测试目标的操作系统、端口、开放服务名称在内的信息,训练数据和测试数据则用于记录训练过程和测试过程中产生的数据;
13.所述控制管理组件将输入的指令进行解析后发送至学习决策组件、所述执行组件和所述存储组件,各组件将执行结果发送至所述管理组件;
14.所述学习决策组件将执行过程中产生的所述执行组件的信息、所述训练数据、所述测试数据和所述渗透测试目标发送至所述存储组件进行存储;
15.所述学习决策组件按照渗透策略来采取渗透操作决策,并将渗透操作决策发送至执行组件,由其来执行对应操作;执行组件将操作的执行结果发送至所述学习决策组件,学习决策组件从所述执行结果中学习所述渗透策略。
16.所述执行组件以metapsloit框架为基础,并结合pymetasploit3库来满足学习决策组件的远程调用;
17.所述执行组件利用nmap工具对渗透测试目标进行探测,获取目标系统的渗透测试目标信息。
18.所述渗透测试目标信息包括渗透测试目标的操作系统、开放端口、开放服务的名称和版本号在内的信息;
19.所述学习决策组件能够基于所述执行组件通过关键字来匹配可用于开放服务的漏洞利用操作。
20.所述学习决策组件还按照渗透策略,从漏洞利用操作中根据操作评估值的大小来选出最佳的漏洞利用操作;
21.所述学习决策组件获取最佳漏洞利用操作的可用有效载荷,并从可用有效载荷中根据载荷评估值的大小来选择最佳有效载荷。
22.所述学习决策组件将所获取的最佳漏洞利用操作和最佳有效载荷发送给执行组件,由执行组件对所述渗透测试目标执行漏洞攻击;
23.所述执行组件在对渗透测试目标执行漏洞攻击后,若漏洞攻击执行成功,则建立攻击会话;若漏洞攻击执行不成功则切换其他漏洞执行攻击,以建立攻击会话;
24.在建立攻击会话之后,学习决策组件根据攻击执行结果返回信息对攻击会话进行判断;若所述攻击会话为非高级攻击会话,则学习决策组件将发出攻击提升指令给执行组件,执行组件将攻击会话升级为高级攻击会话以支持后渗透操作;
25.在建立高级攻击会话之后,学习决策组件发出后渗透操作指令,由执行组件基于高级攻击会话对渗透测试目标进行后渗透操作。
26.基于q-learning的自动化渗透测试系统的渗透测试方法,包括以下步骤:
27.1)信息收集:针对所述渗透测试目标,执行组件使用nmap工具对所述渗透测试目标进行扫描,获取所述渗透测试目标的操作系统、开放端口、开放服务和版本在内的信息;
28.2)信息处理:针对收集到的信息,执行组件利用metasploit框架的search命令来
搜索开放服务和版本对应的漏洞利用模块;然后以端口为键,漏洞利用模块为值,以python字典类型变量构建方法来构建包含所述漏洞利用模块的目标类型和有效载荷的字典;
29.3)漏洞利用:包括训练模式和测试模式;在训练模式下,针对每个开放服务,随机选择漏洞利用模块和有效载荷执行漏洞攻击,并利用学习决策组件利用q-learning算法根据执行反馈的结果来评估漏洞利用模块和有效载荷,直至每个漏洞利用模块和所述有效载荷均被执行;
30.在测试模式下,根据训练模式下由q-learning算法给出的评估结果,依次对开放服务选择最佳的漏洞利用模块和有效载荷,然后由执行组件对所述渗透测试目标执行漏洞攻击;
31.4)数据保存:在所述训练模式下,存储组件保存所述漏洞攻击成功后建立的攻击会话信息、所述渗透测试目标信息和所述的漏洞利用模块和所述的有效载荷的评估结果;
32.在所述测试模式下,存储组件保存所述漏洞攻击成功后建立的攻击会话信息和所述渗透测试目标信息。
33.在3)中若执行所述漏洞攻击后成功建立攻击会话,则对攻击会话的类型进行判断;若不是高级攻击会话,则对其进行升级;然后基于所述高级攻击会话执行所述后渗透操作。
34.与现有技术相比,本发明具有以下有益的技术效果:
35.本发明所提供的基于q-learning的自动化渗透测试系统和方法,涉及渗透测试的信息收集、漏洞分析、漏洞利用和后渗透阶段;通过结合强化学习q-learning算法和渗透测试技术,本系统和方法能够通过不断地尝试,从所述漏洞攻击结果中学习渗透测试策略,最终以此来指导渗透测试的执行,实现自动化;本发明使用q-learning算法来对漏洞攻击的结果进行评估,并以数值体现不同漏洞利用模块和有效载荷的优劣程度,一般视训练情况来定,值越大越好;本发明从一定程度上降低了渗透测试的难度,提高了渗透测试的效率和自动化程度。
附图说明
36.图1为本发明所提供的基于q-learning的自动化渗透测试系统的整体架构图;
37.图2为本发明所提供的基于q-learning的自动化渗透测试系统的工作流程图;
38.图3为本发明所提供的基于q-learning的自动化渗透测试系统的部署示意图。
具体实施方式
39.下面结合实施例对本发明做进一步详细描述,所述是对本发明的解释而不是限定。
40.参见图1,一种基于q-learning的自动化渗透测试系统,包括以下组件:
41.控制管理组件,保持渗透测试员与渗透测试系统之间交互的组件;
42.学习决策组件,以强化学习算法q-learning为基础来学习所述渗透策略和采取渗透操作决策,包括学习渗透策略的渗透测试学习模块、采取渗透操作决策的渗透测试决策模块、处理渗透测试信息的信息处理模块和利用处理后信息进行建模的环境建模模块;
43.执行组件,支持对渗透测试目标执行信息收集、漏洞分析、漏洞利用和后渗透,包
括支持信息收集和漏洞分析动作的辅助模块、支持漏洞利用的漏洞利用模块和有效载荷模块,以及支持执行后渗透动作的后渗透模块;
44.存储组件,存储系统运行过程中产生的可用动作信息、渗透测试目标信息、训练数据和测试数据,其中可用动作信息用于统计可用的信息收集、漏洞分析、漏洞利用和后渗透动作,渗透测试目标信息包括渗透测试目标的操作系统、端口、开放服务名称在内的信息,训练数据和测试数据则用于记录训练过程和测试过程中产生的数据;
45.所述控制管理组件将输入的指令进行解析后发送至学习决策组件、所述执行组件和所述存储组件,各组件将执行结果发送至所述管理组件;
46.所述学习决策组件将执行过程中产生的所述执行组件的信息、所述训练数据、所述测试数据和所述渗透测试目标发送至所述存储组件进行存储;
47.所述学习决策组件按照渗透策略来采取渗透操作决策,并将渗透操作决策发送至执行组件,由其来执行对应操作;执行组件将操作的执行结果发送至所述学习决策组件,学习决策组件从所述执行结果中学习所述渗透策略。
48.下面对系统进一步说明。
49.在系统运行后控制管理组件需要渗透测试专家输入工作指令进行解析,然后调用相关组件执行该指令并返回指令执行结果。该组件所支持的指令分为以下三类。
50.第一类,手动渗透指令。这些指令包括“msf”、“use”、“set”、“run”、“search”、“options”和“sessions”,各指令的功能如表1所示。其中“msf”指令用于创建一个metasploit框架控制台,剩余指令则与metasploit框架中同名指令使用方法相同。需要注意的是需要先执行“msf”创建一个metasploit框架控制台后才能执行“use”、“run”等其他命令。
51.表1各手动渗透指令功能
52.指令描述msf创建一个metasploit控制台use与一个模块进行交互,例如:use exploit/unix/ftp/vsftpd_234_backdoorset为指导选项设定值,例如:setrport 21run进行漏洞利用options查看模块正常运行所需配置的运行选项search按照关键字搜索相关的metasploit模块sessions查看已经建立的攻击会话
53.·
第二类,自动渗透指令,主要包括“train”和“test”。其中“train”指令用于对指定ip进行自动化渗透训练学习,而“test”指令用于对指定ip进行自动化渗透测试。与“msf”指令不同的是,“train”和“test”需要配置参数选项才可执行,其参数选项如表2、表3所示。
54.表2 train指令参数选项
55.参数选项描述agent必须项,指定使用哪种算法进行渗透测试训练学习alpha必须项,指定渗透测试学习算法的学习步长gamma必须项,指定渗透测试学习算法的折现因子policy非必须项,指定渗透测试学习算法的初始策略
targetip必须项,指定渗透目标主机的ip地址episode必须项,指定训练回合数
56.表3 test指令参数选项
57.参数选项描述policytype必须项,指定渗透策略的类型,例如表型targetip必须项,指定渗透测试目标主机的ippolicy必须项,指定初始渗透策略
58.·
第三类,信息查询指令,主要包括“dir”、“csv”和“pkl”。其中“dir”指令用于查看存储组件中已有的数据信息,“csv”指令用于查看存储组件中csv格式的文件,“pkl”指令用于查看存储组件中pkl格式的文件。这三个指令均需要配置参数选项,其使用实例依次如表4、5和6所示。
59.表4 dir指令使用实例
60.实例描述dir toolsinfo查看已保存的执行组件信息dirtargethostinfo查看已保存的目标主机信息dirtraininfo查看已保存的渗透训练信息dirtestinfo查看已保存的渗透测试信息
61.表5 csv指令使用实例
62.实例描述csv msf_actions.csv查看模块索引列表csvos.csv查看操作系统索引列表csv services.csv查看服务索引列表
63.表6 pkl指令使用实例
64.实例描述pkl 192.168.149.128_serviceinfo查看指定ip的端口服务信息pkl sessioninfo20210601-15-05-17_15-06-30查看渗透训练产生的攻击会话信息pkl exploit/unix/ftp/vsftpd_234_backdoor特例,查看指定漏洞利用模块信息
65.控制管理组件实现了渗透测试专家与系统之间的交互。通过上述指令,渗透测试专家能够控制系统完成指定任务。然而这些指令的实现依赖于存储组件、学习决策组件和执行组件。
66.存储组件主要负责保存以及查询系统运行过程中产生的各类信息。考虑到运行的便捷性,本系统未采用数据库来保存这些信息而将其作为文件保存在系统运行的本地环境中。在上述指令中,信息查询指令与存储组件直接相关。该组件由一自定义的python模块storage来实现,其中包含的方法用于实现指定路径目录查询、csv文件读取和pkl文件格式化输出。基于这些方法,“dir”、“csv”和“pkl”指令才能实现上述表格中的使用实例。
67.执行组件主要负责执行渗透操作并返回操作执行结果。这就需要调用渗透测试工具来执行这些操作。要求该工具支持信息收集、漏洞扫描、漏洞利用和后渗透等多种操作,此外还应提供远程调用接口。因此本项目选用metasploit框架作为渗透操作的执行者,并
基于python库pymetasploit3定义了msfcontrol类以此通过远程调用接口来指挥metasploit框架执行渗透操作。msfcontrol类中包含多种方法,能够实现远程接口客户端创建、metasploit控制台创建和执行metasploit命令。基于这些方法,手动渗透指令才能正常执行。
68.学习决策组件主要负责渗透测试过程的训练学习和自主决策。该组件所需的技术方法见项目技术报告,其分别定义了两个类qlearningagent和ptenvironment来实现该组件。其中qlearningagent类中包含用于渗透测试训练学习的方法和用于自动化渗透测试的方法。这两个方法分别对应基于q-learning的渗透测试学习算法和基于q函数的渗透测试决策算法。而ptenvironment类调用了msfcontrol类,能够将上述算法所选择的渗透操作发送至执行组件运行,并将形式化处理后的操作运行效果返回至上述算法。这两个类相互配合才能实现自动渗透指令。
69.参见图2,所述基于q-learning的自动化渗透测试系统的渗透测试方法,包括以下步骤:
70.1)信息收集:针对所述渗透测试目标,执行组件使用nmap工具对所述渗透测试目标进行扫描,获取所述渗透测试目标的操作系统、开放端口、开放服务和版本在内的信息;
71.2)信息处理:针对收集到的信息,执行组件利用metasploit框架的search命令来搜索开放服务和版本对应的漏洞利用模块;然后以端口为键,漏洞利用模块为值,以python字典类型变量构建方法来构建包含所述漏洞利用模块的目标类型和有效载荷的字典;
72.3)漏洞利用:包括训练模式和测试模式;在训练模式下,针对每个开放服务,随机选择漏洞利用模块和有效载荷执行漏洞攻击,并利用学习决策组件利用q-learning算法根据执行反馈的结果来评估漏洞利用模块和有效载荷,直至每个漏洞利用模块和所述有效载荷均被执行;
73.在测试模式下,根据训练模式下由q-learning算法给出的评估结果,依次对开放服务选择最佳的漏洞利用模块和有效载荷,然后由执行组件对所述渗透测试目标执行漏洞攻击;
74.4)数据保存:在所述训练模式下,存储组件保存所述漏洞攻击成功后建立的攻击会话信息、所述渗透测试目标信息和所述的漏洞利用模块和所述的有效载荷的评估结果;
75.在所述测试模式下,存储组件保存所述漏洞攻击成功后建立的攻击会话信息和所述渗透测试目标信息。
76.下面对各组件及渗透测试方法具体说明。
77.参见图3,系统可部署于两台主机,其中一台windows10主机运行系统主体,另一台主机kalilinux运行metasploit框架,以及其他渗透测试工具,例如:nmap。
78.可选地,使用pymetaploit3库远程调用metasploit框架,需要在metasploit控制台加载msgrpc插件,并配置远程调用端口、用户名和密码。
79.控制管理组件,负责实现渗透测试专家与系统之间的交互;通过该组件,专家能够控制和管理系统。
80.学习决策组件,该组件一方面负责学习渗透策略,另一方面负责采取渗透操作决策,能够根据学习到的渗透策略进行自主决策。
81.执行组件,该组件是系统实现自动化渗透测试的基础,支持对渗透测试目标执行
信息收集、漏洞分析、漏洞利用和后渗透等动作。
82.存储组件,该组件负责存储系统运行过程中产生的数据信息。这些信息主要分为四类:可用动作信息、渗透测试目标信息、训练数据和测试数据。
83.进一步地,所述执行组件以metapsloit框架为基础,并结合pymetasploit3库来满足所述学习决策组件的远程调用。
84.所述学习决策组件以强化学习算法q-learning为基础来学习所述渗透策略和采取渗透操作决策。
85.具体的,学习决策组件利用metasploit框架中的search命令来检索与渗透测试目标所开放服务相关的漏洞利用模块。例如渗透测试目标开放了vsftpd 2.3.4服务,利用search命令可以检索出exploit/unix/ftp/vsftpd_234_backdoor漏洞利用模块。
86.学习决策组件利用python字典来记录对漏洞攻击的评估结果,以操作系统、服务名称、漏洞利用模块名称、攻击会话类型、获取权限和后门等信息作为字典键,以执行各漏洞利用模块和有效载荷的评估结果数值为值。通过不断地尝试不同地漏洞利用模块和有效载荷,学习决策组件能够不断更新评估结果数值,最终提高漏洞攻击的成功率。
87.进一步的,所述学习决策组件能够基于所述执行组件通过关键字来匹配可用于开放服务的漏洞利用操作。
88.所述学习决策组件还按照渗透策略,从漏洞利用操作中根据操作评估值的大小来选出最佳的漏洞利用操作;
89.所述学习决策组件获取最佳漏洞利用操作的可用有效载荷,并从可用有效载荷中根据载荷评估值的大小来选择最佳有效载荷。
90.所述学习决策组件将所获取的最佳漏洞利用操作和最佳有效载荷发送给执行组件,由执行组件对所述渗透测试目标执行漏洞攻击;
91.所述执行组件在对渗透测试目标执行漏洞攻击后,若漏洞攻击执行成功,则建立攻击会话;若漏洞攻击执行不成功则切换其他漏洞执行攻击,以建立攻击会话;
92.在建立攻击会话之后,学习决策组件根据攻击执行结果返回信息对攻击会话进行判断;若所述攻击会话为非高级攻击会话,则学习决策组件将发出攻击提升指令给执行组件,执行组件将攻击会话升级为高级攻击会话以支持后渗透操作;
93.在建立高级攻击会话之后,学习决策组件发出后渗透操作指令,由执行组件基于高级攻击会话对渗透测试目标进行后渗透操作。
94.所述执行组件利用nmap工具对渗透测试目标进行扫描,获取所述目标系统的所述渗透测试目标信息。渗透测试目标是一个可访问的ip地址,使用该ip的设备可以是主机或者网站。目标的信息包括运行的操作系统、开放端口、开放服务名称和版本号。
95.漏洞利用模块中包含针对各具体漏洞的利用操作,有效载荷模块中包含可用于个漏洞利用操作的有效载荷,后渗透模块中包含后渗透操作,例如:提升权限、安装后门等操作。
96.所述渗透测试目标信息包括所述渗透测试目标的操作系统、开放端口、开放服务的名称和版本号等信息。
97.所述学习决策组件能够基于所述执行组件来匹配可用于所述开放服务的所述的漏洞利用操作。
98.所述执行组件在对所述渗透测试目标执行所述漏洞攻击后,若所述漏洞攻击执行成功,则建立攻击会话。
99.所述学习决策组件将对所述攻击会话进行判断,若所述攻击会话不是高级攻击会话,则所述学习决策组件将指挥执行组件将所述攻击会话升级为所述高级攻击会话。
100.所述学习组件将指挥执行组件基于所述高级攻击会话对所述渗透测试目标进行所述后渗透操作。例如:权限提升和安装后门。
101.通过结合强化学习q-learning算法和渗透测试技术,本系统和方法能够通过不断地尝试,从所述漏洞攻击结果中学习渗透测试策略,最终以此来指导渗透测试的执行,实现自动化;本发明使用q-learning算法来对漏洞攻击的结果进行评估,并以数值体现不同漏洞利用模块和有效载荷的优劣程度,一般视训练情况来定,值越大越好;本发明从一定程度上降低了渗透测试的难度,提高了渗透测试的效率和自动化程度。
102.以上给出的实施例是实现本发明较优的例子,本发明不限于上述实施例。本领域的技术人员根据本发明技术方案的技术特征所做出的任何非本质的添加、替换,均属于本发明的保护范围。
技术特征:
1.一种基于q-learning的自动化渗透测试系统,其特征在于,包括以下组件:控制管理组件,保持渗透测试员与渗透测试系统之间交互的组件;学习决策组件,以强化学习算法q-learning为基础来学习所述渗透策略和采取渗透操作决策,包括学习渗透策略的渗透测试学习模块、采取渗透操作决策的渗透测试决策模块、处理渗透测试信息的信息处理模块和利用处理后信息进行建模的环境建模模块;执行组件,支持对渗透测试目标执行信息收集、漏洞分析、漏洞利用和后渗透,包括支持信息收集和漏洞分析动作的辅助模块、支持漏洞利用的漏洞利用模块和有效载荷模块,以及支持执行后渗透动作的后渗透模块;存储组件,存储系统运行过程中产生的可用动作信息、渗透测试目标信息、训练数据和测试数据,其中可用动作信息用于统计可用的信息收集、漏洞分析、漏洞利用和后渗透动作,渗透测试目标信息包括渗透测试目标的操作系统、端口、开放服务名称在内的信息,训练数据和测试数据则用于记录训练过程和测试过程中产生的数据;所述控制管理组件将输入的指令进行解析后发送至学习决策组件、所述执行组件和所述存储组件,各组件将执行结果发送至所述管理组件;所述学习决策组件将执行过程中产生的所述执行组件的信息、所述训练数据、所述测试数据和所述渗透测试目标发送至所述存储组件进行存储;所述学习决策组件按照渗透策略来采取渗透操作决策,并将渗透操作决策发送至执行组件,由其来执行对应操作;执行组件将操作的执行结果发送至所述学习决策组件,学习决策组件从所述执行结果中学习所述渗透策略。2.如权利要求1所述的基于q-learning的自动化渗透测试系统,其特征在于,所述执行组件以metapsloit框架为基础,并结合pymetasploit3库来满足学习决策组件的远程调用;所述执行组件利用nmap工具对渗透测试目标进行探测,获取目标系统的渗透测试目标信息。3.如权利要求1所述的基于q-learning的自动化渗透测试系统,其特征在于,所述渗透测试目标信息包括渗透测试目标的操作系统、开放端口、开放服务的名称和版本号在内的信息;所述学习决策组件能够基于所述执行组件通过关键字来匹配可用于开放服务的漏洞利用操作。4.如权利要求1所述的基于q-learning的自动化渗透测试系统,其特征在于,所述学习决策组件还按照渗透策略,从漏洞利用操作中根据操作评估值的大小来选出最佳的漏洞利用操作;所述学习决策组件获取最佳漏洞利用操作的可用有效载荷,并从可用有效载荷中根据载荷评估值的大小来选择最佳有效载荷。5.如权利要求4所述的基于q-learning的自动化渗透测试系统,其特征在于,所述学习决策组件将所获取的最佳漏洞利用操作和最佳有效载荷发送给执行组件,由执行组件对所述渗透测试目标执行漏洞攻击;所述执行组件在对渗透测试目标执行漏洞攻击后,若漏洞攻击执行成功,则建立攻击会话;若漏洞攻击执行不成功则切换其他漏洞执行攻击,以建立攻击会话;在建立攻击会话之后,学习决策组件根据攻击执行结果返回信息对攻击会话进行判
断;若所述攻击会话为非高级攻击会话,则学习决策组件将发出攻击提升指令给执行组件,执行组件将攻击会话升级为高级攻击会话以支持后渗透操作;在建立高级攻击会话之后,学习决策组件发出后渗透操作指令,由执行组件基于高级攻击会话对渗透测试目标进行后渗透操作。6.如权利要求1所述基于q-learning的自动化渗透测试系统的渗透测试方法,其特征在于,包括以下步骤:1)信息收集:针对所述渗透测试目标,执行组件使用nmap工具对所述渗透测试目标进行扫描,获取所述渗透测试目标的操作系统、开放端口、开放服务和版本在内的信息;2)信息处理:针对收集到的信息,执行组件利用metasploit框架的search命令来搜索开放服务和版本对应的漏洞利用模块;然后以端口为键,漏洞利用模块为值,以python字典类型变量构建方法来构建包含所述漏洞利用模块的目标类型和有效载荷的字典;3)漏洞利用:包括训练模式和测试模式;在训练模式下,针对每个开放服务,随机选择漏洞利用模块和有效载荷执行漏洞攻击,并利用学习决策组件利用q-learning算法根据执行反馈的结果来评估漏洞利用模块和有效载荷,直至每个漏洞利用模块和所述有效载荷均被执行;在测试模式下,根据训练模式下由q-learning算法给出的评估结果,依次对开放服务选择最佳的漏洞利用模块和有效载荷,然后由执行组件对所述渗透测试目标执行漏洞攻击;4)数据保存:在所述训练模式下,存储组件保存所述漏洞攻击成功后建立的攻击会话信息、所述渗透测试目标信息和所述的漏洞利用模块和所述的有效载荷的评估结果;在所述测试模式下,存储组件保存所述漏洞攻击成功后建立的攻击会话信息和所述渗透测试目标信息。7.如权利要求6所述的基于q-learning的自动化系统的渗透测试方法,其特征在于,在3)中若执行所述漏洞攻击后成功建立攻击会话,则对攻击会话的类型进行判断;若不是高级攻击会话,则对其进行升级;然后基于所述高级攻击会话执行所述后渗透操作。
技术总结
本发明公开了一种基于Q-Learning的自动化渗透测试系统和方法,涉及渗透测试的信息收集、漏洞分析、漏洞利用和后渗透阶段;通过结合强化学习Q-Learning算法和渗透测试技术,本系统和方法能够通过不断地尝试,从经验中学习渗透测试策略,最终以此来指导渗透测试的执行,实现自动化。本发明从一定程度上降低了渗透测试的难度,提高了渗透测试的效率和自动化程度。度。度。
