ntopng如何监控IEC 60870-5-104流量

OT分析师的忙碌时间。

上个月,已知的OT(运营技术)恶意软件的数量从五个增加到七个。第一个被发现的恶意软件是Industroyer2,它是在乌克兰被发现的。正如现在流行的那样,安全公司为他们发现的恶意软件命名。这就是为什么第二个恶意软件有两个名字:Incontroller或Pipedream。这个恶意软件在部署之前就被发现了。

Industroyer2[1]是Industroyer1的演变,首次出现在2014年。这两种变种都针对电力能源部门,特别是在乌克兰。由于该恶意软件使用的是工业协议IEC-60870-5-104的命令,流量看起来像正常运行时的合法通信。

Incontroller[2]是一套新的恶意软件组件,目标是美国的液化天然气部门。与Industroyer2类似,pipedream使用流行的工业协议,如OPC-UA和ModbusTCP。此外,它还使用了工程工具的内置功能,与PLC(过程逻辑控制器)等OT设备进行交互。

这两个恶意软件清楚地表明,背后的犯罪分子已经进化,确实了解OT协议,并能够使用CODESYS等合法软件工程工具的内置功能。

在过去的几年里没有改变的是,SCADA系统控制方式仍然是 “即发即忘 “。一个命令从控制系统的服务器发送到现场的客户端。客户端将事件转化为一个物理动作,比如打开或关闭一个断路器。翻译回网络流量,这意味着一个包含命令的数据包足以扰乱整个工业过程或电力分配。

Industroyer2使用IEC-104,是IEC 60870-5-104的简称。IEC-104广泛用于欧洲能源部门和公共事业部门,如水或废水处理。
许多工业协议的一个特点是,即使协议是标准化的,其实施在不同的制造商甚至系统集成商之间也会有所不同。这意味着Hitachy能源公司实施的IEC-104与西门子的实施方式不同。运营商对它很熟悉,但对于网络安全监控来说,这可能是一个挑战。

监测的进一步困难是,一个传输IEC-104有效载荷的数据包可以有多个IEC-104的数据信息,称为APDU。因此,传统的基于TCP有效载荷的签名检测是行不通的。需要对有效负载进行解析,以了解每个APDU包含的命令类型:

自2022年4月初发现Industroyer2以来,到目前为止,已经发表了几份分析该恶意软件的报告。它们包含了恶意软件如何工作的信息,捕获的网络数据,其中大多数包含了如何处理这种类型的恶意软件的建议。仔细看看这些建议,或者现在称为可操作项目,它们是高水平的项目。例如:

  • “使用异常检测工具来检测OT环境中发生的任何非正常活动”
  • “采用网络分段,通过防火墙将敏感应用(如PCN)与其他网络部分分开”
  • “利用ICS协议感知技术监控东西向ICS网络”

在我看来,可操作性不强,或者需要有一整套的商业产品。对于大多数中小企业来说,这些产品并不适合操作。因此,我正在寻找如何以最小的努力检测恶意软件的方法。

让我们来看看这个环境。SCADA网络具有高度的确定性。意味着谁在与谁交谈以及如何交谈,即命令和控制模式是可重复的。对于IEC-104,这意味着在一天或工作日和周末的正常运行时间段内,可以发现相同类型和顺序的IEC-104命令。

示例1:时间段为2个工作日和一个晚上,36小时:

TypeIDType描述出现的次数
13M_ME_NC_1测量值,短浮点数1’184’834
30M_SP_TB_1带有时间标签的单点信息 CP56Time2a2
103C_CS_NA_1时钟同步命令1

发送的唯一命令是客户端的时间同步。

将操作数据与可用的恶意软件数据进行比较,可以看到恶意软件的不同行为:

恶意软件正在向客户端设备发送一个又一个命令(ASDU=3),在IOA中迭代。有点类似于检查主机上的不同端口并尝试登录。

TypeIDType描述
100C_IC_NA_1Interrogation command
45C_SC_NA_1Single command
46C_DC_NA_1Double command

从防御者的角度来看,我们显然不能阻止端口2404,也不能阻止恶意软件使用的命令,因为一个或所有命令都是控制系统本身用于正常操作的。

但看看TypeID转换,恶意软件与合法流量是不同的:

TransitionsNormal Operations TrafficMalware
M_ to M_> 10000
M_ to C_ or C_ to M_> 0 && < 100
C_ to C_0> 10

在ntpng中,建立了三种检测机制:

  1. IEC意料之外的TypeID。由于操作员知道使用的TypeID,因此该检查监视未知或不允许的TypeID,并向其发出警报。
  2. IEC无效转换。在这个检查中,将在预定义的时间段内记录TypeID转换,即IEC60870学习期间,可在设置/首选项/行为分析下找到。如果检测到未知的TypeID转换,则会生成警报。
  3. IEC无效命令转换也会检查转换,但特别是命令的转换。如果命令到命令的转换量超过阈值,则会生成警报。

这三个检查都可以在流检查中找到。

对于“IEC无效转换”,ntopng需要一个学习周期来跟踪转换。默认设置为6小时,但最有可能需要更长的学习时间,例如2天。

所有ntopng版本都支持IEC,因此您可以使用ntop工具监控您的网络。