一、前言
上个月FireEye发布了一份安全报告,详细介绍了Mandiant子公司对某个关键基础设施组织应急响应事件的处置过程。该报告中提到了名为TRITON的一个恶意软件框架(还有其他叫法,如TRISIS以及HatMan),这款恶意软件针对的是施耐德电气的Triconex工业安全系统,目标是造成物理损坏后果,导致正常作业流程关闭。安全人员认为此次攻击活动背后有国家力量的支持。Dragos团队同样发表了对该恶意软件的研究报告,该团队的研究结果表明,在2017年11月中旬时,TRITON的势力范围已波及中东区域,至少有一个受害者受此攻击活动影响。
本文的目的是讨论此次事件的相关背景、TRITON框架以及攻击载荷,努力澄清此次攻击细节,从整体层面分析针对工业安全系统的攻击活动。本文参考了多个参考资料,如FireEye、Dragos以及ICS-CERT发表的报告,Midnight Blue的分析报告以及Ali Abbasi提供的恶意软件样本。此外,其他人也会在本周举办的S4x18 TRITON/TRISIS会议上介绍该安全事件及恶意软件的一些细节。
二、概述
TRITON是公众了解到的首个针对工业安全控制器的恶意软件,与之前的ICS安全事件相比,这款恶意软件提供了更强的功能,可以造成更为严重的后果。中东区域至少有一个受害者受此次攻击影响,但没有明确的证据表明这种攻击已波及到其他区域。作为一款恶意软件框架,TRITON可以向施耐德电气的Triconex安全控制器中植入被动式后门,随后攻击者可以通过该后门再注入具有破坏性的攻击载荷。
虽然这种攻击可能会造成非常严重的后果(比如破坏关键安全系统后导致基础设施损坏及人身安全受到危害),但现在我们并不清楚攻击者的真实意图,因此我们还需要谨慎评估这款恶意软件在暴露后能带来的哪种程度的影响。此外,由于攻击过程涉及到大量复杂的工业流程专业知识,因此这种安全风险并不具备较高的可扩展性,甚至无法完美适配其他型号的Triconex安全控制器。然而,经验丰富且资源充足的攻击者可以攻击安全系统中包含Triconex控制器的那些设施,重新规划TRITON的攻击目标,逆向分析TriStation协议,进一步降低攻击门槛。此次事件表明工业网络安全中仍存在各种各样的问题,比如将“设计上不安全的”设备直接暴露到缺乏IT/OT安全机制以及安全观念的开放型网络中,过去几年大家已广泛讨论过这些问题。
三、背景介绍
除了Stuxnet、Havex、Blackenergy2和Industroyer以外,大众并不是特别了解针对工业控制系统(ICS,Industrial Control Systems)的恶意软件,TRITON是这个大家族中的一员,也是专门针对工业安全控制器的首个被公开的恶意软件。安全仪表系统(Safety Instrumented System,SIS)是一种自主控制系统,其任务是维持自动化生产过程的安全状态。关键流程中可能存在许多严重的安全威胁,给人身安全带来生命风险,此时就需要SIS来实现关键流程中的安全逻辑。比如,SIS可以通过传感器的输入数据来监测温度或者压力值,如果超过危险阈值,则停止气体流动或者继续加热。SIS通常会与促动器(actuator)连接(比如用来打开或者关闭阀门),以便在必要时越过正常控制流程,终止处于失控状态下生产过程。
图1. 基本的工业安全及保护层(来源)
安全控制器通常是一种可编程逻辑控制器(Programmable Logic Controller,PLC),采用具有冗余模块的高标准设计理念,可以在主处理器失效或者断电的情况下进入安全故障状态。安全控制器会按照生产过程环境要求进行部署,通常使用某种IEC 61131-3编程语言(如LD、ST等)进行配置。当然,安全性(safety、security)在不同场合标准也有所不同,与常规的PLC一样,安全控制器同样在设计上存在一些“不安全的”属性:比如,用于维护的后门账户可能会被硬编码到设备中,可能会使用不安全的私有协议等等。
传统意义上,SIS的连接情况会受到限制,相关系统会与运营技术(Operational Technology,OT)环境相互隔离,以限制安全控制器中安全问题所造成的影响。但随着时代的发展,嵌入式系统逐渐成为普遍趋势,这种隔离环境中也免不了出现越来越多的通连情况,系统之间也会相互集成。虽然系统集成在成本、可用性以及智能作业流程方面具备各种优势,但也会将不具备安全连接性的系统暴露在OT及IT环境中,进一步暴露在更广阔的不安全网络中。突破SIS后,攻击者可能会带来严重的安全风险,比如关闭生产流程以进入不安全状态,或者操控OT环境中的其他部分,构造不安全状态,给目标单位造成经济损失、设备损坏,给产品环境或者人身安全带来影响,更严重时还会危急生命。
但我们还需要谨慎评估这类安全风险,避免出现危言耸听的头条新闻。首先,恐慌、不确定性以及怀疑会导致合理的分析及良好的建议埋没于众,最终形成一种“狼来了”的效果,导致ICS设备供应商以及OT资产方及运营商在安全行业中话语权被逐渐削弱。其次,虽然这种攻击事件中,从最初突破ICS系统到控制安全控制器,整个攻击链条可能看起来比较简单,然而想构造能带来实际危害的“OT攻击载荷”实际上并不简单,也不具备较高的可扩展性。正如Benjamin Green、Marina Krotofil以及Ali Abbasi提到的那样,这种攻击要求攻击者对生产过程了如指掌,攻击者必须分析大量文档、图表、历史数据记录文件、设备配置信息以及网络流量才能获得相关信息。这些信息需要针对不同的设施逐一获取,因为即使面对两个功能相似的设施,攻击者也需要考虑这些设施在流程、设计、设备及配置方面的不同。
对于SIS而言,这意味着突破安全系统并不等同于破坏生产流程安全。除了SIS之外,相关设施可能还部署了其他安全措施,比如外壳、风门阻尼器等可损毁部件以及警报器、应急处置过程等,因此评估SIS被突破的影响时也要将其他设备相关的一些因素考虑在内。这并不代表攻击者无法导致最严重的后果,但他们能造成的危害程度实际上要比想象中的小。
四、事件回顾
根据FireEye的报告,攻击者获得了运行Windows系统的Triconex工程工作站(engineering workstation)以及分布式控制系统(Distributed Control System,DCS)的远程访问权限,部署了名为Trilog.exe的一个Py2EXE应用程序,该应用伪装成正常的Triconex日志审查应用,在工程工作站上使用了TRITON框架以及两个二进制载荷文件(inject.bin以及imain.bin)。TRITON并没有用到任何0day漏洞技术,而是通过缺乏认证的TriStation协议(下文会分析该协议)实现对目标安全控制器的重新编程(控制器并没有配置ACL策略)。TriStation是一种私有协议,没有详细的协议文档,这意味着攻击者必须逆向分析该协议,他们可能翻阅了存在相似性的、具有公开文档的Triconex System Access Application (TSAA)协议,同时分析了工程工作站与控制器之间的通信流量,逆向分析了工作站软件以及控制器固件,最终实现对该协议的逆向分析。
TRITON框架可以通过1502端口发送UDP广播消息,自动发现网络中的Triconex控制器,但此次安全事件中攻击者并没有使用这个功能。攻击者直接指定了目标控制器的IP地址,连接成功后,就通过TriStation协议获取控制器的状态信息。如果控制器正在运行inject.bin以及imain.bin,这些载荷文件已经注入控制器程序内存中,那么恶意软件就会启动定期检查过程,探测是否出现什么错误。如果出现错误,TRITON会通过Tristation协议将控制器重置成之前的状态,如果重置失败,它会将一个虚假程序写入内存中,这么处理可能是为了达到反取证分析目的。在此次事件中,由于某些控制器进入了故障安全状态,导致正常工业流程被关闭,最终引起了资产方的警觉,开始调查这次事件。据相关报道,之所以导致故障安全状态,原因在于3个独立的冗余Triconex处理器模块无法通过有效性校验。
此次事件中DCS以及SIS系统均被攻击者控制,这表明攻击者想造成非常严重的后果,而不单单是关闭作业流程那么简单。根据调查结果,攻击者针对安全控制器发起了多次攻击,尝试在控制器上部署特定的控制逻辑,并没有选择直接关闭安全控制器,这也进一步证实了这个猜想(但具体结论仍待后续确认)。