Crysis勒索病毒家族从2016年出现至今已达近4年的传播历史,无论是在传播手段上还是在核心功能的代码实现上都鲜有改动,算得上是最“不思进取”的勒索病毒家族之一了。但近日,360安全大脑监测到,“佛系”的Crysis勒索病毒家族有了新的动作,出现了新的病毒变种。通过对捕获的变种病毒样本分析发现,该版变种最大的改动是集成了多个工具便于投毒者了解当前系统中存在的杀毒软件、加密时的CPU占用率等信息,同时还可以将未挂载的设备挂载到本地以求尽可能多的加密文件。
不过,广大用户不必太过担心,360安全卫士已可对这一Crysis勒索病毒变种进行强力拦截查杀,保护广大用户网络安全。
代码分析
相较于之前版本的病毒通过EXE文件本身携带加密主体载荷的方式,当前版本的Crysis是一个自解压文件,解压路径为程序所在的执行目录。该自解压文件会释放出两个powershell脚本和两个可执行文件。
这四个文件的主要功能如下
- takeaway.ps1:获取当前系统中的反病毒软件信息
- purgeMemory.ps1:删除备份数据、日志、停止服务及进程等
- NS2.exe:扫描本地和网络资源中所有卷并对尚未挂载的进行挂载
- winhost.exe:主要功能程序,负责加密文件
takeaway.ps1
所有文件释放完毕后,takeaway.ps1脚本会被首先执行。该脚本会获取反病毒软件信息并在终端进行展示。
在远程投毒过程中,该勒索病毒有很大可能会被查杀,获取反病毒信息能更快让投毒者知道该用户机器上存在哪些反病毒软件,方便投毒者进行应对(大多数投毒者登录到用户系统后会先选择卸载掉杀毒软件)。
之后,会调用另一个powershell执行脚本purgeMemory.ps1,并启动扫描挂载模块NS2.exe。
接着删除两个脚本Takeaway.ps1和purgeMemory.ps1,再执行加密模块winhost.exe。
根据pid修改之前执行的winhost.exe进程运行优先级为最高,并监控winhost执行过程中的CPU占用率。
purgeMemory.ps1
该脚本主要用于删除备份数据、日志、停止服务以及进程等操作。
- 删除卷影的目的主要是为防止通过卷影来恢复被加密的数据。
- 关闭指定的服务和进程。这些服务和进程主要包括服务器、数据库、office办公工具等多种相关程序,关闭他们是为了防止它们正在占用数据文件或文档,导致加密失败
- 清空系统日志,以图最大程度隐藏自己的踪迹
NS2.exe
NS2.exe模块用于扫描本地和网络资源中所有卷,并对未挂载卷进行挂载,以求尽可能多地增加可被加密的数据。
但是从运行情况来看,需要外部向程序控制台输入指令才能进行下一步操作,还并未将其加入自动化中。
将本地未挂载卷进行挂载。同时枚举网络资源,将可访问的网络资源映射到本地。
winhost.exe
winhost.exe主要是加密模块,该模块通过对大量数据RC4加密、替换IAT表等方式躲避反病毒软件的检查,并一定程度地反分析。
Winhost.exe和之前分析过的老版本Crysis功能十分相似,除了勒索文件部分内容、加密文件后缀等不同点,其他部分几乎一致。
关闭目标服务和进程
首先是关闭目标服务和进程,主要包括数据库、邮箱等,目的是为了防止数据库文件被占用导致加密失败。
- FirebirdGuardianDefaultInstance
- FirebirdServerDefaultInstance
- sqlwriter
- mssqlserver
- sqlserveradhelper
- 1c8.exe
- 1cv77.exe
- outlook.exe
- postgres.exe
- mysqld-nt.exe
- mysqld.exe
- sqlservr.exe
自启动&卷影删除&提升权限
病毒将会尝试将自身复制系统目录、自启动目录下。
- %windir%\System32
- %appdata%
- %sh(Startup)%
- %sh(Common Startup)%
如果复制成功,将%windir%\System32目录下的winhost.exe加入注册表自启动项Software\Microsoft\Windows\CurrentVersion\Run,实现开机自启动。
之后通过命令删除卷影备份,避免受害者通过卷影恢复被加密的数据
如果当前执行权限非管理员,winhost.exe则以管理员权限重新运行自身,以求获得更大的权限、加密更多的文件。
搜索文件进行加密
和之前版本Crysis病毒一样,虽然执行过程中会通过RC4对称算法解密处大量的文件后缀名,并且也会进行比较,但实际上并未对指定类型的后缀进行过滤。
搜索时跳过目录%WINDIR%以及后缀为.HCK的加密文件,并避过以下文件名:
- boot.ini
- bootfont.bin
- ntldr
- ntdetect.com
- io.sys
- FILES ENCRYPTED.txt(勒索信)
- Info.hta(勒索信息文件)
文件加密方式
文件加密时采用AES对称加密算法,生成32字节随机值作为全局密钥,用于加密所有文件。加密每个文件时,为每个文件生成不同的IV,采用CBC加密模式。
同时,病毒对不同大小的文件会采用不同的加密方式。
如果文件小于等于1.5MB,winhost将创建一个新文件,将原文件内容加密后写入其中,然后删除原文件。
如果文件大于1.5MB,病毒则为原文件添加扩展名,从文件首部、中部、尾部分别读取256KB内容进行加密,加密结果写于文件尾部,读取的数据原本位置将被全部置0。
所有被加密后的文件尾部将包含以下信息:
- 加密标志常量
- 原文件名
- “2K63V7”
- SHA-1(RSA_PubKey)
- 初始向量IV
- Padding字节数
- RSA_ENC(AES_KEY)
- 尾部长度(大于1.5M的文件还会写入片段间隔)
为加密后的文件添加扩展名,id为系统盘的序列号:
.id-.[cavefat@tuta.io].HCK
以大于1.5MB文件为例,文件加密后结构以及加密流程如下图:
总体而言,该病毒的加密功能从核心算法上较之前的版本并没有实质性的变化。使用这种已被广泛应用的成熟加密方案,最大的作用在于以目前的计算机算力几乎无法实现对被加密文件的技术破解。也就大大提升了病毒通过加密勒索钱财的成功率。
勒索信息提示文件
winhost.exe将在每个被加密目录下创建一个勒索信息文件FILES ENCRYPTED.txt。另外还将在启动目录下创建文件info.hta,系统启动时将执行该文件以提醒用户,用户ID即为系统盘的序列号。
拦截与防护
Crysis算是比较“老牌”的勒索病毒了。360始终保持这对该病毒的强力拦截。
也正因如此,此次Crysis新变种才会把入侵手段作为主要的更新方向。不过相应的,360对入侵的防护也毫不懈怠,任何试图通过弱口令入侵后手动投毒的行为,360都会第一时间进行拦截。
在此也要提醒广大用户:
1.多台机器,不要使用相同的账号和口令
2.登录口令要有足够的长度和复杂性,并定期更换登录口令
3.重要资料的共享文件夹应设置访问权限控制,并进行定期备份
4.定期检测系统和软件中的安全漏洞,及时打上补丁。
5.定期到服务器检查是否存在异常。查看范围包括:
1.是否有新增账户
2.Guest是否被启用
3.windows系统日志是否存在异常
4.杀毒软件是否存在异常拦截情况
- 不建议支付赎金,支付赎金不仅变相鼓励了勒索攻击行为,而且解密的过程还可能会带来新的安全风险。常见的勒索病毒,很多只加密文件头部数据,对于某些类型的文件(如数据库文件),可以尝试通过数据修复手段来挽回部分损失。如果不得不支付赎金的话,可以尝试和黑客协商来降低赎金价格,同时在协商过程中要避免暴露自己真实身份信息和紧急程度,以免黑客漫天要价。