独家连载 | 零日漏洞:震网病毒全揭秘(22)
作者:星期二, 十月 13, 20150

640.webp

他断定,一旦震网病毒发现计算机上装有Step 7或WinCC,就会将与目标软件相对应的同名.DLL文件从较大的.DLL中解包出来并解密……

第八章 载荷

巴黎CBD拉德芳斯区。爱琴海大厦(Tour Egée)。在这座以外形奇酷著称的40层三角形建筑中,尼克•法里耶正弓着腰、伸着脖子,在公司位于第8层的办公室里紧张工作着。窗外,摩天大楼鳞次栉比,隐约可以看到缓步走向新凯旋门的暑休游客和地上的白鸽。法里尔却是“两耳不闻窗外事,一心只研震网码”,目标就是它那复杂的载荷。

640.webp (30)

爱琴海大厦

那是2010年8月初,法里尔进入震网3人小组刚满两个星期,钱哥和莫楚还没发现震网中有那么多零日漏洞。在这两周中,法里尔一直在和莫楚分析导弹部分中那个巨大的.DLL文件,但他知道,核心的秘密藏在载荷部分中。

这一天,和朋友们吃过午饭后,他开始了载荷部分的分析。具体步骤是,先把其中每个文件分离出来,再想方设法理解它们的格式和功能。他注意到,有一个.DLL文件的名字似曾相识。于是,他来到了测试计算机上的西门子Step 7程序文件夹。很快,他找到了一个同名.DLL文件。“这可真有意思。”法里尔想。

他断定,一旦震网病毒发现计算机上装有Step 7或WinCC,就会将与目标软件相对应的同名.DLL文件从较大的.DLL中解包出来并解密。

法里尔使用藏在病毒代码中的密钥,解开了Step 7同名.DLL文件的密码,发现它具有与合法Step 7同名.DLL文件的全部功能。除此之外,它还有一些包括“读”“写”指令的可疑代码。法里尔毕竟“阅码无数”,很清楚这是什么意思。原来,震网中的这个假冒.DLL是一个后门,感染计算机后在系统中潜伏,等待“系统企图对目标PLC执行读/写操作”的时机,再实施进一步劫持(hook)。与震网病毒导弹部分中的后门类似,这个后门可以通过劫持读函数(hooking the reading function),把对攻击PLC的代码隐藏起来。据法里尔所知,这是“史上第一个”针对工业控制系统的而设计的后门。震网脖子上挂的“第一”奖牌又多了一块。

法里尔无法判断这个假冒.DLL劫持读函数,究竟是为了被动监视PLC并收集其运行信息,还是有什么更深的用意。但是,它劫持读函数的行为,似乎在暗示,它正企图停止PLC的正常运行或改变PLC的运行状态。他瞄了一眼时间,现在是美国加州时间早上5点,给钱哥打电话太早了点,还是接着干活吧。

几小时后,他终于找到了这一谜题的所有答案。结果正如他所料,震网病毒会把西门子软件发给PLC的指令拦截下来,换成自己的指令。虽然看不到震网注入PLC的代码,不能确定它到底让PLC做了什么,但他敢肯定,绝不会是什么好事。这时,已经到了加州时间早上9点,法里尔拿起电话,给钱哥打了过去。

一般情况下,法里尔和钱哥每周联系一次,通报一下法里尔这边的工作进展。通话过程会非常高效,内容直截了当,时间不超过一分钟。但这一次,法里尔详细汇报了这次发现的所有细节。钱哥专心听着这些惊人的内容。他们看到的攻击越来越复杂。简直可以说,震网的每一个角落中都藏着一个大大的惊奇。

钱哥同意,让法里尔一心一意把震网注入PLC的代码弄清楚。他们还决定,让法里尔在博客上发布一个关于发现PLC后门的简短声明。当然,细节将暂时保密,直到法里尔搞清楚震网到底对PLC做了什么为止。

那天晚上,在回家的地铁上,法里尔陷入了一种紧张不安的情绪中。4年来,他拆解过无数病毒,见过无数种恶意程序,已经很难再对这些东西感到激动。但这一次太不一样了。对PLC的攻击史无前例,而且,震网很可能会开创一个网络攻击的全新类型。

激动之余,他深知前路充满坎坷。假冒的西门子.DLL文件很大,也不清楚Step 7和受其控制PLC的结构。法里尔和钱哥对Step 7和PLC完全是门外汉,甚至不能确定问题是否存在可行解,继续破解载荷代码的任务面临着严峻挑战。他们唯一知道的,就是他们正走在一条望不到尽头的苦旅上。(待续)

译者:李云凡

 

关键词:

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