Industroyer2:卷土重来的Industroyer新变体

admin 2022年4月27日13:37:09评论162 views字数 4782阅读15分56秒阅读模式

关键词

Industroyer、沙虫Sandworm

4月12日乌克兰计算机应急响应小组(CERT-UA)和斯洛伐克网络安全公司ESET发布公告称:俄罗斯军事情报机构GRU旗下的沙虫(Sandworm)黑客组织针对乌克兰的高压变电站发动攻击,攻击者使用了一种称为Industroyer(Crash Override)的恶意软件的变体——Industroyer2。本篇文章是ESET对该次攻击的详细分析报告。

1. 事件概述



近期,ESET 的研究人员对影响乌克兰一家能源供应商的网络事件做出了回应,称他们通过与 CERT-UA 的合作研究,发现了一种新的 Industroyer 恶意软件变体,并将其命名为Industroyer2。Industroyer是沙虫组织(Sandworm)曾使用的一款恶意软件,2017 年时ESET 曾表示其在 2016 年 12 月乌克兰首都基辅停电事件中起到了重要作用。

ESET称在本次攻击事件中, Sandworm 除了 industroyer2 之外,还使用了其他几个破坏性的恶意软件,包括 CaddyWiper、 ORCSHRED、 SOLOSHRED 和 AWFULSHRED。ESET公布的本次攻击事件的重要时间节点如图1所示。

Industroyer2:卷土重来的Industroyer新变体

图 1事件发生时间线

2. 

Industroyer2

Industroyer2被发现时是一个名为 108_100.exe 的 Windows 可执行程序,其在 UTC 时间 2022-04-08 16:10:00 按照攻击者的计划如期执行。根据 PE 时间戳(见图2),Industroyer2编译于2022年3月23日,表明攻击者的计划已超过了两周。

Industroyer2:卷土重来的Industroyer新变体

图 2 Industroyer2编译信息

Industroyer2 通过IEC-104(又名 IEC 60870-5-104) 协议与用于变电站保护的继电器之类的工业设备进行通信。研究人员分析后发现其与 Industroyer 的有效负载 104.dll 有许多相似之处,因此可以判断新的变体继承了Industroyer 大量的源代码。

与 2016 年的 Industroyer不同的是,Industroyer2是一个完全模块化的平台,具有多个 ICS 协议的攻击载荷。另外,Industroyer2将详细的配置信息硬编码在了程序本体中,也与Industroyer将配置信息单独保存在INI文件中不同,因此攻击者需要为每个新的攻击目标编译不同的恶意程序。

新的配置以明文字符串的形式存储,主要包括提供给该恶意软件的 iec-104 通信模块的参数信息。通过 iec-104 通信模块,Industroyer2 能够同时与多个设备进行通信。具体来说,目前分析的样本中包含 8 个不同的设备 IP 地址,如图3所示。

Industroyer2:卷土重来的Industroyer新变体

图 3 Industroyer2中硬编码的配置信息

除了IP地址列表以外,该配置中还包含了iec-104通信所需的其他信息,如应用程序服务数据单元 (ASDU, ApplicationService Data Unit) 地址、信息对象地址 (IOA,InformationObject Addresses)、通信超时时间(timeout)等。

在连接到目标设备之前,Industroyer2 会终止主机上日常运行的合法进程,并将进程对应的程序文件名加上.MZ后缀,以防止其自动重新启动。为了确定Industroyer2 后续对每个设备采取的确切行动,目前分析仍在进行中。

与前一版本类似,Industroyer2也会输出日志到控制台上,但已经没有明确的文本消息,而只保留了各种错误代码,如图4所示。

Industroyer2:卷土重来的Industroyer新变体

图4 industroyer2 在Windows上运行时的输出 (IP地址已被ESET修改)

3.

CaddyWiper



为了在 ICS 网络中配合 industroyer2 的部署,攻击者在受控机部署了 CaddyWiper 的新版本。CaddyWiper 的第一个版本是ESET 的研究人员于 2022年03月14 日在乌克兰发现的,当时它被部署在一家银行的网络中。它通过组策略对象 (GPO) 部署,表明攻击者事先已经控制了目标主机。CaddyWiper主要用于攻击的善后工作,攻击活动结束后它会清除磁盘中的用户数据和分区信息,使操作系统无法操作且无法恢复。

3.

1 新型加载器



在能源供应商的网络中,攻击者部署了一个新版本的 CaddyWiper,它使用了一个新的加载程序,由 CERT-UA 命名为 ARGUEPATCH。它是 Hex-Rays IDA Pro 软件的一个合法组件的补丁版本,具体来说是IDA远程调试器服务器win32_remote.exe。IDAPro的主要用途是软件逆向工程,包括恶意软件分析等领域。分析人员推测攻击者选择木马化这个软件,可能是为了向防御者发出挑衅。

ARGUEPATCH是通过一个定时任务执行的,该任务计划在UTC时间2022-04-08 14:58 时在一台机器上执行一次,然后在16:20 在部署了industroyer2的机器上再执行一次。

ARGUEPATCH执行时会从一个文件中加载加密后的shellcode,并使用一个单字节的XOR密钥进行解密。经过解密后的shellcode是 CaddyWiper 的一个稍微修改过的版本,图5 和图 6 展示了它们之间的部分不同之处。值得注意的是,它们都不会擦除域控制器(Domain Controller)中的文件,而是只擦除C:Users下的用户数据以及本地磁盘d: 到[:中的文件,擦除方法为使用0覆盖所有文件的内容。

            

Industroyer2:卷土重来的Industroyer新变体

图5 旧版CaddyWiper的主程序

Industroyer2:卷土重来的Industroyer新变体

图6 部署在能源供应商的CaddyWiper 样本的主程序

清除完所有磁盘数据后,CaddyWiper会通过IOCTL_DISK_SET _DRIVE_LAYOUT_EX调用DeviceIoControl,将所有物理磁盘(从\PHYSICALDRIVE9\PHYSICALDRIVE0)的输入缓冲区置零。该操作将删除磁盘分区的扩展信息(包括主引导记录分区(MBR) 或 GUID 分区表(GPT)),从而使得机器不可启动。

3.

2 活动目录枚举脚本


除了 CaddyWiper 之外,ESET还在能源供应商网络和早些时候受到攻击的银行中发现了一个PowerShell脚本。此脚本使用活动目录服务接口 (ADSI) 枚举组策略对象(GPO),如图7所示。分析人员推测该攻击者通过 GPO 部署 CaddyWiper 后,会使用脚本检查该 GPO是否被成功创建。

Industroyer2:卷土重来的Industroyer新变体

图7 用于枚举GPO的PowerShell脚本(已美化)

4.Linux和Solaris恶意软件


在这家目标能源公司的网络中,分析人员还发现了针对Linux 和 Solaris 系统的其他恶意软件,包括一个蠕虫和两个清理器(分别针对Linux 和 Solaris操作系统)。所有恶意程序都是可以使用Bash直接运行的shell脚本。

4.1 蠕虫程序


攻击者启动的第一个组件是蠕虫,其文件名为 sc.sh。这个 Bash 脚本首先添加一个计划任务 (cron 作业) ,用于在UTC时间 2:58 启动针对相应系统的清理器组件(假设系统本地时区为UTC + 3),如图8所示。

Industroyer2:卷土重来的Industroyer新变体

图8设置自动启动清理器的定时任务

然后脚本通过查看 ip route 或 ifconfig -a 的结果遍历系统可访问的网络。对于每个可访问的IP地址,它将尝试使用 SSH 连接到 TCP 端口 22、2468、24687 和 522。一旦找到一个可访问的 SSH 服务器,它就会尝试使用恶意脚本中提供的用户凭据进行登录验证。很显然攻击者在攻击之前已经收集了一些凭据,才使得恶意程序能在网络中扩散。

4.2 Linux wiper


Linux版的wiper经过了简单的混淆处理: 变量和函数名都被无意义的 8 个字母组成的单词所替换,如图9所示。分析人员通过对脚本功能的分析,重新将函数和变量名修改为了有意义的名称,如图10所示。

Industroyer2:卷土重来的Industroyer新变体

图9 Linux版的清理器脚本

Industroyer2:卷土重来的Industroyer新变体

图10 反混淆后的Linux清理器

Linux清理器的主要功能是通过使用 shred (如果可用的话) 或者dd(if=/dev/random) 将连接到系统的磁盘填满随机数据。如果主机连接了多个磁盘,数据清除是并行进行的,从而可以加快进程。

根据磁盘容量的不同,完整的磁盘可能需要几个小时才能被完全擦除。为了为擦除操作争取更多时间,清理器首先会尝试使用 systemctl disable停止并禁用 HTTP 和 SSH 服务,从而使得系统管理员短时间内无法连接到服务主机。

另外在销毁完整的磁盘数据之前,清理器首先会删除/boot、/home 和 /var/log 中的文件,这会使得系统短时间内无法恢复正常运行。

脚本的最后一个动作是使用 SysRq 强制启动重新引导,因为所有的磁盘数据已被毁坏,所以服务主机将会陷入瘫痪。

4.3 Solaris wiper


与 Linux 清理器不同的是,Solaris 的版本没有被混淆。但在功能方面,Solaris版则与 Linux 版类似。它首先会遍历所有服务,如果服务名称包含关键字 ssh、 http、 apache、ora_ 或 oracle,则停止并禁用它们。这些服务往往被用于控制 ICS 系统的应用程序,清除它们将阻止能源公司的运营人员重新控制变电站。

Solaris版清理器销毁文件时从删除数据库开始,它使用 shred 和rm 删除包含在以ORA 开始的环境变量中的所有文件和目录,其中shred会使得没有备份的数据无法恢复。与Linux版本类似,/boot、/home和 /var/log 目录中的文件也会被优先删除。

重要文件删除后,脚本开始遍历连接到主机上的所有磁盘(从/dev/dsk/中获取)。它会忽略分区设备,只对磁盘设备执行清除工作。对于每个磁盘设备,恶意脚本都会使用shred命令覆盖整个磁盘。为了减少执行清除所需的时间,所有磁盘将并行擦除。

所有清除任务执行完毕后,脚本将会自我销毁。

5.IOC列表


SHA-1

文件名

ESET检测名称
描述

FD9C17C35A68FC505235E20C6E50C622AED8DEA0

108_100.exe

Win32/Industroyer.B

Industroyer2

6FA04992C0624C7AA3CA80DA6A30E6DE91226A16

zrada.exe

Win32/Agent.AECG

ArguePatch

9CE1491CE69809F92AE1FE8D4C0783BD1D11FBE7

pa.pay

N/A

TailJump(加密的CaddyWiper)

0090CB4DE31D2D3BCA55FD4A36859921B5FC5DAE

link.ps1

PowerShell/HackTool.Agent.AH

枚举GPO的脚本

D27D0B9BB57B2BAB881E0EFB97C740B7E81405DF

sc.sh

Linux/Agent.PC trojan

OrcShred (Linux 蠕虫)

3CDBC19BC4F12D8D00B81380F7A2504D08074C15

wobf.sh

Linux/KillFiles.C trojan

AwfulShred (Linux wiper)

8FC7646FA14667D07E3110FE754F61A78CFDE6BC

wsol.sh

Linux/KillFiles.B trojan

SoloShred(Solaris wiper)



END

参考链接:https://www.welivesecurity.com/2022/04/12/industroyer2-industroyer-reloaded/


编辑|贺义通

审校|何双泽、金矢

本文为CNTIC编译整理,不代表本公众号观点,转载请保留出处与链接。联系信息进入公众号后点击“关于我们”可见。

Industroyer2:卷土重来的Industroyer新变体


原文始发于微信公众号(国家网络威胁情报共享开放平台):Industroyer2:卷土重来的Industroyer新变体

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年4月27日13:37:09
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   Industroyer2:卷土重来的Industroyer新变体http://cn-sec.com/archives/949703.html

发表评论

匿名网友 填写信息