一种基于机器学习的工控蜜罐识别方法与流程

文档序号:15567511发布日期:2018-09-29 03:41阅读:2536来源:国知局

本发明涉及一种基于机器学习的工控蜜罐识别方法,属于工控蜜罐识别技术领域。



背景技术:

目前,随着工控网与互联网的连接也逐渐暴露了工业控制网的安全隐患。传统的工控网络采用物理隔离的方式来保护其安全性,一旦接入互联网,将面临无法避免的安全威胁,而且工控网由于其大多控制着与人民息息相关的工业、交通、电力、能源的基础设施,与现实世界的联系更加紧密,因此系统的失效有可能会带来灾难性的后果。

目前已经有越来越多的rtu(remoteterminalunit,远程终端单元)、plc(programmablelogiccontroller,可编程逻辑控制器)、dcs(distributedcontrolsystem,集散控制系统)、scada(supervisorycontrolanddataacquisition,数据采集监控系统)的系统连接入网。通过主动扫描探测特定ip地址空间,发现暴露的工业控制系统、关键信息基础设施以及物联网设备,并分析其安全隐患,能够为进一步的工业物联网安全态势和安全事件分析提供技术支撑。

在进行网络空间探测的过程中,经常会碰到工控蜜罐系统。蜜罐系统是一种设置入侵警报和研究对计算机系统攻击的常用工具,将蜜罐技术应用到工控领域所产生的工控蜜罐系统,对于研究对工控系统的攻击和探测行为具有重要意义。工控蜜罐系统能够收集分析扫描探测引擎的指纹,锁定扫描探测引擎的源ip地址,然后进行封堵。为了发现工控蜜罐,提高扫描探测引擎对抗工控蜜罐的能力,急需一种智能蜜罐识别技术。

现有技术方案的缺点:

1)技术的研究对象是传统信息安全领域的蜜罐系统,未涉及工控蜜罐领域。

2)蜜罐的个性指纹不通用,且随着蜜罐系统的升级换代去除个性指纹。

3)基于tcp/ip协议栈的识别技术针对通过端口映射出的工控蜜罐和高交互工控蜜罐则失效。

4)基于网络特征的识别技术需要长时间的扫描探测收集网络特征,效率低。

5)传统的蜜罐识别技术并不适用于高交互工控蜜罐的识别。



技术实现要素:

本发明的目的在于提供一种能够克服上述技术问题的基于机器学习的工控蜜罐识别方法。

本发明所述方法包括以下步骤:

步骤1、ip地址基础位置信息识别:

通过查询ip地址对应的isp(internetserviceprovider,互联网服务提供商)和organization(组织机构)信息,来判断所述ip是否属于云服务器提供商的ip地址。当所述ip属于云服务器,并且开放了plc的工控协议服务,则所述ip为工控蜜罐的概率大于90%,用p1表示通过ip地址基础位置信息识别判定所述ip为工控蜜罐的概率,0.9<p1<=1;用w1表示通过ip地址基础位置信息识别判定所述ip为工控蜜罐的权重。

针对ip地址对应的isp和organization的信息查询,能够选择如下的ip定位库,如:百度地图、google、rtbasia、ipplus360、geoip2、ip2region的ip地址信息库,通过获取的信息来综合判定ip地址是否属于云服务器提供商。

步骤2、tcp/ip操作系统指纹识别:

通过tcp/ip操作系统指纹识别,获取目标ip的tcp/ip协议栈指纹,当目标ip的操作系统被识别为linux的非嵌入式操作系统,则所述目标ip为工控蜜罐的概率大于70%,用p2表示通过tcp/ip操作系统指纹识别判定所述目标ip为工控蜜罐的概率,0.7<p2<=1;用w2表示通过tcp/ip操作系统指纹识别判定所述目标ip为工控蜜罐的权重。

在tcp/ip操作系统指纹识别过程中能够调用nmap和xprobe2的扫描工具;nmap是一种开源的工业级扫描工具,xprobe2是一种操作系统扫描工具。nmap通过向目标ip发送多个udp(userdatagramprotocol,用户数据报协议)与tcp(transmissioncontrolprotocol,传输控制协议)数据包并分析其响应来进行tcp/ip操作系统指纹识别工作。xprobe2通过向所述目标ip发送icmp(internetcontrolmessageprotocol,internet控制报文协议)数据包并分析其响应来进行tcp/ip操作系统指纹识别工作。

步骤3、工控协议深度交互识别:

通过工控协议深度交互,模拟plc编程软件与被扫描ip交互,读取完整的配置和状态。当被扫描ip返回的信息与真实的plc返回的信息有差异,则被扫描ip为低交互工控蜜罐的概率大于80%,用p3表示通过工控协议深度交互识别判定被扫描ip为蜜罐的概率,0.8<p3<=1;用w3表示通过工控协议深度交互识别判定被扫描ip为蜜罐的权重。

样例1、以施耐德plc为例:

通过modbus协议深度交互,模拟unityproxl软件与被扫描ip交互。由于unityproxl软件使用modbus90功能码进行通信,协议内容无加密、无认证,能够仿真交互。通过modbus90功能码进行身份识别与握手请求,读取cpu模块、内存卡和工程项目信息;通过modbus43功能码读取设备型号、固件版本号的信息;通过modbus协议进行工控蜜罐识别时发送的tcp报文的内容,参考表1,表1中描述了工控蜜罐探测时的部分modbus报文组合,及每种modbus功能码对应的详细报文功能和内容。当被扫描ip返回的信息与真实的plc返回的信息有差异,则所述被扫描ip为工控蜜罐的概率大于80%。

表1、工控蜜罐部分modbus探测报文组合

样例2、以西门子plc为例:

通过s7协议深度交互,模拟step7或tiaportal软件与被扫描ip交互,由于step7或tiaportal软件均使用s7协议进行通信,协议内容无加密、无认证,能够仿真交互,针对s7协议扫描时,先进行tpkp和cotp连接,暴力破解cotp报文中的sourcetsap和destinationtsap字段并通过sourcetsap和destinationtsap字段的不同的值,建立起s7协议的交互会话。通过s7协议的功能函数读取系统状态列表ssl(systemstatelist)的条目,一个西门子plc有1000个ssl条目,通过查询ssl条目,当返回信息与真实plc的有差异,则所述被扫描ip为工控蜜罐的概率大于80%;另外,还能够通过s7协议的功能函数对西门子plc的区块进行枚举,当返回信息与真实plc的有差异,则所述被扫描ip为工控蜜罐的概率大于80%;通过s7协议进行工控蜜罐识别时发送的tcp报文的内容,参考表2,表2中描述了工控蜜罐探测时的部分s7报文组合及每种s7功能函数对应的详细报文功能和内容。在西门子s7系列plc中,用户在通过step7以及tiaportal软件定义的plc功能,在plc内部是以不同的区块存在,已知的区块有如下几种:

组织块(ob)(主程序块,负责所有fc程序块的调用);

数据块(db)(用于存放用户和系统定义的变量数据);

程序块(fc)(由用户编写的程序块);

功能块(fb)(由用户编写的专用数据块);

系统程序块(sfc)(调用系统某些功能时自动创建);

系统功能块(sfb)(调用系统某些数据功能时自动创建);

系统数据块(sdb)(由编程软件自动生成存放plc的硬件组态的信息,用户无法直接打开和更改)。

以sdb2000块为例,当所述plc内有profibusslaves则sdb2000块就会存在,同样在枚举sdb块的list时也会发现存在所述块,那么就能获取到sdb2000的blockinfo。这种枚举的方式能够在黑盒以及无法解密sdb块的mc7二进制数据的情况下有效判断plc内是否存在特定子功能、子模块。

表2、工控蜜罐部分s7探测报文组合

步骤4、组态程序调试运行识别:

通过工控协议交互,模拟plc程序的下载操作,当所述plc未设置写保护,那么组态程序能够在plc设备上调试运行。当被调试的ip对应的plc不支持正常plc的汇编语言功能集,所述plc在执行汇编指令时速度慢,则所述被调试的ip为高交互工控蜜罐的概率大于70%,用p4表示通过组态程序调试运行识别判定所述被调试的ip为蜜罐的概率,0.7<p4<=1;用w4表示通过组态程序调试运行识别判定所述被调试的ip为蜜罐的权重。

plc程序由专有mc7格式编码的字节码组成。mc7是一个与iec61131-3中标准化的指令列表(il)相同的指令集的汇编语言。

以西门子plc为例;

ob1区块也称为程序循环组织块或watchdog,作用是调度处理各自程序(fc,fb,db,sfc,sfb),是c语言的main程序。

西门子plc的编程能够使用(lad/stl/scl)这几种方式,但最终都将编译为mc7字节码并下载到西门子plc中。西门子plc在处于run模式时将从主循环逻辑块ob1中读取mc7代码并加载至内存执行。

针对西门子plc的组态程序调试时,能够将调试代码函数fc_pot植入ob1块的头部,当植入成功后,plc每次调用ob1时都将先执行fc_pot中的逻辑代码,fc_pot的代码逻辑必须选择对plc无害的代码逻辑。

步骤5、工控系统蜜罐甄别概率:

定义p为目标ip为工控蜜罐的概率,用pt表示判定所述目标ip为工控蜜罐的阀值,p的计算公式如下:

当p>pt时,判定所述ip为工控蜜罐。

pi表示通过方法i判定所述目标ip为蜜罐的概率,pi能够通过经验值获取基础值,再由机器学习方法校准,参考表3,表3中描述了通过机器学习获取工控蜜罐甄别时对应的pi参数的方法。

0≤pi≤1

wi表示通过方法i判定所述目标ip为蜜罐的权重,wi能够通过机器学习方法获取,参考表3,表3中描述了通过机器学习获取工控蜜罐甄别时对应的wi参数的方法。

0<wi<1

表3、工控系统蜜罐甄别概率对应的各参数获得方法

本发明所述方法的优越效果是能够准确识别低交互工控蜜罐如conpot,也能够准确识别中等交互工控蜜罐如snap7、cryplh2,还能够识别高交互工控蜜罐如xpot。针对未知类型的工控蜜罐也能够有效的识别。本发明所述方法包括对ip地址基础位置信息识别、tcp/ip操作系统指纹识别、工控协议深度交互识别和组态程序调试运行识别。本发明所述方法能够计算出各种工控蜜罐识别方法的概率和权重并再根据各方法的概率和权重计算出工控蜜罐的识别概率,能够利用机器学习技术在海量ip地址空间网络扫描探测的过程中精准的识别工控蜜罐并识别包括低交互、中等交互和高交互蜜罐,为工控领域攻防对抗收集蜜罐情报。

附图说明

图1是本发明所述方法的施耐德plcmodbus协议探测实例示意图:

图2是本发明所述方法的西门子plcs7协议暴力破解cotp的字段示意图;

图3是本发明所述方法的西门子plcs7协议探测实例示意图;

图4是本发明所述方法的西门子plc程序下载数据流示意图;

图5是本发明所述方法的西门子plcob1块注入示意图。

具体实施方式

下面结合附图对本发明的实施方式进行详细描述。本发明所述方法包括以下步骤:

步骤1、ip地址基础位置信息识别:

通过查询ip地址对应的isp(internetserviceprovider,互联网服务提供商)和organization(组织机构)信息,来判断所述ip是否属于云服务器提供商的ip地址。当所述ip属于云服务器,并且开放了plc的工控协议服务,则所述ip为工控蜜罐的概率大于90%。用p1表示通过ip地址基础位置信息识别判定所述ip为工控蜜罐的概率,0.9<p1<=1;用w1表示通过ip地址基础位置信息识别判定所述ip为工控蜜罐的权重。

针对ip地址对应的isp和organization的信息查询,能够选择如下的ip定位库,如:百度地图、google、rtbasia、ipplus360、geoip2、ip2region的ip地址信息库,通过获取的信息来综合判定ip地址是否属于云服务器提供商。

步骤2、tcp/ip操作系统指纹识别:

通过tcp/ip操作系统指纹识别,获取目标ip的tcp/ip协议栈指纹,当所述目标ip的操作系统被识别为linux的非嵌入式操作系统,则所述目标ip为工控蜜罐的概率大于70%,用p2表示通过tcp/ip操作系统指纹识别判定所述目标ip为工控蜜罐的概率,0.7<p2<=1;用w2表示通过tcp/ip操作系统指纹识别判定所述目标ip为工控蜜罐的权重。

在tcp/ip操作系统指纹识别过程中能够调用nmap和xprobe2的扫描工具;nmap是一种开源的工业级扫描工具,xprobe2是一种操作系统扫描工具。nmap通过向目标ip发送多个udp(userdatagramprotocol,用户数据报协议)与tcp(transmissioncontrolprotocol,传输控制协议)数据包并分析其响应来进行tcp/ip操作系统指纹识别工作。xprobe2通过向所述目标ip发送icmp(internetcontrolmessageprotocol,internet控制报文协议)数据包并分析其响应来进行tcp/ip操作系统指纹识别工作。

步骤3、工控协议深度交互识别:

通过工控协议深度交互,模拟plc编程软件与被扫描ip交互,读取完整的配置和状态。当被扫描ip返回的信息与真实的plc返回的信息有差异,则被扫描ip为低交互工控蜜罐的概率大于80%,用p3表示通过工控协议深度交互识别判定被扫描ip为蜜罐的概率,0.8<p3<=1;用w3表示通过工控协议深度交互识别判定被扫描ip为蜜罐的权重。

样例1、以施耐德plc为例:

通过modbus协议深度交互,模拟unityproxl软件与被扫描ip交互。由于unityproxl软件使用modbus90功能码进行通信,协议内容无加密、无认证,能够仿真交互。通过modbus90功能码进行身份识别与握手请求,读取cpu模块、内存卡和工程项目信息;通过modbus43功能码读取设备型号、固件版本号的信息;通过modbus协议进行工控蜜罐识别时发送的tcp报文的内容,参考表1,表1中描述了工控蜜罐探测时的部分modbus报文组合,及每种modbus功能码对应的详细报文功能和内容。当被扫描ip返回的信息与真实的plc返回的信息有差异,则所述被扫描ip为工控蜜罐的概率大于80%。

表1、工控蜜罐部分modbus探测报文组合

样例2、以西门子plc为例:

通过s7协议深度交互,模拟step7或tiaportal软件与被扫描ip交互,由于step7或tiaportal软件均使用s7协议进行通信,协议内容无加密、无认证,能够仿真交互,针对s7协议扫描时,先进行tpkp和cotp连接,暴力破解cotp报文中的sourcetsap和destinationtsap字段并通过sourcetsap和destinationtsap字段的不同的值,建立起s7协议的交互会话。通过s7协议的功能函数读取系统状态列表ssl(systemstatelist)的条目,一个西门子plc有1000个ssl条目,通过查询ssl条目,当返回信息与真实plc的有差异,则所述被扫描ip为工控蜜罐的概率大于80%;另外,还能够通过s7协议的功能函数对西门子plc的区块进行枚举,当返回信息与真实plc的有差异,则所述被扫描ip为工控蜜罐的概率大于80%;通过s7协议进行工控蜜罐识别时发送的tcp报文的内容,参考表2,表2中描述了工控蜜罐探测时的部分s7报文组合及每种s7功能函数对应的详细报文功能和内容。在西门子s7系列plc中,用户在通过step7以及tiaportal软件定义的plc功能,在plc内部是以不同的区块存在,已知的区块有如下几种:

组织块(ob)(主程序块,负责所有fc程序块的调用);

数据块(db)(用于存放用户和系统定义的变量数据);

程序块(fc)(由用户编写的程序块);

功能块(fb)(由用户编写的专用数据块);

系统程序块(sfc)(调用系统某些功能时自动创建);

系统功能块(sfb)(调用系统某些数据功能时自动创建);

系统数据块(sdb)(由编程软件自动生成存放plc的硬件组态的信息,用户无法直接打开和更改)。

以sdb2000块为例,当所述plc内有profibusslaves则sdb2000块就会存在,同样在枚举sdb块的list时也会发现存在所述块,那么就能获取到sdb2000的blockinfo。这种枚举的方式能够在黑盒以及无法解密sdb块的mc7二进制数据的情况下有效判断plc内是否存在特定子功能、子模块。

表2、工控蜜罐部分s7探测报文组合

步骤4、组态程序调试运行识别:

通过工控协议交互,模拟plc程序的下载操作,当所述plc未设置写保护,那么组态程序能够在plc设备上调试运行。当被调试的ip对应的plc不支持正常plc的汇编语言功能集,所述plc在执行汇编指令时速度慢,则所述被调试的ip为高交互工控蜜罐的概率大于70%。用p4表示通过组态程序调试运行识别判定所述被调试的ip为蜜罐的概率,0.7<p4<=1;用w4表示通过组态程序调试运行识别判定所述被调试的ip为蜜罐的权重。

plc程序由专有mc7格式编码的字节码组成。mc7是一个与iec61131-3中标准化的指令列表(il)相同的指令集的汇编语言。

以西门子plc为例;

ob1区块也称为程序循环组织块或watchdog,作用是调度处理各自程序(fc,fb,db,sfc,sfb),是c语言的main程序。

西门子plc的编程能够使用(lad/stl/scl)这几种方式,但最终都将编译为mc7字节码并下载到西门子plc中。西门子plc在处于run模式时将从主循环逻辑块ob1中读取mc7代码并加载至内存执行。西门子plc的s7协议下载区块数据流如图4所示。

针对西门子plc的组态程序调试时,能够将调试代码函数fc_pot植入ob1块的头部,当植入成功后,plc每次调用ob1时都将先执行fc_pot中的逻辑代码,如图5所示,fc_pot的代码逻辑必须选择对plc无害的代码逻辑。

步骤5、工控系统蜜罐甄别概率:

定义p为目标ip为工控蜜罐的概率,用pt表示判定所述目标ip为工控蜜罐的阀值,p的计算公式如下:

当p>pt时,判定所述目标ip为工控蜜罐。

pi表示通过方法i判定所述目标ip为蜜罐的概率,pi能够通过经验值获取基础值,再由机器学习方法校准,参考表3,表3中描述了通过机器学习获取工控蜜罐甄别时对应的pi参数的方法。

0≤pi≤1

wi表示通过方法i判定所述目标ip为蜜罐的权重,wi能够通过机器学习方法获取,参考表3,表3中描述了通过机器学习获取工控蜜罐甄别时对应的wi参数的方法。

0<wi<1

表3、工控系统蜜罐甄别概率对应的各参数获得方法

如图1所示,图1描述了针对施耐德plc的工控协议深度交互识别方法,首先发送modbus的43功能码获取目标设备的型号、固件版本的信息,接着发送modbus的90功能码获取cpu模块信息,再接着发送modbus的90功能码读取内存卡信息,然后发送modbus的90功能码读取工程项目信息,最后发送modbus的90功能码读取工程项目的路径、编程软件的信息。通过对真实plc返回的信息,与蜜罐返回的信息对比,能够识别低交互工控蜜罐。

如图2所示,图2描述了针对西门子plc的工控协议深度交互识别过程中的暴力破解方法。针对s7协议扫描时,先进行tpkp和cotp连接,暴力破解cotp报文中的sourcetsap和destinationtsap字段,通过多次尝试sourcetsap和destinationtsap字段的不同的值,建立起s7协议的交互会话。s7协议的交互会话建立后,才能与西门子plc进行工控协议深度交互,最终识别所述设备是否为工控蜜罐。

如图3所示,图3描述了针对西门子plc的工控协议深度交互识别方法,首先发送s7协议的readszl功能码,读取西门子plc订货号、固件版本、bootloader的信息,接着发送s7协议的readszl功能码,读取西门子plc名称、cpu模块型号、设备序列号的信息,最发送s7协议的listblocks功能码,枚举西门子plc内各区块的数量信息。通过对真实西门子plc返回的信息,和蜜罐返回的信息对比,能够识别低交互工控蜜罐。

如图4所示,图4描述了西门子plc程序下载数据流,工程师通过工程师站(ews)上安装的编程软件和西门子plc进行协议交互,针对西门子plc的组态程序下载过程,工程师站会向西门子plc发起connectsetup建立连接会话,西门子plc响应connectsetup后,工程师站接着发送downloadrequest请求报文,西门子plc响应downloadrequestack,并发送downloadblock后,工程师站接着发送downloadblockack开始传输组态程序,组态程序传输过程中,西门子plc会询问工程师站downloadend,当工程师站响应downloadendack后,组态下载过程结束。组态程序下载完毕后,工程师站能够发送组态程序调试运行的命令,驱动西门子plccontrol命令执行。通过组态程序调试运行过程中的mc7指令执行速度的对比、与西门子plc的汇编语言功能集的响应对比,能够识别高交互工控蜜罐。

如图5所示,图5描述了西门子plcob1块代码注入的过程,针对西门子plc的组态程序调试时,能够将调试代码函数fc_pot植入ob1块的头部,当植入成功后,西门子plc每次调用ob1时都将先执行fc_pot中的逻辑代码。在fc_pot的逻辑代码中,能够加入针对西门子plc的汇编语言特定功能的调用逻辑,比如能够尝试float语法,当组态程序调试运行过程中,西门子plc返回的调用结果和预期不一致,能够识别所述设备为高交互工控蜜罐。

以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明公开的范围内,能够轻易想到的变化或替换,都应涵盖在本发明权利要求的保护范围内。

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