热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

对TRITON工业恶意软件的分析(上)

 一、前言上个月FireEye发布了一份安全报告,详细介绍了Mandiant子公司对某个关键基础设施组织应急响应事件的处置过程。该报告中提到了名为TRITON的一个恶意软件框架(还有其他叫法,如TRI

 

一、前言

上个月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系统均被攻击者控制,这表明攻击者想造成非常严重的后果,而不单单是关闭作业流程那么简单。根据调查结果,攻击者针对安全控制器发起了多次攻击,尝试在控制器上部署特定的控制逻辑,并没有选择直接关闭安全控制器,这也进一步证实了这个猜想(但具体结论仍待后续确认)。


推荐阅读
  • 数字图书馆近期展出了一批精选的Linux经典著作,这些书籍虽然部分较为陈旧,但依然具有重要的参考价值。如需转载相关内容,请务必注明来源:小文论坛(http://www.xiaowenbbs.com)。 ... [详细]
  • DVWA学习笔记系列:深入理解CSRF攻击机制
    DVWA学习笔记系列:深入理解CSRF攻击机制 ... [详细]
  • 服务器部署中的安全策略实践与优化
    服务器部署中的安全策略实践与优化 ... [详细]
  • 在使用 SQL Server 时,连接故障是用户最常见的问题之一。通常,连接 SQL Server 的方法有两种:一种是通过 SQL Server 自带的客户端工具,例如 SQL Server Management Studio;另一种是通过第三方应用程序或开发工具进行连接。本文将详细分析导致连接故障的常见原因,并提供相应的解决策略,帮助用户有效排除连接问题。 ... [详细]
  • Python 序列图分割与可视化编程入门教程
    本文介绍了如何使用 Python 进行序列图的快速分割与可视化。通过一个实际案例,详细展示了从需求分析到代码实现的全过程。具体包括如何读取序列图数据、应用分割算法以及利用可视化库生成直观的图表,帮助非编程背景的用户也能轻松上手。 ... [详细]
  • 本文详细解析了使用C++实现的键盘输入记录程序的源代码,该程序在Windows应用程序开发中具有很高的实用价值。键盘记录功能不仅在远程控制软件中广泛应用,还为开发者提供了强大的调试和监控工具。通过具体实例,本文深入探讨了C++键盘记录程序的设计与实现,适合需要相关技术的开发者参考。 ... [详细]
  • Python 程序转换为 EXE 文件:详细解析 .py 脚本打包成独立可执行文件的方法与技巧
    在开发了几个简单的爬虫 Python 程序后,我决定将其封装成独立的可执行文件以便于分发和使用。为了实现这一目标,首先需要解决的是如何将 Python 脚本转换为 EXE 文件。在这个过程中,我选择了 Qt 作为 GUI 框架,因为之前对此并不熟悉,希望通过这个项目进一步学习和掌握 Qt 的基本用法。本文将详细介绍从 .py 脚本到 EXE 文件的整个过程,包括所需工具、具体步骤以及常见问题的解决方案。 ... [详细]
  • 在 Axublog 1.1.0 版本的 `c_login.php` 文件中发现了一个严重的 SQL 注入漏洞。该漏洞允许攻击者通过操纵登录请求中的参数,注入恶意 SQL 代码,从而可能获取敏感信息或对数据库进行未授权操作。建议用户尽快更新到最新版本并采取相应的安全措施以防止潜在的风险。 ... [详细]
  • 在Linux系统中,网络配置是至关重要的任务之一。本文详细解析了Firewalld和Netfilter机制,并探讨了iptables的应用。通过使用`ip addr show`命令来查看网卡IP地址(需要安装`iproute`包),当网卡未分配IP地址或处于关闭状态时,可以通过`ip link set`命令进行配置和激活。此外,文章还介绍了如何利用Firewalld和iptables实现网络流量控制和安全策略管理,为系统管理员提供了实用的操作指南。 ... [详细]
  • 本指南详细介绍了在Linux环境中高效连接MySQL数据库的方法。用户可以通过安装并使用`mysql`客户端工具来实现本地连接,具体命令为:`mysql -u 用户名 -p 密码 -h 主机`。例如,使用管理员账户连接本地MySQL服务器的命令为:`mysql -u root -p pass`。此外,还提供了多种配置优化建议,以确保连接过程更加稳定和高效。 ... [详细]
  • C++ 开发实战:实用技巧与经验分享
    C++ 开发实战:实用技巧与经验分享 ... [详细]
  • 本文深入解析了HTML框架集(FRAMESET)的使用方法及其应用场景。首先介绍了几个关键概念,如如何通过FRAMESET标签将主视图划分为多个独立的区域,每个区域可以加载不同的HTML文件。此外,还详细探讨了FRAMESET在实际开发中的优缺点,并提供了具体的实例代码,帮助开发者更好地理解和应用这一技术。 ... [详细]
  • Linux核心目录解析及其功能概述 ... [详细]
  • Python多线程编程技巧与实战应用详解 ... [详细]
  • 技术日志:使用 Ruby 爬虫抓取拉勾网职位数据并生成词云分析报告
    技术日志:使用 Ruby 爬虫抓取拉勾网职位数据并生成词云分析报告 ... [详细]
author-avatar
fedfedfv_249
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有