近期,Mandiant发现并披露了COSMICENERGY恶意软件,一款针对工业控制系统(ICS)的新型恶意软件,该恶意软件可通过IEC 60870-5-104 (IEC-104) 协议与电力设备进行通信/交互,进而造成目标电力中断,这些设备通常用于欧洲、中东和亚洲的输配电业务。本文主要从技术角度,对恶意软件样本进行基本分析。
样本r3_iec104_control.exe
样本r3_iec104_control.exe(MD5:cd8f394652db3d0376ba24a990403d20)为一个可执行文件,运行之后产生控制台界面:
从命令行参数看,是接受一系列参数诸如:服务器IP地址、用户名、密码、控制器ip等。经过分析,该样本是一个被pyinstaller打包的程序:
Pyinstaller是一种将python脚本打包成exe的工具,因此该样本实际是从Python脚本编译打包而来。为了分析恶意工具实际行为,就需要找到原始的Python脚本。使用pyinstxtractor 工具对pyinstaller进行解包(注意:这个工具必须使用对应的python版本,否则存在解包不全的问题):
解出一系列pyc 和pyd文件:
pyc是已编译的python 字节码文件,我们再对pyc 文件进行反编译,即可得到python源代码。经过搜索发现iec104_mssql_lib.py 是恶意程序的主体:
经分析,此程序的主要功能为:
-
1、利用命令行参数提供的MSSQL地址、用户名和密码登录MSSQL数据库;
-
3、执行OT_T855_IEC104_GR.exe并传递指定的参数
-
4、在目标主机删除OT_T855_IEC104_GR.exe
-
2、在MSSQL中执行SQL命令,将OT_T855_IEC104_GR.exe上传到MSSQL主机
样本OT_T855_IEC104_GR.exe
样本OT_T855_IEC104_GR.exe(MD5:7b6678a1c0000344f4faf975c0cfc43d)打包在 pyinstaller中,pyinstaller执行后会释放出这个程序。
OT_T855_IEC104_GR.exe是一个debug版本的程序,存在各种调试符号。借助这些符号,程序的功能就非常的容易理解了。值得注意的是,这个程序和Industroyer2恶意软件中的命令发送程序同源性很高。
这个程序接受三个参数:目标主机IP,端口号,和开关选项。成功连接目标后的主要行为有:
-
1、目标发送 STARTDT IEC104数据包
-
2、向目标发送诊断命令 IEC104数据包
-
3、向目标的8个IOA发送了处理命令数据包
-
4、跟目标同步了时间
-
从行为上看这个程序只是和IEC104的目标进行了通信,但是实际这些通信的作用需要根据具体实际的控制器型号和控制器程序才能准确判定。根据INDUSTROYER和 INDUSTROYER2 的经验,这个程序的攻击目标较可能是电力中的继电器设备或RTU设备,通过向目标发送控制命令实现操控制电力的通断。
总结
从早期的Stuxnet、Flame、Duqu等针对工控系统的蠕虫病毒,到针对电力系统的INDUSTROYER/INDUSTROYER2,针对SIS系统的Triton恶意软件,再到去年的针对多个厂商PLC系统精确攻击的工控APT级别工具Chernovite Pipedream恶意软件,年初针对RTU设备的勒索软件等等,COSMICENERGY恶意软件不是第一个,也将不是最后一个,针对工业控制系统、OT环境的攻击/勒索将会越来多,攻击工具甚至是APT将越来越精细化、智能化和鲜明的行业/目标特征,对工业控制系统、关键信息基础设施的保护仍然任重道远。
参考资料
1.https://www.mandiant.com/resources/blog/cosmicenergy-ot-malware-russian-response
2.https://mp.weixin.qq.com/s/AjhzWngvP6Xk8b-zRKyJJw
3.https://www.cisa.gov/news-events/cybersecurity-advisories/aa22-103a
原文始发于微信公众号(博智非攻研究院):COSMICENERGY:新型OT恶意软件分析