FireEye报告:揭露新型工控系统恶意软件TRITON |
来源:聚铭网络 发布时间:2017-12-24 浏览次数: |
信息来源:FreeBuf Mandiant最近针对中东某企业关键基础设施遭受的攻击事件进行了安全响应,攻击者通过部署特制的恶意软件来控制目标工业安全系统,由于工业安全系统具备对工控系统的紧急关闭功能,因此我们有足够信心断定,该恶意软件是攻击者针对工控系统的硬件破坏或突然关停而开发的。目前,我们把这种恶意软件命名为TRITON,攻击者利用TRITON攻击框架能与施耐德电气公司的Triconex安全仪表系统控制器(SIS)形成通信交互,尽管我们暂时还未追溯定位到实际的攻击者,但我们肯定该攻击事件的幕后黑手为国家支持型黑客。 TRITON特点TRITON是继2010年针对伊朗的Stuxnet和2016年针对乌克兰的Industroyer后,为数不多可以被公开检测识别到的工控系统恶意软件系列之一,TRITON与这些攻击类似,它可以破坏工控系统安全机制并执行预期恶意功能,从而造成严重的物理破坏攻击后果。 攻击事件概述攻击者通过获得安全仪表系统(SIS)工作站的远程访问控制权限,对SIS控制器进行了重编译,进而在SIS系统中部署了TRITON攻击框架。 此次攻击事件中,一些SIS控制器都形成了失效保护状态(failed safe state),造成工控进程的自动关闭,因此引起了管理者的察觉并展开了调查。调查后发现,当应用代码在冗余处理单元之间验证失效时(可引发量产诊断错误消息),就会导致SIS控制器进入安全关闭状态。 我们确信攻击者希望隐蔽执行自动关闭操作造成对工控系统的物理破坏,主要基于以下几方面原因:
攻击溯源针对此次攻击事件,FireEye目前还暂未准确溯源定位到实际的攻击者,但可以肯定的是这是国家支持型的黑客攻击。攻击以关键基础设施为目标,具备持续性,且缺乏明确的经济利益目的,结合创建TRITON攻击框架所需的充足技术资源来看,这明显是国家黑客形为。可以从以下几方面来作出判断:
过程控制和安全仪表系统(Safety Instrumented Systems)背景现代工业过程控制和自动化系统依靠各种先进的控制系统和安全功能,这些系统和功能通常被称为工业控制系统(ICS)或操作技术(OT)。 分布式控制系统(DCS)为操作人员提供远程监视和控制工业过程的能力。它是由计算机、软件应用程序和控制器组成的计算机控制系统。工程工作站是用来对控制系统应用和其他控制系统设备进行配置、维护和诊断的独立计算机。 安全仪表系统(Safety Instrumented Systems,SIS)是一个独立的控制系统,可独立监控受控过程状态。如果过程超过定义危险状态的参数,则SIS会尝试将过程恢复到安全状态或自动执行过程的安全关闭。如果SIS和DCS控制都失效,那么只有看工业设施的安全设计了,如对设备(e.g防爆片)的机械保护、物理警报、应急程序和其他危险状况的缓解机制。 资产设备管理者会采用不同方法将工厂的DCS与SIS系统连接起来,传统方法是依赖通信基础设施和控制策略的隔离原则。至少在过去十年间,基于低成本、易用性和信息交流目的,出现了集成DCS和SIS设计的趋势。此次TRITON攻击反映出了DCS与SIS集成设计双向通信的安全风险。 安全仪表系统(SIS)威胁建模和攻击场景针对工控系统(ICS)破坏性攻击的生命周期与其他类型网络攻击类似,但有几个关键的区别。 首先,攻击者的任务是破坏业务流程而不是窃取数据;其次,攻击者必须进行OT侦察,并有足够的专业工程知识来了解目标系统工业过程,以实现对其成功的控制利用。 上图表示过程控制环境中的网络安全和安全控制之间的关系,即使网络安全措施失效,安全控制措施也会防止物理破坏,为了最大化实现物理破坏,网络攻击者还需绕过一些安全控制手段。 以下安全仪表系统(SIS)威胁模型揭露了多种攻击者可用的攻击路径:
攻击意图分析我们认为攻击者的长期目的是造成物理破坏,基于这样的事实,攻击者具备了操纵过程或关闭设备的能力后,首先会在DCS系统上形成驻留,以伺机入侵SIS系统。对DCS和SIS系统的入侵会导致物理和机械保障措施的最大程度破坏。 一旦渗透进入SIS网络后,攻击者会立即部署预先构建的TRITON攻击框架,利用TriStation协议与SIS控制器发起通信,攻击者可以发送停止命令形成进程关闭,或向SIS控制器上传恶意代码造成保护失效。与此不同的是,攻击者为了在SIS控制器中形成功能控制逻辑,会在一段时间内反复进行多次尝试,即使由于攻击脚本的条件检查提示出错,但攻击者还会继续尝试,这也表明攻击者的最终意图就是要造成控制进程的意外关闭。 值得注意的是,我们曾多次发现了一些长期入侵工控系统(ICS)但并未造成系统破坏或中断的攻击事件,如长年入侵西方ICS的俄罗斯沙虫团队(Sandworm)等组织,他们似乎只是入侵,还没表现出明显的指哪打哪的系统中断攻击能力。 TRITON恶意软件功能TRITON攻击框架具备多种恶意功能,包括程序读写、各种功能读写以及查询SIS控制器状态,但trilog.exe样本只具备某些功能,不包括TRITON的全面侦察功能。 TRITON恶意软件具备与Triconex SIS控制器进行通信的能力(如发送特定指令,实现关停或内容读取),并可用攻击者定义的Payload对其进行远程重编译。Mandiant分析的TRITON样本中包含了攻击者制作的运行Triconex控制器执行表的程序,该样本包含了一个正常且监控控制器运行状态的合法程序,如果控制器发生失效故障,TRITON会尝试返回一个伪造的正常运行状态;如果控制器发生故障而在规定时间内未恢复到安全状态时,则该样本将会用无效数据覆盖SIS控制器中的恶意程序形成隐蔽。 TRITON攻击技术分析TRITON攻击框架会被部署在运行有Windows操作系统的SIS工程工作站中,其中的恶意软件伪装成合法的用于查看日志的TriStation Triconex Trilog应用程序,并通过一个Py2EXE编译后的Python脚本进行植入,而该Python脚本程序又依赖于一个包含标准Python库和开源库的zip压缩文件,以及攻击者开发的用于与Triconex控制器交互的Triconex攻击框架。 与可执行的恶意程序一起,还会生成两个二进制文件inject.bin(恶意功能代码)和imain.bin(恶意控制逻辑)作为攻击控制器的Payload,这两个文件名也被硬编码写入到了Py2EXE编译的python脚本中。 Trilog.exe在命令行中会选择目标Triconex设备IP地址作为攻击选项,它没有利用底层TRITON库的Triconex设备发现功能,而是为环境中的每个目标控制器分别调用trilog.exe实例,一旦被调用,trilog.exe将检查控制器状态,然后读取由TriStation协议公开的配置信息,如果控制器处于运行状态,trilog.exe会把两个Payload文件inject.bin和imain.bin进行编码,并将它们传递给通信库,以便将其附加到控制器的程序存储器和执行表中。 当Payload文件被插入Triconex控制器内存后,脚本开始倒计时,并执行控制器状态定期检查,如果检测到控制器错误,通信库的方法SafeAppendProgramMod会尝试使用TriStation协议命令将控制器重置为之前状态,如果检测到控制器失效,trilog.exe会向内存尝试写入一个小的“虚拟”程序。我们认为这是一种反取证技术,用于隐藏Triconex控制器中的攻击代码。 Mandiant与被攻击企业合作,利用实验室环境中有效的Triconex控制器运行trilog.exe后,在恶意软件中发现了一个防止Payload文件持久驻留的检查条件,Mandiant通过修改攻击脚本删除该检查条件后,Payload文件则会持久驻留于控制器内存中,且不影响控制器运行。 TRITON可以执行合法TriStation应用程序的TriStation协议,并通过该协议来配置SIS控制器。 另外,攻击者还创建了一个名为TsHi的高层接口,通过该接口使用TRITON框架实现攻击脚本执行。TsHi接口暴露了恶意软件的侦察和攻击能力,这些功能实现通常需要接收来自用户的二进制数据,并在数据传递到低级库中以进行序列化到网络的过程之前,会进行代码“签名”和校验步骤。 另一个攻击者编写的模块TsBase则包含了TsHi调用函数,它能将攻击者的预期操作转化为相应的TriStation协议功能代码。对于某些功能而言,它还可将数据打包填充为适当格式。 TsLow攻击模块实现了TriStation UDP通信协议。TsBase库则主要依赖ts_exec方法,该方法采用功能代码和预期响应代码,并通过UDP将Payload命令序列化,它还会检查控制器对期望值的响应,并当检查成功或失败时,返回相应的数据结构表示对象。 TsLow中还包含了用于检查目标控制器连通性的连接测试方法,如果调用没发现目标,它会运行设备发现功能detect_ip,该功能使用IP广播包方式,通过脚本调用,在TriStation协议中执行“ping”消息,来探测控制器。 防护建议为避免遭受TRITON类攻击,资产设备管理者可以考虑以下几种防护措施:
下图为Triconex系统主机架钥匙开关:
IoC威胁指标
|