请选择 进入手机版 | 继续访问电脑版

乐人网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

合肥 | 交通 | 民生 | 综合信息 | 中考 | 高考 | 职业教育 | 双好宣传 |
搜索
热搜: 合肥六中
乐人网 首页 天下 时事 查看内容

人类首次网络战争:伊朗核工厂是如何被攻击的?

2018-5-24 10:02| 发布者: admin| 查看: 382| 评论: 0

摘要: 月初,美国总统特朗普宣布退出伊核协议,在世界范围内引起轩然大波。然而回望当初,作为拥有初级核工业家底也不缺资源的伊朗,当年为什么会放弃提炼浓缩铀,同意伊核协议?是因为他们突然想开了要维护世界和平还是他 ...

月初,美国总统特朗普宣布退出伊核协议,在世界范围内引起轩然大波。然而回望当初,作为拥有初级核工业家底也不缺资源的伊朗,当年为什么会放弃提炼浓缩铀,同意伊核协议?是因为他们突然想开了要维护世界和平还是他们觉得不需要核武器也能安心生存?没人知道个所以然。但随着2010年一个计算机病毒的发现,我们才能揭开这背后的奥秘。

危机再起

2006年,内贾德总统宣布启动核计划,伊朗核危机重新爆发。

伊朗浓缩铀工厂所使用的离心机是通过走私获得的一款法国1960年代末的产品。伊朗以此为基础制造了自己的IR-1离心机,但由于加工精度不足,只能以比原版离心机低的速度运转,也不能承受太大的气体压力,生产效率只有原版的一半,他还很容易坏,每年都得更换10%的机器。好在还算便宜,伊朗人可以大规模的生产这种离心机。

由于离心机需要多台串联为一组工作,而且生产过程中不能出一点岔子,伊朗人设计了一些安全机制来保证这些不靠谱的离心机就算出问题了也不影响生产。首先是给每个离心机安装隔离阀门,可以把出问题的离心机隔离出来更换,但是这将导致整组的离心机气压升高而更容易导致损坏。所以他们还给每一组离心机设置一个排气阀以避免气压过高。这套安全系统由西门子公司提供的S7系列工业控制器操纵。

整座工厂建设完成后完全隔绝外网运行。然而系统运行了没多久,就出现了离心机频繁损坏的问题。期初伊朗人并不在意:本来这些产品质量就不怎么样。但是渐渐地发现问题严重起来了,监控画面上的各项参数都运行良好,但是离心机的损坏率就是居高不下,铀浓缩生产进度仅为设计值的一半左右。到底哪里出问题了?

内贾德视察铀浓缩工厂的照片,从众人的表情看来情况很不乐观。

美以视角

2006年的小布什政府深陷反恐战争的泥潭。阿富汗和伊拉克闹得焦头烂额,伊朗这时候宣布恢复浓缩铀无疑是火上浇油。以色列第一个站出来反对,饱受生存困扰的犹太人不能容忍一个敌对的国家掌握核武器,否则他们将被轻易从地图上抹去。

首选的行动方式当然是像当年的伊拉克一样,直接炸毁对方的核设施。然而美国人不愿意被以色列拖入新的战争泥潭,否决了武力打击的计划。而经济制裁对于伊朗而言也早就是虱子多了不怕痒,毫无压力。想要破坏伊朗的核设施,只能另想它法。

这时候中情局建议小布什给伊朗的核工厂弄点病毒,给他们制造些麻烦,拖延时间以利于解决问题,并拉上犹太人一起干,让他们打消空袭的念头。以色列听说很上心,立马送来摩萨德搞到的伊朗核工厂设计图!于是计划大改,从制造点小麻烦升级成干扰整个工厂的运作。

美国和以色列的情报安全部门按图纸还原了伊朗核工厂进行模拟攻击,电脑专家、核物理专家和工程专家积极配合,完成了病毒武器的开发。

最强病毒

这个病毒在日后被称作“STUXNET”震网病毒,病毒一口气使用了4个零日漏洞(就是从未公开,操作系统提供商所不知道也无法防范的漏洞)以确保病毒植入系统。在黑客市场,这种类型的漏洞一个就价值数十万美元,通常一次只会使用一个。病毒研究人员表示,震网病毒的开发者只能是国家级的队伍,拥有极其雄厚的资金和人才实力。

震网病毒到底有多强?他的大小超过500k,而通常的恶意代码文件一般不超过几十k,震网病毒比以往的病毒要复杂得多,它将30多个dll和其他组件层层打包加密,还包括一个超过400个设置项目的配置文件。震网病毒在被发现之前成功拖延了伊朗铀浓缩计划长达两年之久,比直接摧毁整个工厂产生的拖延效果还要好。而且伊朗人在这期间完全搞不明白是怎么一回事。

让我们来看看这个病毒是如何工作和被发现的。看看人类历史上首次国家之间的“黑客战争”是怎样进行的。

大手笔的入侵行动

通常而言,病毒分为两个部分:导弹(missile portion)和载荷(payload)。前者负责病毒的传播和潜伏,后者则负责窃取和破坏活动。

先说“导弹”部分。由于工厂内部控制网络和外界是物理隔离的,只能通过U盘来传播,而伊朗浓缩铀工厂又不是那么好混进去的,最好是让伊朗人自己把病毒带进去。该怎么办呢?

和通常利用Autorun(U盘自动运行)执行代码的普通U盘病毒不同,震网病毒使用的是4个恶意.lnk文件构成的漏洞利用程序来传播(每一个文件对应不同版本的操作系统)。

在Windows系统中,.lnk文件负责渲染文件图标,当我们插入U盘时系统就会自动扫描其中的.lnk文件以显示U盘中的各种文件。震网病毒利用了这一点,在这时候秘密的将恶意文件送入计算机。从而绕过了大家都熟知的“关掉autorun防病毒”操作。此外他还嵌入系统,使杀毒软件看不到病毒的文件名。如果杀软要扫描U盘,木马就修改扫描命令并返回一个正常的扫描结果。

除了利用.lnk漏洞潜入系统之外(漏洞1),震网病毒还利用Windows键盘文件中的漏洞非法获得System权限(漏洞2),利用Windows打印缓冲功能漏洞,实现病毒在共享打印机的各台计算机之间的传播(漏洞3)。

震网病毒的目标是西门子的S7-315和S7-417这两个型号的PLC(可编程逻辑控制器,广泛用于控制工业生产和基础设施配置)。于是它在感染计算机之后就开始寻找电脑内是否安装有西门子SIMATIC Step 7或SIMATIC WINCC软件,如果病毒没有找到这些软件时就什么都不做。

找到目标后,震网病毒利用Step 7软件中的漏洞突破后台权限并感染数据库,于是所有使用这个软件连接数据库的工程师所使用的电脑和U盘都将被感染。加上之前提到过的3个,震网病毒一口气使用了4个零日漏洞,说明设计者一方面手中握有大量尚未公开的系统漏洞,一方面为了震网病毒高速大范围传播完全不惜工本,这不是民间黑客可以做到的。

这样一来,通过利用Windows系统和西门子工业控制数据库的漏洞,震网病毒将所有可能接触到的相关系统的工程人员和他们的U盘电脑都变成了运送者。只需要感染一台电脑或者网络,比如说西门子公司或者他们PLC客户或者别的相关人员所用的机器,就可以让病毒进入伊朗的铀浓缩工厂。

震网除了利用零日漏洞进行传播之外,还有8种不同的感染方法。并且会自动寻找网络中的新版本进行更新,不需要连接外网,只要内网中有一台机器插入了带新版本的U盘,全内网计算机上的震网病毒都会自动更新。

躲避系统和杀软的监测

系统在安装没有安全证书的程序时会弹窗提示。那么病毒进入系统后,是如何在没有任何提示的情况下完成驱动安装的呢?而震网病毒拥有瑞昱公司(常见的声卡网卡供应商)的合法签名。他们驱动的数字签名处于微软系统的白名单之列。微软以这个伪装的驱动文件名mrxnet.sys将这个病毒命名为Stuxnet,即“震网”。此外,瑞昱公司旁边的智微科技(JMicron Technology USB和SATA驱动和桥接芯片供应商)的数字签名也被盗用了。以至于反病毒研究者一开始还以为这个病毒是大陆做的。

震网病毒进入计算机后的21天内,开始感染插入计算机的所有USB存储设备,并运行其主文件,将巨大的dll文件解开。

一般而言,操作系统打开、读取或者保存文件的代码都是保存在系统.dll文件(动态链接库)中的,这也是杀毒软件经常扫描的地方。而震网病毒则是将恶意代码直接调入内存。当然,一些历害的病毒也会这么做,只不过他们还会让系统加载硬盘上其他文件中的代码,这就会被杀毒软件发现。

然而震网病毒更加高明:他把所需的代码存放在虚拟文件中,还重写了系统的API(应用程序调用系统函数的接口)将自己藏了进去,每当系统有程序需要访问这些API时就会将震网的代码调入内存。如果杀毒软件检查这些API的时候,却只能看到“空文件”。震网病毒在运行时,还会把自己的代码替换进另一个正在运行的进程A里,在将A被换下来代码放到进程B去。

由于震网病毒只在内存中运行,并同时判断CPU负载情况,只有在轻载时他才运行以避免拖累系统速度而被发现异常。计算机关机之后这些代码就会消失,下次开机时病毒重新启动。2009年的短时间内,震网病毒就感染了伊朗国内外的10多万台计算机。国际原子能机构(IAEA)的监测表明,伊朗位于纳坦兹的铀浓缩工厂出现了大面积的离心机损坏,产量直线下降。震网病毒是怎么对工厂进行破坏的?又是怎样被外界发现的?我们接着说。

伪装和破坏:你从未见过如此精巧的病毒

前面说过,震网病毒的目标是西门子的SIMATIC Step 7和SIMATIC WINCC两个软件。Step 7是用来为其S7系列PLC编写、编译指令和代码用的工具软件。而且必须配合Simatic WinCC软件使用。Simatic WinCC是一种可视化工具,PLC会向其发送自身运行及数据的报告。工程师可以通过Simatic WinCC来监视其所控制的PLC运行状况。

在震网病毒打包的大量dll文件中,具有和Step 7软件中同名dll文件的全部功能,并增加了一些读取和写入的指令。当系统对目标PLC执行这种操作的时候,就对其进行劫持。这意味着震网病毒成了“史上第一个”针对工业控制系统的后门。震网病毒将原本的s7otbxdx.dll文件改名为s7otbxsx.dll,然后把假冒的s7otbxdx.dll文件放进去。这样,当系统调用这个文件执行任务的时候,病毒文件就生效了。

震网病毒震网病毒针对S7-315型PLC的代码有15段。在攻击之前,会确认PLC系统所控制的是芬兰产的某型变频器或者它的伊朗山寨版。这种变频器的工作频率在807hz至1210hz之间,属于美国核管委限制出口的产品。震网病毒要找的目标就是一个安装有186个这种变频器的工厂。

一台S7-315控制6X31共计186个变频器的控制机构

每当操纵员向PLC发送指令时,震网病毒都会把自己的恶意指令跟着一起发送出去。震网病毒并不会替换命令代码,而是在正常的代码前面增加一段。为确保恶意指令的执行,病毒还PLC上嵌入代码废掉了PLC的自动报警系统,防止安全系统发现离心机转速异常时将其离心机关机停车。同时病毒为防被发现,会在工程师检查PLC代码时反馈给他们“清洁版”的代码。如果工程师重新发送指令,病毒就会重新对指令代码进行感染。

为了进行伪装,震网病毒会在PLC上潜伏并记录下正常的运行数据。当恶意代码开始运行之后,就将之前记录的正常数据发送给负责监控的Simatic WinCC。所以当值班工程师检查运行情况的时候,他们看到的是“运行正常”。于是,破坏行动就这样开始了。

在13天的潜伏后,震网病毒通过变频器把离心机的旋转频率提升至1410赫兹,并持续15分钟;然后降低至正常范围内的1064赫兹,持续26天。在这26天当中,震网会将所需信息全部收集完毕。之后它会让频率在2赫兹的水平上持续50分钟,然后再恢复到1064赫兹。再过26天,攻击会再重复一遍。

而针对S7-417型PLC的攻击代码很奇怪,共有40段,他的目标系统是一个由每组164台,共6组合计984台离心机组成的运行网络,并破坏其中的110台离心机。纳坦兹的每台离心机上有3个控制气体出入的阀门,还有其他的联机机组的辅助阀门。如果按照震网病毒的控制模式来开关阀门,这些离心机也将损坏。

然而这段攻击代码上有一个故意留下的错误导致其无法执行。或许其他未知版本的震网病毒会通过升级来将攻击动作重新激活。

这样一来,伊朗人将陷入莫名其妙的工厂事故中去,当他们检查设备的时候又只能发现他们运转正常。 那么,隐匿如此之深的震网病毒是如何被发现的呢?

国际马拉松:病毒的发现和破解

根据国际原子能机构(IAEA)的核查报告,2009年11月,纳坦兹大概有8700台离心机,根据正常的10%损坏率,一年大约只需要替换800台。但IAEA的官员发现,在2009年12月到2010年1月短短两个月内,离心机的替换率高得不正常,大约有2000台离心机被替换。而铀浓缩的产量也同时骤减。某车间的18个机组中甚至有11个出现了故障。

2010年6月,白俄罗斯的一家小杀毒软件公司Ada的伊朗客户出现了电脑反复重启的毛病,因此他们对客户电脑进行了扫描,并发现了可疑的驱动程序文件(盗用了台湾瑞昱公司的数字签名)。这个驱动正是用于隐藏那些在u盘中的lnk文件的。

这个病毒在中东大量发现并快速传播,于是他们将这个发现公布在国际安全论坛上。微软开始针对这两个漏洞制作补丁。

7月17日,捷克的ESET安全公司则发现了另个一带合法数字签名(台湾智微)的恶意驱动,它和震网病毒所用的非常相似。这让人们怀疑是制作者对病毒进行了升级,他们要抢在病毒被破解前不惜代价进行扩散并生效。

根据病毒文件内的感染标记,震网病毒从2009年6月就出现了,病毒的一个编程错误使其扩散到了Windows 95和98等不支持的操作系统上,导致电脑频繁蓝屏死机,从而引起了怀疑被Ada公司揪了出来。

著名杀软公司赛门铁克的病毒分析师开始接力对震网病毒进行分析。他们破解了震网病毒在计算机上隐匿自己的复杂方法,并为其精巧的设计感到震惊。在震网病毒的代码中,他们发现了SIMATIC Step 7和SIMATIC WINCC软件的说明文字。这让他们大致明白震网病毒并不是常见的电脑病毒,而是攻击生产设施用的特种病毒。

震网病毒在传播的过程中,会记录下它感染的每一台计算机的ip地址、域名和感染事件,并将其发送给特定的服务器。赛门铁克拦截了这些日志的流向,将它们导向自己的“槽洞”并加以分析。他们发现病毒的主要感染对象都在伊朗境内,多达2万台,其他国家最多也就几百台感染。而其传播的源头则是伊朗的5家公司。其中一家Kala公司正是为铀浓缩项目打幌子的卡拉扬电力公司。

8月17日,赛门铁克公开了他们的研究结果:震网并不是什么间谍工具,而是专门用来实施物理破坏的数字武器。但是他们很谨慎,没有发布进一步的声明,没说震网病毒到底对PLC做了些什么。

消息发布5天之后,并没有在媒体上引起任何波澜。然而震网病毒发往槽流的流量突然消失。看来,一定是伊朗内部有人看到了他们发布的消息。为了防止攻击者或其他人继续通过远程方式感染计算机并造成损害,伊朗方面终于下令,切断了国内所有染毒计算机与指挥控制服务器之间的连接。

然而,与此高度相关的西门子公司、德国国家计算机应急响应团队和美国国土安全部的工业控制系统网络应急响应团队(ICS-CERT)保持了沉默。

这让民间研究者非常愤怒,德国一个研究工业控制系统安全的3人小公司觉得赛门铁克专注于PC病毒,对于PLC并不熟悉所以没有得出进一步的结果。而他们的大客户正好是西门子公司,于是他们主动开始继续研究震网病毒。他们确定了震网病毒的攻击目标:西门子生产的两个型号的PLC。因为病毒的恶意配置清单非常独特,所以只会感染与其配置相同的PLC,也就是某个特定使用相同配置的生产工厂。而他们从自己的消息渠道了解到布什尔核电厂所采用的PLC型号正是S7-417。他们将这些发现公开给多家顶级媒体,然而并没有人回应他们。

赛门铁克的病毒专家被震网病毒的“载荷”难住了。因为PLC的使用的编程语言和计算机上的C语言完全不同,是一种使用STL语言编码编译的PL7汇编语言,然后再汇编成PLC可以执行的机器语言。经过费事的反编译,他们发现震网病毒注入PLC几千字节的代码瞬间膨胀为针对S7-315的4000行指令和针对S7-417的13000行指令。太复杂了!

赛门铁克在2010年11月12日公布了震网病毒针对S7-315型PLC的攻击方式。指出其目标仅限于特定型号的变频器,攻击范围非常有限。4天后,伊朗全面暂停了铀浓缩活动但并没有说明原因。当然,这其中的因果大家都看得非常清楚了。而此后的几天,伊朗的两名核专家同时遭遇谋杀,一死一伤。(中子运输专家马吉德·沙利亚里死亡,同位素分离专家法雷多·艾巴西轻伤)

这两起谋杀给民间病毒研究人员带来了极大的震撼。他们对于病毒制作者的模糊认识迅速清醒过来,他们已经陷入了巨大的危机:国家之间的较量不是民间力量能随意插手的。

研究核扩散问题的顶尖智库科学与国际安全研究所(ISIS)也对这个病毒感兴趣。他们联络了赛门铁克的研究人员并详细了解了病毒的行为。根据ISIS所掌握的数据,震网病毒中设置的频率值1064hz恰好是伊朗IR-1离心机的最佳工作频率,而且是IR-1离心机所独有的。1410hz也恰好是IR-1离心机可承受的转速上限,再快点就会直接损毁。另一个针对S7-417型PLC所订的164台离心机规模设置,也恰好是伊朗铀浓缩工厂的机组构成数量,它的攻击目标就是排气阀门。

于是,震网病毒的攻击目标,总算是实锤了!


鲜花

握手

雷人

路过

鸡蛋

相关分类

回顶部