本发明涉及信息安全,具体而言,涉及一种渗透测试方法及装置。
背景技术:
1、渗透测试是最常见的黑客攻击手段之一,也是企业最基础最重要的防御目标。等保2.0标准中,将漏洞扫描技术和渗透测试技术作为网络安全评估和检测的主要手段。然而,目前同类产品技术上仍采用传统的匹配方式,漏扫根据版本信息的变化来确认漏洞是否存在,但如果漏洞已经修复,版本信息却未能同步更新,就会导致误报;如果无法验证漏洞是否真实修复,那已检测的系统就仍存在安全隐患。无法替代专业的人工渗透测试,不能灵活的根据实际场景动态调整渗透步骤,以及所能发现的风险点问题。
2、图1是现有技术中用于进行渗透测试的产品的架构图,如图1所示,该类产品主要包括:前端框架、管理中心、漏洞评估以及资产探测;其中,在前端框架中主要包括:electron、vue、node js、bootstrap。管理中心主要进行任务添加/更新/删除、授权认证、模拟登陆以及导出报告这些操作。漏洞评估主要可以进行web漏洞、系统漏洞、服务漏洞、基线核查、逻辑漏洞、登录缺陷这些漏洞搜索;资产探测模块则主要是操作系统、应用指纹、设备指纹、主动探测、被动探测以及登录检测这些方面。在漏洞评估与资产探测中间设置有自动拦截,在管理中心、漏洞评估以及资产探测处设置有日志记录。
3、虽然现有技术提供的渗透测试的产品可以对漏洞进行自动拦截;然而,其仍采用传统的匹配方式,漏扫根据版本信息的变化来确认漏洞是否存在,但如果漏洞已经修复,版本信息却未能同步更新,就会导致误报;如无法验证漏洞是否真实修复,那已检测的系统就仍存在安全隐患。无法替代专业的人工渗透测试,不能灵活的根据实际场景动态调整渗透步骤,以及所能发现的风险点问题。
4、针对上述相关技术中传统的渗透测试方式无法发现所有的风险点,存在安全隐患的问题,目前尚未提出有效的解决方案。
技术实现思路
1、本发明实施例提供了一种渗透测试方法及装置,以至少解决相关技术中传统的渗透测试方式无法发现所有的风险点,存在安全隐患的技术问题。
2、根据本发明实施例的一个方面,提供了一种渗透测试方法,包括:对目标系统进行服务识别,并确定识别到的计算机服务的服务类型;在所述服务类型为web服务时,启动网络爬虫爬取所述web服务的目标页面;通过服务识别模型对所述目标页面进行服务识别,以得到与所述目标页面关联的至少一个第一服务,其中,所述服务识别模型是通过多组训练数据通过机器学习训练得到的模型,所述多组训练数据中的每一组均包括:页面以及与该页面对应的服务;通过将所述目标页面与第一指纹库进行匹配,以得到与所述目标页面关联的至少一个第二服务,其中,所述第一指纹库用于存储以下至少之一:服务、服务版本号、漏洞信息;根据所述至少一个第一服务和所述至少一个第二服务确定需要进行渗透测试的目标服务列表;根据所述目标系统的系统特征、漏洞信息和漏洞扫描防御信息确定攻击路径;根据所述攻击路径对所述目标服务列表中的服务进行渗透测试,并得到渗透测试结果。
3、可选地,对目标系统进行服务识别,并确定识别到的计算机服务的服务类型,包括:利用nmap渗透测试工具对所述目标系统进行服务识别,得到识别结果;根据所述识别结果确定识别到的所述计算机服务的服务类型。
4、可选地,在通过服务识别模型对所述目标页面进行服务识别,以得到与所述目标页面关联的至少一个第一服务之前,该渗透测试方法还包括:获取历史时间段内的多个历史页面以及与所述多个历史页面对应的多个历史服务;对包括所述多个历史页面和所述多个历史服务的多组训练数据进行训练,得到所述服务识别模型。
5、可选地,根据所述至少一个第一服务和所述至少一个第二服务确定需要进行渗透测试的目标服务列表,包括:根据所述至少一个第一服务和所述至少一个第二服务确定需要进行渗透测试的所有服务的服务列表;根据渗透测试的渗透功能过滤掉所述服务列表中不支持渗透的服务,得到所述目标服务列表。
6、可选地,根据所述至少一个第一服务和所述至少一个第二服务确定需要进行渗透测试的目标服务列表,包括:通过第二指纹库访问所述计算机服务的路径,得到访问结果;在所述访问结果表示所述路径存在时,确定所述web服务存在;根据所述访问结果中的服务信息结合所述至少一个第一服务和所述至少一个第二服务确定需要进行渗透测试的目标服务列表。
7、可选地,通过将所述目标页面与指纹库进行匹配,以得到与所述目标页面关联的至少一个第二服务,包括:将所述目标页面与第一指纹库进行匹配,得到匹配结果;在所述匹配结果表示未匹配到与所述目标页面关联的所述至少一个第二服务时,利用所述目标页面对所述服务识别模型进行更新,利用更新后的所述服务识别模型确定与所述目标页面关联的所述至少一个第二服务。
8、可选地,根据所述目标系统的系统特征、漏洞信息和漏洞扫描防御信息确定攻击路径,包括:根据自适应规划算法对所述系统特征、所述漏洞信息和所述漏洞扫描防御信息进行处理,得到攻击路径规划方式;在所述攻击路径规划方式下,利用路径生成算法对所述系统特征、所述漏洞信息和所述漏洞扫描防御信息进行处理,得到所述攻击路径。
9、可选地,根据所述攻击路径对所述服务列表中的服务进行渗透测试,并得到渗透测试结果,包括:对所述攻击路径进行动态调整,得到调整后的所述攻击路径;利用调整后的所述攻击路径对所述服务列表中的服务进行遍历,得到遍历结果;在所述遍历结果表示对所述服务列表中的服务遍历完成时,生成渗透测试报告;在所述遍历结果表示对所述服务列表中的服务遍历未完成时,若确定对所述服务列表中的服务渗透成功时,识别所述web服务所在网段的存活ip地址,并设置到所述存活ip地址的路由,按照所述路由对所述存活ip地址进行渗透测试。
10、根据本发明实施例的另外一个方面,还提供了一种渗透测试装置,包括:第一确定单元,用于对目标系统进行服务识别,并确定识别到的计算机服务的服务类型;爬取单元,用于在所述服务类型为web服务时,启动网络爬虫爬取所述web服务的目标页面;识别单元,用于通过服务识别模型对所述目标页面进行服务识别,以得到与所述目标页面关联的至少一个第一服务,其中,所述服务识别模型是通过多组训练数据通过机器学习训练得到的模型,所述多组训练数据中的每一组均包括:页面以及与该页面对应的服务;匹配单元,用于通过将所述目标页面与第一指纹库进行匹配,以得到与所述目标页面关联的至少一个第二服务,其中,所述第一指纹库用于存储以下至少之一:服务、服务版本号、漏洞信息;第二确定单元,用于根据所述至少一个第一服务和所述至少一个第二服务确定需要进行渗透测试的目标服务列表;第三确定单元,用于根据所述目标系统的系统特征、漏洞信息和漏洞扫描防御信息确定攻击路径;渗透单元,用于根据所述攻击路径对所述目标服务列表中的服务进行渗透测试,并得到渗透测试结果。
11、可选地,所述第一确定单元,包括:识别模块,用于利用nmap渗透测试工具对所述目标系统进行服务识别,得到识别结果;第一确定模块,用于根据所述识别结果确定识别到的所述计算机服务的服务类型。
12、可选地,该渗透测试装置还包括:获取单元,用于在通过服务识别模型对所述目标页面进行服务识别,以得到与所述目标页面关联的至少一个第一服务之前,获取历史时间段内的多个历史页面以及与所述多个历史页面对应的多个历史服务;训练单元,用于对包括所述多个历史页面和所述多个历史服务的多组训练数据进行训练,得到所述服务识别模型。
13、可选地,所述第二确定单元,包括:第二确定模块,用于根据所述至少一个第一服务和所述至少一个第二服务确定需要进行渗透测试的所有服务的服务列表;过滤模块,用于根据渗透测试的渗透功能过滤掉所述服务列表中不支持渗透的服务,得到所述目标服务列表。
14、可选地,所述第二确定单元,包括:访问模块,用于通过第二指纹库访问所述计算机服务的路径,得到访问结果;第三确定模块,用于在所述访问结果表示所述路径存在时,确定所述web服务存在;第四确定模块,用于根据所述访问结果中的服务信息结合所述至少一个第一服务和所述至少一个第二服务确定需要进行渗透测试的目标服务列表。
15、可选地,所述匹配单元,包括:匹配模块,用于将所述目标页面与第一指纹库进行匹配,得到匹配结果;更新模块,用于在所述匹配结果表示未匹配到与所述目标页面关联的所述至少一个第二服务时,利用所述目标页面对所述服务识别模型进行更新,利用更新后的所述服务识别模型确定与所述目标页面关联的所述至少一个第二服务。
16、可选地,所述第三确定单元,包括:第一处理模块,用于根据自适应规划算法对所述系统特征、所述漏洞信息和所述漏洞扫描防御信息进行处理,得到攻击路径规划方式;第二处理模块,用于在所述攻击路径规划方式下,利用路径生成算法对所述系统特征、所述漏洞信息和所述漏洞扫描防御信息进行处理,得到所述攻击路径。
17、可选地,所述渗透单元,包括:调整模块,用于对所述攻击路径进行动态调整,得到调整后的所述攻击路径;遍历模块,用于利用调整后的所述攻击路径对所述服务列表中的服务进行遍历,得到遍历结果;生成模块,用于在所述遍历结果表示对所述服务列表中的服务遍历完成时,生成渗透测试报告;渗透模块,用于在所述遍历结果表示对所述服务列表中的服务遍历未完成时,若确定对所述服务列表中的服务渗透成功时,识别所述web服务所在网段的存活ip地址,并设置到所述存活ip地址的路由,按照所述路由对所述存活ip地址进行渗透测试。
18、根据本发明实施例的另外一个方面,还提供了一种计算机可读存储介质,所述计算机可读存储介质包括存储的程序,其中,所述程序执行上述中任意一项所述的渗透测试方法。
19、根据本发明实施例的另外一个方面,还提供了一种处理器,所述处理器用于运行程序,其中,所述程序运行时执行上述中任意一项所述的渗透测试方法。
20、在本发明实施例中,对目标系统进行服务识别,并确定识别到的计算机服务的服务类型;在服务类型为web服务时,启动网络爬虫爬取web服务的目标页面;通过服务识别模型对目标页面进行服务识别,以得到与目标页面关联的至少一个第一服务,其中,服务识别模型是通过多组训练数据通过机器学习训练得到的模型,多组训练数据中的每一组均包括:页面以及与该页面对应的服务;通过将目标页面与第一指纹库进行匹配,以得到与目标页面关联的至少一个第二服务,其中,第一指纹库用于存储以下至少之一:服务、服务版本号、漏洞信息;根据至少一个第一服务和至少一个第二服务确定需要进行渗透测试的目标服务列表;根据目标系统的系统特征、漏洞信息和漏洞扫描防御信息确定攻击路径;根据攻击路径对目标服务列表中的服务进行渗透测试,并得到渗透测试结果。通过本发明提供的技术方案,实现了通过多个层面获取待进行渗透测试的服务的服务列表,并根据多个因素来确定攻击路径,利用攻击路径对服务列表中的服务进行渗透测试的目的,达到了提高渗透测试的全面性的技术效果,进而解决了相关技术中传统的渗透测试方式无法发现所有的风险点,存在安全隐患的技术问题。