CVE漏洞中文网

0DayBank一个专门收集整理全球互联网漏洞的公开发布网站
  1. 首页
  2. 漏洞列表
  3. 正文

ctb-locker

2018年11月12日 1001点热度 0人点赞 0条评论
  • FB招聘站
  • 分类阅读
  • 专栏
  • 公开课
  • FIT 2019
  • 企业服务
  • 用户服务
  • 搜索
  • 投稿
  • 登录
  • 注册

勒索软件CTB-Locker核心原理的一些疑问和分析

shadowhunter2015-02-13共194005人围观 ,发现 7 个不明物体系统安全

一直在国外流行的勒索软件在前几天“不远万里来到了中国”。当然它并不是来救死扶伤的而是将你的文件加密,然后要求你访问指定的服务器并支付一定比特币来解密它们。虽然从分析结果看也许作者并没有针对中国,但还是不少人“中枪了”。这类软件主要是通过邮件进行传播,通常伪装成订单之类的邮件来欺骗受害者运行。

FreeBuf科普:CTB-Locker敲诈者

昨天开始,国内有众多网友反馈中了CTB-Locker敲诈者病毒, 电脑里的文档、图片等重要资料被该病毒加密,同时提示受害者在96小时内支付8比特币(约1万元人民币)赎金,否则文件将永久无法打开。这是CTB-Locker敲诈者病毒首次现身中国,受害者大多是企业高管等商务人士。点我查看更多

核心原理详解

360对最近发现的勒索软件CTB-Locker做了分析,算得上很详细,但是有几个问题还不够详细。

比如样本使用了AES加密,那么KEY是怎么生成的? 加密后的文件是什么结构?有没有标志?为什么样本在离线的时候能够解密5个文件?我们带着这些疑问做了深入的分析。本文中我们将分享一下我们分析的结果,如有不正确还请各位大牛指正。

首先我们要说的是Downloader下载下来的CTB-Locker首先会在%All Users\Application Data%目录下释放随机名的文件,该文件是加密的。这个文件相当于一个配置文件。后面提到的主公钥(master key)以及加密后的磁盘路径,加密的文件个数等都会保留在这个文件中。

这个配置文件很重要。接下来才是将自身复制到临时目录,然后添加计划任务运行自拷贝的文件,接着注入到svchost进程中。在svchost进程中完成对磁盘上的文件加密。下面我们就针对前面提到的几个疑问做出分析。

1. AES的KEY是如何生成的?

在360的报告中提到是“根据计算机启动时间,文件创建,修改,访问时间等信息为随机种子生成KEY”,同时报告中还给出了截图。但是事实上截图没有给全,还要经过一个过程才能计算出来。实际上它是使用了Elliptic curve Diffie-Hellman(ECDH)算法生成了AES加密的KEY。我们也对此结论做了验证。大致流程可以描述如下(详细可参考卡巴的分析[1]):

(1) CTB-Locker的作者首先生成一个公私钥对。公钥保存在前面说的释放出来的配置文件中,私钥保存在服务器上. 这里我们把这个公钥称为master public key,私钥称为master private key。
(2)  在对每一个文件加密的时候会产生一个会话公私钥对,当然使用的是ECDH算法。私钥生成的算法是对文件的时间,系统运行时间等计算SHA256,这里我们称为session private key。然后使用ECDH算法生成公钥即session public key.之所以称为会话公私钥是因为每一个文件的公私钥对都是和文件自身时间以及系统运行时间有关的。
(3)  根据ECDH算法,我们知道 sessionshared secret=ECDH(masterpublic key, session private key)=ECDH(session public key,master private key). 在计算的时候要使用会话私钥和主公钥计算出sessionshared secret,然后对session shared secret计算sha256作为AES的密钥。虽然我们可以获取到主公钥但是会话私钥是不保存的,唯一的解密方法是通过主私钥和会话公钥计算出session shared secret。会话公钥是保存在加密的文件里的。

计算出会话公钥的代码如下:

其中var_104是一个长度为0×20的缓冲区,第一个字节为9其余的字节为0。这个值就相当于ECDH算法中爱丽丝与鲍伯协定使用的g值。

接着就是使用会话私钥和主公钥计算出来sessionshared secret,然后对其计算sha256并将其作为AES加密的KEY。需要强调的是这里面会话私钥是不保存的。相关代码如下:

图中的najzljf_data就是解密出来的配置文件的内容。

一句话总结:要想解密文件只能通过主私钥和保存在文件中的会话公钥计算出来session shared secret,再计算一下sha256才能得到AES的KEY。除此外别无他法。

解密的过程是在释放到临时目录中的进程来完成的,相关代码如下:


2. 加密文件的结构是什么?

原始文件经过ZLIB压缩和AES加密后,写在了一个临时文件的x030开始的位置。最后再向临时文件头部写入0×30长度的数据,其中前0×20是会话公钥,接下来是的四个DWORD分别是标志“CTB1”,压缩后的大小,压缩前的的大小,标志(值为1). 会话公钥是明文不加密的,但是针对“CTB1”及后面的长度为0×10数据进行加密。在对该段长度为0×10的数据解密后首先判断开头是否是“CTB1”接着判断尾部是不是1,两者同时匹配才会认为是CTB-Locker加密过的文件。

3. 为什么样本在离线的时候仍然能够解密5个文件?

在系统中文件被加密后,如果我们选择对话框中的“NEXT”,CTB-Locker会让我们搜索一些文件来测试能否解密.如下图:

如果我们选择解密文件,文件是可以解密成功的。这让我们产生一个错觉:密钥是不是在本地保存了? 其实可以说是保存了但是只是保存了5个.保存的是AES的KEY并且是保存在开始提到的配置文件中。首先在为每一个文件产生AES KEY时都会将这个AES的KEY返回给调用者:

调用者会判断当前保存的KEY是否超过了5个,如果超过了5个就不再保存了。代码如下:

当你选择解密5个文件时,CTB-Locker会遍历所有的已加密文件尝试着使用这5个KEY来解密文件偏移0×20处的数据.如果和标志相匹配就说明KEY匹配上了。然后就把这5个可以解密的文件名字输出到屏幕上。相关代码如下:

因此离线解密5个文件并不足为奇,有种你保存所有的密钥啊…

4. 要求受害者向服务器提交的public key和文件加密有关系吗?

最开始我们猜测这个publickey是不是和文件加密有关系或者它会携带一些能够帮助解密的信息。经过分析几乎没有。这个public key 是在所有文件被加密完成后产生的,它主要包含了配置文件中的一些数据以及所有加密文件的总的大小.某种程度上算是类似一个序列号的东西.

5. 可以借助数据恢复工具恢复吗?

我们使用了两款恢复软件来试验但都没有成功。我们发现样本还会调用vssadmin删除掉所有的卷影副本。因此数据恢复的希望非常渺小。

参考文献

DH密钥交换和ECDH原理http://www.tuicool.com/articles/em6zEb
首次现身中国的CTB-Locker“比特币敲诈者”病毒分析http://www.freebuf.com/vuls/57033.html
http://securelist.com/analysis/publications/64608/a-new-generation-of-ransomware/

[本文作者shadowhunter,FreeBuf.COM独家文章,属原创文章奖励计划,未经许可禁止转载]

shadowhunter2 篇文章等级: 2级
|
|
  • 上一篇:黄金搭档:安全研究人员发现Flash 0day漏洞与BEDEP病毒存在密切关联
  • 下一篇:Windows平台下高级Shellcode编程技术
发表评论

已有 7 条评论

  • t0ne5 (1级)我爱罗,爱着自己的修罗,只为自己而战。 2015-02-13回复1楼

    比特币这值钱。

    亮了(2)
    • saygoodbye (1级) 2015-02-15回复

      @ t0ne5  0

      亮了(1)
      • saygoodbye (1级) 2015-02-15回复

        @ saygoodbye  :)

        亮了(0)
      • saygoodbye (1级) 2015-02-15回复

        @ saygoodbye  ffff

        亮了(1)
  • aBaoOS (1级) 2015-02-13回复2楼

    中招无解

    亮了(0)
    • saygoodbye (1级) 2015-02-15回复

      @ aBaoOS  wwrtwer

      亮了(0)
  • celeron533 (1级) 2015-06-06回复3楼

    是上次我出差的时候我爸用我大学期间的电脑打开了带病毒的邮件,他自作聪明的“360杀毒”了一天,这下整个硬盘都被加密了,等我出差回来才告诉我,已经过去两周了!大学期间数据全毁,草!

    亮了(2)

 

必须您当前尚未登录。登陆?注册

必须(保密)

表情插图

取消

shadowhunter

安天实验室shadowhunter team专注恶意代码组织分析,追踪,善于逆向、大数据挖掘等方向

2文章数2评论数

最近文章

利用QQ昵称反弹连接木马技术分析

2015.04.02

勒索软件CTB-Locker核心原理的一些疑问和分析

2015.02.13

浏览更多

相关阅读

  • Vulnhub实战靶场IMF教程
  • Mac系统的Proton恶意软件:卷!土!重!来!
  • 致命漏洞将允许攻击者绕过苹果的OTR签名验证并窃取iCloud钥匙串信息
  • 勒索软件CTB-Locker核心原理的一些疑问和分析
  • 国产流氓软件“火球”分析与溯源

特别推荐

关注我们 分享每日精选文章

活动预告

  • 11月

    FreeBuf精品公开课·双11学习狂欢节 | 给努力的你打打气

    已结束
  • 10月

    【16课时-连载中】挖掘CVE不是梦(系列课程2)

    已结束
  • 10月

    【首节课仅需1元】挖掘CVE不是梦

    已结束
  • 9月

    【已结束】自炼神兵之自动化批量刷SRC

    已结束

FREEBUF

  • 免责声明
  • 协议条款
  • 关于我们
  • 加入我们

广告及服务

  • 寻求报道
  • 广告合作
  • 联系我们
  • 友情链接

关注我们

  • 官方微信
  • 新浪微博
  • 腾讯微博
  • Twitter

赞助商

Copyright © 2018 WWW.FREEBUF.COM All Rights Reserved 沪ICP备13033796号

css.php

正在加载中...

0daybank

标签: 暂无
最后更新:2018年11月12日

小助手

这个人很懒,什么都没留下

点赞
< 上一篇
下一篇 >

文章评论

您需要 登录 之后才可以评论

COPYRIGHT © 2024 www.pdr.cn CVE漏洞中文网. ALL RIGHTS RESERVED.

鲁ICP备2022031030号

联系邮箱:wpbgssyubnmsxxxkkk@proton.me