为啥我觉得 WanaCrypt 背后的操纵者有能力验证付款者的身份?

2017-05-23 00:31:41 +08:00
 acess
现在都说不要付赎金,很可能打水漂,因为勒索作者没法验证付款者的身份。

但是……为啥我觉得勒索作者有办法验证赎金来源呢?

比特币地址虽然任何人在任何时候都能生成,但只要私钥不泄露,还是不可能伪造的……
受害者真心要付款的话,肯定要用从未公开使用过的、新生成的地址。如果受害者提前告诉勒索者,说自己要通过这个地址付款,别人也不可能猜出受害者用的地址。对于想盗用其他受害者赎金的“鸡贼”受害者来说,他们无法提前得知真正付款的受害者用了哪个地址,勒索者倒是可以提前得知,所以“鸡贼”受害者就算查了比特币交易记录,把别人付款的地址发给勒索者,勒索者也不会上当。
勒索软件会在感染时生成 RSA 密钥对,其中 RSA 公钥被用来加密每一个“绑票”文件的 AES 密钥。每台机器的 RSA 密钥对都是唯一的(而且就算受害者泄露了公钥也没问题,如果有人把别人的公钥发过去,岂不是要白白替别人付赎金?应该没人愿意这么干;如果某个鸡贼的受害者把别人的 RSA 公钥发过去,也是没有意义的——显然,别人的 RSA 私钥无法解密自己的文件)。

所以,勒索者会要求受害者怎么做呢?很简单,只要受害者先把本机的 RSA 公钥(被加密的 RSA 私钥其实也行)和自己付款用的比特币地址通过暗网发过去,勒索作者就可以用一个自动化的程序读出受害者的比特币地址,过一段时间后(这段时间不能太短,否则“鸡贼”的受害者可能会拿比特币交易确认延迟、网络延迟抵赖,辩称自己才是真正的付款者),受害者再用这个比特币地址付款,只要勒索者看到这个地址付款了,就可以确认赎金已经支付了,然后就可以给受害者发来的本机 RSA 私钥解密。

如果 WanaCrypt 的解密程序有问题,界面上的“ Contact us ”如果没发送 RSA 公钥(我还不知道 WanaCrypt 具体是怎么做的),就需要受害者自己发送,这样大家发的格式可能就都不一样了,可能不利于自动验证,不过除非受害者用了特别奇葩的格式,否则至少可以免除一大部分手动验证的工作吧。
1821 次点击
所在节点    Bitcoin
24 条回复
acess
2017-05-23 00:53:26 +08:00
在虚拟机里可以看到,点了界面上的“ Contact us ”后,程序会读取 00000000.res 文件,按照安天的分析( http://www.antiy.com/response/Antiy_Wannacry_Pay.html ),它是加密的文件数量、大小等信息,每个人应该都不一样吧。
如果这些信息连同付款地址一同通过暗网被发送给勒索者,应该也足以让勒索者辨认受害者的身份了。暗网连接是加密的,这些信息应该也不会外泄,那么,“鸡贼”的受害者想把自己的 00000000.res 伪装成别人的也是空想。

不过,分析了那么多,就算 LZ 没搞错,还得看勒索者的智商和“信用”啊……无论如何,谁也无法阻止勒索者就此卷款跑路……
malusama
2017-05-23 01:25:02 +08:00
只要分配唯一的钱包地址就能确认啊……
acess
2017-05-23 01:26:50 +08:00
@malusama 但不是说很多中招的都只显示已知的三个地址么……所以才有无法确认付款者身份的说法。
malusama
2017-05-23 01:27:10 +08:00
RSA 密钥对不都唯一的么…为什么要发送
发送被公钥加密过的 AES 密钥返回解密的密钥就行了吧
malusama
2017-05-23 01:28:29 +08:00
@acess 没法连接 TOR 本身就无解了吧…
acess
2017-05-23 01:30:22 +08:00
@malusama
病毒感染时在本机生成一个 RSA 密钥对,其中,私钥被硬编码在程序里的 RSA 公钥加密,这样就只有勒索者才能把这个私钥重新解密出来。
每个文件的 AES 密钥都不一样,执行加密时,会把每个文件的 AES 密钥都用本机的 RSA 公钥加密。
acess
2017-05-23 01:31:05 +08:00
@malusama 如果后续想办法让 Tor 能连得上(比如 VPN、路由器装 ss 等),我觉得还是没问题的。
malusama
2017-05-23 01:34:34 +08:00
@acess 为什么要生成一个 RSA 密钥对???
作者先前生成一个 RSA 密钥对公钥硬编码在程序里感染主机后生成一个 AES 密钥把文件用 AES 加密然后再用公钥加密 AES 的密钥不就好了?
malusama
2017-05-23 01:35:35 +08:00
@acess … TOR 得下一个软件吧…
又不是用 VPN SS 的协议
acess
2017-05-23 01:37:46 +08:00
@malusama 根据现有的分析,WanaCry 就是这么干的。
个人理解,这样可以做到每个文件都有唯一的 AES 密钥、每台中招机都有唯一的 RSA 密钥。然后,就算 dump 内存也只能找到一个文件的 AES 密钥,无法解救其他文件;就算有受害者把赎金买来的私钥公开了,也无法解救其他受害者。
当然,WanaKiwi 利用了能重新生成 RSA 私钥的质数并没有从内存中清除的缺陷……
acess
2017-05-23 01:38:02 +08:00
@malusama Tor 是 WanaCry 自带的。
malusama
2017-05-23 01:43:53 +08:00
@acess 你觉得这加密流程合理么……哪的分析有地址么?
你在感染的机器生成 RSA 那还有啥意义……
acess
2017-05-23 01:46:46 +08:00
@malusama 这流程哪里不合理啊……
分析:
http://bobao.360.cn/learning/detail/3853.html
acess
2017-05-23 01:48:57 +08:00
@malusama 本地生成 RSA 的意义我已经说过了:每台中招机都有唯一的 RSA 密钥,就算有受害者把赎金买来的私钥公开了,也无法解救其他受害者。每个文件都有唯一的 AES 密钥,就算 dump 内存也只能找到一个文件的 AES 密钥,无法解救其他文件。
除此之外,这样也提供了方便,受害者只需要一个 RSA 私钥就可以解密本机所有文件,不需要把所有 AES 密钥都传给勒索者去解密。
acess
2017-05-23 01:54:12 +08:00
@malusama 本机生成的 RSA 私钥从一开始就用勒索作者硬编码在程序里的 RSA 公钥加密了,所以只有找勒索者才能把本机生成的 RSA 私钥重新解开,然后才能挨个解密每一个文件的 AES 密钥、再用 AES 密钥解密文件数据。
acess
2017-05-23 02:09:26 +08:00
我觉得如果勒索作者没有依靠本机生成的 RSA 密钥来辨认受害者的身份,那就是有漏洞的:可能有一群鸡贼的受害者,在联系勒索者、付款前就把 00000000.res 等机器特征信息都伪装成一样的了。
可以想见,如果勒索者忘了检查每一个机器特征是否有多个 RSA 密钥尝试申请解锁(对应多个明显是想用一份赎金骗多份解锁),那受害者们也许就可以用一份赎金解锁 N 台电脑的所有文件了。
但是,勒索者也许不会吃这一招……
malusama
2017-05-23 02:09:44 +08:00
@acess 为什么要给你私钥……你给我密文我解开给你不就好了….
acess
2017-05-23 02:15:06 +08:00
@malusama
勒索者手里有 RSA 密钥对 A,包括公钥 A 和私钥 A
每个受害者机器都生成了唯一的 RSA 密钥对 X,包括公钥 X 和私钥 X。私钥 X 刚生成出来就被公钥 A 加密,然后保存在受害者的硬盘上。
受害者支付赎金解锁时,受害者发给勒索者的就是被公钥 A 加密过的私钥 X,勒索者用私钥 A 解密出私钥 X,再把它发给受害者。
imcoddy
2017-05-23 09:41:11 +08:00
“受害者真心要付款的话,肯定要用从未公开使用过的、新生成的地址。”

这一句话是不对的:受害者要付款的话,并不一定需要使用从未公开使用过的、新生成的地址。事实上也没法使用,因为这样的地址里面也没有币。

不过,据说实现解锁的方式和你后边说的类似,现在是手动处理的就是了。
acess
2017-05-23 09:45:05 +08:00
@imcoddy 是的,我主贴在这块说的有问题,即使不用新地址也是可以的,只要提前把用来付款的地址发给勒索者就可以了。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/363090

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX