导语:最近安全研究圈出了个笑谈——一位勒索软件作者”不小心”把自己的加密工具做成了半成品:小文件可以随便解密,大文件却神仙来了也救不回来。这事儿吧,得从两边儿看。
说起来,这年头的勒索软件江湖也是越来越卷了。VECT 这个新兴的勒索即服务(RaaS)组织,从去年底开始招揽加盟商,打着 Windows、Linux、ESXi 全平台支持的旗号,到处拉人头。
按理说,勒索软件嘛,加密文件、收赎金,天经地义(误)。但这位 VECT 的”开发人员”最近可能失眠了——因为安全研究人员分析完代码后发现:这软件有 bug。
什么 bug?这么说吧,攻击者自己可能都解不开被加密的大文件。
小文件:意外的”彩蛋”
先说小文件。研究人员分析发现,VECT 在加密小文件(小于 131,072 字节,约 128KB)的时候,把两样东西一起写进了加密文件:
- ChaCha20 加密密钥(静态硬编码在病毒里)
- 12 字节的 nonce(相当于加密的”随机种子”)
这两样东西凑一起,等于把钥匙和门锁配对保存了。所以研究人员拿到样本后,直接从病毒里抽出密钥,再配上文件里的 nonce,就能把加密文件还原回去。
用专业话说:match=true,完美解密。

这一刻,攻击者可能还在暗自得意:”瞧这后门,多香。”
大文件:翻车现场
好,接下来是大文件翻车现场。
VECT 加密大文件的时候,采用的是分块加密策略:把文件分成四块,每块 32 KiB,每块用不同的 nonce。
问题就出在这里了——这位开发者在代码里写了四组 nonce,但只把最后一个 nonce 存进了加密文件。前三个 nonce 在内存里被直接覆盖掉了,从来没落到磁盘上。
对于 ChaCha20 加密算法来说,nonce 是至关重要的一环。密钥是地图,nonce 是路线。没有路线,地图再准确也找不到目的地。
密文还在,但回家的路没了。

安全研究人员下了个狠结论:这根本不是谈判策略的问题,这是元数据丢失问题。哪怕受害者乖乖付了赎金,攻击者手里也没有前三个 nonce,大文件照样解不开。
攻防解读:坑人终坑己
这事儿有意思的地方在哪呢?
红队视角:写代码的时候 nonce 重用是大忌,VECT 的开发者显然低估了加密实现的复杂度。四块文件用四个 nonce,听起来没毛病,但存储的时候只留一个,这不就是自己给自己埋雷吗?
蓝队视角:如果不幸中招了 VECT,别指望通过支付赎金来恢复大文件——技术上来说根本不可行。Halcyon 的安全团队也发了预警,说不要假设付钱就能恢复数据。这话用在 VECT 身上,那是相当的应景。

紫队视角:这波操作我给满分——攻击者和受害者同时掉进了同一个坑里,也算是某种程度上的”公平”了。只是可怜了那些大文件被加密的受害者,赎金交了也白交。
教训总结
- 小文件可能有救:如果你的文件小于 128KB,被 VECT 加密后其实是有解密可能的——因为密钥和 nonce 都在文件里存着。
- 大文件基本无解:超过 128KB 的大文件,因为 nonce 重用问题,即使攻击者也很难恢复。付钱没用,备份才是王道。
- 不要迷信勒索软件的技术水平:即便是恶意软件,代码质量也有高下之分。VECT 这波”自爆”操作,说明有些攻击者可能真的不咋懂密码学。
最后说一句:定期备份,不要裸奔。这话不仅对防守方有用,对进攻方也是个提醒——你写的勒索软件,自己都解不开,那还勒索谁去?
图片版权 华盟网
版权声明:本文由华盟网原创发布,转载须注明出处。













暂无评论内容