一种面向工控系统的主动式漏洞检测系统和检测方法与流程

文档序号:13763407阅读:361来源:国知局
一种面向工控系统的主动式漏洞检测系统和检测方法与流程

本发明涉及工业信息安全领域,尤其涉及一种面向工控系统的主动式漏洞检测系统和检测方法。



背景技术:

工业控制系统的信息安全关系到国家能源和基础设施行业的安全及稳定运行,是企业及国家安全面临的严峻挑战。系统产品越来越多地采用通用协议、通用硬件和通用软件,以各种方式与互联网等公共网络连接,病毒、木马等威胁正在向工业控制系统扩散,系统信息安全问题日益突出。过程控制系统已经从单机、分布式朝网络化方向发展,在网络设计过程中引入了不同类型的信息和通讯技术(ICT),包括Internet和无线技术。这些新技术的引入也给基础行业的安全带来了新的挑战,包括电力、水利、交通运输以及大型制造行业。

工业控制系统的协议和设计,偏重于功能实现的实时性和可靠性。对安全攻击缺乏前期的设计和有效的抵御方法。由于系统兼容性问题,工业控制系统通常不升级、不打补丁,甚至有的工作站供应商明确要求用户不得自行升级系统。因此,系统长期运行后会积累大量的安全漏洞,这些缺陷使工控系统面对网络安全攻击时极其脆弱,给安全生产带来极大隐患。工控安全的现状处于“先天不足,后天失养,未来堪忧”的状态:系统无法及时更新,自身漏洞隐蔽,不能被及时探测与修复,系统本身的安全隐患不容忽视;系统协议本身欠缺安全因素,安全政策和管理制度并不完善,易被攻击者利用;不能良好地审计系统中的违规操作行为,对于系统用户访问权限的管理机制不完善;系统操作人员缺乏必要的安全意识,操作过程不规范。

近年来,工控信息安全事故频发,工控漏洞数量呈现爆炸式增长。工业控制系统之所以会面临拒绝服务、控制命令篡改、高级持续性威胁(APT)等攻击,最根本的原因是系统存在可以被渗透的漏洞。漏洞是安全问题的根源,漏洞检测是解决安全问题的基础。只有了解系统存在的安全隐患,才能做到有针对性的防护。

因此,本领域的技术人员致力于开发一种面向工控系统的主动式漏洞检测系统和检测方法,加强工控系统的漏洞检测,从根本上解决工控系统的安全问题。



技术实现要素:

有鉴于现有技术的上述缺陷,本发明所要解决的技术问题是如何实现工业控制系统的主动安全检测。

为实现上述目的,本发明提供了一种面向工控系统的主动式漏洞检测系统,包括控制器、客户端、服务器、评估报告模块和数据中心,其中,所述控制器与所述服务器相连,所述服务器与不同的所述客户端相连,所述客户端通过防火墙和/或路由器连接互联网,并与所述数据中心连接进行数据交互,所述服务器与所述数据中心相连进行数据交互;所述漏洞检测系统被配置为采集工控系统的软件、用户、进程及应用配置信息,然后进行逻辑判断以发现所述工控系统中存在的安全漏洞,并根据所述数据中心提供的数据由所述评估报告模块生成评估报告。

进一步地,所述控制器被配置为由管理员控制所述漏洞检测系统的启停及根据需要设置检测参数和检测目标。

进一步地,所述服务器被配置为通知客户端进行数据收集及检测逻辑条件判断,当收到所有客户端检测完毕的消息后,通知所述评估报告模块生成评估报告。

进一步地,所述客户端被配置为接收到所述服务器发来的消息后,读取本机的系统和配置信息,进一步判断漏洞存在的逻辑条件是否成立,最后把检测判断结果发往所述数据中心,同时通知所述服务器检测完成。

进一步地,所述数据中心被配置为所述客户端和所述评估报告模块的公共接口,存放系统所有信息,包括漏洞数据库、漏洞存在的逻辑条件和客户端检测的CVE列表。

进一步地,所述评估报告模块被配置为向系统管理员提供评估目标的漏洞信息,所述漏洞信息包括漏洞名称、漏洞发布日期、漏洞内容简述、漏洞危险等级、损失类型、漏洞类型、暴露的系统组件、相关参考信息、脆弱的软件及其版本和补救措施。

本发明还公开了一种面向工控系统的主动式漏洞检测方法,包括以下步骤:

步骤1、读取操作系统版本、具有漏洞的文件名字、应用版本和补丁状态,判断脆弱的软件是否存在;

步骤2、获取相应的服务是否运行、具体配置设置和其它工作区,判断脆弱的配置是否存在。

进一步地,所述步骤1进一步包括:

步骤1.1、定义五个集合,其中所有元素为三态变量,其值域为{0,1,Φ}:

(1)文件名称FN={fn1,fn2,……,fnn};

(2)应用软件版本AV={av1,av2,……,avm};

(3)软件补丁PS={ps1,ps2,……,psk};

(4)运行服务RS={rs1,rs2,……,rst};

(5)配置设置CS={cs1,cs2,……,csi};

当漏洞的判断不使用某一变量时,其取值为Φ,当所述工控系统存在相应信息时

变量取值为1,否则取值为0;

步骤1.2、定义三个函数:

(1)判断系统存在脆弱软件的判别函数

其中,fn∈FN,av∈AV,ps∈PS,其函数的输出结果表示漏洞寄存的脆弱软件存在与否;

(2)判断系统存在脆弱配置的判别函数

其中,rs∈RS,cs∈CS,其函数的输出结果表示与漏洞相关的脆弱配置是否存在;

(3)判断系统对漏洞脆弱的判别函数

f(g,h)=g(fn,av,ps)∩h(rs,cs) (3)

其中式(3)的输出结果为漏洞是否存在的结论,取值为1表示存在漏洞,取

值为0表示漏洞不存在。

进一步地,所述步骤1进一步包括定义需要收集的系统信息为系统文件、注册表、进程、注册用户及IIS服务器注册信息;根据规定漏洞所依赖的脆弱条件及如何判断脆弱条件是否成立;数据中心保存评估过程使用的所有数据,包括系统配置信息、漏洞信息、检测结果以及评估过程中检测器采集的系统信息。

进一步地,所述步骤1进一步包括:

步骤1.1、建立漏洞信息表VUL_LIST及相应的查询信息表Detail_LIST,并手工添加相应的漏洞信息;

步骤1.2、建立系统注册信息表Win2K_RegistryKeys及其配置表Win2K_RegistryKeys_Conf;文件属性表Win2K_FileAttributes及其配置表Win2K_FileAttributes_Conf、MetabaseKeys;属性表Win2K_MetabaseKeys及其配置表Win2K_MetabaseKeys_Conf;

步骤1.3、利用数据库模式的INSERT语句填充配置表Win2K_RegistryKeys_Conf、Win2K_FileAttributes_Conf和Win2K_MetabaseKeys_Conf的值;按照配置表Win2K_RegistryKeys_Conf的RegistryKey,读取系统中与其对应的EntryName、EntryType和EntryValue值,并填到Win2K_RegistryKeys表中;按照配置表Win2K_FileAttributes_Conf的FilePath,读取系统中与其对应的Owner、Filesize、Modified、MSChecksum、MD5和Version值,并填到Win2K_FileAttributes表中;按照配置表Win2K_MetabaseKeys_Conf的MetabaseKey,读取系统中与其对应的Id、Name等,并填到Win2K_MetabaseKeys表中;

步骤1.4、依次读取VUL_LIST中的CVE_ID,根据其对应的脆弱条件Conditions(i)到Detail_LIST表中查询其对应的RULE,到对应表中读取相应信息进行规则匹配,得出漏洞是否存在的判断;

步骤1.5、对于发现的系统漏洞,根据其CVE名称到漏洞数据库中查找与其有关的相应信息,按照主机IP和漏洞严重级别进行分类显示。

本发明的优点在于提出的漏洞检测系统不需要开发攻击代码,与微软开发的MBSA漏洞检测系统相比,检测速度快,准确度高,能很好地满足工业控制系统的高稳定性、高实时性要求,适合于管理员评估整个工业控制系统的安全状况,且对控制系统的稳定运行无影响。

以下将结合附图对本发明的构思、具体结构及产生的技术效果作进一步说明,以充分地了解本发明的目的、特征和效果。

附图说明

图1是本发明的一个较佳实施例的主动式漏洞检测系统结构图;

图2是本发明的一个较佳实施例的漏洞检测信息图;

图3是本发明的一个较佳实施例的漏洞检测实现流程图;

图4是本发明的一个较佳实施例的实验测试环境图。

具体实施方式

下面结合附图和具体实施例对本发明作进一步说明。

本发明所述的一种面向工控系统的主动式安全漏洞检测系统,采用客户机/服务器C/S模式,主要包括如下模块:控制器、客户端(client)、服务器(server)、评估报告和数据中心,其体系结构如图1所示,其中虚线表示控制信号,箭头指向信号的流动方向;实线表示数据信息,箭头指向数据的流动方向,其中控制器与服务器相连,服务器与不同客户端相连,客户端可通过防火墙、路由器连接互联网,也可与数据中心连接进行数据交互,同时服务器与数据中心相连进行数据交互,根据数据中心提供的数据生成评估报告。安全漏洞检测系统首先采集系统的软件、用户、进程及应用配置信息,然后进行逻辑判断以发现系统中存在的安全漏洞。

系统结构中每个模块的功能及其之间的关系如下:控制器是漏洞检测体系的用户接口,主要是管理员控制系统的启停及根据需要设置检测参数和检测目标;服务器负责系统的协调,通知客户端进行数据收集及检测逻辑条件判断,当收到所有客户端检测完毕的消息后,通知漏洞评估报告模块,输出评估报告;客户端接收到服务器发来的消息后,读取本机的系统和配置信息,进一步判断漏洞存在的逻辑条件是否成立,最后把检测判断结果发往数据中心,同时通知服务器模块检测完成;数据中心是客户端模块和评估报告模块的公共接口,系统中所有的信息都存放在这里,包括漏洞数据库、漏洞存在的逻辑条件和客户端模块检测的CVE列表(Common Vulnerabilities&Exposures,公共漏洞和暴露)等;漏洞评估报告为系统管理员提供评估目标的漏洞信息,主要包括漏洞名称、漏洞发布日期、漏洞内容简述、漏洞危险等级、损失类型、漏洞类型、暴露的系统组件、相关参考信息、脆弱的软件及其版本和补救措施。

所述无损式漏洞检测的核心是对系统的配置信息进行逻辑判断,进而得到系统中存在的漏洞信息。首先需要读取操作系统版本、具有漏洞的文件名字、应用版本和补丁状态,以判断脆弱的软件是否存在。接着获取相应的服务是否运行、具体配置设置和其它工作区,判断脆弱的配置是否存在。下面给出其具体原理。

首先,定义一些集合:(1)文件名称FN={fn1,fn2,……,fnn},(2)应用软件版本AV={av1,av2,……,avm},(3)软件补丁PS={ps1,ps2,……,psk},(4)运行服务RS={rs1,rs2,……,rst},(5)配置设置CS={cs1,cs2,……,csi}。以上这五个集合中所有元素为三态变量,其值域为{0,1,Φ}。当漏洞的判断不使用某一变量时,其取值为Φ,当系统存在相应信息时变量取值为1,否则取值为0。

其次,定义三个函数:

(1)判断系统存在脆弱软件的判别函数

其中,fn∈FN,av∈AV,ps∈PS,其函数的输出结果表示漏洞寄存的脆弱软件存在与否。

(2)判断系统存在脆弱配置的判别函数

其中,rs∈RS,cs∈CS,其函数的输出结果表示与漏洞相关的脆弱配置是否存在。

(3)判断系统对漏洞脆弱的判别函数

f(g,h)=g(fn,av,ps)∩h(rs,cs) (3)

式(3)的输出结果为漏洞是否存在的结论,取值为1表示存在漏洞,取值为0表示漏洞不存在。判断系统是否存在某一漏洞时,首先利用式(1)判断漏洞所寄存的脆弱软件是否存在,接着利用式(2)判断系统是否存在漏洞所依附的脆弱配置,最后利用式(3)可得到系统是否脆弱的判断结果。

这里以检测Windows操作系统上远程数据协议(RDP)纯文本会话校验和不加密漏洞为例进行介绍,这里fn=Terminal Server 5.0∈FN,cs=Φ∈CS,av=rdpwd.sys versions∈AV,rs=RDP service∈RS,ps=Patch Q324380_W2K_SP4_X86_EN.exe∈PS,由此得到以下2个判别函数:

g=Terminal Server 5.0∩(rdpwd.sys versions<5.0.2195.5880)∩!Patch Q324380_W2K_SP4_X86_EN.exe(4)

f=RDP service∩Φ (5)

通过读取系统的注册表值和文件系统属性,就可得到函数g和f的值,最后利用式(3)就可判断出系统是否存在名为远程数据协议(RDP)纯文本会话校验和不加密的漏洞(CAN-2002-0863)。

漏洞检测系统的具体实现包括定义收集的信息、漏洞逻辑条件的判断规则、系统控制器、服务器和客户端之间的协调等。以Windows系统为例,其实现过程如下。

(1)系统信息收集

定义需要收集的系统信息是漏洞检测系统工作的第一步,对于Windows系统,要收集的主要信息为系统文件、注册表、进程、注册用户及IIS服务器注册信息等。

(2)规则检测

检测规则是漏洞检测系统的核心,其规定漏洞所依赖的脆弱条件及如何判断脆弱条件是否成立,检测信息如图2所示。图中漏洞与脆弱条件的对应关系可能是一对一,也可能是一对多。Conditions(i)(i=1,2,……,n)为漏洞的脆弱条件,RULE为脆弱条件的判断规则,其形式为IF…,THEN…。比如,漏洞CAN-2002-0863的一个脆弱条件为:Conditions(1)=Terminal Server 5.0,其判断规则为:

IF RegistryKey='HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server'AND EntryName='ProductVersion'AND EntryValue='5.0'in TABLE Win2K_RegistryKeys,THEN Terminal Server 5.0。

(3)数据中心

数据中心保存评估过程使用的所有数据,包括系统配置信息、漏洞信息、检测结果以及评估过程中漏洞检测系统采集的系统信息。其中漏洞检测系统收集的系统信息直接决定了评估结果,这些数据由与平台相关的模式(Schema)确定。

(4)实现流程

如图3所示,该体系实现包括信息表建立、系统信息获取、检测逻辑判断和评估结果输出:

步骤1、:信息表建立

首先,根据Mitre网站提供的信息建立漏洞信息表VUL_LIST及相应的查询信息表Detail_LIST,并手工添加相应的信息;

其次,建立:

a.系统注册信息表Win2K_RegistryKeys及其配置表Win2K_RegistryKeys_Conf;

b.文件属性表Win2K_FileAttributes及其配置表Win2K_FileAttributes_Conf、MetabaseKeys;

c.属性表Win2K_MetabaseKeys及其配置表Win2K_MetabaseKeys_Conf。

步骤2:系统信息获取

首先,利用数据库模式的INSERT语句填充配置表Win2K_RegistryKeys_Conf、Win2K_FileAttributes_Conf和Win2K_MetabaseKeys_Conf的值;

其次,按照配置表Win2K_RegistryKeys_Conf的RegistryKey,读取系统中与其对应的EntryName、EntryType和EntryValue值,并填到Win2K_RegistryKeys表中;

再次,按照配置表Win2K_FileAttributes_Conf的FilePath,读取系统中与其对应的Owner、Filesize、Modified、MSChecksum、MD5和Version值,并填到Win2K_FileAttributes表中;

最后,按照配置表Win2K_MetabaseKeys_Conf的MetabaseKey,读取系统中与其对应的Id、Name等,并填到Win2K_MetabaseKeys表中。

步骤3:检测逻辑判断

依次读取VUL_LIST中的CVE_ID,根据其对应的脆弱条件Conditions(i)到Detail_LIST表中查询其对应的RULE,到对应表中读取相应信息进行规则匹配,得出漏洞是否存在的判断。

步骤4:评估结果输出

对于发现的系统漏洞,根据其CVE名称到漏洞数据库中查找与其有关的相应信息,按照主机IP和漏洞严重级别进行分类显示。

对设计的漏洞检测系统进行试验环境测试,其试验环境如图4所示。实验环境为内部10M局域网网段192.168.1.0/24,共享一个C类地址202.117.14.189联入Internet。在192.168.1.19主机上安装漏洞检测系统的控制器和服务器端,192.168.1.231作为数据库服务器,三个主站:192.168.1.226、192.168.1.218和192.168.1.18作为检测目标,并在其上安装漏洞检测系统的客户端。3个主站的操作系统均为Windows 2K,192.168.1.226服务器安装了除IE浏览器补丁外的所有安全补丁。

为了对比试验结果,选取了微软的漏洞扫描器Microsoft Baseline Security Analyzer(MBSA),它为目前Microsoft Windows平台功能最强大的漏洞检测系统。给出本系统ICS-VS和MBSA两个检测系统对主站192.168.1.226的扫描结果:

1)针对同样的单一目标主机,MBSA用时40秒,ICS-VS用时21秒,几乎只是MBSA的一半,这充分显示了ICS-VS的快速性。这主要是由于ICS-VS利用系统配置信息,采用内部查询方式得到系统的漏洞。因此,与采用外部扫描方式工作的漏洞评估系统相比,ICS-VS检测速度快。

2)安装IE6.0SP1前发现的漏洞从数量上看,MBSA发现了3个,而ICS-VS发现了7个。仔细检查发现的漏洞,结合微软网站的资料,发现ICS-VS发现的漏洞修补程序已经全部纳入IE6.0SP1。从这一点看出,本系统是非常精确的。

为了进一步测试ICS-VS的检测速度,对3台主站进行3次漏洞扫描,ICS-VS所用的最小时间是30秒,MBSA的最小时间是150s。这个试验进一步突出了本系统的最大优点:快速。这进一步说明本系统可以应用在大型工业控制系统环境中,这充分体现了利用系统配置信息、采用内部查询方式的漏洞评估方式带来的好处。

本发明提出的面向工业控制系统的主动无损式漏洞检测系统ICS-VS,能很好地满足了工控系统高稳定性和高实时性的要求。从对主站和工控网络系统的实验中可以看出,所提出的网络系统漏洞检测评估体系ICS-VS具有检测精度高、速度快的优点,且其不需要开发攻击代码,对检测目标的运行性能零影响。该检测系统适用于网络管理员分析工控系统的安全状况,具有较好的应用前景。

以上详细描述了本发明的较佳具体实施例。应当理解,本领域的普通技术无需创造性劳动就可以根据本发明的构思作出诸多修改和变化。因此,凡本技术领域中技术人员依本发明的构思在现有技术的基础上通过逻辑分析、推理或者有限的实验可以得到的技术方案,皆应在由权利要求书所确定的保护范围内。

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