独家连载 | 零日漏洞:震网病毒全揭秘(12)
作者:星期五, 九月 25, 20150

640.webp

当程序在编译程序中运行源代码时,文件路径会显示出程序员存放中间代码的位置。大多数病毒设计者会在编译程序中进行配置,不让文件路径显示出来。但不知是有意还是无意,震网的设计者并没有隐藏这个信息

第四章 解构震网(接上)

钱哥之前见过这种“免疫值”(inoculation values)技术。黑客会在自己计算机的注册表中植入这个字串,这样一来,在把病毒释放到实验环境或真实网络中之后,黑客自己的计算机和黑客要保护的其他计算机将不会受到病毒的伤害。攻击者可以任意设置“免疫值”。一般情况下,这个值会是一个随机数字串,但震网中的值,明显是一个符合Unix系统通用日期格式的日期数值。与此呼应的是,震网的代码中还出现过其他数字串,这些数字串和这个“免疫值”采用的是同样的格式,每一个都明确指向某个日期。

钱哥对这个日期进行了快速的搜索,如他所料,返回结果中果然有跟以色列和伊朗有关的信息。1979年5月9日,是一位名叫哈比比•艾尔甘尼安(Habib Elghanian)的伊朗犹太裔巨贾在德黑兰被枪决的日子。那时,伊朗伊斯兰革命刚刚结束,新政权已经上台。而艾尔甘尼安是一个富有的慈善家,也是备受尊敬的伊朗犹太社群领袖。他以以色列间谍的罪名被捕并处以极刑。他的死亡,是伊朗犹太社群和伊朗政府之间关系的一个转折点。在巴拉维国王掌权的将近40年间,伊朗犹太人和本地穆斯林之间的关系非常友好,如同当时伊以两国之间的关系一样。但与国王被推翻仅3个月之隔的“艾尔甘尼安事件”,成为伊朗犹太人的“梦碎时刻”。这件事让他们看清,新政府对犹太人已经变脸。这个事件促使大批犹太人离开伊朗回到以色列,并燃起了两国间持续至今的敌意。

震网代码中这个日期的意思,是不是以色列人想据此提醒伊朗“勿忘历史”呢?或者,是不是其他国家的设计者意图通过这个信息转移视线呢?又或者,这些只不过是钱哥根据巧合的数字进行的毫无根据的想象呢?钱哥所能做的,只有继续猜测。

稍后,团队发现了另一个可能与以色列有关的线索。这一次,他们在一个驱动程序文件中,发现文件路径中包含“香桃木”(myrtus)和“番石榴”(guava)两个词。通过文件路径,可以看出文件在电脑中的存放位置,包括多级文件夹和子文件夹的名称。震网中,有一个保存在某个计算机C盘上、名为“我的简历”的文件,其完整路径为C:\documents\myresume.doc。当程序在编译程序(功能是将程序设计语言源代码翻译为机器能读取的二进制代码)中运行源代码时,文件路径会显示出程序员存放中间代码的位置。大多数病毒设计者会在编译程序中进行配置,不让文件路径显示出来。但不知是有意还是无意,震网的设计者并没有隐藏这个信息。驱动程序文件中的具体路径是b:\myrtus\src\objfre_w2k_x86\i386\guava.pdb,这表明该文件是被程序员称为“番石榴”的主程序的一部分,存放在一个名为“香桃木”的文件夹中。香桃木是植物的一个属,其中包括多个名为“番石榴”的种。钱哥在想,难道程序员是个植物学爱好者?还是借物咏意、另有所指?

钱哥进一步搜索了香桃木的含义,发现它跟犹太历史上另一个著名事件有关——公元4世纪时,以斯帖王后(Queen Esther)帮助身在古波斯的犹太人逃脱了一场大屠杀。根据这个故事,以斯帖是一个犹太女子,嫁给了古波斯国王亚哈随鲁(Ahasherus)为妻,但国王并不知道她是犹太人。当得知国王的首相哈曼(Haman)正在筹划一个屠杀波斯王国内所有犹太人的阴谋时,她向国王公开了自己犹太人的身份,恳求国王保护自己和族人。国王弄清状况后,处决了哈曼,并获准本国犹太人向哈曼身后这股屠犹势力宣战。最终,犹太人获得了胜利,75000名反犹派被杀死。今天,全世界犹太人每年一度的普林(Purim)节,就是为庆祝古波斯犹太人死里逃生而设立的。

640.webp (16)

 

640.webp (17)

640.webp (18)

640.webp (19)

表面上看,这个故事跟震网病毒没什么瓜葛。但钱哥从以斯帖王后的希伯来文名字中找到了一丝线索。在改名并成为王后之前(隐藏族裔背景),以斯帖的名字是哈达莎(Hadassah)。而哈达莎在希伯来语中的意思,正是香桃木。

从近期形势来看,不难发现今天的伊朗与古波斯之间的对应关系。2005年,有报道称,伊朗总统马哈茂德•艾哈迈迪-内贾德(Mahmoud Ahmadinejad)呼吁,要将以色列“从地图上抹去”。虽然后续报道称这句话是“翻译错误”,但内贾德希望灭掉现代以色列国的态度可谓昭然若揭。这简直堪称17个世纪之前哈曼愿景的重现。在2010年2月13日,就在震网设计者准备向伊朗目标计算机释放新版本病毒之际,以色列前任大拉比、在政界享有巨大影响力的犹太精神领袖尤瑟夫(Rav Ovadia Yosef)在普林节前的一次布道中表示,今天的伊朗和曾经的古波斯极为相似。他说,内贾德就是“当代的哈曼”。

“今天,波斯出现了一位新的哈曼,他用核武器威胁着我们的生存。”尤瑟夫说。“但是,正像哈曼及其党羽所经历的那样,内贾德和它的追随者们将马失前蹄,并为自己的利箭所伤。”

但是,这些都无法证实,震网驱动程序文件中“香桃木”一词一定就是对《以斯帖记》的暗示。后来又有人指出,如果换一种方式来读,可以将香桃木这个单词(mytrus)理解成“我的远程终端机”(my RTUs)。RTU,与PLC类似,也是一种用于操作、控制装备和生产流程的工业控制组件。考虑到震网的目标是西门子公司的PLC,这样理解也还合乎逻辑。但谁敢说一定如此呢?

赛门铁克公司的研究团队很谨慎,没有根据这些信息做出结论。钱哥只在一篇博客中轻描淡写的说了这么一句:“咱们大家一起猜吧”。(待续)

注释2:

https://en.wikipedia.org/wiki/Hooking

hook v. 挂钩,钩上;n. 挂钩,钩子

在计算机编程中,hooking包括通过拦截程序各部分之间调用/传递信息/事件等方式,改变或增加操作系统/应用程序/其他软件组件行为的一系列技术。拦截程序调用/事件/信息的代码,称为hook。

Hooking被用于多种目的,包括调试和扩展程序的功能。比如,hook可以在键盘/鼠标的事件信息到达某一程序前将其拦截,或者拦截系统调用,以监视行为、修改应用程序或其他组件的功能。它还广泛用于标记程序中,如通过hooking3D游戏的输入和输出程序,实现对其帧频的测度。

Hooking也常见于恶意代码中。比如保持权限的后门中,部分代码会使用hooking技术,通过截取并伪造某个显示其存在的API的输出,使自己变得不可见。穿墙(Wallhack)是另一种源于hooking技术的黑客行为。它通过拦截计算机游戏中的函数调用,并修改游戏者看到的画面,来赋予他们相较于其他玩家的不公平优势。

译者:李云凡

 

关键词:

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