本发明涉及信息安全技术领域,尤其涉及一种物联网设备未知漏洞识别方法及装置。
背景技术:
物联网(internetofthings,简称iot)是一个基于互联网、传统电信网等信息承载体,让所有能够被独立寻址的普通物理对象实现互联互通的网络。随着5g时代的到来,越来越多的设备会连接网络,物联网设备数量将迎来井喷式增长,物联网设备的安全性正在面临前所未有的安全威胁。
未知漏洞,也称0day漏洞或零日漏洞,泛指那些在互联网中客观存在的,并且已经被部分黑客发现,目前还没有公开过的漏洞。未知漏洞常常被用于高级持续渗透攻击,由于未知漏洞尚处于未被公开的状态,因而也没有相应的第三方或官方补丁程序去修补漏洞,往往会给系统安全带来很大的风险。
因此,市场急需一种能够主动识别出物联网系统中的设备未知漏洞的方法,从而在一定程度上降低系统安全的风险。
技术实现要素:
本发明的主要目的在于提出一种物联网设备未知漏洞识别方法,旨在一定程度上识别出物联网系统中设备位置漏洞,提高系统安全性。
为实现上述目的,本发明提供的一种物联网设备未知漏洞识别方法,该方法包括以下步骤:
步骤s1.在流量监测服务器端捕获网络流量,并对流量数据进行http协议解析,提取http头部字段、body体内容和url前缀,从而得到流量特征数据,并保存原始数据包;
其中,所述url前缀包括去除域名的资源路径和参数名。
步骤s2.将所述流量特征数据与已知的iot设备漏洞特征进行匹配,如果匹配成功,说明该数据为nday漏洞攻击,因而不符合未知漏洞攻击特点;如果跟所有已知漏洞特征匹配均不成功,则进入s3。
步骤s3.对所述流量特征数据进行语法分析,输入shell词法分析器flex,将流量特征数据转变成记号流数据。其中,所述记号流数据包括流量特征数据中的多个记号,并且每个记号都有对应的值和类型。
s4.对记号流数据开展语法分析,将记号流数据转换成语法树:
s5.根据shell语法规则,检测生成的语法树是否合法,如果不符合语法规则的数据,则跳过该条数据,如果语法检测合法,则进入s6。
s6.对符合语法规则的数据进行威胁程度分析,将捕获的数据与攻击模板数据库中的攻击模板进行匹配,根据匹配到的模板计算得到当前记号流数据的威胁值,将当前记号流数据的威胁值与预设阈值进行比较,如果所述威胁值低于预设阈值,则对当前记号流数据进行舍弃,如果所述预设值不低于预设阈值,则进入步骤s7。
s7.获取所述记号流数据对应的原始数据包,利用数据重放的方式对所述原始数据包进行攻击验证,将所述原始数据包的注入命令中的攻击目的地址替换成系统内验证服务器的地址,并重放该数据,通过在所述验证服务器上查看连接请求来判断重放是否成功,如果有连接则说明重放成功,则进入s8。
s8.按照流量特征数据中的url前缀进行分类,通过搜索引擎接口在互联网上搜索所述url前缀,如果能搜索到对应的nday漏洞,则可以判定所述流量特征数据属于nday漏洞的攻击数据,此时,将该流量特征数据更新存入nday规则库,如果检索不到,则表明成功捕获到0day漏洞的攻击数据,最后将该0day漏洞的相关数据信息进行保存显示。
其中,在步骤s1前,还包括构建nday规则库和攻击模板数据库;
其中,nday规则库中的数据包括来自爬虫程序从互联网上采集得到的nday漏洞的特征信息和系统运行过程中不断学习得到的已知漏洞的特征信息;
其中,攻击模板数据库中的数据来自通过用户界面由系统专家成员录入得到的攻击模板和对应的威胁值,所述攻击模板数据库中的攻击模板和威胁值实时更新调整。
本发明还包括一种物联网设备未知漏洞识别装置,该装置包括以下模块:
流量捕获模块,用于在流量监测服务器端捕获网络流量,并对流量数据进行http协议解析,提取http头部字段、body体内容和url前缀,从而得到流量特征数据,并保存原始数据包;
特征匹配模块:用于将所述流量特征数据与已知的iot设备漏洞特征进行匹配,如果匹配成功,说明该数据为nday漏洞攻击,因而不符合未知漏洞攻击特点;如果跟所有已知漏洞特征匹配均不成功,发送至语法分析模块;
语法分析模块:用于对所述流量特征数据进行语法分析,输入shell词法分析器flex,将流量特征数据转变成记号流数据;其中,所述记号流数据包括流量特征数据中的多个记号,并且每个记号都有对应的值和类型;对记号流数据开展语法分析,将记号流数据转换成语法树:根据shell语法规则,检测生成的语法树是否合法,如果不符合语法规则的数据,则跳过这条数据,如果语法检测合法,则将其发送至威胁分析模块;
威胁分析模块:用于对符合语法规则的数据进行威胁程度分析,将捕获的数据与攻击模板数据库中的攻击模板进行匹配,根据匹配到的模板计算得到当前记号流数据的威胁值,将当前记号流数据的威胁值与预设阈值进行比较,如果所述威胁值低于预设阈值,则对当前记号流数据进行舍弃,如果所述预设值不低于预设阈值,则发送至攻击验证模块;
攻击验证模块:用于获取所述记号流数据对应的原始数据包,利用数据重放的方式对所述原始数据包进行攻击验证,将所述原始数据包的注入命令中的攻击目的地址替换成系统内验证服务器的地址,并重放该数据,通过在所述验证服务器上查看连接请求来判断重放是否成功,如果有连接则说明重放成功,发送至漏洞捕获模块;
漏洞捕获模块:用于按照流量特征数据中的url前缀进行分类,通过搜索引擎接口在互联网上搜索所述url前缀,如果能搜索到对应的nday漏洞,则可以判定所述流量特征数据属于nday漏洞的攻击数据,此时,将该流量特征数据更新存入nday规则库,如果检索不到,则表明成功捕获到0day漏洞的攻击数据,最后将该0day漏洞的相关数据信息进行保存显示。
还包括nday规则库和攻击模板数据库。
其中,nday规则库中的数据包括来自爬虫程序从互联网上采集得到的nday漏洞的特征信息和系统运行过程中不断学习得到的已知漏洞的特征信息;攻击模板数据库中的数据来自通过用户界面由系统专家成员录入得到的攻击模板和对应的威胁值,所述攻击模板数据库中的攻击模板和威胁值实时更新调整。
所述url前缀包括去除域名的资源路径和参数名。
所述记号流数据包括流量特征数据中的多个记号,并且每个记号都有对应的值和类型。
本发明的有益效果包括:(1)通过采取数据重放的方式对所述原始数据包进行攻击验证,有效识别出系统内存在的攻击行为,并将本地nday规则库未识别出的流量特征在互联网上检索,可以有效识别出未知漏洞。(2)为了减少服务器工作量,通过构建nday规则库和攻击模板数据库,以及对流量数据进行语法分析,可以过滤掉已知漏洞的流量特征数据、无效数据和不具有攻击威胁的流量特征数据,从而有效减少服务器负担,提高识别效率。
附图说明
图1为本发明的方法流程图。
具体实施方式
本发明提供一种物联网设备未知漏洞识别方法,该方法包括以下步骤:
步骤s1.在流量监测服务器端捕获网络流量,并对流量数据进行http协议解析,提取http头部字段、body体内容和url前缀,从而得到流量特征数据,并保存原始数据包;
其中,所述url前缀包括去除域名的资源路径和参数名。
在步骤s1前,还包括构建nday规则库和攻击模板数据库;其中,nday规则库中的数据包括来自爬虫程序从互联网上采集得到的nday漏洞的特征信息和系统运行过程中不断学习得到的已知漏洞的特征信息;
步骤s2.将所述流量特征数据与已知的iot设备漏洞特征进行匹配,如果匹配成功,说明该数据为nday漏洞攻击,因而不符合未知漏洞攻击特点;如果跟所有已知漏洞特征匹配均不成功,则进入s3。
步骤s3.对所述流量特征数据进行语法分析,输入shell词法分析器flex,将流量特征数据转变成记号流数据。其中,所述记号流数据包括流量特征数据中的多个记号,并且每个记号都有对应的值和类型。
例如,对于命令“ls|cat-e”,做如下转换:ls->word;|->pipe;cat->word;-e->word
s4.对记号流数据开展语法分析,将记号流数据转换成语法树:
例如,上述命令解析后,得到如下语法树:
pipe_sequence
/\
simple_commandsimple_command
|/\
cmd_namecmd_namecmd_suffix
|||
'ls''cat'cmd_word
|
'-e'
s5.根据shell语法规则,检测生成的语法树是否合法,如果不符合语法规则的数据,则跳过该条数据,如果语法检测合法,则进入s6。
其中,shell语法规则可以包括:(1)pipe_sequence作为根节点,simple_command为pipe_sequence的子节点,其节点数量为一个或多个;(2)simple_command节点由一个或多个cmd_name节点和cmd_suffix节点组成;(3)cmd_word表示word符号,cmd_suffix节点由一个或多个cmd_word节点组成。
s6.对符合语法规则的数据进行威胁程度分析,将捕获的数据与攻击模板数据库中的攻击模板进行匹配,根据匹配到的模板计算得到当前记号流数据的威胁值,将当前记号流数据的威胁值与预设阈值进行比较,如果所述威胁值低于预设阈值,则对当前记号流数据进行舍弃,如果所述预设值不低于预设阈值,则进入步骤s7。
其中,攻击模板数据库中的数据来自通过用户界面由系统专家成员录入得到的攻击模板和对应的威胁值,所述攻击模板数据库中的攻击模板和威胁值实时更新调整。例如,系统专家成员登录系统后,通过预设的界面输入或上传攻击模板,该攻击模板可以是系统专家成员根据当前信息安全研究成果分析得到的模板,不同的模板可以对应一个威胁值,该威胁值表示了该攻击模板所对应的攻击行为的潜在威胁程度的高低,该威胁值可通过采用统计学手段或机器学习算法训练得到。预设阈值用于区分威胁程度,系统专家成员或系统管理员可以根据系统运行情况进行设定。
s7.获取所述记号流数据对应的原始数据包,利用数据重放的方式对所述原始数据包进行攻击验证,将所述原始数据包的注入命令中的攻击目的地址替换成系统内验证服务器的地址,并重放该数据,通过在所述验证服务器上查看连接请求来判断重放是否成功,如果有连接则说明重放成功,则进入s8。
在实际的系统运营中,并非所有有威胁的记号流数据都代表了攻击行为一定成功,系统流量数据中会存在大量机器人发出的尝试攻击的流量数据,通过对原始数据包中的数据进行攻击验证,可以识别出攻击成功的流量数据,从而提高识别攻击数据的效率。
s8.按照流量特征数据中的url前缀进行分类,通过搜索引擎接口在互联网上搜索所述url前缀,如果能搜索到对应的nday漏洞,则可以判定所述流量特征数据属于nday漏洞的攻击数据,此时,将该流量特征数据更新存入nday规则库,如果检索不到,则表明成功捕获到0day漏洞的攻击数据,最后将该0day漏洞的相关数据信息进行保存显示。
其中,url前缀由去除域名的资源路径和参数名组成,例如,nday漏洞cve-2010-1586的相关url为“http://www.example.com/red2301.htmlredirecturl=evil()”;则可以提取“red2301.htmlredirecturl=”作为url前缀。
捕获到的0day漏洞相关数据可以标识出漏洞发生的位置、攻击方式等信息,通过分析该数据可以有效提高对系统中的设备未知漏洞的识别,并为下一步修复漏洞打下基础。
本发明还包括一种物联网设备未知漏洞识别装置,该装置包括以下模块:
流量捕获模块,用于在流量监测服务器端捕获网络流量,并对流量数据进行http协议解析,提取http头部字段、body体内容和url前缀,从而得到流量特征数据,并保存原始数据包;
特征匹配模块:用于将所述流量特征数据与已知的iot设备漏洞特征进行匹配,如果匹配成功,说明该数据为nday漏洞攻击,因而不符合未知漏洞攻击特点;如果跟所有已知漏洞特征匹配均不成功,发送至语法分析模块;
语法分析模块:用于对所述流量特征数据进行语法分析,输入shell词法分析器flex,将流量特征数据转变成记号流数据;其中,所述记号流数据包括流量特征数据中的多个记号,并且每个记号都有对应的值和类型;对记号流数据开展语法分析,将记号流数据转换成语法树:根据shell语法规则,检测生成的语法树是否合法,如果不符合语法规则的数据,则跳过这条数据,如果语法检测合法,则将其发送至威胁分析模块;
威胁分析模块:用于对符合语法规则的数据进行威胁程度分析,将捕获的数据与攻击模板数据库中的攻击模板进行匹配,根据匹配到的模板计算得到当前记号流数据的威胁值,将当前记号流数据的威胁值与预设阈值进行比较,如果所述威胁值低于预设阈值,则对当前记号流数据进行舍弃,如果所述预设值不低于预设阈值,则发送至攻击验证模块;
攻击验证模块:用于获取所述记号流数据对应的原始数据包,利用数据重放的方式对所述原始数据包进行攻击验证,将所述原始数据包的注入命令中的攻击目的地址替换成系统内验证服务器的地址,并重放该数据,通过在所述验证服务器上查看连接请求来判断重放是否成功,如果有连接则说明重放成功,发送至漏洞捕获模块;
漏洞捕获模块:用于按照流量特征数据中的url前缀进行分类,通过搜索引擎接口在互联网上搜索所述url前缀,如果能搜索到对应的nday漏洞,则可以判定所述流量特征数据属于nday漏洞的攻击数据,此时,将该流量特征数据更新存入nday规则库,如果检索不到,则表明成功捕获到0day漏洞的攻击数据,最后将该0day漏洞的相关数据信息进行保存显示。
还包括nday规则库和攻击模板数据库。
其中,nday规则库中的数据包括来自爬虫程序从互联网上采集得到的nday漏洞的特征信息和系统运行过程中不断学习得到的已知漏洞的特征信息;攻击模板数据库中的数据来自通过用户界面由系统专家成员录入得到的攻击模板和对应的威胁值,所述攻击模板数据库中的攻击模板和威胁值实时更新调整。
所述url前缀包括去除域名的资源路径和参数名。
上面结合附图对本发明的实施例进行了描述,但是本发明并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本发明的启示下,在不脱离本发明宗旨和权利要求所保护的范围情况下,还可做出很多形式,这些均属于本发明的保护之内。
1.一种物联网设备未知漏洞识别方法,该方法包括以下步骤:
步骤s1:在流量监测服务器端捕获网络流量,并对流量数据进行http协议解析,提取http头部字段、body体内容和url前缀,从而得到流量特征数据,并保存原始数据包;
步骤s2:将所述流量特征数据与已知的iot设备漏洞特征进行匹配,如果匹配成功,说明该数据为nday漏洞攻击,因而不符合未知漏洞攻击特点;如果跟所有已知漏洞特征匹配均不成功,则进入步骤s3;
步骤s3:对所述流量特征数据进行语法分析,输入shell词法分析器flex,将流量特征数据转变成记号流数据;其中,所述记号流数据包括流量特征数据中的多个记号,并且每个记号都有对应的值和类型;
步骤s4:对记号流数据开展语法分析,将记号流数据转换成语法树:
步骤s5:根据shell语法规则,检测生成的语法树是否合法,如果不符合语法规则的数据,则跳过这条数据,如果语法检测合法,则进入步骤s6;
步骤s6:对符合语法规则的数据进行威胁程度分析,将捕获的数据与攻击模板数据库中的攻击模板进行匹配,根据匹配到的模板计算得到当前记号流数据的威胁值,将当前记号流数据的威胁值与预设阈值进行比较,如果所述威胁值低于预设阈值,则对当前记号流数据进行舍弃,如果所述预设值不低于预设阈值,则进入步骤s7;
步骤s7:获取所述记号流数据对应的原始数据包,利用数据重放的方式对所述原始数据包进行攻击验证,将所述原始数据包的注入命令中的攻击目的地址替换成系统内验证服务器的地址,并重放该数据,通过在所述验证服务器上查看连接请求来判断重放是否成功,如果有连接则说明重放成功,则进入步骤s8;
步骤s8:按照流量特征数据中的url前缀进行分类,通过搜索引擎接口在互联网上搜索所述url前缀,如果能搜索到对应的nday漏洞,则可以判定所述流量特征数据属于nday漏洞的攻击数据,此时,将该流量特征数据更新存入nday规则库,如果检索不到,则表明成功捕获到0day漏洞的攻击数据,最后将该0day漏洞的相关数据信息进行保存显示。
2.根据权利要求1所述的方法,其特征在于:其中,在步骤s1前,还包括构建nday规则库和攻击模板数据库。
3.根据权利要求2所述的方法,其特征在于:其中,nday规则库中的数据包括来自爬虫程序从互联网上采集得到的nday漏洞的特征信息和系统运行过程中不断学习得到的已知漏洞的特征信息;攻击模板数据库中的数据来自通过用户界面由系统专家成员录入得到的攻击模板和对应的威胁值,所述攻击模板数据库中的攻击模板和威胁值实时更新调整。
4.根据权利要求1所述的方法,其特征在于:所述url前缀包括去除域名的资源路径和参数名。
5.根据权利要求1所述的方法,其特征在于:所述记号流数据包括流量特征数据中的多个记号,并且每个记号都有对应的值和类型。
6.一种物联网设备未知漏洞识别装置,该装置包括以下模块:
流量捕获模块,用于在流量监测服务器端捕获网络流量,并对流量数据进行http协议解析,提取http头部字段、body体内容和url前缀,从而得到流量特征数据,并保存原始数据包;
特征匹配模块:用于将所述流量特征数据与已知的iot设备漏洞特征进行匹配,如果匹配成功,说明该数据为nday漏洞攻击,因而不符合未知漏洞攻击特点;如果跟所有已知漏洞特征匹配均不成功,发送至语法分析模块;
语法分析模块:用于对所述流量特征数据进行语法分析,输入shell词法分析器flex,将流量特征数据转变成记号流数据;其中,所述记号流数据包括流量特征数据中的多个记号,并且每个记号都有对应的值和类型;对记号流数据开展语法分析,将记号流数据转换成语法树:根据shell语法规则,检测生成的语法树是否合法,如果不符合语法规则的数据,则跳过这条数据,如果语法检测合法,则将其发送至威胁分析模块;
威胁分析模块:用于对符合语法规则的数据进行威胁程度分析,将捕获的数据与攻击模板数据库中的攻击模板进行匹配,根据匹配到的模板计算得到当前记号流数据的威胁值,将当前记号流数据的威胁值与预设阈值进行比较,如果所述威胁值低于预设阈值,则对当前记号流数据进行舍弃,如果所述预设值不低于预设阈值,则发送至攻击验证模块;
攻击验证模块:用于获取所述记号流数据对应的原始数据包,利用数据重放的方式对所述原始数据包进行攻击验证,将所述原始数据包的注入命令中的攻击目的地址替换成系统内验证服务器的地址,并重放该数据,通过在所述验证服务器上查看连接请求来判断重放是否成功,如果有连接则说明重放成功,发送至漏洞捕获模块;
漏洞捕获模块:用于按照流量特征数据中的url前缀进行分类,通过搜索引擎接口在互联网上搜索所述url前缀,如果能搜索到对应的nday漏洞,则可以判定所述流量特征数据属于nday漏洞的攻击数据,此时,将该流量特征数据更新存入nday规则库,如果检索不到,则表明成功捕获到0day漏洞的攻击数据,最后将该0day漏洞的相关数据信息进行保存显示。
7.根据权利要求6所述的装置,其特征在于:还包括nday规则库和攻击模板数据库。
8.根据权利要求7所述的装置,其特征在于:其中,nday规则库中的数据包括来自爬虫程序从互联网上采集得到的nday漏洞的特征信息和系统运行过程中不断学习得到的已知漏洞的特征信息;攻击模板数据库中的数据来自通过用户界面由系统专家成员录入得到的攻击模板和对应的威胁值,所述攻击模板数据库中的攻击模板和威胁值实时更新调整。
9.根据权利要求6所述的装置,其特征在于:所述url前缀包括去除域名的资源路径和参数名。
10.根据权利要求6所述的装置,其特征在于:所述记号流数据包括流量特征数据中的多个记号,并且每个记号都有对应的值和类型。
技术总结