为啥我觉得 WanaCrypt 背后的操纵者有能力验证付款者的身份? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
acess
V2EX    Bitcoin

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

  •  
  •   acess 2017-05-23 00:31:41 +08:00 2162 次点击
    这是一个创建于 3138 天前的主题,其中的信息可能已经有所发展或是发生改变。
    现在都说不要付赎金,很可能打水漂,因为勒索作者没法验证付款者的身份。

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

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

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

    如果 WanaCrypt 的解密程序有问题,界面上的“ Contact us ”如果没发送 RSA 公钥(我还不知道 WanaCrypt 具体是怎么做的),就需要受害者自己发送,这样大家发的格式可能就都不一样了,可能不利于自动验证,不过除非受害者用了特别奇葩的格式,否则至少可以免除一大部分手动验证的工作吧。
    第 1 条附言    2017-05-24 11:27:35 +08:00
    LZ 讨论了那么多,感觉 WanaCry 作者广播的那个方法还是巨坑……
    首先,受害者要控制付款地址是很麻烦的。比特币设计时就没有真正的“来源地址”,一般的钱包好像也不想让用户直接控制用来发送的地址。(查了资料,Bitcoin Core、blockchain.info 等钱包好像也没用难以理解的方法,一般是挑最后用过的地址来发送,或者挑余额足够的地址来发送)
    其次,理论上存在“抢小票”的风险,操作稍有不慎,其他受害者就有可能冒充真正付了款的受害者。勒索者面对真真假假的消息,可能无力分辨,要么全给解锁,要么全不给解锁,反正现在很难抓到他,他可以看心情操作……
    如果这个勒索者的智商还在线(而且 LZ 没理解错比特币的工作机制)的话,那他也许会要求受害者用付款地址私钥签名本机的 RSA 公钥(或者私钥)来证明自己是真正的付款者,而不是冒充的不过,这仍然不是完美的方案,那些用了某些“非链上”在线钱包 /找了代付的受害者可能没办法执行签名,因为他们手里没私钥,而且执行签名的操作也是有点麻烦的……
    LZ 是比特币新手,有错轻喷。
    第 2 条附言    2017-05-24 11:32:41 +08:00
    还有,LocalBitcoins.com 看上去就是“非链上钱包”实际上比特币在转出之前是保存在网站自己的钱包地址上的,所以从 LocalBitcoins 转出比特币时,“来源地址”并不是网站上显示的收款地址……
    最近有一位不幸中毒的 V 友在尝试付赎金,不知道这个特点有没有坑到他。
    24 条回复    2017-05-23 10:04:29 +08:00
    acess
        1
    acess  
    OP
       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
        2
    malusama  
       2017-05-23 01:25:02 +08:00 via Android
    只要分配唯一的钱包地址就能确认啊……
    acess
        3
    acess  
    OP
       2017-05-23 01:26:50 +08:00
    @malusama 但不是说很多中招的都只显示已知的三个地址么……所以才有无法确认付款者身份的说法。
    malusama
        4
    malusama  
       2017-05-23 01:27:10 +08:00 via Android
    RSA 密钥对不都唯一的么…为什么要发送
    发送被公钥加密过的 AES 密钥返回解密的密钥就行了吧
    malusama
        5
    malusama  
       2017-05-23 01:28:29 +08:00 via Android
    @acess 没法连接 TOR 本身就无解了吧…
    acess
        6
    acess  
    OP
       2017-05-23 01:30:22 +08:00
    @malusama
    病毒感染时在本机生成一个 RSA 密钥对,其中,私钥被硬编码在程序里的 RSA 公钥加密,这样就只有勒索者才能把这个私钥重新解密出来。
    每个文件的 AES 密钥都不一样,执行加密时,会把每个文件的 AES 密钥都用本机的 RSA 公钥加密。
    acess
        7
    acess  
    OP
       2017-05-23 01:31:05 +08:00
    @malusama 如果后续想办法让 Tor 能连得上(比如 VPN、路由器装 ss 等),我觉得还是没问题的。
    malusama
        8
    malusama  
       2017-05-23 01:34:34 +08:00 via Android
    @acess 为什么要生成一个 RSA 密钥对???
    作者先前生成一个 RSA 密钥对公钥硬编码在程序里感染主机后生成一个 AES 密钥把文件用 AES 加密然后再用公钥加密 AES 的密钥不就好了?
    malusama
        9
    malusama  
       2017-05-23 01:35:35 +08:00 via Android
    @acess … TOR 得下一个软件吧…
    又不是用 VPN SS 的协议
    acess
        10
    acess  
    OP
       2017-05-23 01:37:46 +08:00
    @malusama 根据现有的分析,WanaCry 就是这么干的。
    个人理解,这样可以做到每个文件都有唯一的 AES 密钥、每台中招机都有唯一的 RSA 密钥。然后,就算 dump 内存也只能找到一个文件的 AES 密钥,无法解救其他文件;就算有受害者把赎金买来的私钥公开了,也无法解救其他受害者。
    当然,WanaKiwi 利用了能重新生成 RSA 私钥的质数并没有从内存中清除的缺陷……
    acess
        11
    acess  
    OP
       2017-05-23 01:38:02 +08:00
    @malusama Tor 是 WanaCry 自带的。
    malusama
        12
    malusama  
       2017-05-23 01:43:53 +08:00 via Android
    @acess 你觉得这加密流程合理么……哪的分析有地址么?
    你在感染的机器生成 RSA 那还有啥意义……
    acess
        13
    acess  
    OP
       2017-05-23 01:46:46 +08:00
    @malusama 这流程哪里不合理啊……
    分析:
    http://bobao.360.cn/learning/detail/3853.html
    acess
        14
    acess  
    OP
       2017-05-23 01:48:57 +08:00
    @malusama 本地生成 RSA 的意义我已经说过了:每台中招机都有唯一的 RSA 密钥,就算有受害者把赎金买来的私钥公开了,也无法解救其他受害者。每个文件都有唯一的 AES 密钥,就算 dump 内存也只能找到一个文件的 AES 密钥,无法解救其他文件。
    除此之外,这样也提供了方便,受害者只需要一个 RSA 私钥就可以解密本机所有文件,不需要把所有 AES 密钥都传给勒索者去解密。
    acess
        15
    acess  
    OP
       2017-05-23 01:54:12 +08:00
    @malusama 本机生成的 RSA 私钥从一开始就用勒索作者硬编码在程序里的 RSA 公钥加密了,所以只有找勒索者才能把本机生成的 RSA 私钥重新解开,然后才能挨个解密每一个文件的 AES 密钥、再用 AES 密钥解密文件数据。
    acess
        16
    acess  
    OP
       2017-05-23 02:09:26 +08:00
    我觉得如果勒索作者没有依靠本机生成的 RSA 密钥来辨认受害者的身份,那就是有漏洞的:可能有一群鸡贼的受害者,在联系勒索者、付款前就把 00000000.res 等机器特征信息都伪装成一样的了。
    可以想见,如果勒索者忘了检查每一个机器特征是否有多个 RSA 密钥尝试申请解锁(对应多个明显是想用一份赎金骗多份解锁),那受害者们也许就可以用一份赎金解锁 N 台电脑的所有文件了。
    但是,勒索者也许不会吃这一招……
    malusama
        17
    malusama  
       2017-05-23 02:09:44 +08:00 via Android
    @acess 为什么要给你私钥……你给我密文我解开给你不就好了….
    acess
        18
    acess  
    OP
       2017-05-23 02:15:06 +08:00
    @malusama
    勒索者手里有 RSA 密钥对 A,包括公钥 A 和私钥 A
    每个受害者机器都生成了唯一的 RSA 密钥对 X,包括公钥 X 和私钥 X。私钥 X 刚生成出来就被公钥 A 加密,然后保存在受害者的硬盘上。
    受害者支付赎金解锁时,受害者发给勒索者的就是被公钥 A 加密过的私钥 X,勒索者用私钥 A 解密出私钥 X,再把它发给受害者。
    imcoddy
        19
    imcoddy  
       2017-05-23 09:41:11 +08:00
    “受害者真心要付款的话,肯定要用从未公开使用过的、新生成的地址。”

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

    不过,据说实现解锁的方式和你后边说的类似,现在是手动处理的就是了。
    acess
        20
    acess  
    OP
       2017-05-23 09:45:05 +08:00
    @imcoddy 是的,我主贴在这块说的有问题,即使不用新地址也是可以的,只要提前把用来付款的地址发给勒索者就可以了。
    acess
        21
    acess  
    OP
       2017-05-23 09:48:20 +08:00
    @imcoddy 突然觉得用新地址反而有风险:如果受害者还没把新地址告诉勒索者,就自己把勒索者要求的金额转进新地址了,那么,可能有鸡贼的受害者在盯着这块,一看到有人转了数额和赎金相近的金额,就抢先把这个地址发给勒索者。
    imcoddy
        22
    imcoddy  
       2017-05-23 09:53:20 +08:00
    @acess 知乎上不就是有人教大家用这个方式解锁的么……
    acess
        23
    acess  
    OP
       2017-05-23 09:55:18 +08:00
    @imcoddy 新地址不是没币,需要先转进去么……所以,我刚刚担心的,和知乎上那个方法还是有点不一样的吧?知乎上的方法不是盯着勒索者的钱包么,我的意思是其他受害者可能会盯上所有钱包,看到像是准备要付款的地址就赶紧抢过来用。
    acess
        24
    acess  
    OP
       2017-05-23 10:04:29 +08:00
    @imcoddy 如果有很多受害者都找某个人代付,然后都用一个地址付款,也是有“小票被抢走”的风险的:可能有受害者不管三七二十一,直接把最常给勒索者付款的那几个地址发给勒索者,赌过一段时间后会有人付款。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5268 人在线   最高记录 6679 nbsp;     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 29ms UTC 01:23 PVG 09:23 LAX 17:23 JFK 20:23
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86