第四章 解构震网

最后更新于:2022-04-01 21:16:57

震网病毒刚刚被报道出来的几天里,赛门铁克公司三个大洲的十多名研究员共同对它的代码进行了初步分析。很快,这件事转由钱哥、莫楚和法里耶3人小组负责跟进,其他人继续跟踪其他新出现的病毒和威胁。一个星期过去了,他们3个仍然在拆解震网病毒的“导弹”部分(missile portion),根本没来得及研究它的“载荷”(payload)。 像传统武器一样,数字武器一般也可分为两个部分:负责将[恶意代码](http://www.aqniu.com/infosec-wiki/827.html "恶意代码是一种程序,它通过把代码在不被察觉的情况下镶嵌到另一段程序中,从而达到破坏被感染电脑数据、运行具有入侵性或破坏性的程序、破坏被感染电脑数据的安全性和完整性的目的。")传播并安装到目标计算机上的“导弹”部分,或称为“传播系统”;以及对目标计算机实施数据窃取或其他破坏性活动的“载荷”部分。震网的载荷,是以西门子公司软件和可编程逻辑控制器(PLC)为目标的[恶意代码](http://www.aqniu.com/infosec-wiki/827.html "恶意代码是一种程序,它通过把代码在不被察觉的情况下镶嵌到另一段程序中,从而达到破坏被感染电脑数据、运行具有入侵性或破坏性的程序、破坏被感染电脑数据的安全性和完整性的目的。")。 看到震网这边的工作量这么大,钱哥觉得有必要说服管理层,让他们支持3人团队继续深挖这个“过气明星”。每周三,公司在世界各地负责处理病毒威胁的经理们都会召开一个视频会议,讨论当前正在处理中重要病毒的情况,以及下一步的对策。在震网病毒发现后的第一个周三,震网当仁不让的成为首要议题。 赛门铁克在卡尔弗城拥有一块九英亩大、长着棕榈树和荒漠灌木的商业用地,和一座宽敞通风的办公楼。与VirusBlockAda公司狭窄的苏式办公楼相比,这座现代化的五层建筑有着大气的挑高中庭和平整拼接的瓷砖地面,由于地下是电力和通风管道,所以走在上面会发出像敲击空心玻璃一般的叮当声。这座建筑还因采用了环保建材、能够避开加州烈日直射的阳光反射式屋顶和可为每名业主提供良好视野的玻璃外观,而荣获“能源与环境设计先锋奖”。和附近洛杉矶机场旁平淡无奇的购物中心和高速路相比,这里可以算得上一景了。 [![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2015-12-08_5666b16a8fc1d.jpg)](http://www.aqniu.com/wp-content/uploads/2015/09/640.webp-131.jpg) 门口石牌 [![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2015-12-08_5666b16b2caeb.jpg)](http://www.aqniu.com/wp-content/uploads/2015/09/640.webp-141.jpg) 俯瞰中庭 视频会议室的房间很小、没有窗户,位于三楼的一个不起眼的角落,要从实验室绕几个弯才能到。房间里有3个很大的显示屏,安装在与坐着的人眼同高的墙上,前面是一排会议桌。这样,在钱哥开会的时候,就像是有人坐在他正对面一样。 [![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2015-12-08_5666b16b42a06.jpg)](http://www.aqniu.com/wp-content/uploads/2015/09/640.webp-151.jpg) 视频会议室 钱哥向领导们汇报了莫楚他们前期的研究成果:代码规模庞大、加载/隐蔽文件手法老辣、还有以西门子PLC为目标的神秘载荷。他还汇报了从“槽洞”中窥见的、遭病毒感染地区的奇特分布模式。但是,他没有言明攻击背后可能隐藏的政治含义。 “我要求把法里耶抽调到我们这边,”钱哥向各位经理提出,“而且我认为我们3个人有必要继续全力攻关。”但是,有一个问题他自己也说不清楚。那就是,要把震网的代码彻底研究透,到底还需要多长时间。 一般情况下,公司的威胁研究团队每天可以分析20种恶意代码。因此,让3名顶级分析师无限期地分析一种病毒,无论如何都是划不来的。之前,这种情况只在2008年Conficker爆发的时候出现过一次。但Conficker是一种感染了全球范围内数百万台计算机、不断变形的蠕虫病毒,而且在发现初期带来了“当初为什么会有人制造并释放它”等一系列待解难题。与之相比,震网病毒感染的计算机数量少了几个数量级,攻击目标(西门子PLC)数量更少。但是,神秘难测的代码召唤着人们进一步探索的好奇心,经理们最终还是同意了钱哥的要求。“不过,你要时刻向我们报告研究进展。”他们没想到,在未来几个月里,关于震网病毒的讨论主导了几乎每周的例会。 钱哥团队抓住了这次深挖震网代码的机会,像打了鸡血一样全身心投入其中。随着研究的深入,他们逐渐意识到,这里面完全是一片陌生的领域,没有人能帮上他们的忙。 赛门铁克是个国际化的大企业,但钱哥和莫楚的工作环境是一个很小的办公室,与外界几乎隔绝。这里是卡尔弗城的赛门铁克威胁情报实验室,类似于生化防御实验室,研究员们可以在一个实验网络中运行恶意代码。这个实验网络与公司办公网络物理隔离,是一个用来在可控环境下观测病毒行为的沙盒系统。要进入这个位于一楼的实验室,员工要先后经过多层安全门,每进一层门,就多一些限制。最后一扇门只允许很少的几个人进入,而且内部的实验网络是与外部计算机物理隔绝的。在这里,禁止使用任何光盘、U盘等移动介质,防止有人无意中通过移动介质把遍布实验室的病毒带到外面,造成病毒样本泄漏。 “病毒智能实验室”这个名字给人一种无菌工间的印象,似乎里面都是穿着白大褂、弯着腰观察显微镜和切片的科学家。但赛门铁克的实验不属于任何一种传统的“实验室”。里面的工位上什么仪器都没有,只有几名一天到晚盯着显示器的员工,系统化地做着看起来很乏味的事情。墙上没有一张图;没有供员工发泄多余精力用的玩具枪或其他办公室游戏;没有摆放营造家庭氛围的植物,连假的都没有。唯一一点福利性的绿色景观,是可以通过一面墙的窗户看到长满绿色植被和树木的小山,完全就是那种仿生态科技园区风景,专门给关在屋子里上班的人看的。 莫楚的办公隔间里没有任何个人物品,只是旁边挂着一副北美大峡谷的全景特写照片,沐浴着粉色和淡紫色的落日余晖。这是去年莫楚和父亲一起旅行时候照的。办公桌上有两台接入实验网络的计算机,还有一台专门用来阅读邮件和上互联网的计算机。但这台计算机只有显示器和键盘、鼠标3种外设,通过弯弯曲曲的数据线跟藏在实验室外面某个机柜里的主机和硬盘相连,确保这台计算机无法连接实验网络。 钱哥的办公隔间和莫楚靠着同一面墙,但稍显个性化一些。隔间门上贴着一些艺术明信片,挂着几面海盗旗,还有一个釉面装饰的门签,上面写着他名字的双关语:钱•鲁那提克(法语直译:Chien-狗,Lunatique-喜怒无常的)。把这句法语直译出来的意思是“小心狗”(Beware of Dog),但钱哥更喜欢文艺的译法:“狂犬”(Mad Dog)。 钱哥今年39岁,但看上去就像29岁。他个子很高,身形瘦长,戴金丝眼镜,笑起来脸颊上有一对迷人的深酒窝,讨论问题的时候,一激动就会语速加快。钱哥在安全业界一直做得很棒,但在这个喜欢通过炫技而出名的行业里,他反而非常谦虚低调,偏爱埋头研究而不是抛头露面。 三个人当中,钱哥在公司的时间最长。这是他大学毕业后的第一份工作,但完全是碰运气进来的。90年代初,他在加州大学洛杉矶分校,他选的专业是遗传学、分子生物学和电气工程,像莫楚一样打算投身科研事业。但在1996年毕业后,他跟着几个朋友一起来到了赛门铁克,打算挣点钱哥供自己读研究生。没想到,一呆就是这么多年。 那时,网络安全还是一个新兴领域,不需要接受专业培训就可以找到一份工作。所以,钱哥刚上班的时候根本不知道什么是病毒,但他很勤奋,自学了大多数病毒采用的X86汇编语言,就甩开膀子干起来了。最好的病毒分析师,未必出自训练有素的代码工程师。工程师是建造代码的,而分析师是拆解代码的。虽然信息安全是一个以培训课程和认证为基础的职业领域,但毫无经验的钱哥还是凭借他永不满足的好奇心、猜解谜题和“打破砂锅问到底”的性格,在实习生中脱颖而出。你可以教会一个人编写病毒代码,但无法通过教学使一个人拥有“想知道事物工作原理”的热情。最顶级的研究者具有强迫症般的倾向,不挖出代码中的秘密,他们绝不善罢甘休。(待续) 钱哥刚入职的时候,病毒研究员的工作有点像电器公司的维修工,有很多停工等待的空闲时间。病毒很稀少,一般以软盘为载体、通过人为携带病毒文件的方式缓慢传播。认为自己遭到病毒感染的客户,会把存有可疑文件的软盘寄给赛门铁克公司。然后,软盘可能会在某个文件盒里面呆上一个星期,然后钱哥或另一位同事接到通知,再过去把它拿过来。有趣的是,大多数时候,软盘上的文件都不是病毒。当偶尔发现病毒时,他们会立即把病毒的特征码加到检测工具中,然后把“更新包”放在另一张软盘中寄回给客户,并提供升级杀毒软件的说明。 这种慢节奏持续了很长时间。随着Win98和Office软件的出现、互联网的扩张和电子邮件的泛滥,情况发生了变化。病毒进化了。快速传播的病毒和网络蠕虫可以在几分钟内感染数百万台计算机。1999年的梅丽莎(Melissa)病毒就是其中的翘楚。新泽西州一位名叫大卫•史密斯(David Smith)的31岁程序员制作了它,把它嵌入到Word文档中,然后把它放到了alt.sex.usenet新闻组上。他非常了解这里的目标受众,他宣称,文档中有登录色情网站的用户名和密码,以此怂恿他们打开染毒文档。一旦文档被打开,梅丽莎病毒就会利用Word宏功能中的漏洞,把自己发送到本机Outlook(Office套件中的邮件服务程序)账户中前50个联系人的邮箱中。作为世界上首个通过电邮实现大规模传播的病毒,它在3天之内感染了超过10万台计算机,创造了当时的记录。当然,以今天的标准,肯定是不值一提啦。除了通过Outlook传播之外,病毒还会在遭感染计算机的文件中插入一段与Scrabble拼字游戏有关的奇怪文字:“22分。加上分数的3倍,再用我的全部字母加上50。游戏结束,我走啦!”(注:来自动画片《辛普森一家》第1季第2集,Bart在一局Scrabble游戏中说的话。)梅丽莎病毒没有造成什么大的破坏,但在它的示范效应下,具有快速传播能力的病毒和蠕虫成为接下来几年里的主流威胁。 随着威胁不断增长,赛门铁克公司意识到,必须在病毒大规模爆发之前就将其快速杀灭。而当公司刚进入杀毒领域时,确定的响应时间“良好”标准是:从发现病毒起,在一周之内发布特征码。现在,公司打算将这个标准提高到一天之内。要实现这个目标,公司需要在不同时区安排值班分析师,以便能第一时间发现病毒,并在美国客户起床并点击带毒的邮件附件之前,把特征码分发给他们。 此时,钱哥已经完成了自己在赛门铁克的“两年计划”。攒够了读研究生的钱哥,打算先去科罗拉多滑滑雪,再回学校攻读科学学位。不过公司给了他一个充满诱惑的合约——去荷兰任职。公司在阿姆斯特丹附近有一个技术支持和销售办公室,急需成立一个病毒分析团队。这么好的机会放在眼前,钱哥没理由不答应。他刚去荷兰没几天,就赶上了2000年5月的“求爱信”病毒(Love Letter worm)大爆发。病毒来自菲律宾,开始像是大学生搞的恶作剧,但之后一发不可收拾,感染了全球数百万台计算机。这个事件,很好的检验了赛门铁克欧洲团队的应急响应能力,虽然这个团队只有一个人。钱哥以创纪录的不到20分钟的速度,完成了代码分析,并发布了用于检测病毒的特征码。然并卵。因为病毒占用了几乎全部网络带宽,客户根本连不上赛门铁克服务器,更别说下载病毒库升级包了。当危机过后,钱哥在阿姆斯特丹招募了4名员工,充实了团队。增加的人手,在一年后迎战“红色代码”的工作中派上了用场。 后来,为组建另一个团队,钱哥到东京呆了一小段时间。2004年,赛门铁克将欧洲公司从阿姆斯特丹搬到了都柏林,钱哥也跟着去了爱尔兰。很快,钱哥又把包括莫楚在内的十几名新人招至麾下。 2008年,他和曾在赛门铁克公司工作过的一名法国妹纸——他的新任妻子一起回到了美国。再后来,他加入了莫楚负责的加州团队。 现在,卡尔弗城的钱哥、莫楚和巴黎的法里耶要打一场解构震网病毒的硬仗。 当他们尝试解密震网全部代码时,出现了第一个真正的障碍。如莫楚之前发现的,震网的主体是一个超大的DLL文件。里面包含数十个小的DLL文件和其他组件,这些文件层层加密、嵌套在一起。必须把这么多层加密机制全部破解,才能开始分析代码。幸运的是,密钥就保存在代码当中。每当震网进入一台计算机时,它都会根据情况需要,用这些密钥解密里面的DLL文件和其他组件,并将它们提取出来。这应该是病毒设计者预想的工作模式。但是,在实验计算机上,用于解密“载荷”的最后那些密钥并没有被激活。 莫楚仔细侦查代码中的蛛丝马迹,终于,在看到与西门子PLC有关的注释文字时,他悟出了其中原因。震网只会入侵安装了西门子公司Step 7或WinCC软件的计算机,而且,这些软件所对应的PLC还必须是S7-315和S7-417这两个型号。只有软硬件环境同时满足上述条件,才能激活震网解密并释放载荷代码的密钥。 问题是,钱哥和莫楚到哪儿去找西门子的产品呢?所以,他们只好用调试器(debugger)来一遍又一遍的摆弄代码,以求找到密钥、并手工解锁载荷。 调试工具(debugging program)是逆向工程师的大杀器,可以用它们一步一步的观察代码的执行过程,就像定格动画摄像机一样。这样,可以逐步将每一个函数分离出来,记录这些函数的功能和任务。用这种方法,他们摘出了所有包含解密代码指令的代码块,然后顺藤摸瓜,找到了密钥。但这只完成了任务的一半。找到密钥之后,还要猜解出每个密钥对应的加密算法。整个挖掘过程持续了好几天。当他们完成了对病毒所有部分的解密后,他们终于看透了震网在开始感染计算机时所执行的每一个动作。 震网做的第一件事,就是判断计算机到底是32位还是64位,如果是64位,放弃。它还会检查计算机是否曾被震网病毒感染过,如果发现上面已有旧的震网版本,就会将其清除并用新版本替换掉。如果发现未被感染的计算机,它就会“演出一段精心彩排过的舞蹈”:迅速通过一系列步骤进驻这台计算机,并确定下一步行动计划。 在这个过程中,会有一匹木马(rootkit)抢先“登陆”并实现U盘上病毒文件对系统的“隐身”。具体手段是,先嵌入系统(hooking the system),使反病毒引擎无法看到文件名,从而躲避扫描。如果扫描器要扫描U盘上的内容,木马可以将扫描器的命令拦截下来并进行修改,最终给系统返回一个没有震网病毒文件的结果清单。但这一招无法骗过所有的反病毒产品。震网病毒的设计者事先考虑到了这个问题,并提前做好了应对预案。如果震网发现计算机上安装了这种厉害的反病毒软件,就会立即停止感染,什么也不做。(待续) 注释: Scrabble是西方流行的英语文字图版游戏,在一块15×15方格的图版上,2至4名参加者拼出词汇而得分。词汇以填字游戏的方式横竖列出,并必须收录在普通词典里。不同字母有不同分数,是根据在标准书写英语中出现频率订定,如经常出现的E和O只值1分,但不常用的Q和Z则值10分。图版上有不同颜色的格子,参加者可从中获得额外分数。一个游戏版,一百个游戏字卡,四个字卡尺和字卡袋一个。 Twenty-two points, plus triple-word-score, plus fifty points for using all my letters. Game’s over. I’m outta here. 这段话来自动画片《辛普森一家》第一季第二集。 但如果震网过了这一关,就会激活同样伪装成驱动程序文件“第二匹马”。它有两个任务:第一个是感染插在计算机上的所有USB存储设备,但从登陆起算只持续21天;第二个、最重要的是,将震网病毒主体文件——那个巨大的DLL文件及其组件进行解密,并用之前莫楚已经验证过的那种复杂手段,先把大DLL解压成若干小DLL,再把它们载入内存。这时,病毒的代码只是在内存中驻留,每次计算机重启后,代码就会消失。所以,每次重启后,拆分与加载的工作就会重做一次。 一旦震网主体部分被载入内存,震网就会开始搜索新的目标,并把战果汇报给指挥控制服务器。如果计算机上没有安装西门子的Step 7和WinCC软件,那么震网就会在完成以上任务后,主动进入休眠状态。 好,现在赛门铁克的男神们已经清楚了震网传播和加载代码的方法,但却对它的最终目的一无所知。问题的答案,仍然隐藏在载荷部分浩若繁星的代码中。 这一次,跟莫楚在完成震网导弹部分代码解构时一样,他禁不住再次对攻击者在代码中巧夺天工的设计叹服不已。他能想到的,攻击者全都做到了:周全考虑可能遇到各种问题、匪夷所思却天衣无缝的解决方案、以及在代码上线之前对无数种场景的360度无死角测试。莫楚觉得,令人印象深刻的,不仅是震网的代码本身,还有对整个攻击流程的精妙策划。 除了加载文件和骗过杀毒软件的复杂手段之外,震网还使用了一个扩展检查清单,来判断计算机上的环境是否适合释放病毒载荷。它会仔细跟踪自身在计算机上占用的处理器资源情况,只有在确定震网所占用资源不会拖慢计算机速度时才会将其释放,以免被发现。另外,所有的应用程序都会生成临时文件,但由于这些临时文件早晚会被其他程序生成的临时文件覆盖,多数应用程序都不会主动将其删除。但震网的设计者不希望相关文件因长期在系统中保存而暴露行踪。 虽然攻击方在代码中额外增加了一些保护措施,但还是存在一些不可思议的设计漏洞。并非只有莫楚一个人这样认为。当赛门铁克方面在几周之后发布震网代码的研究成果时,业内人士们纷纷开始在网上吐槽震网的众多缺点。他们还说,震网的设计者根本不像最初的报道中描述的那般高大上,他们连“顶级”都算不上。还有人指出,震网在技术上虽有诸多亮点,但存在前后不一致的情况,而且设计者所犯下了很多低级错误,才让研究者能比较轻易地破解其真实意图。 也就是说,如果震网的设计者能够针对潜在破解者所使用的通用工具,采用更具迷惑性的反制手段,那么将对破解者带来更大的困难。这些手段包括,用更复杂的加密技术阻止目标计算机之外的任何人解锁载荷,不轻易让人了解震网的目标是安装西门子Step 7软件和PLC的计算机等。震网在与指挥控制服务器的通信中使用的是较弱的加密算法和标准通信协议,如果它在这方面做些文章,研究者也不会如此轻易建立“槽洞”并追踪到它的流量信息了。 密码专家内特•劳森(Nate Lawson)在博客中用充满鄙夷的口吻写道,“震网的设计者应该为隐藏载荷所用的业余手段感到汗颜”,还说他们用了一些其他黑客早都抛弃的过时手法。“我真心希望这不是美国人写的”,他说,“因为我希望高端网络武器开发者至少应该知道保加利亚少年(代指业余选手)在90年代初期就曾经做过的事情。”艺术水准的策略和漏洞百出的技术结合在一起,让震网看上去就像一个稀松平常的“科学怪人之拼凑品”,而不像是顶级情报机构机密的尖端研究项目。 但是,对于震网中的这些矛盾,莫楚有着自己的看法。他认为,设计者故意在遭感染计算机与服务器的通信中使用了弱加密和标准协议,目的是让这些通信看起来和正常通信没什么两样,以免引起注意。而且,由于服务器涉及的通信流量很小,不作特别加密处理也是可以理解的。在保护载荷安全性方面,设计者可能没有办法使用更复杂的技术。比如,设计者打算用目标计算机的精确配置信息来生成密钥,以防其他计算机实施解密。但目标计算机在配置上可能无法做到100%相同,从而难以使用同一密钥加密载荷。这会造成一定的不可控。而且,设计者考虑到目标计算机的配置可能发生变化,这样一来密钥就会失效,载荷就无法被解密、激活了。 此外,震网中存在问题的原因也可能是“赶工期”。设计者可能面临马上将病毒投入使用的压力,所以慌慌张张的把病毒赶制出来,其中难免会有一些粗心之举。 对“拼凑”的另一种解释是,震网的代码很可能是由水平不同的多个团队共同编写的。震网代码的模块化特征意味着,代码的各个部分可能是由多个团队同时或在不同时段内合作完成的。莫楚猜测,至少有3个团队参与了震网代码的编写——一个是由顶尖高手组成的、编写针对西门子软件和PLC的载荷部分代码的核心团队,一个是设计病毒传播、代码加载与载荷解锁机制的次顶级团队,最后一个负责运营指挥控制服务器并设计通信加密和协议选取机制的糙哥团队。照此设想,各团队的职责分工明确而独立,彼此之间没有影响。 纵然各团队在技术水平和经验上参差不齐,但至少在一件事上是步调一致的。他们没有主动在代码中留下可以追踪自己身份的任何线索。 在对于黑客攻击的取证调查工作中,始终存在归因的问题。计算机攻击可以从世界上任何角落发起,可以通过无数台被黑计算机或代理服务器掩盖其发起攻击的初始路径。除非攻击者在掩盖踪迹方面非常大意,调查者很难单凭数字证据对锁定攻击者的真实位置和身份。 不过,攻击者偶尔会有意无意的在代码中留下一些线索。这些线索会告诉人们,他们是谁、他们来自什么地方,等等。在看上去毫无关联的病毒和木马中,可能存在同样的离奇痕迹。这些痕迹,可以帮助取证调查者把这些病毒关联起来,甚至找出它们的共同作者,就像根据在连环案件中的犯罪手法来找出罪犯一样。 和其他病毒相比,震网几乎没有这方面的信息。但钱哥和莫楚还是挖到两处。 一天,钱哥正在详细筛查震网感染计算机部分代码的注释,忽然发现了一些有趣的东西:一个阻止震网在某些特定计算机安装的“感染标记”。每当震网“登陆”一台新的计算机,都会在解密、解压病毒文件之前检查Windows系统的注册表。如果其中有一个含有“0x19790509”字母数字组合的“神秘字符串”,震网就会立即放弃感染动作,退出这台计算机。(待续) 钱哥之前见过这种“免疫值”(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)节,就是为庆祝古波斯犹太人死里逃生而设立的。 [![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2015-12-08_5666b16b5b85d.jpg)](http://www.aqniu.com/wp-content/uploads/2015/09/640.webp-1610.jpg) [![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2015-12-08_5666b16b81d15.jpg)](http://www.aqniu.com/wp-content/uploads/2015/09/640.webp-173.jpg) [![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2015-12-08_5666b16c460fc.jpg)](http://www.aqniu.com/wp-content/uploads/2015/09/640.webp-185.jpg) [![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2015-12-08_5666b16c68e0d.jpg)](http://www.aqniu.com/wp-content/uploads/2015/09/640.webp-191.jpg) 表面上看,这个故事跟震网病毒没什么瓜葛。但钱哥从以斯帖王后的希伯来文名字中找到了一丝线索。在改名并成为王后之前(隐藏族裔背景),以斯帖的名字是哈达莎(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也常见于[恶意代码](http://www.aqniu.com/infosec-wiki/827.html "恶意代码是一种程序,它通过把代码在不被察觉的情况下镶嵌到另一段程序中,从而达到破坏被感染电脑数据、运行具有入侵性或破坏性的程序、破坏被感染电脑数据的安全性和完整性的目的。")中。比如保持权限的后门中,部分代码会使用hooking技术,通过截取并伪造某个显示其存在的API的输出,使自己变得不可见。穿墙(Wallhack)是另一种源于hooking技术的黑客行为。它通过拦截计算机游戏中的函数调用,并修改游戏者看到的画面,来赋予他们相较于其他玩家的不公平优势。
';