1.一种面向工控系统的主动式漏洞检测系统,其特征在于,包括控制器、客户端、服务器、评估报告模块和数据中心,其中,所述控制器与所述服务器相连,所述服务器与不同的所述客户端相连,所述客户端通过防火墙和/或路由器连接互联网,并与所述数据中心连接进行数据交互,所述服务器与所述数据中心相连进行数据交互;所述漏洞检测系统被配置为采集工控系统的软件、用户、进程及应用配置信息,然后进行逻辑判断以发现所述工控系统中存在的安全漏洞,并根据所述数据中心提供的数据由所述评估报告模块生成评估报告。
2.如权利要求1所述的面向工控系统的主动式漏洞检测系统,其特征在于,所述控制器被配置为由管理员控制所述漏洞检测系统的启停及根据需要设置检测参数和检测目标。
3.如权利要求1所述的面向工控系统的主动式漏洞检测系统,其特征在于,所述服务器被配置为通知客户端进行数据收集及检测逻辑条件判断,当收到所有客户端检测完毕的消息后,通知所述评估报告模块生成评估报告。
4.如权利要求1所述的面向工控系统的主动式漏洞检测系统,其特征在于,所述客户端被配置为接收到所述服务器发来的消息后,读取本机的系统和配置信息,进一步判断漏洞存在的逻辑条件是否成立,最后把检测判断结果发往所述数据中心,同时通知所述服务器检测完成。
5.如权利要求1所述的面向工控系统的主动式漏洞检测系统,其特征在于,所述数据中心被配置为所述客户端和所述评估报告模块的公共接口,存放系统所有信息,包括漏洞数据库、漏洞存在的逻辑条件和客户端检测的CVE列表。
6.如权利要求1所述的面向工控系统的主动式漏洞检测系统,其特征在于,所述评估报告模块被配置为向系统管理员提供评估目标的漏洞信息,所述漏洞信息包括漏洞名称、漏洞发布日期、漏洞内容简述、漏洞危险等级、损失类型、漏洞类型、暴露的系统组件、相关参考信息、脆弱的软件及其版本和补救措施。
7.一种面向工控系统的主动式漏洞检测方法,其特征在于,包括以下步骤:
步骤1、读取操作系统版本、具有漏洞的文件名字、应用版本和补丁状态,判断脆弱的软件是否存在;
步骤2、获取相应的服务是否运行、具体配置设置和其它工作区,判断脆弱的配置是否存在。
8.如权利要求7所述的面向工控系统的主动式漏洞检测方法,其特征在于,所述步骤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表示漏洞不存在。
9.如权利要求7所述的面向工控系统的主动式漏洞检测方法,其特征在于,所述步骤1进一步包括定义需要收集的系统信息为系统文件、注册表、进程、注册用户及IIS服务器注册信息;根据规定漏洞所依赖的脆弱条件及如何判断脆弱条件是否成立;数据中心保存评估过程使用的所有数据,包括系统配置信息、漏洞信息、检测结果以及评估过程中检测器采集的系统信息。
10.如权利要求7所述的面向工控系统的主动式漏洞检测方法,其特征在于,所述步骤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和漏洞严重级别进行分类显示。