独家连载 | 零日漏洞:震网病毒全揭秘(17)
作者: 日期:2015年10月08日 阅:4,671

640.webp

每家公司都先于其他位置的计算机“率先感染”了震网2009年版、2010年3月版和2010年4月版中的一个或多个版本。这5家公司遭震网感染的计算机共有12000台。之后,以这5家公司为源头,震网实现了对100多个国家10万多台计算机的传播……

第六章 寻找零日漏洞(接上)

从震网所运用的所有感染方法来看,攻击者的意图就是不惜一切代价传播病毒。但与多数病毒利用电子邮件或恶意网站实现对成千上万台计算机的快速、即时传播不同,震网从不利用因特网。相反,震网只是凭借某个用户用U盘从一台计算机传播到另一台计算机,或者通过局域网传播。基于此特点,可以判断攻击者知道他们的目标系统并不在因特网上。同时,对零日漏洞史无前例的运用,说明他们要寻找的目标不仅价值连城,而且防护严密。

但是,通往目标的路线迂回曲折,很难找到一个清晰、简洁的攻击方法。打个比方,这就像是打算让某种致命病毒感染本•拉登众多妻子中的一个,然后再让她去感染拉登一样。病毒只能感染与“拉登之妻”有关的人,从而导致意图遭到暴露的可能性越来越大。震网最后的结果,恰恰就是这么回事。他感染了太多“外围计算机”,这让震网迟早会由于某些不可控的问题被人发现。

当钱哥再次检视攻击者用到的感染方法和漏洞利用程序时,他发现其中蕴含着某种逻辑。每个感染方法/漏洞利用程序都有明确的任务,并能够解决攻击者为达成最终目标路上的一个特定的障碍。就像是有一个人为了完成这次攻击,列出了一个漏洞利用程序清单——有的用来提权、有的用来在目标所在内网中传播、有的将载荷送入PLC——然后,再找人按图索骥,或者从市场上买,或者自己开发。这充分表明,为了此次攻击,攻击方在组织筹划方面可谓呕心沥血。

其中,对完成整个攻击最关键的两步,一步是对.lnk中漏洞的利用,一步是对Step 7项目文件的感染。因为,这两步对于震网能否抵达最终目标——西门子的PLC至关重要。给PLC写代码的程序员一般会使用连接因特网的工作站进行编程,这些工作站与工业生产网络或工厂中的PLC之间是彼此隔离的。要把编好的程序载入PLC,必须有人用笔记本通过数据线直接连接PLC,或者用U盘把程序转存到一台用于工业控制配置与编程、装有Windows系统的笔记本——场控编程器(Field PG)上。场控编程器不连接因特网,只与生产网络和PLC相连。那么,先感染Step 7项目文件,再用U盘“摆渡”的方法翻越内外网之间的物理隔离(air gap),攻击者就能成功的将每名PLC工程技术人员变成一个潜在的武器运送者。

640.webp (26)

震网传播示意图

当钱哥和莫楚将震网用于传播的所有漏洞及其利用程序记录归档后,他们意识到,还有一些问题需要弄清楚。多数问题是他们之前知道,但没在意的。比如,Ada公司当时没有发现.lnk漏洞被利用过的迹象,但微软却发现,2008年11月,一伙网络犯罪分子正是利用了这个漏洞,将Zlob木马的一个变种植入目标计算机。虽然反病毒引擎当时发现了这个木马,但却没有挖出它里面的零日漏洞,所以直到震网出现,这个漏洞也没有得到修复。与之类似,打印机缓存漏洞之前也出现过一次——在2009年3月波兰的一个网络安全期刊上。期刊刊登了关于这个漏洞的一篇论文,其中还包括如何利用此漏洞进行攻击的代码。不过,当时这条消息并没有传到微软那里,所以微软没有为这个漏洞制作补丁。同样,西门子Step 7软件中“固化”用户名/密码泄漏的事情,有人早在2008年4月就已经在西门子客户论坛上贴出来了。

钱哥和莫楚想知道,震网攻击方是否有一个专门负责搜索黑客论坛和安全网站,并收集漏洞及漏洞利用程序的信息团队?如果确实有,那么攻击方就可以根据攻击需求,直接使用这些漏洞利用程序,或者以此为线索从市场上联系买家。

令人不解的是,在2009年上线的震网病毒第一版中,只出现了“打印机缓存”这一个漏洞。其他漏洞在2010年3月上线并快速传播、继而引发失控的版本中才露面。2009年的版本也做了通过U盘传播的功能,但利用的是Windows系统的U盘自动运行(Autorun)功能。如前所述,用户可以通过关闭这项功能来避免攻击。所以,2010年3月的版本中,攻击者用.lnk的零日漏洞利用程序替换了利用Autorun的代码。

攻击者还在2010年3月版病毒中增加了另外一项重要内容:用于标记驱动程序的瑞昱公司数字签名。

钱哥和莫楚在对比两个震网病毒版本的区别时发现,2009年的版本略带谨慎,而2010年的新版本通过增加更多的传播机制,刻意加强了侵略性。这背后,可能是想要更快到达攻击目标、或破坏更多离心机的放手一搏。利用.lnk漏洞,比利用Autorun漏洞的传播效率显然更高。但是,当这些新的手段提高震网到达目标可能性的同时,也带来增加了感染更多计算机的风险。事实上,新版本在使用多个零日漏洞之后,震网迅速感染了伊朗国内外的10万多台计算机。这些多余的感染对攻击者到达目标毫无帮助,却大大增加了被发现的机会。想必攻击者对新版本所具有的超强传播力也是心知肚明吧。不论如何,他们还是愿意冒这个险。

跟踪震网传播的确切路径上,反病毒研究员没有碰到什么麻烦。经过对每个病毒样本的分析,他们发现了一个有助于跟踪病毒从源头向目标传播路径的“宝贝”:记录每一台被感染计算机数据的日志文件。在震网病毒为抵达目标而蜿蜒前行的过程中,它记下了每一台计算机的IP地址和所在域的域名,并根据计算机内部时钟记下了每一次的感染时间。然后,它将这100字节的数据存入随病毒传播而不断增大的日志文件。由于每一份病毒样本都有这样一个日志文件,钱哥和莫楚得以顺藤摸瓜,找到最早遭感染的计算机。攻击者设计这样一个日志文件,本意是掌握震网攻击的路径,没想到这一点却被反病毒研究员给用上了。

钱哥和莫楚一共分析了多家反病毒公司提供的3280份病毒样本。根据对日志文件的分析结果,他们判断,攻击者释放病毒的起点,是最有可能接触到震网攻击目标的5家伊朗公司。每家公司都先于其他位置的计算机“率先感染”了震网2009年版、2010年3月版和2010年4月版中的一个或多个版本。这5家公司遭震网感染的计算机共有12000台。之后,以这5家公司为源头,震网实现了对100多个国家10万多台计算机的传播。

640.webp (27)

震网“新品上市”的5个“首发目标”

根据受害者匿名的原则,赛门铁克没有在公开文档中公布这些公司的名单,而是用域A、域B……域E来代指。但是,其他看到日志内容的人却不会这么守规矩。这些公司很快被曝光,它们是:弗拉德科技(Foolad Technique)、百坡炯(Behpajooh)、卡拉(Kala)、尼达工业集团(Neda Industrial Group)和据信为高士达工控公司(Control Gostar Jahed)缩写的CGJ。其中的卡拉,就是NCRI在2002年的新闻发布会上提到的、为铀浓缩项目当幌子的伊朗卡拉扬电力公司。

虽然有些公司多次被不同版本的病毒“率先击中”,但每次被率先击中的并不总是同一台计算机。这表明,攻击者每次上线新版本时,都在努力寻找处于更有利位置的计算机,或者为了更有希望成功到达目标,寻找能够提供与上一次不同传播路径的计算机。被三个版本全部率先击中的,只有百坡炯(Behpajooh)一家。这说明这家公司最有可能提供通往目标的路径。同时,由于2010年3月的版本只击中了这家公司,它成了引起传播失控的最大源头——在伊朗5家公司共12000台遭感染计算机中,初始感染源为百坡炯的占到了69%。(待续)

译者:李云凡

关键词:

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


相关文章