独家连载 | 零日漏洞:震网病毒全揭秘(58)
作者: 日期:2015年11月28日 阅:3,043

640.webp

随着震网0.5版浮出水面,震网之谜彻底告破。但网络安全行业的格局已然生变。一边是国家背景的哥斯拉级玩家,一边是安全产品和服务的亿万用户,卡巴斯基和赛门铁克们该何去何从?……

第十五章 火焰(接上)

2012年11月,震网曝光距今已过两年有余,毒区和火焰也已经是陈年旧事。突然有一天,赛门铁克研究员偶然间发现了一个他们曾经朝思暮想却未能得见的线索——出现在震网已知版本之前的一个早期版本文件。

赛门铁克公司有一个“定期整理恶意代码档案库以查漏补缺”的传统。这一次,就在他们用震网特征码进行搜索,看有没有和它匹配的目标时,一个从未见过的代码片段弹了出来。自从有人于2007年11月15日上报给VirusTotal之后,它就一直静静的呆在那里。这个证据充分表明,震网第一次发动攻击的时间,要早于赛门铁克之前的判断。如前所述,他们一直在怀疑震网存在其他版本,因为他们于2009年和2010年发现的3个样本的版本号分别是1.001、1.100和1.101。他们当时就猜测,可能存在一个在这3个版本之前的早期版本。现在,他们终于找到了——它就是震网0.5版。

然而,他们找到与之相关的更多文件后,发现这并不是震网的某一个版本,而是一个含有完整“417攻击代码”的震网部件,而且毫发无损、功能完备。

两年前,他们在尝试解开震网攻击西门子S7-417型PLC之谜时,以失败告终。因为在震网的后续版本中,417攻击代码既不完整、又不管用。当时,赛门铁克的尼古拉斯·法里尔认为,攻击者可能是因为等待某个来自目标的关键配置情报,而无法赋予它正常的攻击能力。现如今真相大白,原来,417攻击代码早已编写就绪,只是攻击者改变了攻击策略而已。对比发现,震网后续版本中同时包含315攻击代码和被剥夺功能的417攻击代码,而新发现的版本中只有417攻击代码,完全没有315攻击代码存在的迹象。由此可知,一开始,攻击者瞄准的是纳坦兹的417型PLC,后来不知什么原因——也许是攻击者没能达到预期目的,也许是攻击起效耗时过长——他们重新调整了策略,把攻击的枪口转向了315型PLC。

现在,赛门铁克团队——除了以及跳槽去谷歌的法里尔——如愿拿到了震网的早期版本,终于可以确定417型PLC到底是什么角色了。经分析发现,这个版本的最终攻击目标是用于控制六氟化铀气体出入纳坦兹离心机和级联系统的阀门。整个攻击计划可能是这样的:攻击代码通过反复开关阀门,将离心机内部的压力增大到正常水平的5倍。在这个压力水平上,气体会开始凝聚,破坏铀浓缩进程,使得正在高速旋转的离心机突然间失去平衡,倒向旁边的离心机。但实际中,这个计划可能没有如期取得良好成效,因此,2009年他们决定改变策略,转而攻击能够更直接破坏离心机的组件——变频器。

震网0.5版没有设定自毁日期,本应在后续版本上线后继续存在,但研究员却从未在2010年发现的、感染震网后续版本的计算机上发现过它的踪迹。据分析,它可能是被攻击者清除了。震网后续版本进入计算机之后的第一件事,就是寻找早期版本并将其替换掉。因此,当2009年6月版震网上线后,震网0.5版就销声匿迹了。

震网0.5版没被发现,可能还有一个原因。与后续版本相比,攻击者对它的控制更严格,只会感染少量目标。由于它没有使用零日漏洞利用程序进行传播,因此可行的传播方式只有一种,就是感染西门子Step 7的项目文件。由于这些项目文件是开发人员在为西门子S7系列PLC编程时共享使用的,因此是将震网攻击载荷送往目标PLC的理想载体。进一步推测,既然它只能通过Step 7项目文件进行传播,那么攻击者一定有通往纳坦兹核心系统的内部门道。这一点,也是震网0.5版没被人发现的一个重要原因。因此,震网0.5版的“首位感染者”可能是某个开发人员的计算机。而到了上线后续版本时,他们可能已经丢失了这个通往纳坦兹内部的直接入口,只好通过加大震网传播力度的手段,增加抵达最终目标的概率。不幸的是,新的策略无法首尾兼顾,一来震网强大的传播能力让染毒计算机数量暴涨,二来“首位感染者”位于纳坦兹之外的多家公司,这使得震网的后续版本最终遭到了曝光。

震网0.5版一旦上线,即可完全自主实施攻击,攻击者无须对其施加控制。但如果它发现自己所在的计算机接入互联网,就会主动与4个指挥控制服务器中的其中一个进行联系,并根据需要接受攻击者发送的代码升级包。攻击者为它设定的联络终止日期是2009年1月11日,而那时攻击者已经为下一场攻击做好了准备。5个月后,2009年6月版震网上线,其中的驱动文件编译日期为2009年1月1日。

赛门铁克研究员发现,震网0.5版提交至VirusTotal的时间是2007年,而且有些更早的日期也与之相关,那么,有必要对攻击者设计震网的起始时间进行重新估算。经分析,震网的前期工作可能开始于2005年11月,用于震网0.5版的指挥控制服务器的域名就是那时注册的。这些服务器中的代码,后来又被用到了2009年和2010年版震网相关的指挥控制服务器(the todaysfutbol.com和mypremierfutbol.com)上,其编译时间是2006年5月。那时,震网还没上线,布什的幕僚也才刚刚琢磨着给他献计,用于控制震网的指挥基础设施就已经搭建完毕了。很可能这些服务器起先是用于跟“火焰、毒区或其他服务于此次攻击的侦察工具”通信的,后来才用到了震网上。此外,这些较早的日期,还跟卡巴斯基研究员认定的火焰上线时点完全吻合。

与这些日期遥相呼应的,还有一些伊朗核计划政治斗争形势演化的关键时间节点。2005年8月,内贾德上任两个月后,伊朗核问题的国际谈判破裂,伊朗宣布退出之前签署的“暂停核活动协议”。3个月后,攻击者注册了用于震网0.5版的指挥控制服务器(的域名)。

从那时起,伊朗开始在试验工厂中安装离心机。到了2006年2月,服务器注册3个月后,伊朗在试验工厂的小型级联系统中进行了首次铀浓缩试车。但试车失败了,50台离心机发生了爆炸。这次爆炸有可能正是震网早期版本的作品。当时,伊朗当局将这起爆炸时间归咎于来自土耳其的UPS,宣称有人对UPS实施了暗中破坏,让它在工作过程中制造了突发电涌。

很快,伊朗从挫折中爬了起来。2006年5月,他们宣称,使用试验工厂中安装的完整版离心机级联系统,成功进行了铀浓缩试车,并得到了纯度3.5%的铀产品。同时,他们还制定了在一个地下车间中安装首批3000台离心机的雄伟计划。但直到2007年初,计划才开始实施。同年11月,3000台离心机安装完毕。同月,震网首次露面,有人将震网0.5版提交至VirusTotal。

随着震网早期版本浮出水面,研究员们终于可以跟这场石破天惊的网络攻击行动做个了断了。最后,他们亲手绘制了一直以来孜孜以求的“攻击全景图”。

他们之所以有机会南征北战,得胜而还,却又经历了如此漫长的等待,皆因为一系列本可能不会发生的意外事件和磕磕绊绊。这个过程,值得回味。从震网利用零日漏洞四处蔓延,到由于一台伊朗计算机反复重启而被发现;从白俄罗斯研究员道行浅,搞不定复杂的震网,到赛门铁克研究员费尽心机破解PLC攻击代码;从卡巴斯基从“清除者”中发现火焰,到在攻击者不慎遗落的马来西亚服务器上发现海量确凿证据。在发现和破解震网和其他工具的过程中,攻击方和破解方错进错出,谜底时隐时现,每一个故事都称得上是一段传奇。

此刻,卡巴斯基和赛门铁克蓦然回首,想到昨天的自己投身破解和分析“震网团队”系列武器的事业长达两年,不禁感叹:制作这些武器的技术水准和专业精神,的确令人高山仰止。同时,想到今天的自己如庖丁解牛般,这么快就彻底揭穿了潜行多年的网络攻击系列行动,心中五味杂陈。

攻击者早就料到,伊朗人凭自己的能力,根本不可能发现和破解他们的系列攻击。但他们没想到,全球网络安全行业群策群力,用众包的方法和群体的智慧,帮了伊朗人一个大忙。

震网的出现,从根本上改变了网络安全特别是网络攻防领域的格局。面对具有国家背景的网络武器,网络安全研究员和逆向工程师们在不知不觉中被征召参战,变成了抵御其攻击的志愿军。这种局面,让他们陷入了某种与道德正义和国家安全有关的困境:到底是该维护计算机用户的利益,还是充当情报机构和政府的帮手?震网的出现,不仅拉开了网络空间军事化的帷幕,而且开启了病毒研究政治化的进程。

2012年,震网风波过后,钱哥如是说,“对我们来说,这是一个新的‘好人还是坏人’的问题,让我们左右为难。”庆幸的是,他们所做的一切工作,完全没有受到任何政治上的干涉或阻力,他也希望,未来永远不会被迫面临“客户还是政府”的选择。当然,他心里明白,这恐怕只是一厢情愿。

“听起来可能有点虚伪,但我们的所作所为,都是为了帮助客户,这没有错。”他说,“如果我们真的到了必须在客户与政府之间做出选择的地步,那将必定是一个无法面对的心碎时刻。我不知道该怎么做,真的,我不知道。”(待续)

译者:李云凡

 

关键词:

申明:本文系厂商投稿收录,所涉观点不代表安全牛立场!


相关文章