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小时:
TypeID | Type | 描述 | 出现的次数 |
13 | M_ME_NC_1 | 测量值,短浮点数 | 1’184’834 |
30 | M_SP_TB_1 | 带有时间标签的单点信息 CP56Time2a | 2 |
103 | C_CS_NA_1 | 时钟同步命令 | 1 |
发送的唯一命令是客户端的时间同步。
将操作数据与可用的恶意软件数据进行比较,可以看到恶意软件的不同行为:
恶意软件正在向客户端设备发送一个又一个命令(ASDU=3),在IOA中迭代。有点类似于检查主机上的不同端口并尝试登录。
TypeID | Type | 描述 |
100 | C_IC_NA_1 | Interrogation command |
45 | C_SC_NA_1 | Single command |
46 | C_DC_NA_1 | Double command |
从防御者的角度来看,我们显然不能阻止端口2404,也不能阻止恶意软件使用的命令,因为一个或所有命令都是控制系统本身用于正常操作的。
但看看TypeID转换,恶意软件与合法流量是不同的:
Transitions | Normal Operations Traffic | Malware |
M_ to M_ | > 1000 | 0 |
M_ to C_ or C_ to M_ | > 0 && < 10 | 0 |
C_ to C_ | 0 | > 10 |
在ntpng中,建立了三种检测机制:
- IEC意料之外的TypeID。由于操作员知道使用的TypeID,因此该检查监视未知或不允许的TypeID,并向其发出警报。
- IEC无效转换。在这个检查中,将在预定义的时间段内记录TypeID转换,即IEC60870学习期间,可在设置/首选项/行为分析下找到。如果检测到未知的TypeID转换,则会生成警报。
- IEC无效命令转换也会检查转换,但特别是命令的转换。如果命令到命令的转换量超过阈值,则会生成警报。
这三个检查都可以在流检查中找到。
对于“IEC无效转换”,ntopng需要一个学习周期来跟踪转换。默认设置为6小时,但最有可能需要更长的学习时间,例如2天。
所有ntopng版本都支持IEC,因此您可以使用ntop工具监控您的网络。