实验箱之高级工业黑客攻击演示及防御

实验箱之高级工业黑客攻击演示及防御

时间:2021-07-24 作者:安帝科技

0x00 工业黑客层级定义

由于工业环境中的生产环境、设备应用场景以及面向的对象等的特殊性,致使围绕它的周边设备也具有与传统网络完全不一样的基本形态,所以在研究工业安全的同时,我们不能以传统网络环境中思维去理解它,我们需要站在更高的维度去理解它。工业黑客我们可以分为三个级别,如下:

初级工业黑客:

不了解何为工业环境和设备,但具备网络知识,有传统网络安全攻击能力,这种黑客同样会导致严重的后果。

中级工业黑客:

对工业设备和工业协议有一定的了解和学习,可以利用工业协议的漏洞发起有针对性的网络攻击。如控制PLC启停、工业勒索等。

高级工业黑客:

了解工业协议,了解具体工业环境下的工艺,能针对具体业务实施具有高度隐蔽的攻击手段,如伊朗的震网。

0x01 实验箱介绍

还是那个实验箱,有不了解的可以翻看前几期文章。前两篇《实验箱之初级工业黑客攻击演示及防御》和《实验箱之中级工业黑客攻击演示及防御》分别介绍了“初级工业黑客”使用传统网络攻击手段导致工业设备瘫痪的演示,和“中级工业黑客”通过向目标设备(PLC)发送特点指令达到控制设备的操作。这一章我们继续讨论“高级工业黑客”的技术演示,以及它是如何通过“数据篡改”方式控制工业设备的,最后我们会讨论一下,面对这样的攻击我们应该如何防护。

0x02 攻击原理分析


图:HMI储水操作界面

在做数据篡改攻击演示之前,大家首先要简单了解一下S7-200SMART编程原理,即如何用代码来控制PLC,以及PLC在接收到HMI的数据后做出相应的逻辑控制,比如本实验中的储水罐控制(如上图),当打开上水阀时,往储水罐中注水,仪表显示水位上升。当打开放水阀时,储水罐向外放水,仪表显示水位下降。当水位达到上下水位警戒值时,PLC对控制阀门进行开关操作。

图:储水罐PLC控制代码

代码解释:

►1和2步骤是PLC控制上水阀和放水阀的开关控制代码(截图中1步骤被无情地舍弃,其与2步骤类似)
►3和4步骤分别是控制注入和放水
►5和6步骤是控制储水罐上限位和下限位的报警
在本实验中,攻击重点是在第5和第6步,通过向HMI和PLC发送伪造指令,使PLC一直处于上水状态,使HMI水位仪表显示值一直处于警戒值以内,并关闭警戒告警。最终实现数据篡改攻击,影响工业生产。
早年前发生在伊朗的“震网病毒”就是通过恶意程序来控制离心机的转速,通过提高其转速而起到破坏离心机的效果,同时以“正常运转”记录回传给管理部门,造成决策的误判。

0x03 攻击演示

向上面演示的那样,要发起数据篡改攻击,就需要了解被攻击目标设备的厂商、型号、组态软件、编程语言、目标控制器等等,然后通过研究分析,挖掘其中各设备或软件中存在的漏洞,最终将这些漏洞通过程序化的方式加以实现,最终达到攻击(或控制)目标设备的目的。
本实验用到的设备是西门子S7-200 SMART,经过研究发现,HMI与PLC之间的通信协议无任何身份认证,所有的数据包都可以被中间人监听、修改和伪造。攻击者可以通过中间人攻击的方式,修改数据包,使得上位机上显示的数据正常,而控制器实际处于异常状态。攻击者要实现此类攻击,就需要对被攻击对象的实际工艺流程非常熟悉,这属于典型的APT行为。

0x04 防御方案

从上面的原理分析中得知,要实现对目标设备的数据篡改攻击,需要满足两个条件:
1、目标设备存在安全缺陷2、可以与目标设备通信的设备结合以上两点就可以导致目标设备被恶意用户操控,为了避免此类事件的发生,可采取如下措施:1、避免目标设备连网,或相关设备连网2、使用安全性更高的设备我们都知道在实际应用环境中,各个生产环境的要求都不一样,不是所有环境都可以做到以上2点,那么在即有的情况下,有没有更好的解决方案呢?这里就来回答一下摘要中提出的问题,如果你能控制核电厂的离心机运行,你想干什么?我们的答案是,采取相应措施,保护国家重要基础设施的安全运行,要在即有的条件下实现数据篡改攻击防护,就要从根源出发:1、能发现操纵程序:这种程序一般都是通过具有控制、复制、注入等功能的宿主程序进行控制的,所以发现它就尤为重要。2、网络防护:该类程序是通过欺骗或伪造控制器与显示器之间的通信数据,所以只要能检测出网络中的异常流量,就可以实现阻断,保护正常生产。

总结

要解决安全事件从发现到防护,就需要从整体出发,对全局流量进行采集,从海量数据中发现非法外联、恶意程序、异常流量等等,再结合大数据与人工智能的方式,绘制完整的流量路径,最终实现并还原安全事件。