天融信关于勒索软件加密过程研究

一、   前言

勒索软件是一种新兴的木马程序,可通过加密用户文件,使用户数据无法使用,并以此为条件向用户勒索钱财。随着现代社会对数据的高度依赖,数据平台遭受勒索软件攻击的事件频频出现,且勒索软件类型更加复杂化和多样化。文件加密、密钥传输保护、反追踪、扩散等技术将成为勒索软件这几年的发展方向,同时勒索目标从PC端扩展到移动终端、服务器、工控系统等其他平台。勒索软件的目的更加明确,去除对系统文件加密,只针对用户数据进行加密,并且扩大了加密数据类型范围。为了躲避网络安全设备的监视,勒索软件与C&C服务器的通信更加隐蔽,甚至去除C&C服务器。为躲避现实世界追捕,支付方式逐渐以数字货币为主。

从2013年Cyptolocker勒索软件爆发之后,勒索加密技术逐渐成熟,各种勒索软件层出不穷,加密过程也各式各样。加密过程是勒索软件技术的核心,要防御破解勒索软件必须对加密过程进行探索。笔者整理了其中比较主流勒索软件的加密过程,比较了一下各自加密过程的特点,抛砖引玉,供安全研究人员提供参考,以期给用户提供更为可行的安全方案。

二、   主流的勒索软件加密过程

勒索软件的原理是通过加密算法对文件进行加密,并且要保证加密后的文件在没有勒索者提供的解密密钥的情况下无法恢复,整个加密过程主要包括三个方面:密钥生成、文件加密、密钥传输。

目前勒索软件主要使用到的几类加密算法:

1. 对称加密算法:

对称加密算法,使用一个密钥进行加密,使用相同密钥才能进行解密。其特点速度快,主要用来对文件加密,常用AES、3DES、RC4等,在勒索软件中AES算法占绝大多数;Sym_Key,对称加密算法中使用的密钥,只有拥有密钥才能进行对加密的数据进行解密。

2. 非对称加密算法:

非对称加密算法,又称公钥加密算法,其包含两个密钥,一个公钥,一个私钥,其特点在于加密解密使用不同的密钥,但速度相对较慢,主要用来对Sym_Key进行加密,常用RSA,ECDH等,在勒索软件中RSA算法占绝大多数;Pub_Key,非对称加密算法中的公钥,一般用来加密,并对外公开;Pri_Key,非对称加密算法中的私钥,一般用来解密,自己保存。

3. 散列算法:

散列函数,又称为hash函数,将输入转换成不可逆的固定字符串,主要对主机信息计算摘要,生成唯一ID,常用MD5,SHA系列等。

4. 其他算法:Base64,deflate等 。

2.1、Maktub Locker为代表的简易加密流程

2.1

加密过程

  1. 程序内置了Pub_key,Pri_Key保存在勒索者手中。
  2. 加密流程开始,首先创建随机数,并对其进行Hash,Hash后的值经过简单运算作为Sym_Key。
  3. 利用Sym_Key对所有指定后缀格式的文件使用对称加密算法进行加密。
  4. 将对称加密算法密钥使用内置的非对称加密算法公钥对对称加密算法密钥进行加密,并将加密后的密钥上传至服务器。

解密过程

  1. 提交转账记录,勒索者提供解密工具,和解密后的Sym_Key。
  2. 解密工具通过Sym_Key,依次对文件进行解密还原。

特点

全部文件使用同一个Sym_Key,一旦获得Sym_Key即可解密所有的文件;勒索过程流程简单,没有联网操作,不容易被检测。

2.2、Locky、CryptoLock为代表的服务器模式加密流程

2.2

加密过程

  1. 首先获取主机系统信息,通过Hash后生成ID,将ID上传到服务器上,服务器端生成Asy密钥对,将其中的Pub_key下载至本地。
  2. 获取Pub_Key的同时,创建随机数,并对其进行Hash,再将Hash后的值经过简单运算作为Sym_Key。
  3. 利用Sym_Key对所有指定后缀格式的文件使用对称加密算法进行加密,同时使用Pub_Key对Sym_Key进行非对称加密获得Encrypted_Key,将加密后的Encypted_Key附加在被加密后的文件末尾。
  4. 遍历下一个指定后缀格式的文件,重复b)操作,直到遍历完所有文件。

解密过程

  1. 提交转账记录,勒索者提供解密工具,和Pri_Key。
  2. 解密工具提取每个加密文件后面的Encypted_Key,通过使用Pri_Key解密获得Sym_Key,对文件进行解密。

特点

每个文件都使用不同的Sym_Key加密,破解难度更大;勒索过程需要联网下载Pub_Key,非联网环境或者网络受限情况时,勒索软件将不能正常运行。

2.3、Wanncry为代表的多密钥加密流程

2.3

加密过程

  1. 这类勒索软件中使用了两对非对称加密算法密钥,一个勒索病毒作者事先生成好的密钥对,我们称之为Master,另外一对是勒索软件运行时在本地生成的,我们称之为Session。
  2. 勒索软件内置了Master_Pub_Key,Master_Pri_Key保存在作者手中
  3. 程序运行时,首先生成非对称加密算法密钥Session密钥对(Session_Pub_Key,Session_Pri_Key),其中Session_Pri_Key使用Master_Pub_Key进行非对称加密获得Encrypted_Sesson_Pri_Key,保存至本地。
  4. 创建随机数,并对随机数进行Hash,经过处理后获得对称加密密钥Sym_Key,使用Sym_Key对文件进行加密,获得Encrypted_File。同时使用Session_Pub_Key对Sym_Key进行非对称加密获得Encrypted_Key,并将Encrypted_Key保存到Encrypted_File文件末尾。
  5. 遍历下一个指定后缀格式的文件,重复d)操作,直到遍历完所有文件。

解密过程

  1. 提交支付记录后,将Encrypted_Session_Pri_Key通过匿名网络或者邮件提交给勒索者,获得解密后的Session_Pri_Key和解密工具。
  2. 解密工具提取每个加密文件后面的Encypted_Key,通过使用Session_Pri_Key解密获得Sym_Key,对文件进行解密。

特点

每个文件都使用不同的Sym_Key加密,破解难度更大;文件加密过程中不依赖网络,非联网环境或者网络受限情况时,勒索软件将能正常运行,并进行勒索。

2.4、CTB_Locker为代表的共享密钥加密流程

2.4

加密过程

  1. 这类勒索软件中使用了比较特别的ECDH算法,是非对称加密算法中的一种,除了非对称加密算法中公钥加密私钥解密的特性外,还具有另外一个特性:共享密钥。假设有两对ECDH密钥(Pub_Key1:Pri_Key1,Pub_Key2:Pri_Key2),通过算法计算出的共享密钥相同。
  2. 勒索软件运行时生成Master_Pub_Key,Master_Pri_Key密钥对,将Master_Pri_Key上传到服务器中,Master_Pub_Key保存至本地。
  3. 创建随机数,并对随机数进行Hash,根据Hash后的数据生成ECDH密钥对Session_Pub_Key,Session_Pri_Key。
  4. 使用保存在本地的Master_Pub_Key和生成的Session_Pri_Key计算出共享密钥ECDH_Share_Key,对ECDH_Share_Key进行Hash处理获得Sym_Key,使用Sym_Key对文件进行加密,并将Session_Pub_Key保存在加密后的文件末尾或者开头位置。
  5. 遍历下一个指定后缀格式的文件,重复c)操作,直到遍历完所有文件。

解密过程

  1. 提交支付记录后,获得Master_Pri_Key和解密工具。
  2. 提取每个加密文件中的Session_Pub_Key和Master_Pri_Key计算出ECDH_Share_Key,再进行Hash处理获得Sym_Key对各个文件进行解密。

特点

这种类型的主要特点在于其获得密钥的手段和其他三种不一样,利用了ECDH算法特性,通过2对公私钥,相互计算获得的共享密钥相同,从而实现对文件加密密钥的还原。从加密密钥传输过程保护上并没有太多优点,但对于分析人员而言,则增加了很大难度。

三、   勒索软件加密过程比较

以上四种加密过程是目前比较主流的加密过程,其文件加密均使用对称加密算法,主要以AES为主,密钥均随机生成,无法预测。对于文件加密所使用到的密钥均使用非对称加密,不同加密过程使用的非对称加密密钥获取方式存在差别,不同的获取方式有其各自的优缺点。不同加密过程对网络依赖不同,对网络依赖越少,被检测的可能性越小。

2.5

从以上的表格可以看出多密钥型的加密过程最为安全,也是到目前为止最难防范的勒索方式,其主要特点:

  1. 文件加密过程,一个文件对应一个密钥,及时在勒索过程中被发现也无法解密被加密的文件。
  2. 勒索所使用密钥包含2对非对称加密密钥,使用本地生成的非对称加密的公钥对文件加密密钥进行加密保护,使用内置的非对称加密公钥对本地生成的私钥进行加密保存本地,并销毁内存中的私钥,整个加密过程不依赖网络。
  3. 勒索时,将加密后的本地私钥通过邮件或者其他方式提交勒索者,勒索者使用其私钥对加密后的本地私钥进行解密,将解密后的本地私钥返回给被勒索主机,被勒索主机使用本地私钥对每个文件加密密钥进行解密。
  4. 其加密过程不依赖网络,从而避免对网络的依赖,对于网络控制较为严格的环境下,也可以实现对文件加密勒索。同时避免在网络通信过程中被检测的可能。
  5. 其传播方式最为广泛:可以通过远程漏洞、本地漏洞、邮件传播、U盘传播、社工等方式传播。

四、   防范方案

从上面分析可以看出,被加密后的数据在没有密钥的情况下基本无法还原,所以为了保护自己的数据不受损失,就要避免勒索软件入侵。在等待安全厂商推出更加可行的安全产品之前,只能自我防范。勒索软件除了功能之外,其他和木马后门类似,从分类上都可以归类到恶意代码中,其关键是需要本地执行恶意程序,所以防范勒索软件主要以阻止勒索软件在本地执行为主。笔者整理了一下个人用户可行的防范方案以供参考:

  1. 来历不明的邮件,附件不要轻易打开,包括可执行程序、Office文档、HTA、HTML文件等。
  2. 使用正版软件,从官网下载软件,请勿轻易在第三方下载平台下载软件,因为在正常应用程序中插入恶意代码是一件很容易实现的事情。
  3. 及时安装系统升级补丁,越来越多的勒索病毒利用系统漏洞来进行传播,及时修补漏洞,可以有效的避免被勒索软件勒索。
  4. 安装杀毒软件,并及时升级,勒索软件也是各个安全厂商非常关注的目标,一旦发现勒索软件病毒,很快就会将其加入病毒库中。
  5. 定期备份,定期将本地的数据备份到其他存储设备上(移动存储、网络存储),即使中招也可以将损失降到最低。

参考文献

[1] Analysis of a Cryptolocker.2015.

https://c.ymcdn.com/sites/www.iisfa.net/resource/group/6872564d-9f12-4f8d-8f1e-508595960afb/Slide_Seminari_2015/IISFA_SeminarioRansomware.pdf

[2] A new generation of ransomware.2014.

https://securelist.com/a-new-generation-of-ransomware/64608/

[3] Locky勒索软件恶意样本分析.2016.

http://blog.topsec.com.cn/ad_lab/locky勒索软件恶意样本分析/

[4]Maktub Locker:美丽而又危险的勒索软件.2016.

http://www.freebuf.com/articles/network/100219.html

[5] WannaCry深度详细分析报告.2017.

http://www.freebuf.com/column/135722.html

[6] 分析与总结常见勒索软件的加密算法.2016. http://www.cnki.com.cn/Article/CJFDTotal-JSYW201623060.htm

 

Written by