深度:震网病毒的秘密(一)

技术 作者:冷鹰 2013-12-03 11:26:39
引子:看到litdg翻译的《震网的秘密兄弟(一)》 QQ截图20131203192436 感觉有些地方跟我想象的不一样,所以在litdg兄的基础上就行了更新,我是搞工业自动化的,恰巧阴差阳错的跟信息安全有了些交集,所以以ICS(工业控制系统)的视角,来阐述我对原文的理解。 真正用来破坏伊朗核设施的震网病毒,其复杂程度超出了所有人的预料。 QQ截图20131203192458 作为第一个被发现的网络攻击武器,震网病毒在被发现后三年来仍然困扰着军事战略家、信息安全专家、政治决策者和广大公众。围绕震网病毒的分析主要有:(1)它是如何攻击位于Natanz的伊朗核设施的?(2)它是如何隐藏自己的?(3)它是如何违背开发者的期望并扩散到Natanz之外的?但是这些分析的主要内容要么是错误的要么是不完整的。 因为,震网病毒并不是一个而是一对。大家的注意力全都关注着震网病毒的“简单功能”,即该功能用来改变铀浓缩的离心机转速,而另外一个被忽视的功能是却是更加的复杂和隐秘的。这一“复杂功能”对于了解ICS(IndustrialControl System的简称)信息安全的人来说简直是梦魇,奇怪的是“复杂功能”竟然先于“简单功能”出现。“简单功能”在几年后才出现,不久即被发现。 随着伊朗的核计划成为世界舆论的中心,这有利于我们更清晰的了解通过程序来尝试破坏其核计划。震网病毒对于伊朗核计划的真实影响并不确定,因为到底有多少控制器真正的被感染,并不清楚,没有这方面的消息。但是不管怎样,通过深入的分析我们可以知道攻击者的意图、以及如何实现意图。我在过去的三年里对震网病毒进行分析,不但分析其计算机代码,还有被攻击工厂中采用的硬件设备以及核工厂的操作流程。我的发现如下全景图所示,它包含震网病毒的第一个不为人知的变种(“复杂功能”),这一变种需要我们重新评估其攻击。事实上这一变种要比公众所认知的网络武器危险的多。 2007年有人在计算机信息安全网站VirusTotal上提交了一段代码,后来被证实是震网病毒的第一个变种(“复杂功能”),至少是我们已知的第一个。对于第一个震网病毒变种,在五年后(2012)大家基于震网病毒的第二个变种(“简单功能”)的了解基础上,才意识到这是震网病毒。如果没有后来的“简单功能”版本,老的震网病毒(“复杂功能”)可能至今沉睡在反病毒研究者的档案中,并且不会被认定为历史上最具攻击性的病毒之一。今天,我们已经知道, 拥有“复杂功能”的震网病毒包含一个payload,该payload可以严重的干扰位于Natanz的铀浓缩工厂中的离心机保护系统。 后来的震网病毒,被大家熟知的那个“简单功能”版,控制离心机的转速,通过提高其转速而起到破坏离心机的效果。老版本的震网病毒(“复杂功能”)其Payload采用了不同的策略,它用来破坏用于保护离心机的Safe系统。(译者注:工控系统中通常会部署Safe系统,当现场的控制器和执行器出现异常的时候,该Safe系统会运行,紧急停车防止事故发生。而本文论述的震网病毒“复杂功能”版,将Safe系统也攻陷了。震网病毒的“简单功能”版在没有“复杂功能”的配合下是不能够损坏离心机的,因为离心机的转速不正常的情况下,Safe系统就会工作,会停止离心机的运转,这样伊朗的技术人员能够迅速的发现震网病毒。只有Safe系统也被破坏的情况下,震网病毒的“简单功能”才能够随意的控制离心机的转速。当然伊朗的Safe系统与工业现场的传统意义上的Safe系统有所不同,该Safe系统可以说是辅助系统,因为其离心机质量不过关,必须通过该Safe系统保证整体系统的正常运转。工业现场中很重要的一点是连续长时间的稳定运行)Safe系统通常部署在发生异常的条件下,可能导致设备毁坏或生命财产损失的地方。在Natanz,我们看见一个特殊的安全保护系统,通过它的部署可以使得过时且不可靠的离心机型号“IR-1”持续的运转。安全保护系统是伊朗核计划的关键组成部分,如果没有它,离心机IR-1几乎无用。   IR-1离心机是伊朗铀浓缩的根基。它可以追溯到从20世纪60年代末由欧洲设计,70年代初被窃取,并被巴基斯坦的核贩子A.Q.Khan稍稍改进。全金属设计的IR-1是可以稳定的运行的,前提是其零件的制造具有一定精度,并且关键组件例如高质量频率转换器和恒力矩驱动质量很高。但是伊朗人并未设法从过时的设计中获取更高的可靠性。因此他们不得不降级离心机的运行压力在Natanz工厂。较低的运行压力意味着对转子的机械压力变小,这样离心机转子损坏就会降低,从而减少了由于转子损坏而使得离心机离线的数量。但是较小的工作压力意味着较少的产出,因而效率较低。IR-1离心机在最佳情况下,只能达到其最高产能的一半。   这种不可靠和低效率的IR-1型离心机,对于伊朗来说有一个显而易见的有点,伊朗可以大规模的制造生产。伊朗通过数量来弥补不稳定性和低效率,他们能够接受在运行过程中一定数量的离心机损坏,因为他们制造离心机的速度比离心机损坏的速度要快多了。但是要想让所有的离心机工作,伊朗需要下一番功夫。通常,离心处理操作是一个严苛的工业流程,在流程运行过程中,它不可以存在任何的问题,甚至连小型设备的问题也不可以。伊朗建立了一套级联保护系统(译者:类似于Safe系统),它用来保证离心流程持续进行,即使离心机坏掉。 在离心机层,级联保护系统在每个离心机上安装了三个截止阀。通过关闭这些阀门,运行出故障的离心机可以从现有的系统上隔离出来。隔离后的离心机可以停机并被维护工程师替换,而工艺流程仍然正常运行。 QQ截图20131203192512 上图是2008年,当时的总统艾哈迈迪.内贾德在Natanz的控制室观看SCADA的场景。面对摄影师的屏幕显示两个离心机已经被隔离,提示存在问题,但这并没有影响整个工艺流程的持续运行。(红色高亮显示的是有问题的离心机) 但是这种隔离阀的解决方案也导致了许多问题。当基于不可靠的离心机运行时,离心机会经常被关闭,当同组的离心机已经被隔离的情况下,维护工程师可能没有机会替换另一个刚刚毁坏的离心机(译者注:通常工业现场采用冗余,因此伊朗也很可能采用了离心机的冗余策略,即一个坏掉,可以马上切换到另外一个使其工作,问题他们的离心机太脆弱,会出现两个都坏了的情况。)如果同一个组中的离心机都停机了,运行压力(使用离心机进行铀浓缩过程中非常敏感的参数)将会升高,从而导致各种各样的问题。 伊朗人发现了一个很有创造力的解决方案来处理这一问题,在每一个铀浓缩组里,都安装了一个排气阀门,当同一组中的多个离心机停机被隔离时,随着压力的升高,该排气阀门可以排气并降低压力。在每一个离心处理组中,压力有传感器检测,如果压力超过限值,排气阀门就会被打开,降低压力。 这一系统可以保证Natanz的离心机运转,但是这也让它陷入了可能被远程网络攻击的泥潭,有时候会让人怀疑涉及这个系统的人是不是头脑混乱。 Nataz的级联保护系统基于西门子的S7-417系列工业控制器,这些控制器用来操控每个离心机上的阀门和压力传感器,共6组164台离心机。控制器可以被理解成一个嵌入式计算机系统,它直接连接物理设备,例如阀门。震网病毒被设计用来感染这些控制器,然后以用户难以想象的方式取得控制权,这种情况从来没有在ICS相关的会议上讨论过。 感染了震网病毒的控制器从真实的物理层断开了,合法的控制逻辑变成了震网病毒想让他展现的样子(译者注:就是控制器不在控制具体的物理信号和物理设备,仅仅是对上层应用程序提供一个看上去它还在正常工作的假象而已。)在攻击序列执行前(大概每个月执行一次),病毒代码能够给操作员展示物理现场正确的数据。但是攻击执行时,一切都变了。 震网病毒变种的第一步是隐藏其踪迹,采用了来自好莱坞的策略。震网病毒以21秒为周期,记录级联保护系统的传感器数据,然后在攻击执行时以固定的循环重复着21秒钟的传感器数据。在控制室,一切看起来都正常(译者注:因为攻击执行时,被感染的控制器重复的向控制室的监控中心发送的是正常的21秒周期传感器数据,所以监控中心完全发现不了。),既包括操作员也包括报警系统。 然后震网病毒开始其真正的工作,它首先关闭位于前两组和最后两组离心处理的隔离阀。阻止了受影响的级联系统的气体流出,从而导致其他的离心机压力提升。压力的增加将导致更多的六氟化铀进入离心机,给转子更高的机械应力。最终,压力可能会导致气体六氟化铀固化,从而严重损害离心机。 这种攻击一直持续到攻击者认为达到目的为止,根据监控到的离心机的工作状态而定。如果他们是为了毁灭性的破坏,那么很简单。在Nataz的案例中,一个控制器控制的气体固化可以轻易损坏上百台离心机。听起来这个目标非常有价值,但它也会暴露攻击者。伊朗的工程师在后期的分析中可以轻易的找到事故发生的原因。这次攻击的实现过程中,攻击者密切监视运行的压力和离心机的状态表明,他们小心翼翼的避免毁灭性的损坏。增大运行压力的方式看起来更像是为了让转子寿命更短一些。 不管怎样,攻击者非常谨慎的实施了这次攻击。攻击的代码设计如此精细,因为细小的改变或者配置错误都可能带来很大的影响,甚至导致程序崩溃,一旦崩溃,就会被伊朗的工程师发现从而暴露行踪。 这次过压的攻击结果也是未知的。不管是什么,在2009年的时候,攻击者决定尝试一些新的东西。

关注公众号:拾黑(shiheibook)了解更多

[广告]赞助链接:

四季很好,只要有你,文娱排行榜:https://www.yaopaiming.com/
让资讯触达的更精准有趣:https://www.0xu.cn/

公众号 关注网络尖刀微信公众号
随时掌握互联网精彩
赞助链接