一种工控设备漏洞检测系统及方法
技术领域
本发明涉及工控设备安全领域,特别是涉及一种工控设备漏洞检测系统及方法。
背景技术
近年来,随着工业控制系统互联互通的逐步加强,工业控制系统为代表的关键基础设施被广泛应用与电力、石化、制造等行业,它是一个国家的命脉所在。然而,随着计算机网络等技术在工业控制系统中的广泛应用,工控设备的安全事件时有发生,工控设备的安全问题受到社会的广泛关注。工业控制系统的攻击事件层出不穷的主要原因有:一是工业控制系统的互联互通性逐渐增强,受到攻击的可能性也随之大大提高;二是,工业控制系统还停留在只考虑可用性的阶段,风险意识不足,没有进行专门的信息安全防护建设。因此,工控设备漏洞扫描的相关研究引起了关注。如何提供一种高效、准确的工控设备漏洞检测系统及方法,是目前亟待解决的技术问题。
发明内容
本发明的目的是提供一种工控设备漏洞检测系统及方法,以解决现有技术中存在的技术问题,能够对工控设备漏洞进行快速准确检测,且有效避免了检测过程中对工控设备的损坏。
为实现上述目的,本发明提供了如下方案:本发明提供一种工控设备漏洞检测系统,包括:任务获取模块、存活识别模块、端口扫描模块、设备指纹获取模块、漏洞识别模块、存储模块;所述任务获取模块、存活识别模块、端口扫描模块、设备指纹获取模块、漏洞识别模块依次连接,所述存活识别模块、端口扫描模块、设备指纹获取模块、漏洞识别模块均与所述存储模块连接;
所述任务获取模块用于获取待扫描的IP字段范围;
所述存活识别模块用于获取待扫描的IP字段范围内,每个IP地址所对应的工控设备的存活状态;
所述端口扫描模块基于处于存活状态的工控设备所对应的IP地址,扫描各IP地址所对应的工控设备的端口信息;
所述设备指纹获取模块基于处于存活状态的工控设备所对应的IP地址及端口信息扫描结果,获取工控设备各端口的指纹信息;
所述漏洞识别模块基于工控设备各端口的指纹信息,进行工控设备漏洞检测;
所述存储模块用于对所述存活识别模块、端口扫描模块、设备指纹获取模块、漏洞识别模块的识别结果进行存储,所述存储模块还存储有现有厂商设备数据库、工控设备漏洞库。
优选地,所述指纹信息包括:系统固件、端口、协议信息。
优选地,所述漏洞识别模块包括:属性识别单元、漏洞检测单元,所述属性识别单元、漏洞检测单元均与所述存储模块连接,所述属性识别单元与所述设备指纹获取模块连接,所述漏洞检测单元与所述属性识别单元连接;
所述属性识别单元用于从所述存储模块中获取现有厂商设备数据库,将获得的指纹信息与已知厂商设备数据库中所包含的标识信息进行匹配,得到工控设备的设备属性信息;
所述漏洞检测单元基于卷积神经网络构建漏洞检测模型,将工控设备的属性信息输入至所述漏洞检测模型,得到工控设备的漏洞检测结果。
优选地,所述属性信息包括:设备类型、设备属性、设备型号、固件信息、软件信息。
本发明还提供一种工控设备漏洞检测方法,包括如下步骤:
S1、获取工控设备漏洞检测中待扫描的IP字段范围;
S2、获取待扫描的IP字段范围内,每个IP地址所对应的工控设备的存活状态;
S3、基于处于存活状态的工控设备所对应的IP地址,扫描各IP地址所对应的工控设备的端口信息;
S4、基于处于存活状态的工控设备所对应的IP地址及工控设备端口信息扫描结果,获取工控设备各端口的指纹信息;
S5、基于工控设备各端口的指纹信息,进行工控设备漏洞检测。
优选地,所述S2具体包括:向待扫描的IP字段范围内的每个IP地址所对应的工控设备发送预设指令,根据返回值判断该IP地址所对应的工控设备的存活状态。
优选地,所述S4具体包括:向IP地址所对应的工控设备的各端口发送预设指令,获取返回数据,基于返回数据,获取该IP地址所对应的工控设备各端口的指纹信息。
优选地,所述S5具体包括:
S5.1、获取现有厂商设备数据库,将获得的指纹信息与已知厂商设备数据库中所包含的标识信息进行匹配,得到工控设备的设备属性信息;
S5.2、基于卷积神经网络构建漏洞检测模型;
S5.3、获取工控设备漏洞库,通过工控设备漏洞库对所述漏洞检测模型进行训练;
S5.4、将工控设备的设备属性信息输入训练好的漏洞检测模型,得到工控设备的漏洞检测结果。
本发明公开了以下技术效果:
本发明先对工控设备进行存活状态扫描,基于存活的工控设备进行端口扫描,并获取各端口的指纹信息,通过指纹信息对工控设备进行漏洞检测,有效避免了所扫描的信息中包括大量无效工控设备,保证了所检测到的数据的有效性,且克服了现有技术以端口扫描为主所造成的扫描结果中含有大量无参考价值的数据,从而提高了工控设备漏洞扫描的效率及准确性。同时,本发明通过工控设备的指纹信息提取工控设备的属性信息,基于属性信息,通过深度学习实现漏洞的检测,实现了对工控设备漏洞的快速准确检测,且有效避免了现有技术中动态检测过程中向工控设备发送数据导致的设备损坏。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明工控设备漏洞检测系统结构示意图;
图2为本发明工控设备漏洞检测方法流程图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
参照图1所示,本实施例提供一种工控设备漏洞检测系统,包括:任务获取模块、存活识别模块、端口扫描模块、设备指纹获取模块、漏洞识别模块、存储模块;所述任务获取模块、存活识别模块、端口扫描模块、设备指纹获取模块、漏洞识别模块依次连接,所述存活识别模块、端口扫描模块、设备指纹获取模块、漏洞识别模块均与所述存储模块连接。
所述存储模块用于对所述存活识别模块、端口扫描模块、设备指纹获取模块、漏洞识别模块的识别结果进行存储,所述存储模块还存储有现有厂商设备数据库、工控设备漏洞库。
所述任务获取模块用于获取待扫描的IP字段范围。
所述存活识别模块用于获取待扫描的IP字段范围内,每个IP地址所对应的工控设备的存活状态,并将工控设备的存活状态识别结果存入所述存储模块;其中,判断每个IP地址所对应的工控设备的存活状态的具体方法包括:向待扫描的IP字段范围内的每个IP地址所对应的工控设备发送预设指令,根据返回值判断该IP地址所对应的工控设备的存活状态。本实施例中,在flask提供的接口中调用dos命令PING,与待扫描的IP字段范围内的每个IP地址进行通信,通过发送一个ICMP ECHO(Type 8)数据包到目标工控设备,根据返回值判断该目标工控设备是否“存活”;如果ICMP ECHO Reply(ICMP type0)数据包HOST A可以接受到,说明该目标工控设备是存活状态,如果没有就初步判断该目标工控设备没有在线。
所述端口扫描模块基于处于存活状态的工控设备所对应的IP地址,扫描各IP地址所对应的工控设备的端口信息,即工控设备中所有打开的端口,并将工控设备的端口信息扫描结果存入所述存储模块;本实施例中,根据输入的每个IP地址,在flask提供的接口中调用zmap扫描任务进行端口扫描,其中,zmap为基于go语言开发;将扫描结果结构体存入到所述存储模块中。
所述设备指纹获取模块基于处于存活状态的工控设备所对应的IP地址,从所述存储模块中获取每个IP地址所对应的工控设备的端口信息,基于IP地址及端口信息,获取工控设备各端口的指纹信息,将工控设备各端口的指纹信息存入所述存储模块;其中,每个IP地址所对应的工控设备各端口的指纹信息的获取方法具体包括:向IP地址所对应的工控设备的各端口发送预设指令,获取返回数据,基于返回数据,获取该IP地址所对应的工控设备各端口的指纹信息。所述指纹信息包括但不限于:系统固件、端口、协议信息。
本实施例中,根据输入的IP字段范围,在flask提供的接口中调用Zgrab扫描,向目标IP所对应的工控设备各端口发送一个对应服务的请求包,然后收到这个服务的返回包,从这个返回包中获取工控设备各端口的指纹信息。本实施例中用于对摄像头设备的指纹信息进行获取,调用自定义扫描任务向目标IP发送一个对应服务的请求包,获取系统固件、端口、协议等信息。
所述漏洞识别模块基于工控设备各端口的指纹信息,进行工控设备漏洞检测;所述漏洞识别模块包括:属性识别单元、漏洞检测单元,所述属性识别单元、漏洞检测单元均与所述存储模块连接,所述属性识别单元与所述设备指纹获取模块连接,所述漏洞检测单元与所述属性识别单元连接。
所述属性识别单元用于从所述存储模块中获取现有厂商设备数据库,将获得的指纹信息与已知厂商设备数据库中所包含的标识信息进行匹配,得到工控设备的设备属性信息;所述属性信息包括:设备类型、设备属性、设备型号、固件信息、软件信息;其中,所述标识信息包括:特定识别信息、特定字符、符号信息。
所述漏洞检测单元基于卷积神经网络构建漏洞检测模型,将工控设备的属性信息输入至所述漏洞检测模型,得到工控设备的漏洞检测结果,实现对工控设备漏洞的静态检测,通过静态检测,一方面能够通过深度学习对工控设备的漏洞进行快速准确检测,一方面能够有效避免现有技术中动态检测过程中向工控设备发送数据导致的设备损坏。其中,所述漏洞检测单元从所述存储模块中获取工控设备漏洞库,通过工控设备漏洞库对所述漏洞检测模型进行训练,所述漏洞检测单元还将漏洞检测结果存储至所述工控设备漏洞库,完成工控设备漏洞库的更新,通过所述工控设备漏洞库定期对所述漏洞检测模型进行更新,以保证检测结果的准确性。
参照图2所示,本实施例还提供一种工控设备漏洞检测方法,具体包括如下步骤:
S1、获取工控设备漏洞检测中待扫描的IP字段范围;
S2、获取待扫描的IP字段范围内,每个IP地址所对应的工控设备的存活状态;具体包括:向待扫描的IP字段范围内的每个IP地址所对应的工控设备发送预设指令,根据返回值判断该IP地址所对应的工控设备的存活状态。
S3、基于处于存活状态的工控设备所对应的IP地址,扫描各IP地址所对应的工控设备的端口信息。
S4、基于处于存活状态的工控设备所对应的IP地址及工控设备端口信息扫描结果,获取工控设备各端口的指纹信息;具体包括:向IP地址所对应的工控设备的各端口发送预设指令,获取返回数据,基于返回数据,获取该IP地址所对应的工控设备各端口的指纹信息。
S5、基于工控设备各端口的指纹信息,进行工控设备漏洞检测;具体包括:
S5.1、获取现有厂商设备数据库,将获得的指纹信息与已知厂商设备数据库中所包含的标识信息进行匹配,得到工控设备的设备属性信息;
S5.2、基于卷积神经网络构建漏洞检测模型;
S5.3、获取工控设备漏洞库,通过工控设备漏洞库对所述漏洞检测模型进行训练;
S5.4、将工控设备的设备属性信息输入训练好的漏洞检测模型,得到工控设备的漏洞检测结果。
以上所述的实施例仅是对本发明的优选方式进行描述,并非对本发明的范围进行限定,在不脱离本发明设计精神的前提下,本领域普通技术人员对本发明的技术方案做出的各种变形和改进,均应落入本发明权利要求书确定的保护范围内。