一种防护Modbus攻击的方法及装置与流程

文档序号:14216597阅读:229来源:国知局

本申请涉及安全防护领域,特别涉及一种防护modbus攻击的方法及装置。



背景技术:

modbus通信协议是一种应用于工业环境的c/s架构的总线通信协议。基于modbus的通信过程一般由客户端向服务端发起,服务端再回应客户端。modbus协议本身不涉及通信双方的认证,不支持通信内容加密,安全性存在欠缺。

攻击者可以通过向多个设备广播modbus请求报文来扫描设备,确定启用modbus协议的设备,后续再向启用modbus协议的设备继续发送请求报文,接收返回的响应报文以收集设备的性能参数。后续攻击者可以通过收集到的性能参数对启用modbus协议的设备发起攻击。

现有技术通常可以在安全设备上配置防护规则对modbus报文进行过滤,然而,攻击者广播的modbus请求报文数量众多,实际上防护规则很难完全过滤掉上述请求报文。



技术实现要素:

有鉴于此,本申请提供一种防护modbus攻击的方法及装置,用于阻断攻击者收集启用modbus的设备的性能参数,以防止攻击者后续的攻击。

具体地,本申请是通过如下技术方案实现的:

一种防护modbus攻击的方法,应用于安全设备,包括:

接收第一报文,确定所述第一报文的源ip是否命中预设的ip黑名单;

如果否,确定所述第一报文是否为异常报文;

如果所述第一报文为异常报文,基于所述第一报文更新预设的异常地址表中与所述第一报文对应的异常地址表项;其中,所述异常地址表包括ip地址和异常数的映射关系;

基于预设的周期,确定所述异常地址表的各异常地址表项中的异常数是否达到预设的阈值;

如果任一异常数达到所述阈值,将所述异常数对应的ip地址加入到所述ip黑名单。

在所述防护modbus攻击的方法中,所述方法还包括:

在确定所述第一报文是否为异常报文前,确定所述第一报文是否为modbus报文;

如果否,转发所述第一报文;

如果是,执行后续流程。

在所述防护modbus攻击的方法中,所述确定所述第一报文是否为异常报文,包括:

若所述第一报文由会话发起方发送,检查所述第一报文是否携带指定的功能码;

如果是,确定所述第一报文为所述异常报文;

若所述第一报文由会话响应方发送,检查所述第一报文是否携带指定的异常响应码;

如果是,确定所述第一报文为所述异常报文。

在所述防护modbus攻击的方法中,所述基于所述第一报文更新预设的异常地址表中与所述第一报文对应的异常地址表项,包括:

若所述第一报文由所述会话发起方发送,基于所述第一报文的源ip查找所述异常地址表,确定对应的异常地址表项;

如果不存在对应的异常地址表项,基于所述源ip新建异常地址表项,并将所述异常地址表项中的异常数置为1;

如果存在对应的异常地址表项,为所述异常地址表项中的异常数加1;

若所述第一报文由所述会话响应方发送,基于所述第一报文的目的ip查找所述异常地址表,确定对应的异常地址表项,并为所述异常地址表项中的异常数加1。

在所述防护modbus攻击的方法中,所述方法还包括:

将所述异常数对应的ip地址加入到所述ip黑名单后,清空所述异常地址表。

一种防护modbus攻击的装置,应用于安全设备,包括:

接收单元,用于接收第一报文,确定所述第一报文的源ip是否命中预设的ip黑名单;

第一确定单元,用于如果否,确定所述第一报文是否为异常报文;

更新单元,用于如果所述第一报文为异常报文,基于所述第一报文更新预设的异常地址表中与所述第一报文对应的异常地址表项;其中,所述异常地址表包括ip地址和异常数的映射关系;

第二确定单元,用于基于预设的周期,确定所述异常地址表的各异常地址表项中的异常数是否达到预设的阈值;

加入单元,用于如果任一异常数达到所述阈值,将所述异常数对应的ip地址加入到所述ip黑名单。

在所述防护modbus攻击的装置中,所述第一确定单元,进一步用于:

在确定所述第一报文是否为异常报文前,确定所述第一报文是否为modbus报文;

如果否,转发所述第一报文;

如果是,执行后续流程。

在所述防护modbus攻击的装置中,所述第一确定单元,进一步用于:

若所述第一报文由会话发起方发送,检查所述第一报文是否携带指定的功能码;

如果是,确定所述第一报文为所述异常报文;

若所述第一报文由会话响应方发送,检查所述第一报文是否携带指定的异常响应码;

如果是,确定所述第一报文为所述异常报文。

在所述防护modbus攻击的装置中,所述更新单元,进一步用于:

若所述第一报文由所述会话发起方发送,基于所述第一报文的源ip查找所述异常地址表,确定对应的异常地址表项;

如果不存在对应的异常地址表项,基于所述源ip新建异常地址表项,并将所述异常地址表项中的异常数置为1;

如果存在对应的异常地址表项,为所述异常地址表项中的异常数加1;

若所述第一报文由所述会话响应方发送,基于所述第一报文的目的ip查找所述异常地址表,确定对应的异常地址表项,并为所述异常地址表项中的异常数加1。

在所述防护modbus攻击的装置中,所述装置还包括:

清空单元,用于将所述异常数对应的ip地址加入到所述ip黑名单后,清空所述异常地址表。

在本申请实施例中,安全设备接收第一报文后,首先基于ip黑名单进行删选,丢弃命中ip黑名单的报文,然后确定上述第一报文是否为异常报文,如果是,更新预设的异常地址表中与上述第一报文对应的异常地址表项;其中,上述异常地址表包括ip地址和异常数的映射关系;

安全设备可以基于预设的周期确定上述异常地址表的各异常地址表项中的异常数是否达到预设的阈值,然后将达到阈值的异常数对应的ip地址加入到ip黑名单中;

由于上述安全设备可以在确定异常报文后,更新会话发起方的ip地址对应的异常数,从而能在异常数达到阈值时确定出攻击者的ip地址,并针对攻击者的ip地址进行彻底的防护,阻断了攻击者广播请求报文以收集启用modbus协议的设备的性能参数的行为,进而防止攻击者后续的攻击。

附图说明

图1是本申请示出的一种modbus的应用数据单元的格式示意图;

图2是本申请示出的一种modbus/tcp协议的交互示意图;

图3是本申请示出的另一种modbus/tcp协议的交互示意图;

图4是本申请示出的一种防护modbus攻击的方法的流程图;

图5是本申请示出的一种防护modbus攻击的装置的实施例框图;

图6是本申请示出的一种防护modbus攻击的装置的硬件结构图。

具体实施方式

为了使本技术领域的人员更好地理解本发明实施例中的技术方案,并使本发明实施例的上述目的、特征和优点能够更加明显易懂,下面结合附图对现有技术方案和本发明实施例中的技术方案作进一步详细的说明。

参见图1,为本申请示出的一种modbus的应用数据单元(adu,applicationdataunit)的格式示意图,如图1所示,应用层数据单元中的协议数据单元(pdu,protocoldataunit)中具有功能码(functioncode)字段,其中可以填入modbus协议规定的若干种功能码,各功能码分别指示不同的动作。一般启用modbus协议的设备基于自身的配置可以支持其中的几种功能码。

modbus可以细分为modbus/tcp(transmissioncontrolprotocol,传输控制协议)、modbus/udp(userdatagramprotocol,用户数据报协议)、modbus/rtu(remoteterminalunit,远程终端单元)、modbus/ascii(americanstandardcodeforinformationinterchange,美国信息交换标准代码)等协议类型。

参见图2,为本申请示出的一种modbus/tcp协议的交互示意图,如图2所示,客户端创建请求报文后,向服务端发送该请求报文;其中,该请求报文中携带功能码。服务端接收到上述请求报文后,执行上述功能码指示的动作后,创建并发送响应报文至客户端。其中,该响应报文中携带与上述请求报文相同的功能码。

参见图3,为本申请示出的另一种modbus/tcp协议的交互示意图,如图3所示,客户端创建请求报文后,向服务端发送该请求报文;其中,该请求文中携带功能码。服务端接收到上述请求报文后,执行上述功能码指示的动作,在操作中检测到错误,可以创建并发送响应报文至客户端。其中,该响应报文中携带异常响应码(exceptionfunctioncode),该异常响应码指示错误类型。

上述异常响应码可以包括0x01、0x02和0x03等。其中,0x01表示服务端不支持接收到的报文中的功能码;0x02表示服务端不支持操作请求报文中的操作地址;0x03表示服务端接收到的报文中的数据字段存在不合法的内容。在实际应用中,若启用modbus协议的设备为可编程逻辑控制器(plc,programmablelogiccontroller),上述操作地址在请求报文中可以是一个表示可编程逻辑控制器的管脚的编码。

目前存在plcscan(programmablelogiccontrollerscan,可编程逻辑控制器扫描)、modscan32等扫描工具,可以对扫描启用modbus协议的设备的信息。具体地,可以向多个设备广播携带0x2b/0x0e功能码的请求报文,若接收到任一设备返回的响应报文,则确定该设备启用了modbus协议。其中,上述请求报文的目的端口可以是modbus/tcp协议的默认端口502。

攻击者可以在确定启用modbus协议的设备后,继续向上述设备发送携带不同功能码的请求报文,从而根据返回的响应报文收集上述设备的性能参数。其中,上述性能参数包括设备支持的功能码、功能码对应的设备上的操作地址、操作地址中保存的功能参数等。攻击者收集上述设备的性能参数后,可以在后续对设备发起攻击。上述功能参数与设备所支持的功能相关;比如,若设备可以控制风扇的开关,则功能参数可以是标示风扇开关的参数,若设备可以控制阀门的开关状态,则功能参数可以是0到100%的打开程度。

具体地,攻击者可以向启用modbus协议的设备发送携带各种功能码的请求报文,并通过接收到的响应报文确定设备所支持的功能码,而若响应报文中携带的是异常响应码0x01,则说明设备不支持此前发送的请求报文中的功能码。

攻击者可以向启用modbus协议的设备反复发送访问不同操作地址的请求报文,并通过接收到的响应报文确定设备所能操作的操作地址,而若响应报文中携带的是异常响应码0x02,则说明设备不支持此前发送的请求报文中的操作地址。

攻击者可以向启用modbus协议的设备反复设置各操作地址中的功能参数的请求报文,上述请求报文携带待写入的功能参数。攻击者通过接收到的响应报文确定设备所支持的功能参数,而若响应报文中携带的是异常响应码0x03,则说明功能参数设置失败。攻击者通过反复发送上述请求报文,可以获取各操作地址中功能参数所支持的范围。

现有技术通常在安全设备上配置防护规则对modbus报文进行过滤,上述防护规则可以基于功能码、操作地址等字段进行防护,比如,可以丢弃针对指定的几个操作地址的携带指定几种功能码的请求报文。

然而,攻击者广播的modbus请求报文数量众多,防护规则无法完全将过滤掉上述请求报文。在这种情况下,攻击者仍可以持续收集启用modbus协议的设备的性能参数,从而在后续执行modbus攻击。

有鉴于此,本申请提供了一种防护modbus攻击的方法,用于阻断攻击者收集启用modbus的设备的性能参数,进一步防止后续的攻击行为。

参见图4,为本申请示出的一种防护modbus攻击的方法的流程图,该方法应用于安全设备,包括以下步骤:

步骤401:接收第一报文,确定所述第一报文的源ip是否命中预设的ip黑名单。

其中,上述安全设备可以是防火墙设备或具有安全防护功能的网关设备。

上述第一报文泛指接收到的任一报文,其只是为便于描述进行的命名,并不限定本申请。

上述ip黑名单中的ip地址为上述安全设备需要防护的ip地址,确定上述第一报文的源ip是否命中上述ip黑名单,即为检查上述第一报文的源ip是否存在上述ip黑名单中。在初始状态下,上述ip黑名单中的ip地址为空。

一方面,如果上述第一报文的源ip命中上述ip黑名单,则可以确定上述第一报文由攻击者发送,直接丢弃上述第一报文;

另一方面,如果上述第一报文未命中上述ip黑名单,则尚且不能确定上述第一报文由攻击者发送,对上述第一报文执行后续流程。

步骤402:如果否,确定所述第一报文是否为异常报文。

在示出的一种实施方式中,上述安全设备可以确定上述第一报文是否为异常报文前,可以首先确定上述第一报文是否为modbus报文。

一方面,如果上述第一报文不是modbus报文,则不在本申请技术方案的防护范围之内,可以直接转发上述第一报文;

另一方面,如果上述第一报文是modbus报文,则可以执行后续流程,即确定其是否为异常报文。

通过该措施,上述安全设备可以减少后续要处理的报文数量,降低防护攻击报文带来的资源消耗。

在示出的一种实施方式中,上述安全设备在处理接收到的报文的流程中,可以在tcp三次握手的会话建立连接的过程中确定会话发起方和会话响应方,并可以分别记录会话发起方的ip地址和会话响应方的ip地址。

上述安全设备在确定上述第一报文是否为异常报文时,可以首先基于源ip判断上述第一报文的由会话发起方发送还是由会话响应方发送。

由于攻击者会主动发送大量请求报文,攻击者必然为会话发起方。

若上述第一报文由会话发起方发送,检查上述第一报文是否携带指定的功能码。其中,上述指定的功能码包括攻击者通常用以探测设备是否启用modbus协议的功能码0x2b。

如果是,可以确定上述第一报文为异常报文。需要指出的是,异常报文指的是攻击者可能发送的报文,但不一定由攻击者发送,还需要后续的流程来确定攻击者。

如果否,则可以直接转发上述第一报文。

若上述第一报文由会话响应方发送,检查上述第一报文是否携带指定的异常响应码。其中,上述指定的异常响应码包括服务端在接收到攻击者反复发送请求报文时可能回复的异常响应码0x01、0x02和0x03。

如果是,可以确定上述第一报文为异常报文。

如果否,则可以直接转发上述第一报文。

步骤403:如果所述第一报文为异常报文,基于所述第一报文更新预设的异常地址表中与所述第一报文对应的异常地址表项;其中,所述异常地址表包括ip地址和异常数的映射关系。

上述安全设备更新的异常地址表中的ip地址都是会话发起方的ip地址,后续可以根据上述异常地址表确定攻击者的ip地址。

在更新上述异常地址表项时,若上述第一报文由会话发起方发送,则可以基于上述第一报文的源ip查找上述异常地址表,确定对应的异常地址表项。

一方面,如果不存在对应的异常地址表项,则上述第一报文为上述会话发起方首次发送的报文,上述安全设备可以基于上述第一报文的源ip新建异常地址表项,并将上述异常地址表项中的异常数置为1。

另一方面,如果存在对应的异常地址表项,则上述会话发起方此前已经发送过报文,上述安全设备可以将上述异常地址表项中的异常数加1。

若上述第一报文由会话响应方发送,则可以基于上述第一报文的目的ip查找上述异常地址表,确定对应的异常地址表项,并为上述异常地址表项中的异常数加1。

作为一种实施例,上述安全设备可以采用预设的累加公式1+2+3+……(n-1)+n来更新异常数,其中,n表示接收到与同一个会话发起方有关的异常报文的次数;

或者,可以采用预设的累加公式1+2+4+……+2*(n-1)+2*n来更新异常数,其中,n表示接收到与同一个会话发起方有关的异常报文的次数。

在这种实施例中,异常地址表项中的异常数的增长速度会更快,表示接收到与同一个会话发起方的异常报文的次数越多,则该会话发起方越有可能是攻击者。

上述安全设备在更新异常地址表后,可以转发上述第一报文。

步骤404:基于预设的周期,确定所述异常地址表的各异常地址表项中的异常数是否达到预设的阈值。

上述安全设备上可以预配置阈值,该阈值表征与攻击者对应的异常数的临界值。可以基于实际应用环境进行配置,比如,若网络环境中流量较多,则阈值可以较大,若网络环境中流量较少,则阈值可以较小。当然,也可以根据其它策略进行配置,本申请对此不作具体限定。

上述预设的周期同样可以基于实际应用环境进行配置,比如,若网络环境中流量较多,则预设周期可以较短,便于及时防护攻击者。当然,也可以根据其它策略进行配置,本申请对此不作具体限定。

在示出的一种实施方式中,上述安全设备可以启动预设的定时器,在该定时器达到预设周期后,遍历上述异常地址表,将各异常地址表项中的异常数与阈值进行比较,确定是否达到该阈值。

步骤405:如果任一异常数达到所述阈值,将所述异常数对应的ip地址加入到所述ip黑名单。

上述安全设备在检查上述异常数是否达到阈值,从而确定攻击者的ip地址。

一方面,如果异常数未达到阈值,则可以确定该异常数对应的ip地址不是攻击者的ip地址。

另一方面,如果任一异常数达到阈值,则可以确定该异常数对应的ip地址为攻击者的ip地址,上述安全设备可以将攻击者的ip地址加入到ip黑名单中,从而在后续直接丢弃攻击者发送的报文。

通过该措施,上述安全设备可以检测出攻击者,并对攻击者实现有效的防护。

此外,上述安全设备在遍历上述异常地址表,并将攻击者的ip地址加入到ip黑名单以后,可以清空上述异常地址表。

当然,若上述安全设备遍历上述异常地址表后未发现攻击者的ip地址,同样需要清空上述异常地址表。

通过该措施,上述安全设备可以在每一个统计周期内基于全新的异常地址表确定攻击者,防止异常地址表的内容不断增加后占用过多的内存空间。

综上所述,在本申请技术方案中,安全设备接收到第一报文后,首先确定上述第一报文的源ip是否命中预设的ip黑名单,并只处理未命中ip黑名单的报文;进一步地,安全设备确定上述第一报文是否为异常报文,并在上述第一报文是异常报文的情况下更新其对应的异常地址表项;安全设备持续通过接收到的报文更新异常地址表,后续可以基于异常地址表确定攻击者;

上述安全设备可以基于预设的周期,确定异常地址表中各异常地址表项中的异常数是否达到预设的阈值,并将达到阈值的异常数对应的ip地址加入到ip黑名单中;

由于上述安全设备可以在确定异常报文后,更新会话发起方的ip地址对应的异常数,从而能在异常数达到阈值时确定出攻击者的ip地址,并针对攻击者的ip地址进行彻底的防护,阻断了攻击者广播请求报文以收集启用modbus协议的设备的性能参数的行为,进而防止攻击者后续的攻击。

与前述防护modbus攻击的方法的实施例相对应,本申请还提供了防护modbus攻击的装置的实施例。

参见图5,为本申请示出的一种防护modbus攻击的装置的实施例框图:

如图5所示,该防护modbus攻击的装置50,包括:

接收单元510,用于接收第一报文,确定所述第一报文的源ip是否命中预设的ip黑名单。

第一确定单元520,用于如果否,确定所述第一报文是否为异常报文。

更新单元530,用于如果所述第一报文为异常报文,基于所述第一报文更新预设的异常地址表中与所述第一报文对应的异常地址表项;其中,所述异常地址表包括ip地址和异常数的映射关系。

第二确定单元540,用于基于预设的周期,确定所述异常地址表的各异常地址表项中的异常数是否达到预设的阈值。

加入单元550,用于如果任一异常数达到所述阈值,将所述异常数对应的ip地址加入到所述ip黑名单。

在本例中,所述第一确定单元520,进一步用于:

在确定所述第一报文是否为异常报文前,确定所述第一报文是否为modbus报文;

如果否,转发所述第一报文;

如果是,执行后续流程。

在本例中,所述第一确定单元520,进一步用于:

若所述第一报文由会话发起方发送,检查所述第一报文是否携带指定的功能码;

如果是,确定所述第一报文为所述异常报文;

若所述第一报文由会话响应方发送,检查所述第一报文是否携带指定的异常响应码;

如果是,确定所述第一报文为所述异常报文。

在本例中,所述更新单元530,进一步用于:

若所述第一报文由所述会话发起方发送,基于所述第一报文的源ip查找所述异常地址表,确定对应的异常地址表项;

如果不存在对应的异常地址表项,基于所述源ip新建异常地址表项,并将所述异常地址表项中的异常数置为1;

如果存在对应的异常地址表项,为所述异常地址表项中的异常数加1;

若所述第一报文由所述会话响应方发送,基于所述第一报文的目的ip查找所述异常地址表,确定对应的异常地址表项,并为所述异常地址表项中的异常数加1。

在本例中,所述装置还包括:

清空单元560(图中未示出),用于将所述异常数对应的ip地址加入到所述ip黑名单后,清空所述异常地址表。

本申请防护modbus攻击的装置的实施例可以应用在安全设备上。装置实施例可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为一个逻辑意义上的装置,是通过其所在安全设备的处理器将非易失性存储器中对应的计算机程序指令读取到内存中运行形成的。从硬件层面而言,如图6所示,为本申请防护modbus攻击的装置所在安全设备的一种硬件结构图,除了图6所示的处理器、内存、网络接口、以及非易失性存储器之外,实施例中装置所在的安全设备通常根据该防护modbus攻击的的实际功能,还可以包括其他硬件,对此不再赘述。

上述装置中各个单元的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。

对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本申请方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。

以上所述仅为本申请的较佳实施例而已,并不用以限制本申请,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。

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