【独家破解】揭秘境外黑客组织的20美元锁机病毒:深度逆向分析+破解攻略!赎金?给你付个蛋

攻防
14小时前


1.背景

1.1 客户被锁机及盗号情况

 

在2024年8月17日,某客户联系上我们,称其重要的电脑系统被勒索加密,询问详情得知,该客户于24年8月16日下午从外网上下载了一个文件,该文件为其行业的一个专业工具的破解器(如下图的“arch1508_1324.7z”),解压运行之后电脑CPU开始飙升,磁盘读写拉满,短短半分钟内开始弹出勒索信息,客户意识到情况不对之后,


image001.png

 

当即拔掉电源断开网线,但是再次重新进入系统也无法进入,通过PE进入系统之后,发现了勒索信txt文件,

文件内容为“[30551] Ooops! Your files are encrypted by the CryptoBytes hacker group! 

Telegram for contact: @yes_u_are_hacked  ”,

该勒索信声称其为 CryptoBytes的黑客组织,需要通过telegram联系他们获取解密密钥。


image003.jpg

 

由于客户的系统已无法正常进入,因此我们将恶意文件提取出来,在我们的模拟环境中运行,

下图即为运行之后的勒索信息和加密后的屏幕界面。

 

最终在我们的协助下,我们成功帮助客户恢复了系统,同时对恶意文件的逆向分析发现了该恶意文件不仅仅是加密系统的行为,

还有其他恶意行为,我们也都为客户一一排查清理了相关的病毒后门,本文便是对该恶意文件的详细文件,

以及其释放的加密器的破解方案。

1.2 和锁机黑客的对话沟通

通过黑客留下的勒索信,关注了Telegram的频道@yes_u_are_hacked,

可以看到该频道最早于2023年9月5日创建,并且频道内还留下了中、英、阿三语的勒索信息,

以及大量受害者的求助留言,频道作者声称收费20美金帮助解锁被加密的电脑系统,以100美金出售该勒索软件源码。


image007.jpg

 

频道中也留下提示,需要解锁联系 @Flainn1的telegram用户,在客户与该黑客的沟通谈判中还闹出了个乌龙,因为频道中有大量俄语内容,客户便以为是大毛黑客,结果是二毛……

image009.png

 

可以看到该作者勒索20美金以USDT支付才会给解锁。 既然客户寻找到了我们的帮助,那

么这赎金是万万不能支付的,

接下来我们将详细的分析该恶意文件的行为以及其加密器定的破解方法,

无需缴纳一分钱赎金,解锁被加密的系统,赎金?给你付个蛋!


2.恶意文件基础信息

2.1 病毒基本信息

88881.png


2.3 勒索信

Plain Text

[30551] Ooops! Your files are encrypted by the CryptoBytes hacker group! Telegram for contact: @yes_u_are_hacked  

3.加密后文件分析

3.1威胁分析

88882.png

4逆向分析

4.1加密器逆向分析

AppFile.exe(恶意模块下载器)

保护分析:

发现是一个NSIS的安装器

 image011.png

入口分析:

通过DIE查看可以知道,该程序是一个NSIS的安装包,可以提取出安装脚本。

安装器脚本:

该脚本可以看出,就是在做文件的释放与调用CMD来执行cmd "/k move Laboratories Laboratories.cmd & 

Laboratories.cmd & exit";"open cmd"命令,可以看得出,主要是对Laboratories这个文件进行了一个复制并且执行的操作。

image.png


image.png

分析Laboratories文件(内容过多,只截取部分):

image.png

image.png

image.png

发现存在大量的混淆,这里去掉以后,可以看到一个完整的脚本,可以发现,该脚本开头主要实现设置

rwUvTfWQtZfcV9tBZFV环境变量的值为Quotations.pif,其次就是实现对释放文件的拼接,

将其拼接为rwUvTfWQtZfcV9tBZFV 和resJUby两个文件


88883.png


还有对系统进程的检测,目的是为了判断系统中是否存在杀软等保护软件,主要通过判断是否存在如下进程:

wrsa.exe opssvc.exe avastui.exe avgui.exe bdservicehost.exe ekrn.exe nswscsvc.exe sophoshealth.exe

如果进程中存在wrsa.exe opssvc.exe则ping 127.0.0.1这个地址185次,相当于是延迟程序执行一段时间

如果进程中存在avastui.exe avgui.exe bdservicehost.exe ekrn.exe nswscsvc.exe sophoshealth.exe

就是会设置环境rwUvTfWQtZfcV9tBZFV变量的值为AutoIt3.exe和esJUby变量值为.a3x。

最后就是执行拼接的文件start /I rwUvTfWQtZfcV9tBZFV resJUby,相当于是执行Autoit脚本。

image.png


这里将AutoIt脚本文件中的脚本提取出来后,发现存在大量的混淆(因为代码太长,这里只展示部分代码):

image.png

image.png

通过对其进行反混淆以后,可以恢复出该脚本的原始代码(篇幅过长,只展示部分):

发现该脚本主要对携带的二进制数据做了解密,然后进程注入的操作,直接提取样本即可。

image.png

下载器本体:

 image013.png

sub_7FF7DDCF50A0函数可以看到具体的请求内容:

 image015.png

请求的地址为:

http://193.233.232.86/api/crazyfish.php

 image017.png

http://147.45.47.57/api/crazyfish.php

 image019.png

可以发现1,若是请求为200,且内容为fish15则继续

 image021.png

因为这里发现该IP被关了,这里可以参考一下沙箱的内容,继续分析。

这里可以看到后续会加载很多的恶意攻击模块

 image023.png

几乎所有的攻击模块都是.Net写的,加载方式几乎都是如下这种内存Payload注入的加载方式,

其中里面的Payload都是加密的,可以看到程序内部的Payload会先

经过ReadComponentType函数进行解密,之后调用了VirtualProtect修改了内存的权限,

然后继续解密,加载Payload。

 

image025.png

DocumentsKKFCAAKFBA.exe(后门程序)

保护分析:

 image027.png

发现加了Reactor的壳,这里直接脱掉分析。

入口分析:

整体来看该程序就是一个典型的后门程序

 image029.png

1.开始用RC4算法解密了两段程序,第一个是PE的shellcode加载器,第二段是shellcode,这里因为内部的密文比较大,所以直接手动解密一下两个密文的部分数据看一下:

第一段:

 image031.png

第二段:

可以看出,第二段是一个很典型的Shellcode

 image033.png

2.之后就是调用VirtualProtectEx修改权限,然后调用CallWindowProcA函数实现启动第一段的PE程序,并且将执行Shellcode送入第一段的程序中执行。

 

image035.png

锁机程序(lc.exe)

保护分析:

 image037.png

功能分析:

勒索信写入:

image.png

写入开机启动项:

主要会将自身写入到主表是HKEY_CURRENT_USER的如下开机启动项中

 image039.png

关闭指定进程:

image.png

该程序会主动关闭列表指定的进程

 image041.png

锁屏界面信息生成:

该函数主要生成锁屏界面中的ID和Current PC

ID的生成是由:'ID:10-A'+密钥文件内容+0E+密钥文件内容组成。

Current PC是读取了Environment.MachineName变量的值。

 

系统按键监控:

该函数会监控Ctrl + Alt和Alt + Tab 还有Win这几个键的按下事件,如果触发则会调用vmethod_8()函数的Start方法

 image045.png

vmethod_8()函数:

该函数会返回一个计时器,如果按下特定的系统按键就会触发,而结果则是重启一下勒索的主界面。

 image047.png

密码校验:

这里的密码校验都挂到了回车键的按下事件上,当回车键被按下时,若是命令行中存在debug参数,那么在密码输入文本框中输入123,程序则会结束。

 image049.png

正常的校验则会判断输入的密码是否等于'0c0v11'+密钥文件($unlocker_id.ux-cryptobytes)中的内容,如果一致则执行method_5()恢复函数,

否则则会执行vmethod_4().Start()方法,开启计时器,并且打印"Ошибка! Введённый код не совпадает с ключом разблокировки."

 image051.png

image053.png

 

密钥文件产生:

会判断密钥文件是否存在,如果不存在,则向C:\Users\admin\AppData\Local\Temp\

目录下写入密钥文件$unlocker_id.ux-cryptobytes。

密钥的内容取当前系统时间,例如:16:34:28,去掉其中的':'号后的值就是密码,

最后会将其写入到密钥文件中。

并且勒索程序在启动时会检查,该文件是否存在,则不会重复写入。

 image055.png

破解方法:

1.系统暂未重启,可以正常进入锁机界面

直接看勒索界面的左下角显示的ID即可,然后拼接上0c0v11即可。比如这里的密码就是:0c0v11163744

 image057.png

 

2.系统中断,无法正常进入锁机界面


直接用PE进入到系统镜像中,直接进入C:\Users\admin\AppData\Local\Temp\将

$unlocker_id.ux-cryptobytes密钥文件的内容读取出来,

或者直接修改为自己的密码,然后拼接0c0v11到开头,即可实现破解。

image062.jpg