SPRITEKING

【震网病毒的秘密 1+2 全篇】

时间:公元13-12-08 栏目:安全 作者:SPRITEKING 吐槽:0 被黑客围观: 876 次





①:

真正用来破坏伊朗核设施的震网病毒,其复杂程度超出了所有人的预料。

QQ图片20131208203605

作为第一个被发现的网络攻击武器,震网病毒在被发现后三年来仍然困扰着军事战略家、信息安全专家、政治决策者和广大公众。围绕震网病毒的分析主要有:

(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几乎无用。

QQ图片20131208204102

IR-1离心机是伊朗铀浓缩的根基。它可以追溯到从20世纪60年代末由欧洲设计,70年代初被窃取,并被巴基斯坦的核贩子A.Q.Khan稍稍改进。全金属设计的IR-1是可以稳定的运行的,前提是其零件的制造具有一定精度,并且关键组件例如高质量频率转换器和恒力矩驱动质量很高。但是伊朗人并未设法从过时的设计中获取更高的可靠性。因此他们不得不降级离心机的运行压力在Natanz工厂。较低的运行压力意味着对转子的机械压力变小,这样离心机转子损坏就会降低,从而减少了由于转子损坏而使得离心机离线的数量。但是较小的工作压力意味着较少的产出,因而效率较低。IR-1离心机在最佳情况下,只能达到其最高产能的一半。

这种不可靠和低效率的IR-1型离心机,对于伊朗来说有一个显而易见的有点,伊朗可以大规模的制造生产。伊朗通过数量来弥补不稳定性和低效率,他们能够接受在运行过程中一定数量的离心机损坏,因为他们制造离心机的速度比离心机损坏的速度要快多了。但是要想让所有的离心机工作,伊朗需要下一番功夫。通常,离心处理操作是一个严苛的工业流程,在流程运行过程中,它不可以存在任何的问题,甚至连小型设备的问题也不可以。伊朗建立了一套级联保护系统(译者:类似于Safe系统),它用来保证离心流程持续进行,即使离心机坏掉。

在离心机层,级联保护系统在每个离心机上安装了三个截止阀。通过关闭这些阀门,运行出故障的离心机可以从现有的系统上隔离出来。隔离后的离心机可以停机并被维护工程师替换,而工艺流程仍然正常运行。

QQ图片20131208203710

上图是2008年,当时的总统艾哈迈迪.内贾德在Natanz的控制室观看SCADA的场景。面对摄影师的屏幕显示两个离心机已经被隔离,提示存在问题,但这并没有影响整个工艺流程的持续运行。(红色高亮显示的是有问题的离心机

但是这种隔离阀的解决方案也导致了许多问题。当基于不可靠的离心机运行时,离心机会经常被关闭,当同组的离心机已经被隔离的情况下,维护工程师可能没有机会替换另一个刚刚毁坏的离心机(译者注:通常工业现场采用冗余,因此伊朗也很可能采用了离心机的冗余策略,即一个坏掉,可以马上切换到另外一个使其工作,问题他们的离心机太脆弱,会出现两个都坏了的情况。)如果同一个组中的离心机都停机了,运行压力(使用离心机进行铀浓缩过程中非常敏感的参数)将会升高,从而导致各种各样的问题。

伊朗人发现了一个很有创造力的解决方案来处理这一问题,在每一个铀浓缩组里,都安装了一个排气阀门,当同一组中的多个离心机停机被隔离时,随着压力的升高,该排气阀门可以排气并降低压力。在每一个离心处理组中,压力有传感器检测,如果压力超过限值,排气阀门就会被打开,降低压力。

这一系统可以保证Natanz的离心机运转,但是这也让它陷入了可能被远程网络攻击的泥潭,有时候会让人怀疑涉及这个系统的人是不是头脑混乱。

Nataz的级联保护系统基于西门子的S7-417系列工业控制器,这些控制器用来操控每个离心机上的阀门和压力传感器,共6164台离心机。控制器可以被理解成一个嵌入式计算机系统,它直接连接物理设备,例如阀门。震网病毒被设计用来感染这些控制器,然后以用户难以想象的方式取得控制权,这种情况从来没有在ICS相关的会议上讨论过。

感染了震网病毒的控制器从真实的物理层断开了,合法的控制逻辑变成了震网病毒想让他展现的样子(译者注:就是控制器不在控制具体的物理信号和物理设备,仅仅是对上层应用程序提供一个看上去它还在正常工作的假象而已。)在攻击序列执行前(大概每个月执行一次),病毒代码能够给操作员展示物理现场正确的数据。但是攻击执行时,一切都变了。

震网病毒变种的第一步是隐藏其踪迹,采用了来自好莱坞的策略。震网病毒以21秒为周期,记录级联保护系统的传感器数据,然后在攻击执行时以固定的循环重复着21秒钟的传感器数据。在控制室,一切看起来都正常(译者注:因为攻击执行时,被感染的控制器重复的向控制室的监控中心发送的是正常的21秒周期传感器数据,所以监控中心完全发现不了。),既包括操作员也包括报警系统。

然后震网病毒开始其真正的工作,它首先关闭位于前两组和最后两组离心处理的隔离阀。阻止了受影响的级联系统的气体流出,从而导致其他的离心机压力提升。压力的增加将导致更多的六氟化铀进入离心机,给转子更高的机械应力。最终,压力可能会导致气体六氟化铀固化,从而严重损害离心机。

这种攻击一直持续到攻击者认为达到目的为止,根据监控到的离心机的工作状态而定。如果他们是为了毁灭性的破坏,那么很简单。在Nataz的案例中,一个控制器控制的气体固化可以轻易损坏上百台离心机。听起来这个目标非常有价值,但它也会暴露攻击者。伊朗的工程师在后期的分析中可以轻易的找到事故发生的原因。这次攻击的实现过程中,攻击者密切监视运行的压力和离心机的状态表明,他们小心翼翼的避免毁灭性的损坏。增大运行压力的方式看起来更像是为了让转子寿命更短一些。

不管怎样,攻击者非常谨慎的实施了这次攻击。攻击的代码设计如此精细,因为细小的改变或者配置错误都可能带来很大的影响,甚至导致程序崩溃,一旦崩溃,就会被伊朗的工程师发现从而暴露行踪。

这次过压的攻击结果也是未知的。不管是什么,在2009年的时候,攻击者决定尝试一些新的东西。

 

 

 

 

 

 

②:

新的震网病毒变种(译者注:“简单功能”版),与原始版完全不一样(译者注:“复杂功能”),与震网病毒原始版相比,它更简单且缺少隐蔽性。震网病毒的“简单功能”版用来攻击Natanz工厂中的离心机的驱动系统,该驱动系统用来控制转子的转速。(译者注:可以参照前文中的第二张图,“复杂功能”版用来攻击给离心机降压的保护系统,“简单功能”版用来直接攻击离心机的电机驱动系统)

与“复杂功能”版相比,震网病毒的“简单功能”版其传播方式也不同,这一病毒程序的早期版本必须安装在目标机上,最有可能是通过工程师站(译者注:几乎所有的自动化厂商的现场设备都会存在工程师站,工厂控制组态和设计均由工程师站来进行,任何自动化厂商的工程师站如果被入侵的话,以脚本小子的技术水平都可能会对工业现场的设备造成极大影响,可以说工程师站就相当于工厂控制系统的root账户)或者通过USB来感染西门子控制器的配置文件。换句话说,震网病毒的“简单版本”需要攻击者来故意传播。

震网病毒的新版本(译者注:“简单功能”版)可以自我复制,通过网络和USB来扩散到所有的计算机中,这些计算机不仅包含安装了西门子组态软件的PC,其他的也一样感染。(译者注:西门子控制系统的组态软件主要是WinCC,伊朗采用的就是WinCC,整个工业控制系统的网络中,安装了组态软件的PC通常是叫做工程师站,单纯监控类软件的叫做操作员站,当然还有存储数据的DataServer等等,因此一个工厂中的控制层网络中的PC数量可能在几十台,甚至更多。震网病毒的感染是将工厂网络中所有的PC都感染了。)这表明,攻击者已经不必通过具有访问权限的人员来直接进行病毒传播了,也不用直接访问由其他部门安装配置的离心机系统(译者注:因为病毒已经在控制层网络中扩散开了,现场的设备层离心机是接在了控制层网络中的,所以此时所有的离心机驱动都能够访问控制了。)。

更重要的是,震网病毒使用了之前并未被发现的微软Windows软件漏洞即“0day”漏洞,这些“0 day”漏洞在市场上价值数十万美元。新版本的震网病毒(“简单功能”版)盗用了数字签名,从而使得它看上去是一个合法的驱动程序,事实上最新版的Windows操作系统仍然会认为它合法。

这一切都表明,某个新组织开发了震网病毒(“简单功能”版),该病毒包含了宝贵了0 day漏洞和窃取的数字证书。相比之下,开发震网病毒(“复杂功能”版)用来实现对离心机进行压力攻击的团队是一群顶尖的工控系统安全专家和游离余IT信息安全之外的信息安全程序开发者(译者注:说白了,这些人就是专门搞工控系统信息安全的,包括程序开发者)。而用于提高离心机速度进行攻击的震网病毒(“简单功能”版),则指向了更大的范围和新的重点。如果震网病毒是美国开发的,根据已经公布的资料可知就是美国人开发的,这只有唯一的理论上的地点:位于马里兰州(MaryLand)米德堡(FortMeade)的美国国家安全局总部。

虽然以多个“0 day”为代价,新的震网病毒(“简单功能”版)与原始的震网病毒(“复杂功能”版)相比,更容易作为恶意程序被识别,因为它突然表现出的奇怪的和精密的行为。(译者注:肯定的,因为它恶意的调整离心机转速,工业现场的工程师一下就能发现系统出问题了。)相反,震网病毒的原始版(“复杂功能”版)则表现的更像是一个合法的软件,运行在位于Natanz工厂中的西门子控制器中,唯一怪异的地方在于它没有版权声明和许可条款。(译者注:工控厂商的软件,通常都会有版权声明的,大概说的就是这是哪家公司的软件,不可以拷贝等等。另外,病毒应该也能够运行在其他工厂的西门子控制器中。)而新的震网病毒(“简单功能”版)则包含了黑客们梦寐以求的大量的Exploit,甚至一些很牛的反病毒研究者都觉得它有些地方太强大,需要仔细的研究。

新的震网病毒(“简单功能”版)与原始版本(“复杂功能”版)相似,也采用了周期性攻击的策略,大概每个月攻击一次,但是触发攻击的条件要简单的多。在进行增加压力攻击(“复杂功能”版)时,需要检测过程变量,在某一特殊条件出现下,则触发攻击。(译者注:应该是根据过程变量的数据值,来判断是否进行攻击,个人猜测,该功能主要用来提升压力,程序的逻辑可能是判断当前运行的压力信息,当压力信息达到某一个期望值时,控制泄压阀关闭,从而使得压力进一步升高,从而起到攻击效果,如果系统当前运行的压力值不是很高的话,则不攻击,表现正常。),新的震网病毒(“简单功能”版)则要更直接。

新的攻击(“简单功能”版)主要是改变转子的转速。利用过程压力和转子的转速两种方法能够实现增加转子的内壁压力,其中通过增加转子转速来实现增加转子的内壁压力是比较容易的方法。显然震网病毒(“简单功能”版)采用了这一办法。通常IR-1型离心机的工作转速为63000转/分钟,震网病毒(“简单功能”版)对其提速了三分之一达到了84600转/分钟并运行了15分钟,接下来让离心机停下来达到120转/分钟(译者注:近乎停止,大家生活中接触到的电机通常在几千转的样子),然后再让他们全速运转,整个过程持续50分钟。(译者注:大家可以想象我们自己开的车,把油门踩到底,然后急刹车,然后再把油门踩到底…每个月这么折腾一次,每次50分钟的后果。)IR-1型离心机采用了超临界设计,意味着转子转速到达工作速度前已经超过了所谓的临界速度,每当转子速度超过这些临界速度时,会产生谐波,可能毁坏转子。(译者注:大学课程《电机拖动》有过这方面的介绍,不过我忘了,大概说的就是电机运转有一个安全区间,在此一切ok,在此区间外就不妙了。就像葛优说的,步子大了容易扯到蛋,电机速度太快也一样。),

如果在攻击时仅仅一个转子被毁坏,级联保护系统能够将毁坏的离心机隔离,并继续欲行其他的离心机。但是如果多个转子同时被毁坏(一个相当有可能的情况),伊朗的操作员就悲剧了,他们很诧异,为何如此多的离心机同时坏掉。库房里虽然有足够的离心机来更换,但是这让控制系统工程师无法解释这一问题而非常令人沮丧,可以把这些离心机看成幽灵机器(译者注:确实,离心机就像幽灵一样,统一挂掉。)

攻击可能被工业现场的员工认识到,通过他们的耳朵。(译者注:电机速度剧烈变化的时候,能够通过电机发出的声音判断出来。)。让164台离心机(或者更多)从63000转/分钟降到120转/分钟,然后在恢复到63000转/分钟,如果富有经验的员工在现场拿掉他们的保护耳机的话,是能够注意这一问题的。(译者注:工业现场噪音很大,特别是离心机这种,现场员工可能确实佩戴保护性的耳机,那样他们确实听不到离心机的诡异声响。)。这从另一个侧面说明,震网病毒(“简单功能”版)的开发者已经接受被现场操作员发现的风险。

关于震网病毒通过破坏大量离心机,从而明显降低了伊朗铀浓缩的产能的文章已经有很多。虽然那是毋庸置疑的,但是它并未表现出攻击者的意图。如果震网病毒导致了灾难性的后果,那么那就是个意外,而不是不是它的初衷。攻击者可以采取一击致命的措施,但是他们选择了持续周期性让其窒息的方式。震网病毒是一种低效率的武器,旨在降低伊朗的离心机的使用寿命,使得伊朗的控制系统表现的超出了他们的掌控。

此战略很难被发现,当震网病毒开发出来时,伊朗已经具备了量产IR-1型离心机的能力。在2010年夏天,当震网病毒大量爆发的时候,伊朗运行着4000台离心机,并且在库房中保存着另外5000台作为备用。一次性毁坏伊朗的操作设备并不能够损害伊朗的核战略,就像在1981年巴基斯坦发生的大地震,虽然严重的破坏了巴基斯坦的4000台离心机,但是并没有阻止巴基斯坦最终获得核武器。据我的估算,震网病毒延缓了伊朗的核项目两年,假使同时毁掉所有的离心机也不会产生如此大的延期。(译者注:也就说通过这种病毒手段破坏离心机比通过暴力破坏离心机的性价比还要高)

QQ图片20131208203759

图为2008年至2010年Natanz工厂的离心机库存数据,伊朗始终保存着至少50%的备用离心机,也就是说同时摧毁运行中的离心机基本上不能阻止伊朗的核发展进程。(译者注:从图中可以看出在某一阶段09年底至10年底,伊朗的备用离心机数量超过了4000台,比运行中的离心机数量还多,如果一次性将运行中的离心机全部干掉,伊朗仍然有足够的离心机进行替换。)

低效率的震网病毒攻击方法提供了额外的附加值,它使得伊朗的工程师抓狂,并且使得他们再也不能有效的运行工厂(该工厂的设计是20世纪70年代窃取设计后,开始运行的)和他们过度的数字保护系统。与巴基斯坦的铀浓缩计划相比,人们会注意到一个重要的效率差异,巴基斯坦在其摇摇欲坠的经济背景下,仅用了短短两年的时间就完成了从零开始到低浓度的铀浓缩,并且没有采用最新的数字控制技术。而伊朗虽然借助了巴基斯坦核贩子A.Q. Khan的帮助并通过卖原油而积累了大量的资金,但是为了完成低浓度铀浓缩花费了超过10年的时间。如果伊朗的工程师不那么无能的话,他们应该在能在震网病毒入侵他们系统之前完成铀浓缩。(译者注:不是敌人太狡猾,而是我方太无能。)

声明: 本文由( SPRITEKING )原创编译,转载请保留链接: 【震网病毒的秘密 1+2 全篇】

【震网病毒的秘密 1+2 全篇】:等您坐沙发呢!

发表评论


Time

新浪微博

音乐

为您推荐