警惕GarrantyDecrypt勒索病毒最新变种NOSTRO加密全部文件

 

近期360互联网安全中心监控到一款GarrantyDecrypt勒索病毒的新变种开始在国内传播。该勒索病毒通过RSA结合salsa20对文件进行加密,被加密的文件后缀会被修改为NOSTRO,加密过程也非常规范,密钥使用完成会被马上销毁,加密文件实行“一次一密“。该勒索病毒也是我们见到的最丧心病狂的勒索病毒之一——不区分文件类型,加密几乎所有类型的文件。根据360互联网安全中心的监测,该勒索病毒主要通过爆破远程桌面弱口令,登录远程后手动投毒进行传播。

 

样本分析

前期准备

该勒索病毒在加密文件之前,会先做下面4项准备:

  1. 判断当前进程权限,如果权限较低,则重新提权启动。
  2. 判断当前系统语言环境,避开斯拉夫语系的环境。这一点和之前很多勒索病毒一样(例如Hermes、Locky等勒索病毒),都避开了俄罗斯、乌克兰、哈萨克斯坦几个地区。
  3. 删除系统卷影,破坏Windows系统的系统恢复功能。
  4. 结束系统中运行的一些挖矿程序,由这点也可以看出:勒索病毒和挖矿攻击的目标经常是重叠的。

图1. 前期准备

密钥处理

该勒索病毒采用的微软提供的Crypto系列函数,随机生成一对当前客户端使用的RSA密钥对,在获取到该密钥对后,立即销毁了内存中密钥对。

图2. RSA密钥对

在获取到RSA密钥对后,又对私钥进行了一些处理,之后使用样本内嵌的作者的RSA公钥对这个处理后的密钥进行了加密,最后连同生成的RSA公钥一并写入到%appdata%/_uninstalling_.png文件中。

图3. 密钥处理

文件加密

在处理好密钥数据后,该勒索病毒创建了两个线程来加密文件:其中一个线程用来遍历网络资源文件,而另一个线程用来遍历本地文件。

图4. 加密文件线程

常见的勒索病毒,通常会指定一个文件类型的范围,只对范围内的文件进行加密。而该勒索病毒则没有做这个判断——它会将所有类型的普通文件都进行加密。排除列表只包括5个目录和病毒自己产生的一些文件,同时还排除了一些被占用的和系统属性的文件:

  • // Windows
  • // Program Files
  • // Program Files(x86)
  • // $Recycle.bin
  • // System Volume Information
  • .NOSTRO
  • #RECOVERY_FILES#.txt
  • _uninstalling_.png

图5. 排除在外的目录和文件

该勒索病毒制造者在加密文件这块做的也非常用心,每次加密一个文件之前,都会使用CryptGenRandom接口生成一个随机数做为密钥,这样就保证了一个文件一个密钥。同时在加密文件后该勒索病毒会立即销毁内存中的密钥信息,避免用户在中毒后通过从内存中dump出密钥信息来解密文件。

图6. 获取随机数

此外,在这一阶段,勒索病毒还会检查被加密文件的扩展名,如果扩展名在指定的列表范围内,则会对其进行全文加密,否则在后续的加密过程中只会进行一轮的加密循环——即只加密文件的头部1024字节内容。该逻辑我们认为是作者希望在保证勒索病毒破坏力的前提下,尽可能的对加密速度进行优化,这一点在文件加密算法的选择上也得到了印证。

图7. 判断文件是否需要被全文加密

而当前,该勒索病毒所定义的“需要被全文加密”的文件扩展名,则仅有“.txt”一个。即,只有.txt文件需要被全文加密,其他扩展名的文件则均只加密前1024个字节的内容:

图8. 需要被全文加密的文件扩展名列表

该勒索病毒在加密文件时,是用CryptGenRandom函数产生的随机数作为salsa20加密算法的密钥来加密文件。并在加密完文件后,将0xD3ADBE3F标记和被用RSA加密后的文件加密密钥添加到被加密文件的末尾。

图9. 加密文件

以下是被加密文件末尾的格式。有4个字节是写入的标记0xD3ADBE3F,最末尾的48个字节是写入的被RSA加密的当前文件的加密密钥。

图10. 被加密文件格式

收尾

在完成一个文件夹的加密之后,会在这个文件夹下创建#RECOVERY_FILES#.txt文件,留下勒索信息,要求用户联系对方。

图11. 勒索信息

 

总结

针对服务器的勒索病毒攻击依然是当下勒索病毒的一个主要方向,企业需要加强自身的信息安全管理能力——尤其是弱口令、漏洞、文件共享和远程桌面的管理,以应对勒索病毒的威胁,在此我们给各位管理员一些建议:

  1. 多台机器,不要使用相同的账号和口令
  2. 登录口令要有足够的长度和复杂性,并定期更换登录口令
  3. 重要资料的共享文件夹应设置访问权限控制,并进行定期备份
  4. 定期检测系统和软件中的安全漏洞,及时打上补丁。
  5. 定期到服务器检查是否存在异常。查看范围包括:
    1. 是否有新增账户
    2. Guest是否被启用
    3. Windows系统日志是否存在异常
    4. 杀毒软件是否存在异常拦截情况

(完)