背景
2022年4月12日乌克兰计算机应急响应中心(CERT-UA)发布了针对乌克兰能源设备的针对性攻击安全事件公告,公告中描述了名为SandwormGroup的组织在2022年4月8使用Industroyer2和CADDYWIPER恶意软件对乌克兰最大的能源公司能源设施开展攻击,造成了变电站断线,截至到4月12日攻击的实施已经被阻止。其中CADDYWIPER恶意软件曾多次被报道在俄乌战争中用于擦除磁盘文件,Industroyer2则和造成2016年乌克兰停电的Industroyer一脉相承,病毒使用C++编写,利用IEC 60870-5-104协议改变RTU设备状态,使用高度定制化的方式操作指定IP地址的指定IOA(信息对象地址),以达到破坏电网的目的。
博智安全非攻研究院对Industroyer2样本展开了分析,并对样本中的工控网络行为进行了进一步研究。
样本分析
样本的编译时间为2022年3月23日,距被报道的3月28日不到一星期。
程序为控制台应用程序,默认会进行控制台输出:
这些控制台调试信息实际记录了样本的网络行为,包括目标的IP端口,发送数据包的数量等,和目标成功建立连接后甚至会打印收发包数据内容。
从程序中可以看到,样本支持对收发数据包的解析,并且有专门的配置选项控制是否输出。每一个执行的步骤都有专门的编号,可以从日志中追踪到具体步骤。
上图中的26784就是这段步骤的编号。样本支持-o参数将标准控制台输出重定向到文件,便于后面进行调试分析;-t参数支持样本执行延迟。
从这个角度看,该样本更像是开发调试状态下的工具:因为正式投入攻击的版本一般会尽可能减少调试信息以提高被分析溯源的难度,但也不排除时间过于紧迫仓促上马的可能。
主要行为
配置文件
该样本有三套硬编码的配置,程序启动三个线程执行这三个配置:
三个配置都以字符串形式给出,再在线程中解析并使用。这种绕弯的方式很难不让人联想,很有可能是一个payload用另一个壳包裹了一下,同时执行三个配置。
结束进程并重命名文件
在执行配置线程中,样本首先结束掉指定进程,即PServiceControl.exe和PService_PPD.exe,并将指定目录中的对应进程可执行文件重命名,对应即是将 D:OIKDevCounterPService_PPD.exe重命名为D:OIKDevCounterPService_PPD.exe.MZ。此操作的目的可能是破坏已存在的控制服务,并阻止服务重启。
IEC-60870-5-104网络行为
该样本的主要行为就是使用IEC-60870-5-104(简称IEC-104)协议和目标设备进行通信,IEC-104协议基于IEC-101协议演化而来,主要用于电力系统控制和信息采集。
通信过程
主要通信过程可以概况为:
1. 根据配置建立socket连接
2. 向目标发送Test Frame Activation IEC-104数据包
3. 向目标发送Start DataTransfer Activation IEC-104数据包
2、3步主要目的是测试目标存活,如果没有回应则停止继续发送
4.向目标发送 typeid 为C_IC_NA_1 (Interrogation Command)的activation数据包
5.根据配置中的数组循环发送激活/关闭命令到对应的IOA (Address of the Object)
6.根据配置循环发送,直到达到最大循环次数或网络错误则退出
不难看出前4步都是为了确保设备在活动状态,可以接受IOA设置的命令。IOA对于工控设备来说一般类似于唯一地址,准确来说是ASDU 和IOA 合起来构成唯一地址。一般在配置中ASDU只有C_SC_NA_1 (Single Command) 和C_DC_NA_1(Double Command)两种,对应某个选项开关,或是某个采样数值。下表中列出了三个目标操作的IOA,该表为了方便,对连续的IOA进行了合并,实际上发送的IOA命令是带有顺序编号的,和表中并不一致。
实际对应动作
OA代表的实际意义对于不同的设备厂商、设备型号,定制化开发均不相同。由于工控领域的封闭性,在没有对应设备的详细信息之前,是难以进一步确定的。通过搜索相关公开信息,发现第二个目标的1101-1108 IOA操作,与西门子SIPROTEC IOA 的对应表可以基本对应起来,SIPROTECT1101-1108 对应信息如下表所示:
SIPROTECT 是西门子的继电保护器系列产品,支持以太网和IEC-104协议,如下图所示:
1101–1108 的类别是HMI设备,假如目标192.168.122.XX是一个HMI设备,针对此设备的IOA命令就可以理解为,让HMI设备显示继电保护状态的各项为 Active,同时显示外部电压异常,而此时继电保护可能已经被关闭了。这样推理 10.82.XX.XX 比较可能是继电保护器,192.168.121.XX可能是SCADA上位机。
行为仿真
通过在仿真靶场中构建IEC-104Server,配置Server为指定IP地址,在靶场中执行样本,可成功监测到病毒使用IEC-104协议连接、操作IOAs的行为:
结论
Industroyer也被称为 CrashOverride,是“自震网病毒以来对工业控制系统的最大威胁”,它既是模块化的,又能够直接控制配电变电站的开关和断路器。Industroyer2继承和延续了Industroyer风格,但仅保留了IEC60870-5-104协议对电站控制系统攻击,同时样本中的攻击目标IP地址明确,攻击过程清晰、直达要害,这些种种迹象均表明攻击者对目标电力系统环境非常了解,但入侵者是如何将病毒从 IT 网络转移到工业控制系统网络目前尚不清楚,基本可以肯定的是,Industroyer2是对电力系统成功攻击的又一个案例。