本发明属于电通讯技术领域,涉及一种工控设备资产探测方法。
背景技术:
随着网络技术的迅猛发展,越来越多的工控设备接入到互联网当中,随着网络规模的不断扩大,对工控网络的安全管理带来了极大的不便。工控设备资产探测不仅为网络安全监控、威胁态势感知提供了系统认知基础,而且在提高入侵检测系统的效率、安全威胁分析等方面也有较多应用。
目前,资产探测的方法主要分为三种,主动探测,被动探测和基于搜索引擎的非入侵式探测方法。主动探测的方法是指通过主动向目标网络发送构造的数据包,并从返回的数据包的相关信息中提取目标指纹,然后与指纹数据库中的指纹进行比对来实现对开放端口、操作系统、服务以及应用类型的探测。被动探测是指采集目标网络的流量对流量中数据包中的特殊字段或者指纹特征进行分析,从而实现对网络资产信息的探测。基于搜索引擎的探测是指依托与搜索引擎获取的网络爬虫结果或专用服务器扫描结果,提供一种搜索查询的方式间接的实现资产探测。
主动探测方法适用于各种规模的网络,探测速度快,且能够探测不产生网络流量的资产,但是噪声大,对于工控设备而言,大量网络流量噪声很容易对需要持续运行的工控系统造成影响,且仅能了解探测当时的情况;被动探测方法入侵性小,支持历史数据的积累,但应用范围仅限于内网,对不产生网络流量的资产无效。基于搜索引擎的非入侵式探测隐蔽性强,速度快但是探测能力受限于搜索引擎的数据获取能力,准确率相对较低。
技术实现要素:
基于现有探测方式中存在的问题,本发明提出了一种基于过滤技术的混合探测方法,解决基于搜索引擎的探测方法中存在的受限于搜索引擎的数据获取能力,并且准确率较低的问题,能够实现对目标网络更准确,更全面的探测。
本发明解决其技术问题采用的技术方案是:一种基于过滤技术的工控设备资产探测方法,包括:首先使用shodan过滤出目标网段中未被识别为工控设备的ip;对所述ip使用主动探测进行扫描,将主动探测的结果存入数据库,此时数据库中就是所需要的探测结果。
优选地,所述的首先使用shodan过滤出目标网段中未被识别为工控设备的ip具体方法为:使用api对目标网段的ip进行探测,对返回的信息进行解析,从中获取开放工控协议端口的ip,并将ip和对应的资产信息存入数据库;使用全球ip数据库,筛选出目标网段中的有效ip,根据已经确定的工控ip,过滤出未被判定的有效ip。
优选地,对所述ip使用主动探测进行扫描的具体方法为:对过滤出未被判定的有效ip进行端口探活;根据工控协议的通信方式和数据报文形式来构造数据包,向探测到确实存活的ip发送构造好的数据包,并开启接收数据包和分析数据包的线程。
优选地,所述的工控协议包括modbus、s7、dnp3以及bacnet。
本发明提出的基于过滤技术的工控资产设备探测方法,能够对目标网段中的工控设备进行较为全面的探测,为资产探测过程提供了新思路,有益效果为:使得用户能够更全面的探测到目标网络中的工控设备;提高了工控资产探测的正确率;提出了“过滤”探测的技术,提供了资产探测的新思路。
附图说明
图1是本发明的基于过滤技术的工控设备资产探测方法的流程图;
图2是shodan搜索流程图。
具体实施方式
下面结合附图和实施例对本发明的基于过滤技术的工控设备资产探测方法进行详细的阐述。
如图1所示,本发明的基于过滤技术的工控设备资产探测方法,具体步骤为:
1、使用shodan中提供的api函数对目标网段的ip进行探测,对返回的信息进行解析,从中获取开放工控协议端口的ip,并将ip和对应的资产信息存入数据库;使用全球ip数据库,筛选出目标网段中的有效ip,根据已经确定的工控ip,过滤出未被判定的有效ip,流程如图2所示。
2、对于过滤出来的ip进一步使用主动探测的方式进行资产信息探测,首先过滤出来的ip进行端口探活,探测到存活的ip之后,根据工控协议的通信方式和数据报文形式来构造数据包,向探测到确实存活的ip发送构造好的数据包,并开启接收数据包和分析数据包的线程。然后根据返回数据包的格式对返回的信息进行解析和处理。将主动探测的结果同样存入数据库,此时数据库中就是所需要的探测结果。
由于各个协议的不同所以构造数据包的具体内容也不同。目前已知的modbus、s7、dnp3以及bacnet都可以通过构造数据包的方式,获得目标系统的资产信息。使用modbus举例,构造的数据包如表1所示。
表1构造的modbus的请求数据包
前7个字节为modbus的报文头,03是功能码代表读寄存器数据的功能,0x0000为读取的地址,0x0001为读取的寄存器的数量,将数据包发送出去之后根据返回的modbus的数据包就能得到设备的资产信息。返回的modbus数据包的结构如表2所示。
表2返回的modbus的响应数据包
响应数据包的前七个字节同样是modbus的报文头,通信事务处理标识符,协议标识符,设备地址,功能码要与对应的请求数据包保持一致,如果出错则功能码为80h+原功能码。0x02代表读到的数据长度,单位为字节,根据请求数据包我们可以发现从0x0000寄存器中读到的数据为1234h。由此可以获取目标设备的资产信息。