上周末WannaCry勒索软件肆虐互联网,无数主机被感染,从医疗保健到交通运输,多种关键系统被锁定,密码学家们都在找寻破解加密困局的良药。毕竟,找到WannaCry加密机制中的漏洞,就能解密所有这些被感染的系统,不让网络罪犯的勒索阴谋得逞。
现在,一名法国研究员称,至少发现了一个非常有限的补救措施。该修复方案看起来似乎仍然缺陷多多,远未达到WannaCry受害者们期望的灵丹妙药的程度。但如果阿德里安·圭奈特是对的,他的工具就可以解锁被感染的 Windows XP 机器——分析师认为该老旧操作系统占了WannaCry受害范围的一部分。
没有万灵丹
上周五,圭奈特在开源代码仓库GitHub上发布了“WannaKey”。这位QuarksLab安全公司的员工称,该软件能从 Windows XP 机器的内存中提取私钥痕迹,用于解密被WannaCry感染PC的文件。
圭奈特称,在感染了WannaCry的测试XP机上,他已使用该解密工具成功了数次。但他警告道,由于这些痕迹存储在易失存储器中,只要该恶意软件或任意其他进程刚好重写了解密密钥存储区,或者电脑在被感染后重启过,他的招数就失效了。
如果你运气好,你可以访问内存的某些部分,重新生成密钥。或许密钥依然存在,你可以检索到密钥来解密文件。但并不是每次都有效的。
圭奈特特别警告:
尚有可能恢复文件的任何 XP WannaCry 受害者,必须在运行他的程序前让电脑保持原样。别重启!
其他安全研究人员还没有验证WannaKey的能力,而且至少有一名研究员——Comae Technologies 创始人马特·舒彻,称该程序在他最初的测试中没能解密文件。但看过该工具代码和圭奈特在GitHub和推特上备注的其他研究人员认为,该工具似乎利用了WannaKey加密中的缺陷,最起码在 Windows XP 上是这样的。约翰·霍普金斯大学计算机科学教授马修·格林说:“看起来像是合法的。”但他也警告道,对具体受害者是否有效也是个运气问题,跟中彩票似的。
解密看门人
WannaKey的解密机制,利用了微软某加密函数中的一个怪癖,而这个加密函数是用来从内存中删除密钥的。这个怪癖似乎被WannaCry的作者给忽略掉了。WannaCry会在受害者机器上产生一对密钥:一个“公”钥用来加密文件,一个“私”钥用来解密——如果受害者支付了赎金的话。(WannaCry的无良作者到底会不会为已支付赎金的受害者解密文件尚是个未知数。)为防止受害者得到私钥并自行解密文件,WannaCry把该密钥也给加密了,让该密钥只有在勒索软件操作人员解密的时候才可以访问到。
但圭奈特发现,WannaCry加密私钥之后,一个微软设计的删除函数还会到内存中清除掉未加密版本的密钥。很明显,勒索软件作者并不清楚该函数在 Windows XP 系统中实际上删不掉内存中密钥,只是留了个指向密钥的句柄而已。芬兰安全公司F-Secure研究人员米柯·希波能,同样研究了圭奈特的代码,他说:“为什么要用个实际上不能清除密钥的密钥销毁函数呢?真的特别奇怪。或许也是为什么之前没人发现的原因吧。”
不知道有多少 Windows XP 机器中了WannaCry。爆发初期,微软匆忙发布了一个补丁保护XP设备,思科研究人员称,至少64位的 Windows XP 机器是受周五开始泛滥的WannaCry蠕虫影响的。该勒索软件的大肆传播造成了新的恐惧,怕XP机器被这波感染潮淹没,毕竟,2014年起,微软就已经不再支持该16岁高龄的操作系统了。XP虽老,其使用却依然十分广泛,甚至某些关键系统,比如WannaCry几大著名受害者之一的英国国民健康服务,都还在用它。
无论被感染的XP机器有多少,鉴于其重启和重写限制,WannaKey都只对少部分的被感染XP有效。“周五到现在已经几天了,不太可能有太多受害者的机器没被动过。”
不过,对WannaCry的受害者及其被锁定的数据而言,有一丝希望总比没希望好。而且讽刺的是,少数幸运用户的救世主,竟然是微软加密软件的怪异特性——微软起初可是因让XP漏洞多多而广受指责。“Windows漏洞往往让人愤怒,但这个漏洞却可能帮助WannaCry受害者恢复他们的文件。”塞翁失马焉知非福?
最新:360企业安全19日下午发布解密工具,增加了 Windows 7 版本,在未重启的情况下,通过内存还原私钥。
相关阅读