工控系统攻击
本文系原创,转载请说明出处
Please Subscribe Wechat Official Account:信安科研人,获取更多的原创安全资讯
我将ICS攻击按照从小到大的方法分成了:工控设备组件攻击、工控设备攻击、工控网络协议攻击、工控系统攻击。这四类之间不免有部分重合,将会按照内容侧重点进行分类,例如,本文第一个SIS安全仪表攻击,内容中有部分介绍安全仪表设备也有部分介绍协议,综合利用,归为系统。
一 安全仪表系统 Safe Instrumentation System
Black Hat USA 2018
恶意软件样本:
团队:Nozomi Networks
作者:Alessandro Di Pinto, Younes Dragoni, Andrea Carcano
1.1 什么是安全仪表系统
Safe Instrumentation System安全仪表系统,又称为工业安全系统( Industrial Safety Systems),是指专门用在关键过程系统(Critical process systems)的
功能:主要为工厂控制系统中预警控制部分,对控制系统中的危险操作结果实施报警、调节或停机控制,是工厂企业自动控制中的重要组成部分。
例如:安全仪表系统常用在过程(例如石化、化工、核能)设备的防备机制,例如:
-
燃料气压太高,需关闭主燃料气体阀
-
反应器温度太高,需要开启冷却阀
-
蒸馏塔压力太高,需开关泄压阀。
组成结构:SIS使用的设备一般是一种特殊的PLC,其包含主处理器、内置诊断、冗余管理系统以及输入和输出的故障检测。
工作原理:如果出现超出安全域范围的操作时,SIS系统会执行控制功能,以安全、可预测的方式关闭生产流程。
1.2 攻击方法 Triton病毒
攻击目标:沙特阿拉伯石化加工厂
攻击设备:施耐德电气的Triconex安全仪表系统; mp3008CPU 的Trionex,运行的固件版本10.0-10.4
攻击流程:
-
攻击者先渗透入目标公司的IT网络,文中提到的是传统渗透手段,如后门软件、远程控制等。
-
接着转移到OT网络,对于Triton转移的技术,文中提到,感染OT可能使用的是社会工程技术,欺骗OT工程师下载一个名叫trilog.exe的文件。可能1:如U盘里面存放恶意软件并丢到工厂内由工厂内工程师插入工厂内计算机以开始感染;可能2:因为命名为trilog.exe,工程师可能认为是个与tristation等设备相关的程序,攻击者通过发送钓鱼邮件诱使工程师下载到内网OT。
-
然后,恶意软件的释放器(dropper)trilog.exe文件,连接到目标Triconex,向SIS设备注入恶意负载文件imain.bin、inject.bin。
-
trilog.exe执行恶意操作,如读取、注入或者执行imain.bin等文件中的恶意指令。
恶意软件制作语言:python
1.3 Triton复现技术细节
作者为了更深入了解Triton病毒的功能,作者搭建了1:1的SIS环境,以逆向工程为主,逆向组态软件、协议栈、SIS设备,以获取可能用来制作Triton的具体信息。
步骤一 信息与设备收集
目的:工欲善其事必先利其器,先搭建环境
搭建方法:
-
通过多个渠道采购必要的控制系统组件,如下所示:
-
Triconex牌SIS控制器供应商网站
-
咨询专家
-
网络搜索:FTP、开放目录等
-
-
获取Triconex牌SIS控制器
-
从供应商处获取——直接从施耐德电气公司购买新设备。
-
从ebay或阿里巴巴等在线电子商务网站获取。
-
注意:设备的型号和版本要正确,需与TRITON攻击目标相同的系统。TRITON病毒攻击的是:Trionex mp3008CPU模块,运行的固件版本10.0-10.4。
步骤二 逆向SIS组态软件/工程师站Tristation
通信架构:
TriStation组态软件/工作站 <=TriStation协议=> Triconex设备
目标一 :获取TriStation中包含的关键信息
实验设备:TriStation 1131 v4.9.0
关键信息包括:与控制器交互所需的所有信息,包括如何识别控制器不同的状态和所有模块的信息。
信息获取方法:逆向工程,从软件包中包含了对每个文件的详细描述,很容易地查找所需的功能隐藏在哪个软件组件当中。
可利用信息:
(1)TriStation软件中的扩展名为.pt 2的密码保护文件中存储了包含Triconex控制器内逻辑程序、配置详情和行为定义等关键信息。
(2)超级用户。TriStatioan软件v4.9.0 包含两个超级用户,可以打开任何项目文件。这两个超级用户可能是产品支持团队用来帮助客户解决技术问题而预设的。
这两个未授权的超级用户名是:
T****FD
T****BD
对于TFD用户,登录时需要一个ticket number,该number可以通过逆向工程和附加认证。这证实了用户的角色是产品支持团队用于客户支持的。
然而,用户TBD用户可以通过插入从TriStation软件提取的硬编码凭证来访问项目文件。
一旦用户TBD登录,就启用了其他用户无法使用的隐藏功能菜单。隐藏菜单提供了对普通用户来说无法使用的大量额外功能的使用权限。
此外,当日志记录为TBD用户登陆时,TriStation软件还会暴露关于系统逻辑的链接/编译阶段的内部信息如下图。这些额外的数据对于攻击者具有很高的价值,因为它详细描述了程序编译过程中所涉及的所有命令。
这些信息让攻击者创建恶意OT载荷变得非常容易。然而,作者研究发现TRITON病毒并没有使用这个漏洞。
步骤三 了解Tristation通信协议
根据文件描述,网络通信的代码位于 “tr1com.dll”文件中。通过分析这个dll文件可以提取大量关于TriStation协议语法定义的信息,这些信息完备记录了协议各种行为。
步骤四 提取Triconex的硬件信息
Triconex的定义文件为”TR1HWDEF.HWD“,包含大量信息,这些信息可以用来进行网络流量分析,以帮助远程的设备探测,探测这个设备是否是Triconex 硬件。
1.4 总结
作者以Triton病毒为研究对象,分析了历史上第一个SIS系统的攻击案例,使用的是逆向工程方法,分析了Tristation工作站、通信协议、Triconex设备,可以发现,这些设备的安全措施比较拉,例如工作站软件可随意逆向,每个组件包含具体的功能信息,甚至包含超级用户;通信协议的实现方法可以通过逆向工作站组件完全实现,且不存在认证、加密等安全措施;设备固件里面存在大量的可利用信息等等。这为攻击者带来巨大的可利用空间。
二 SCADA 系统 Supervisory control and data acquisition
2.1 SCADA是什么?
功能:监视、控制、集中
指一个可以监控及控制所有设备的集中式系统,或是在由分散在一个区域(小到一个工厂,大到一个国家)中许多系统的组合。其中大部分的控制是由远程终端控制系统(RTU)或PLC进行,主系统一般只作系统监控层级的控制。
本质:是个软件系统
系统组成:
参考:
大致可分为三大类:主站系统、通讯系统、远程终端单元
主站系统(上图最左边):
- 通讯前置系统。主要负责解析各种不同的规约,完成通讯接口数据处理,包括数据转发。包括前置计算机。串口池或者MODEM 池,机架,防雷措施和网络接口。
- 实时数据库系统,主要包括运行实时数据库的服务器。
- 工程师工作站。负责系统的组态、画面制作和系统的各种维护。
- 生产调度工作站。是监控系统的主要用户,显示画面,画面浏览,实现各种报警等。
- 各种监控工作站。主要用于特别庞大的系统,几个人已经无法监控的情况,这时会根据需要,设立各种的监控工作站,每个工作站有人员工作。
- 历史数据库服务器。是SCADA系统保存历史数据的服务器。
- WEB服务器。是现在SCADA主站系统的一个流行趋势,只要用户装有浏览器软件,得到相应的授权,就可以访问相应的他关心的数据。
- 上层应用工作站。主要用于实时数据和历史数据的挖掘工作。在电力系统比如潮流分析,负荷预测,事故追忆,电网稳定性分析,能量管理 等等。在自来水行业包括管网压力损耗分析,管网经济性分析,管网漏失分析等。在采油工程上,包括示功图显示,示功图分析,泵况分析,功图计产等等。
通讯系统(中间):
参考文章中是按照有线和无线来分类,本质上是声光电磁。
有线方式如:音频电缆,架空明线,载波电缆,同轴电缆,光纤,电力载波等。在有线上传输大体分为基带传输和调制传输,基带传输是在介质上传输的是数字信号,可能也要经过信号变化。调制解调传输要经过模拟数字变换的传输。很多介质既可以作为基带传输也可以作为调制传输。
无线方式如:电台、微波、卫星、光线、声波等手段。
远程终端单元(上图最右边):
RTU,一般包括通讯处理单元、开关量采集单元、脉冲量采集单元、模拟量采集单元、模拟量输出单元,开关量输出单元和脉冲量输出单元等构成。还有一些其他的接口方式,比如电力变压器的分接头,气象的格雷码接口,水文的BCD码接口等等。
2.2 SCADA系统常见攻击面与攻击方式
2.2.1 远程控制端:
硬件端设备如PLC、RTU等。
常见攻击面:PLC、RTU。
攻击方式:注入恶意的控制逻辑程序至PLC、PLC的固件修改攻击等。
2.2.2 通信系统:
常见攻击面:不必要的开放的端口和服务、通信信道、通信协议漏洞
攻击方式:对应的,一些开放的端口上的服务存在漏洞,攻击者可以通过向端口发送数据包造成有效攻击如探测设备、系统拓扑、甚至是可利用的exploit;对于通信信道攻击面,很多SCADA系统可以使用IT的协议如FTP、SSH等,有很多针对FTP、SSH信道的攻击;对于通信协议漏洞攻击面,很多工控协议因设计初期没有考虑安全问题,存在缺乏认证、访问控制、明文、协议逻辑错误等问题。
2.2.3 主站系统:
常见攻击面:软件漏洞、补丁管理系统
攻击方式:缓冲区溢出、WEB应用漏洞利用如SQL注入;补丁管理应用程序攻击
2.3 攻击案例一:一SCADA系统错误顺序逻辑攻击(False sequential logic attack)及其物理影响分析
场景模型:SCADA系统以及CPS系统。CPS简化为传感器、控制器、执行器,以及影响的物理空间。
灵感:数据是SCADA的核心,作者专注数据这个核心,提出虚假顺序逻辑攻击;SCADA系统中的物理过程控制可以认为是参数值、执行时间和顺序逻辑的组合;传感器监控物理过程并将测量结果发送到控制器。控制器向执行器发送控制信号。执行器执行命令以操作物理系统。如果攻击者的最终目标是物理过程,必须至少实现以下效果之一:
- 传感器返回不正确的测量值。
- 控制器发出不正确的命令。
- 执行器忽略控制输入或执行不正确的命令。
攻击方法本质:假设生产顺序必须为ABCD,那么错误顺序逻辑攻击就是通过攻击传感器、控制器、执行器达到ACDB、BCDA的效果,以对生产过程造成攻击,危害物理世界。这种攻击我觉得最重要的几点:非常生产结构、流程;以及如何通过以上的三个攻击面,以注入虚假数据等攻击手段实现一个错误的顺序逻辑攻击;怎样错误的顺序能够造成危害,造成最大的危害。
示例:一个三水箱系统
水箱T1 T2 T3,泵P1 P2 ,配料A B,最终产品C, 阀门V1,高度h1 h2。
该系统代表一个中和过程,它是T1中的成分A和T2中的成分B的混合物,以获得T3中的产物C。T3中的液体由泵P1和P2供应,通过T3出口管道的流量由阀门V1控制。此过程中的所有控制命令按如下顺序执行:
最初,泵 P1 和 P2 停止。阀门 V1 关闭。坦克 T3 是空的
- 1步:打开 P1。成分A流入T3。
- 2步:一分钟后,T3中的液位达到h1,P1关闭。
- 3步:打开 P2。成分B流入T3。
- 4步:一分钟后,T3中的液位达到h2,P2关闭。
- 5步:T3中的中和过程持续1分钟,然后打开V1。
- 6步:一分钟后,排出T3中的产物C并关闭V1。
当系统进入初始状态时,泵 P1 重新启动并开始新的工艺周期。
状态转换关系图如下,红色代表攻击转换路径:
解释一下:
v~表示一种攻击方式,指向大圆圈,大圆圈里包含了几个小圆圈,大圆圈代表的是一种错误顺序攻击方式;
里面的小圆圈是一个状态,小圆圈里面包含一个三元素元组,元组整体代表着泵和阀门的开关状态,从左到右依次表示P1、P2、V1,也就是泵1、泵2、阀门1;
元组里面的数字只有0和1两种情况,0代表关,1代表开,例如(0,1,0)代表泵1关泵2开阀门1关这个状态;
箭头t代表状态转换,从一个状态转到另一个状态,t1——t6依次代表:
t'1代表P1关,而t1代表P1开,其他的t'如下:
那就不难理解了,案例1也就是表中的case1,P1按照状态是t1-t2,现在是t'1-t'2,也就是本来是开关变成关开。
其他的可自行依此类推以理解。
总结
这篇文章没有将过多的工程性技术细节,比如怎么编写恶意程序让SCADA这个执行顺序改变,而是更偏向一种怎样构造攻击指令顺序达到一个损坏生产、物理设备的结果。作者通过有限状态机和代数模型的方式,为所构造的化学中和生产系统,构建出一个状态机,并通过攻击向量破坏原有状态机以达到攻击效果。
作者最后使用MATLAB和SIMULINK中模拟了所有的攻击向量,这里不再展示。
2.4 攻击案例2 中间人攻击
中间人攻击的原理这里不再赘述,这篇文章更像是2.3案例的理论的技术实现,通过调研生产环境流程,针对生产流程中的每一个部分,考虑攻击对其的影响,综合评估以达到最大的攻击效果,同时考虑如何构造虚假的数据让攻击达到管理员无法察觉的程度。
2.5 攻击案例3 DNP3协议基础上的SCADA攻击
背景——DNP3协议:
DNP3协议进行SCADA系统组件之间的控制和数据通信,它是一种基于主从的协议。
以电厂为场景:
通常,电厂一般会有一个中央控制站,用于管理和监控其电网部分。控制站充当顶级DNP3 主站,从变电站收集数据,以人类可读的编码显示数据,并做出控制决策。
位于远程变电站中的数据聚合器既充当继电器的DNP3 主站来控制和收集来自监控设备的数据,又充当 SCADA的DNP3 从站,将其收集的所有数据传输回控制站。
上图描述了典型的SCADA网络两级架构。
攻击目的或预期效果:
洪泛攻击
所用漏洞:
1)缓冲机制漏洞
主模块询问中继器,并将接收到的(继电器)事件存储到从模块事件存储器中。数据聚合器通过从从模块事件存储器的读取一部分来响应来自控制站的查询。
出现此漏洞的原因是聚合器对继电器的轮询与控制站对聚合器的查询是异步执行。因此本质上,聚合器的从存储器的内存是一个缓冲区,由继电器发送来的响应填充,并回应控制站查询请求以清空。
商业 DNP3 设备通常使用两种类型的事件缓冲区:事件序列 和 最新事件。前者只是将所有接收的数据存储在事件缓冲区中。每个新事件都会占用新的缓冲区空间; 如果缓冲区已满,则丢弃该事件。这种类型的缓冲区适用于各种应用,包括网格状态估计和趋势分析。
相比之下,最新事件缓冲区为聚合器可能获取的每个单独数据点保留空间。当事件到达时,与其携带的数据点关联的所有缓冲区位置都将被覆盖,无论其当前值是否首先由控制站查询读出。
攻击可以伪装成继电器等slave向DNP3 从站发送很多的未经请求的事件,以至于缓冲区被填满,从而让合法的从站的事件信息被聚合器丢失,直到缓冲区被来自控制站的查询清空。
2)认证机制漏洞
DNP3 协议目前(指到2012年)不支持身份验证,以防止攻击者欺骗中继。攻击者可以使用 ARP 欺骗等技术将受害者中继的流量重定向到自身,然后欺骗受害者中继以与数据聚合器建立新连接,从而抑制正常中继。攻击者还可以充当受害者中继和数据聚合器之间的秘密中间人,并主动重播从受害者中继捕获的未经请求的响应事件,以耗尽缓冲区资源。
三 总结
本文介绍了两种工控系统的的安全问题以及对应的攻击方法,一个是SIS系统,另一个是SCADA系统。有漏洞才会有漏洞利用,找出工控系统的漏洞才是成功攻击工控系统的第一步。
工控系统大体上离不开这三种组成成分:网络、软件、硬件。本文按照这三大类划分具体的工控系统漏洞,如软件的缓冲区溢出漏洞、网络的协议漏洞、硬件的硬编码信息泄露漏洞等等。
对于漏洞利用,可以发现工控系统中利用协议漏洞进行的攻击较为常见,证实了协议是工控系统的安全问题的核心,可以利用协议漏洞如认证机制缺失漏洞进行中间人攻击、协议明文漏洞构建虚假数据包与远端设备通信等等。
最后,通过对工控系统漏洞利用能够对物理世界造成什么程度影响,可以说也是个比较新的研究点。