首页
社区
课程
招聘
[原创]勒索病毒样本分析
发表于: 19小时前 117

[原创]勒索病毒样本分析

19小时前
117

勒索病毒样本分析

本次针对某绒面试提供的真实病毒样本,结合沙箱、Process Monitor 和 x32dbg,重点分析了副本释放、持久化、文件感染及勒索窗口相关行为,并定位了宿主文件的核心解密循环,当前报告侧重行为链和关键代码验证,尚未覆盖所有执行分支。反调试的具体作用、各副本的协作条件、感染筛选与重复感染判断,以及不同感染文件的恢复适用性,仍需进一步分析。

阅读导航

  • 第 1 节:沙箱与初步行为观察。
  • 第 2 节:主样本调试、宿主解密循环与伪装逻辑。
  • 第 3 节:BgcEwAcE.exe 的文件处理记录。
  • 第 4 节:bAsMcgoE.exe 的属性操作与窗口观察。
  • 第 5–6 节:原始 PML 交叉复核、尚缺证据与验证计划。
  • 第 7 节:恢复原文件、拦截进程创建及新增窗口拦截脚本。
  • 第 8 节:官方接口参考。

1. 沙箱与初步行为观察

1.1 样本准备与分析平台

拿到的文件使用 .ex_ 扩展名。在隔离虚拟机中将扩展名改为 .exe,便于工具识别。更改扩展名不等于转换文件格式;文件是否为 PE 应通过 MZ、PE 签名和头部结构确认。本文使用微步沙盒辅助观察。

以下为笔记中列出的分析平台,未逐一验证其当前服务状态:

1.2 沙箱报告

image-20261017145017762

1.3 使用 Process Monitor 捕获运行行为

在隔离虚拟机中运行样本并使用 Process Monitor 采集,观察文件创建、进程启动及注册表操作。

样本行为截图

运行记录中出现多个 EXE 副本和 BAT 脚本。挂起不同副本可辅助观察行为变化,通过对这些程序的挂起可以确定,后续的恶意行为(感染)主要由这些实例执行,而主线程主要用来解密产生这些文件的,

本次与.PML文件 对照,大量文件替换由 BgcEwAcE.exe 执行;bAsMcgoE.exe 明确出现自启动、伴随文件映射和周期性属性检查。其他调试批次的职责应分别确认,不能仅凭文件名套用。

比如说,这里搜索的创建进程

image-20261017150738565

可以看到可疑副本及 BAT 相关启动记录。这里“释放/生成文件”不一定等于解压;需结合文件写入、命令行和进程启动结果区分。

image-20261017145228844

出现了伪装执法机构的勒索界面。界面自称使用“4096-bit key”,这是攻击者的界面宣称,不能作为实际加密算法的证明。

1.4 沙箱信息提供

沙箱报告可提供后续动调的线索,但不能代替调用参数、返回值和分支证据。

image-20261017145557777

这说明很有可能存在反调试

image-20261017145713288

这张本地截图实际显示的是“通过创建服务实现自启动”,支持服务持久化线索,不能作为自解密证据。自解密应另外提供代码/数据的前后变化及执行流证据。

在看这个样本的行为,我们这里主要看的是win10的,别的系统版本和win10的不同

我们观察到图标生成与多类文件处理。PML 涉及 EXE、JPG、PNG 和 P12 等目标;

image-20261021120558169

用了这么多api看一下他的导入表
导入表较少或动态调用较多,可能涉及运行时 API 解析;仅凭导入表和节权限,不能直接判定使用某种壳。

image-20261017153813270

看到这里就差不多了,进入x32dbg吧

2. x32dbg:主样本、宿主解密与伪装逻辑

2.1 确定壳与入口与控制流观察

分析病毒是否加壳
image-20261021134102529
image-20261021134627110

信息熵7.9,.text段高度混淆,被启发式识别,显然加壳。

入口附近存在大量跳转。可从明确的运行行为定位相关 API,再回到样本侧分析调用链;大量 JMP 可以推测是某种壳或保护。

image-20261017154730272

2.2 确定反调试线索

IsDebuggerPresent

PixPin_2026-10-17_15-48-20

存在,进行反反调试,使用相应的插件试试,ScyllaHide插件是一个很好的选择

2.3 根据内存和文件行为设置观察点

通常来说:解密后的代码需要一个安身之所,通常是一个具有可执行权限的新内存区域**VirtualAlloc**
代码段(.text)通常是只读的。要往里面写入解密后的代码,必须先获得“写”权限VirtualProtect
ReadProcessMemory / WriteProcessMemory:这对 API 常用于跨进程操作,要是不是跨进程的就是WriteFile
CreateThread创建一个新线程来执行解密后的代码
创建一个新的进程来运行病毒

可将下列接口作为候选观察点:

观察点 可确认的动作 不能直接推出的结论
VirtualAlloc 申请/提交内存;需看大小、权限和返回值 不一定用于解密,也不一定需要申请新区域
VirtualProtect 修改已提交内存页权限 .text 权限以实际页属性为准;修改权限不等于已经写入代码
ReadProcessMemory / WriteProcessMemory 通过进程句柄读写地址空间 不能仅凭函数名认定跨进程注入
普通汇编内存写入 当前进程直接修改自己的缓冲区 不需要调用 WriteFile
WriteFile 把缓冲区内容写入句柄所指对象 不等于向本进程内存写入
CreateThread 创建线程,需看线程入口 不一定执行解密后的代码
CreateProcessA/W 尝试创建进程,需看返回值及新 PID 不等于解密完成,也不等于已经执行成功

搜索有没有相应的api

  • 存在VirtualProtect,并下断点
    但是这个具体的效果不大

  • 存在VirtualAlloc,下断

  • 存在WriteFile,下断

  • 观察 CreateThread。

  • 观察 CreateProcessA/W。

2.4 内存分配与落盘观察

命中 VirtualProtect ,可以看他的参数,检查目标地址、区域大小、原权限、新权限及返回值。返回成功才能确认该次权限修改生效。

image-20261017155116810

根据VirtualAlloc可知,进行了命中了39次,根据传参可知申请空间大小
根据WriteFile,他要往里面写入解密信息,我们并不确定是不是一次性全部写入目标地址,但是如果是一次就写入的可运行文件,他会直接调用CreateProcess,多次写入,他就会多次调用WriteFile,最后才使用CreateProcess,但是如果是加密文件,他不一定会调用CreateProcess,但是他一定会使用WriteFile

2.5 WriteFile 参数与 PE 缓冲区

下表仅适用于 32 位 WriteFile API 入口、尚未执行函数序言时 的栈布局;

栈位置 参数 本次值 含义
[esp+4] hFile 00000278 目标对象句柄;路径需从创建/打开记录关联
[esp+8] lpBuffer 048E0000 源数据缓冲区地址
[esp+C] nNumberOfBytesToWrite 00000600 写 1536 字节
[esp+10] lpNumberOfBytesWritten 0045E7FD 实际写入字节数的存放地址
[esp+14] lpOverlapped 00000000 未提供 OVERLAPPED;还应核对句柄是否按异步方式打开

第一次命中,

image-20261017112036776

可以发现堆栈

image-20261012223037785

跟进写入数据的缓冲区,发现:

展开:048E0000 缓冲区原始转储(保留完整记录)

048E0000  4D 5A 90 00 03 00 00 00 04 00 00 00 FF FF 00 00  MZ..........ÿÿ..
048E0010  B8 00 00 00 00 00 00 00 40 00 00 00 00 00 00 00  ¸.......@.......
048E0020  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
048E0030  00 00 00 00 00 00 00 00 00 00 00 00 B8 00 00 00  ............¸...
048E0040  0E 1F BA 0E 00 B4 09 CD 21 B8 01 4C CD 21 54 68  ..º..´.Í!¸.LÍ!Th
048E0050  69 73 20 70 72 6F 67 72 61 6D 20 63 61 6E 6E 6F  is program canno
048E0060  74 20 62 65 20 72 75 6E 20 69 6E 20 44 4F 53 20  t be run in DOS
048E0070  6D 6F 64 65 2E 0D 0D 0A 24 00 00 00 00 00 00 00  mode....$.......
048E0080  65 0D A3 87 21 6C CD D4 21 6C CD D4 21 6C CD D4  e.£.!lÍÔ!lÍÔ!lÍÔ
048E0090  AF 73 DE D4 2B 6C CD D4 21 6C CD D4 20 6C CD D4  ¯sÞÔ+lÍÔ!lÍÔ lÍÔ
048E00A0  52 69 63 68 21 6C CD D4 00 00 00 00 00 00 00 00  Rich!lÍÔ........
048E00B0  00 00 00 00 00 00 00 00 50 45 00 00 4C 01 03 00  ........PE..L...
048E00C0  F8 2D AB 54 00 00 00 00 00 00 00 00 E0 00 0F 01  ø-«T........à...
048E00D0  0B 01 05 0C 00 BA 06 00 00 04 00 00 00 00 00 00  .....º..........
048E00E0  00 10 00 00 00 10 00 00 00 D0 06 00 00 00 40 00  .........Ð....@.
048E00F0  00 10 00 00 00 02 00 00 04 00 00 00 00 00 00 00  ................
048E0100  04 00 00 00 00 00 00 00 00 F0 06 00 00 06 00 00  .........ð......
048E0110  00 00 00 00 02 00 00 00 00 00 10 00 00 10 00 00  ................
048E0120  00 00 10 00 00 10 00 00 00 00 00 00 10 00 00 00  ................
048E0130  00 00 00 00 00 00 00 00 20 D0 06 00 50 00 00 00  ........ Ð..P...
048E0140  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
048E0150  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
048E0160  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
048E0170  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
048E0180  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
048E0190  00 D0 06 00 20 00 00 00 00 00 00 00 00 00 00 00  .Ð.. ...........
048E01A0  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
048E01B0  2E 74 65 78 74 00 00 00 00 C0 06 00 00 10 00 00  .text....À......
048E01C0  00 BA 06 00 00 06 00 00 00 00 00 00 00 00 00 00  .º..............
048E01D0  00 00 00 00 20 00 00 60 2E 72 64 61 74 61 00 00  .... ..`.rdata..
048E01E0  00 10 00 00 00 D0 06 00 00 02 00 00 00 C0 06 00  .....Ð.......À..
048E01F0  00 00 00 00 00 00 00 00 00 00 00 00 40 00 00 40  ............@..@
048E0200  2E 64 61 74 61 00 00 00 74 01 00 00 00 E0 06 00  .data...t....à..
048E0210  00 02 00 00 00 C2 06 00 00 00 00 00 00 00 00 00  .....Â..........
048E0220  00 00 00 00 40 00 00 C0 00 00 00 00 00 00 00 00  ....@..À........
048E0230  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
048E0240  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
048E0250  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
048E0260  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
048E0270  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
048E0280  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
048E0290  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
048E02A0  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
048E02B0  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
048E02C0  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
048E02D0  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
048E02E0  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
048E02F0  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
048E0300  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
048E0310  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
048E0320  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
048E0330  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
048E0340  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
048E0350  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
048E0360  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
048E0370  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
048E0380  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
048E0390  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
048E03A0  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
048E03B0  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
048E03C0  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
048E03D0  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
048E03E0  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
048E03F0  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
048E0400  6A 00 68 05 30 40 00 68 00 30 40 00 6A 00 E8 17  j.h.0@.h.0@.j.è.
048E0410  04 00 00 6A 00 E8 16 04 00 00 E8 17 04 00 00 E8  ...j.è....è....è
048E0420  1E 04 00 00 E8 13 04 00 00 C3 00 00 00 00 00 00  ....è....Ã......
048E0430  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
048E0440  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
048E0450  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
048E0460  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
048E0470  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
048E0480  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
048E0490  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
048E04A0  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
048E04B0  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
048E04C0  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
048E04D0  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
048E04E0  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
048E04F0  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
048E0500  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
048E0510  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
048E0520  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
048E0530  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
048E0540  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
048E0550  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
048E0560  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
048E0570  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
048E0580  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
048E0590  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
048E05A0  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
048E05B0  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
048E05C0  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
048E05D0  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
048E05E0  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
048E05F0  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................

该缓冲区以 MZ 开头,并包含 PE\0\0 和节表,可判断正在输出 PE 相关内容。0x600 是本次请求写入长度,不是整个 PE 的长度,也不能仅凭它判断整个文件已解密。对缓冲区设置写入观察点可追查数据来源,但命中位置可能是解密,也可能只是复制或 PE 头构造。
再次按 F9 运行至 CreateProcess,笔记记录命中 4 次。这只能说明观察到了 4 次进程创建调用;需要按返回地址、参数和返回值去重,不能推出存在 4 次分段解密。

image-20261017114515085

并且保存位置

image-20261017115712911

为观察新建子样本,可在 CreateProcessA/W 入口检查第六个参数 dwCreationFlags,保留已有标志并按位 OR 0x4(CREATE_SUSPENDED)。这使新进程的主线程初始挂起,不是取消进程创建,也不会暂停当前进程或其他已运行副本。其他 CreateProcess 变体的参数位置不同,不可照搬。应另外记录输出文件是否完整落盘及哈希,不能仅凭挂起判定成功脱壳。

2.6 主样本继续生成副本和释放宿主

暂不进入子样本,继续观察下一次 CreateProcess 的参数与对应生成文件。是否为另一个病毒子样本

image-20261017203818598

再次运行,直到下次CreateProcess,发现一个文件sample,这里就要想了,为什么会生成这个文件

image-20261017210829969

image-20261017205939618

这里我直接在CreateFile下断,一步步跟,最终发现了病毒创建文件的地方

image-20261020103145323

在WriteFile处下断点

image-20261020103949101

这里可以看到42 4D------BM,通过查找发现是.bmp的标志头
接下来就是要还原解密出被感染文件了,我们要找出它的解密逻辑,先看他要在哪里写
WriteFile 的第一个参数是目标对象句柄 hFile,第二个参数 lpBuffer 才是要观察的源缓冲区地址;具体文件写入偏移由文件指针或 OVERLAPPED 等决定。

2: [esp+8] 00469452 sample.00469452 "BM妇"

2.7 定位 BMP 缓冲区与记录指令流

对本次 lpBuffer = 00469452 设置硬件写入断点,并且重新运行可以直接抓到解密后开始往里面写的位置,我试着运行一下,但是我发现他并没有往里面写入解密的信息,说明有可能他是在后面直接进行解密的,多次尝试F9,直到写入的内存位置是感染文件的标志,最后在第一次下段的地方直接用步进直到条件满足,这里罗列一下我的条件

以下保留当时使用的条件。它适合截取循环片段,不能当作已经记录完整解密过程的证明:

  1. 暂停条件:cip == 0x00401815。

image-20261020190210432

  1. 日志文本:0x{p:cip} {i:cip} | EAX={p:eax} ECX={p:ecx} EDX={p:edx} ESI={p:esi} EDI={p:edi} ESP={p:esp}。
  2. 日志条件:1(每条被追踪指令均记录)。
  3. 最大步数:10000(当时设置的)。

提示:00401815 位于循环内部,会在某次迭代中就达到暂停条件,并非整轮结束地址。若本次确实执行 0x2FB7 次、每次 8 条指令,单循环约需 97,720 条指令,10,000 步不足以记录全程。我这里是恰好“验证一轮变换”,并记录初始与最终寄存器。

2.8 宿主块 DWORD 解密循环

下面是直接将日志给到啊AI。AI 可辅助整理,但报告应附原始 .log、输入/输出片段和独立校验。这里的“参数化算法”与后面汇编是同一个循环的两种表述,不是两层独立算法;外层混淆应另行说明。

for (i = 0; i < 0x2FB7; i++) {
    uint32_t x = buffer[i];
    x ^= 0x6034E9B7;
    x = ROR32(x, 23);
    buffer[i] = x;
}

本次参数(不可直接套用另一感染文件):

Key       = 0x6034E9B7
Rotate    = 0xB7 & 0x1F = 23
DWORD数   = 0x2FB7 = 12215
总长度    = 0x2FB7 * 4 = 0xBEDC
解密区起始地址 = 0x00469432
BMP 数据起始地址 = 0x00469452
BMP 数据长度     = 0x0000BEB8 = 48824 字节

对应的核心汇编片段如下。代码地址、加密块地址和最终 BMP 地址是不同概念:

0040180D mov ebx, dword ptr ds:[esi]
0040180F xor ebx, ecx
00401811 ror ebx, cl
00401813 mov dword ptr ds:[esi], ebx
00401815 add esi, 4
00401818 inc edi
00401819 cmp edi, edx
0040181B jnz 0040180D
for (;;) {
    uint32_t x = *(uint32_t *)esi;
    x ^= ecx;
    x = _rotr(x, ecx & 31);
    *(uint32_t *)esi = x;

    esi += 4;
    edi++;

    if (edi == edx)
        break;
}

该片段明确给出了每个 DWORD 的 XOR + ROR 变换,但尚不足以单独证明已具备通用文件恢复能力。仍需补全外层解码、宿主块定位、每文件密钥与长度获取、元数据剥离、计数/校验检查,以及实际恢复结果验证。此前脚本曾出现“宿主块密钥/校验和不匹配”,因此本报告不将真实样本恢复写为已完成。

这时候他的解密逻辑就完全了,可以通过这些写一个脚本将一个感染文件给还原出来了

2.9 扩展名、图标与宿主打开尝试

当资源管理器隐藏已知文件类型的扩展名,且感染后的 EXE 使用类似原文件的图标时,外观可能具有欺骗性。这取决于资源管理器显示设置和图标资源,不是 Windows 主题本身。

这里其实在CreateProcess那一步,.bat文件就已经提醒了,这是一个会伪装的病毒,我在这里说一下他的逻辑吧:
对于一个没有设置后缀名的系统主题,一个被病毒感染的文件,伪装出来的.exe文件和正常的.bmp图片看起来是一样的,并且当你再点击这两个相同的文件,他都会启动,为什么病毒会启动图片呢,这个.bat文件就是启动项,所以这就是病毒的伪装逻辑

image-20261017211416392

看,后面的文件还试图关闭文件扩展名

3. x32dbg:BgcEwAcE.exe 文件处理记录

3.1 分析目标与运行批次

前次 PML 显示,BgcEwAcE.exe(PID 4632)直接进行了临时 ICO/EXE 生成及大量文件替换,可能是感染行为

3.2 尝试启动伴随副本

对 BgcEwAcE.exe 的 CreateProcess 下断,观察到尝试启动 bAsMcgoE.exe。发现和沙箱中的执行流对的上,会再次生成一个bAsMcaoE

image-20261017221932079

与沙箱可见行为存在相似之处,但仍需按本次调用参数和结果关联。

image-20261018150627196

沙箱中出现多个文件。而且这几个文件并没有运行,我们要搞清楚这些文件是在干什么。

观察ProcessMonitor,在我抓取的.PML文件中,是存在CreateFIle与CloseFile这两个事件名称的,先找一找有没有api,先从CreateFile中找,因为这个api会打开文件,一般病毒会在我们的文件里面动手脚,所以他一定会打开文件

第一次打开

image-20261018183044445

第二次打开

image-20261018183345707

第三次打开

image-20261018185140725

第四次观察到可疑文件相关访问;是否为新建文件,要核对创建方式、返回值和 OpenResult。

image-20261018192945852

之后可以看见这个样本开始找本机的文件,一个图片

image-20261018202015997

后续还出现 OeskIQIQ 相关文件访问。仅凭路径或 CreateFile 命中,不能确认已经写入内容,需要补充写入事件/缓冲区和返回值。

image-20261018203131115

再往后又会打开我的图片,再次尝试运行子样本

之后开始获取我的电脑文件

image-20261018203847156

随后再次观察进程创建尝试。

image-20261018204359407

是否启动成功,还需核对返回值和新 PID。

之后他会再次获取我的电脑文件

样本行为截图

下面这张本地截图显示 \\.\Global\vmhgfs 设备路径及 vmhgfs.NPOpenEnumEntr+76 相关返回位置,属于设备/共享文件系统相关访问线索,不是进程启动证据。是否用于环境探测仍需调用链支持。

image-20261018211831399

3.3 手工调用记录与重复启动现象

继续观察,直到最后出现

image-20261018214657893

这个是个关键点,当我们电脑中毒后点击桌面上文件,就会出现这个提示框,之后再次运行,这是我的抓去过程,很乱,重新整理一下

CreateFile :057FDBA8 04D40000 L"C:\\Users\\Administrator\\AppData\\Local\\Google\\Chrome\\User Data\\Default\\Extensions\\nmmhkkegccagdldgiimedpiccmgmieda\\1.0.0.6_0\\images\\flapper.gif"---------------------5D4
ReadFile: 5D4
CreateFile: 0522D2 0522DF0C      L"KMUI.ico"
WriteFile: 648
WriteFile: 648
WriteFile: 648
CreateProcess: bAsMcgoE
051EF2 051EF4F0      L"TcoY.exe"
WriteFile
WriteFile
WriteFile
WriteFile
CreateProcess:bAsMcgoE

这里可以大致看出来他的逻辑

0571EC 0571F008 L"wUYO.exe"
057FDBA8    04D40000     L"C:\\Users\\Administrator\\AppData\\Local\\Google\\Chrome\\User Data\\Default\\Extensions\\nmmhkkegccagdldgiimedpiccmgmieda\\1.0.0.6_0\\images\\flapper.gif"
051EF6A4    04D80000     L"D:\\Everything\\Everything.exe"------------614--1000
056FEA 05230000        L"D:\\FlClash\\data\\flutter_assets\\assets\\images\\avatar\\arue.jpg"
ReadFile: 640----7000
056FF4 05230000        L"D:\\IDA_Pro_9.2\\dbgsrv\\win32_remote32.exe"
0583F9 05230000        L"E:\\python-3.13.16-amd64.exe"
05A3F8 05A3F8B0        L"\\\\.\\Global\\vmhgfs"

可以通过这个和ProcessMonitor简单分析出来

上述记录中应把文件访问与进程启动分开:CreateFile 仅用于打开/创建对象;只有实际命中 CreateProcess 等创建接口,并结合返回值和新 PID,才能确认启动行为。调试中多次出现 bAsMcgoE.exe 的启动尝试,具体重试原因仍需分析调用前的判断分支。

image-20261018215301730

结合.PML进程抓取可知可能大概是:

读取原文件、查询大小
↓
生成临时 ICO、随机名 EXE
↓
临时文件重建并替换随机名 EXE
↓
将生成结果写回目标位置
↓
非 EXE 目标删除原件,清理临时文件
↓
继续处理下一个文件,
说明这个程序他跟本就不是锁我们屏幕的程序,沙箱里没有这个东西可能就说明这时bAsMcgoE已经运行起来了,所以之后没有这个行为的分析了

4. x32dbg:bAsMcgoE.exe 属性操作与窗口观察

本节观察 bAsMcgoE.exe 的自启动、伴随文件、周期检查与窗口行为。不能直接从上一个副本尝试启动它,推出“真正感染逻辑只在它里面”。前次 PML 的直接文件替换证据属于 BgcEwAcE.exe;若本次动调还发现 bAsMcgoE 处理用户文件,应另外记录该运行批次的 PID、线程与完整操作链。

image-20261018221548089

image-20261018221914769

通过这个两个Monitor可以看到他的行为与沙箱报告基本一致,但是我还是想进去看一下他的自启动、状态文件和周期检查与锁屏逻辑

4.1 文件和目录属性

重点观察 GetFileAttributesW、SetFileAttributesW 的路径、标志、返回值及调用后的条件分支。

image-20261020214022176

调用 SetFileAttributesW 修改文件或目录属性:

image-20261020204237082

第二个参数是指文件属性 0x6 = FILE_ATTRIBUTE_HIDDEN | FILE_ATTRIBUTE_SYSTEM 样本正在尝试把 C:\Users\Administrator\xQsEgUYY 设置为隐藏 + 系统属性

调用 GetFileAttributesW 查询文件或目录属性:

image-20261020204507434

调用 SetFileAttributesW 修改文件或目录属性:

image-20261020205044375

调用 GetFileAttributesW 查询文件或目录属性:

image-20261020205217865

调用 GetFileAttributesW 查询文件或目录属性:

04BEFF 047A0000  L"C:\\ProgramData\\siMUkQEc"
04BEFF 047A0000  L"C:\\ProgramData\\siMUkQEc"
04BEFF 04770000  L"C:\\ProgramData\\siMUkQEc\\OeskIQIQ.exe"
04E6F4 07320000  L"C:\\$Recycle.Bin\\S-1-5-21-2007155649-3056361496-518139155-500\\$I0GJIPS.exe"
04E6F4 07320000  L"C:\\$Recycle.Bin\\S-1-5-21-2007155649-3056361496-518139155-500\\$I0GJIPS.exe"--------------------------------清除文件的只读、隐藏、系统属性,为后续文件操作做准备。
04BEFF 04700000  L"C:\\ProgramData\\AQIgwIcg\\BgcEwAcE.exe"
$+A1F52C 0 04E60000  L"C:\\ProgramData\\AQIgwIcg\\BgcEwAcE.exe"-------------这时候我没有打开BgcEwAcE,在上一步中尝试创建进程,这一步是在看这个子样本的属性
04BEFF6C   04700000  L"C:\\ProgramData\\AQIgwIcg\\BgcEwAcE.exe"-------------这一步之后又在尝试打开子样本进程
0560DBC0   04D40000  L"C:\\Users\\Administrator\\AppData\\Local\\Google\\Chrome\\User Data\\Default\\Extensions\\nmmhkkegccagdldgiimedpiccmgmieda\\1.0.0.6_0\\images\\flapper.gif"
04BEFF40   047A0000  L"C:\\ProgramData\\siMUkQEc"
04BEFF40   04770000  L"C:\\ProgramData\\siMUkQEc\\OeskIQIQ.exe"
04BEFF6C   04700000  L"C:\\ProgramData\\AQIgwIcg\\BgcEwAcE.exe"-------------这里我感觉他的整个运行逻辑和另一个病毒样本运行时CreateFile获取文件的是一样的
---------------------------------------------------------------这里又在尝试打开子样本进程
0584F6B8   04D50000  L"D:\\Everything\\Everything.exe"
04BEFF40   047A0000  L"C:\\ProgramData\\siMUkQEc"
04BEFF40   04770000  L"C:\\ProgramData\\siMUkQEc\\OeskIQIQ.exe"
04BEFF40   04770000  L"C:\\ProgramData\\siMUkQEc\\OeskIQIQ.exe"
04BEFF6C   04700000  L"C:\\ProgramData\\AQIgwIcg\\BgcEwAcE.exe"--这里又在尝试打开子样本进程
055CEA78   04D50000  L"D:\\FlClash\\data\\flutter_assets\\assets\\images\\avatar\\arue.jpg"
04BEFF40   047A0000  L"C:\\ProgramData\\siMUkQEc"
04BEFF40   04770000  L"C:\\ProgramData\\siMUkQEc\\OeskIQIQ.exe"
04BEFF6C   04700000  L"C:\\ProgramData\\AQIgwIcg\\BgcEwAcE.exe"--这里又在尝试打开子样本进程
051EF448   04D50000  L"D:\\IDA_Pro_9.2\\dbgsrv\\win32_remote32.exe"
04BEFF40   047A0000  L"C:\\ProgramData\\siMUkQEc"
04BEFF40   04770000  L"C:\\ProgramData\\siMUkQEc\\OeskIQIQ.exe"
04BEFF6C   04700000  L"C:\\ProgramData\\AQIgwIcg\\BgcEwAcE.exe"--这里又在尝试打开子样本进程
051EF930   04D50000  L"E:\\python-3.13.16-amd64.exe"
04BEFF40   047A0000  L"C:\\ProgramData\\siMUkQEc"
04BEFF40   04770000  L"C:\\ProgramData\\siMUkQEc\\OeskIQIQ.exe"
04BEFF6C   04700000  L"C:\\ProgramData\\AQIgwIcg\\BgcEwAcE.exe"
04BEFF40   047A0000  L"C:\\ProgramData\\siMUkQEc"
04BEFF40   04770000  L"C:\\ProgramData\\siMUkQEc\\OeskIQIQ.exe"

调用 SetFileAttributesW 修改文件或目录属性:

04BEFF 047A0000  L"C:\\ProgramData\\siMUkQEc"
04BEFF 00000006
04BEFF 04770000  L"C:\\ProgramData\\siMUkQEc\\OeskIQIQ.exe"
04BEFF 00000006
04E6F4 07320000  L"C:\\$Recycle.Bin\\S-1-5-21-2007155649-3056361496-518139155-500\\$I0GJIPS.exe"
04E6F4 00000020
0560F444   04E60000  L"C:\\ProgramData\\AQIgwIcg\\BgcEwAcE.exe"
0560F448   00000080  ------------------------------------------------这一步是获取子样本属性后的一步,属性变成了普通状态
0584F6B8   04D50000  L"D:\\Everything\\Everything.exe"
0584F6BC   00000080
0584F6B8   04D50000  L"D:\\Everything\\Everything.exe"
0584F6BC   00000020
055CEA74   04D50000  L"D:\\FlClash\\data\\flutter_assets\\assets\\images\\avatar\\arue.jpg"
055CEA78   00000080
055CEA74   04D50000  L"D:\\FlClash\\data\\flutter_assets\\assets\\images\\avatar\\arue.jpg"
055CEA78   00000020
051EF444   04D50000  L"D:\\IDA_Pro_9.2\\dbgsrv\\win32_remote32.exe"
051EF448   00000080
051EF444   04D50000  L"D:\\IDA_Pro_9.2\\dbgsrv\\win32_remote32.exe"
051EF448   00000020

以上保留当时手工抓取的顺序。原始记录中的“清除属性”“尝试打开进程”等注释含有推断:GetFileAttributesW 只查询文件属性,不会清除属性或打开进程。SetFileAttributesW 参数 0x6 表示隐藏+系统,0x20 表示归档,0x80 表示普通属性;设置是否成功还需看返回值。文件属性不表示进程是否运行、被挂起或具有 SYSTEM 身份。

从文件访问顺序相似,不能直接推出两个副本的线程、职责或配置完全相同。

4.2 勒索窗口创建与显示

CreateWindowExA:

image-20261020215645174

HWND hWnd = CreateWindowExA(
    0,                  // 扩展窗口样式
    "JekMcsYw",         // 窗口类名
    "CscEcsc",          // 窗口标题
    WS_POPUP,           // 弹出式窗口
    0,                  // X
    0,                  // Y
    1414,               // 宽度
    890,                // 高度
    NULL,               // 父窗口
    NULL,               // 菜单
    (HINSTANCE)0x400000,// 实例句柄
    NULL                // 附加参数
);

ShowWindow:

image-20261020220933408

BOOL ShowWindow(
    HWND hWnd,
    int  nCmdShow
);

多次调试中:允许一次伴随进程创建后,也就是子样本,继续运行至 UpdateWindow 附近,观察到勒索界面出现。这是时间上的先后关系,尚不能证明伴随进程是显示窗口的必要条件。

CreateWindowExA 负责创建窗口;ShowWindow 请求显示;UpdateWindow 在更新区域非空时直接触发 WM_PAINT。因此画面在 UpdateWindow 后显现,可能是窗口内容此时才绘制,并不说明该函数本身完成“锁屏”。需要记录 HWND → 所属 PID/TID → 窗口过程,并检查置顶、尺寸和输入控制机制。

image-20261021104500451

以下保留当时的断点截图。后续应按 PID/TID 和样本侧调用返回地址关联。

image-20261021104913456


[招生]科锐逆向工程师培训(2026年11月13日实地,远程教学同时开班, 第57期)

最后于 19小时前 被RE—SUN编辑 ,原因:
上传的附件:
收藏
点赞 ・0
打赏
分享
最新回复 (1)
雪    币: 132
活跃值: (1388)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2 楼
火绒的面试题不是不让发吗
1小时前
0
游客
登录 | 注册 方可回帖
返回