2022年6月,绿盟科技CERT监测到多起通过使用7zip工具加密文件进行勒索的活动,根据本次勒索团伙所提供的在线解密站点信息,我们将本次勒索病毒的家族命名为7Locker勒索家族。
根据互联网情报的数据关联,发现该勒索病毒与另外一个名为Qlocker的勒索病毒在样本运行特点,在线解密站点风格等方面高度相似,因此怀疑Qlocker是本次7Locker的样本家族前身:
本次捕获到的攻击事件,疑似是借助log4j2漏洞完成的主机入侵,而后通过Powershell等方式下载并执行了勒索程序,从而完成了失陷主机上的文件加密。应急排查发现在performance日志中存在log4j2漏洞的dnslog执行痕迹:
本次捕获到的勒索软件由Java编写,具有跨平台属性,分析研究人员可借助jadx等工具轻易得到源码内容。根据源码的编写逻辑、调试输出语句,编程风格等,推测由国人所编写:
样本的加密过程相对其他勒索软件而言较为直接,加密的执行逻辑同时兼顾了Windows和Linux两大类平台的用户场景:
1. 使用Java的强随机数生成器SecureRandom生成32字节长度的加密密码;
2. 枚举目标目录和文件格式,并调用外部的7z.exe程序对待加密文件逐个进行7z格式的加密压缩(命令行方式);
3. 投放勒索信。
其中,目标文件包含如下格式:
.der .pfx .key .crt .csr .p12 .pem .odt .ott .sxw .stw .uot .3ds .max .3dm .ods .ots .sxc .stc .dif .slk .wb2 .odp .otp .sxd .std .uop .odg .otg .sxm .mml .lay .lay6 .asc .sqlite3 .sqlitedb .sql .accdb .mdb .db .dbf .odb .frm .myd .myi .ibd .mdf .ldf .sln .suo .cs .c .cpp .pas .h .asm .ps1 .vbs .vb .pl .dip .dch .sch .brd .jsp .php .asp .rb .java .sh .mp3 .swf .fla .wmv .mpg .vob .mpeg .asf .avi .mov .mp4 .3gp .mkv .3g2 .flv .wma .mid .m3u .m4u .djvu .ai .psd .nef .tiff .tif .cgm .raw .png .bmp .jpg .jpeg .vcd .backup .zip .rar .gz .tgz .tar .bak .tbk .bz2 .paq .arc .aes .gpg .vmx .vmdk .vdi .sldm .sldx .sti .sxi .602 .hwp .snt .onetoc2 .dwg .pdf .wk1 .wks .123 .rtf .csv .txt .vsdx .vsd .edb .eml .msg .ost .pst .potm .potx .ppam .ppsx .ppsm .pps .pot .pptm .pptx .ppt .xltm .xltx .xlc .xlm .xlt .xlw .xlsb .xlsm .rdb .aspx .asax .ashx .properties .xlsx .xls .dotx .dotm .dot .docm .docb .docx .doc
|
同以往其他勒索软件相似,本样本同样会避开一些系统目录、库文件目录等关键路径,并尝试在加密前关闭部分数据库类服务程序,以获得数据库文件的操作权限。
针对打包压缩过程中所使用的32字节长度的7z加密密码,则是由样本在运行初始阶段随机生成,而后在加密阶段被当做7z.exe的命令行-p参数参与命令执行,如下图所示:
值得注意的是,失陷主机上所有被加密的文件,在加密过程中都复用了同一组7z加密密码。
而针对失陷主机上不存在7z程序的情况,该勒索软件的作者同样也有考虑到:对于Windows主机,样本会从自身的资源节中释放7z.exe和7z.dll文件;而针对Linux主机,则会尝试通过包管理器下载安装7z程序,以此来满足下一阶段加密环节的运行前提:
参与文件7z加密的加密密码(32 字节长度),随后会被内嵌在样本中的RSA公钥所加密,并保存至勒索信中。受害用户若想得到该7z加密密码的原始内容,则需要在暗网站点上提交勒索信中的Client Key,并交付赎金:
此处需要注意的是,Client Key并非是用以进行7z加密的密码,Client Key原始明文中包含了7z加密密码pwd、用户标识uid、时间戳unix epoch time三个字段:
命令行模式下勒索样本会将中间状态的调试信息打印出来:
但因为Client Key是经过RSA公钥加密而生成的,我们无法从Client Key直接解出7z的加密密码。
针对该勒索样本的运行特点,我们提供一些解密建议和参考手段。因具体的解密和处置效果受多个因素影响,无法保证完全适用所有场景:
-
若失陷主机上的勒索进程尚未结束(可观察到java进程或正在运行的7z进程):
可使用Process Hacker/ProcessMonitor等一类能监控/记录进程信息的工具,记录/查看7z进程的命令行启动参数,或挂起当前java进程,尝试从进程dump/内存中搜索长度大约在32字节左右的ASCII字符串。
由于样本在加密所有文件过程中复用了同一套7z密码,因此只需捕获到一处密码信息,就可以应用于所有被加密的文件。测试验证效果如下:
使用上述方法获取到7z加密密码:dbNuTRFebksat87pWw8rfTFRRMK2njHG,对被加密的.7z文件进行解密,可得到正常的.doc原始文档。
-
尝试使用误删恢复软件(被覆盖的文件大小、距离被加密时间点的时长,主机的负载等都可能会影响文件还原的效果)。