首页| 论坛| 搜索| 消息
主题:多层嵌套的Python远控木马,从伪装到上线的完整链条
z3960发表于 2026-05-09 06:53
C2清空缓冲区
键盘映射表
使用 102 键映射表,每个条目 62 字节(包含基础键、Shift 键、CapsLock 键的字符)特殊处理: Shift 键 (scancode 41/53)、CapsLock 键 (scancode 57)日志文件: %LOCALAPPDATA%DisplaySessionContainers.log
进程注入与守护 (sub_1800093D0)

svchost.exe 注入流程
复制代码 隐藏代码1. GetSystemDirectoryA → 获取系统目录 (截取前3字符,如 "C:")2. 构造路径: "WindowsSystem32svchost.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 中的代码会立即重新启动恶意程序,形成进程守护机制。
注册表持久化
注册表路径值名用途HKCUConsoleIpDate(Default)C2 通信配置(含 3 组备份地址)HKCUConsoleIpDatespecial(Default)特殊标记(4 字节 DWORD)HKCUConsole1存储的插件/任务数据(每个注册表值 = 一个插件实例)
会话管理 (sub_18000CFB0)

当收到配置更新命令或反向连接命令时:解析配置字符串,提取 p1/o1/t1(地址/端口/类型)根据传输类型创建 CTcpSocket(type=1) 或 CUdpSocket(type=0)连接指定 C2 地址创建 CManager + CLoginManager 会话从注册表 HKCUConsole1 加载所有已保存的插件发送上线信标进入命令处理循环
插件加载机制 (sub_18000CBC0)
检查是否为 onlyloadinmyself 模式(仅加载自身进程内的模块)在目标内存中搜索 plugmark 标记将插件数据写入标记位置通过 sub_180010960 + sub_180010DA0 解析并执行插件向 C2 返回执行结果
完整攻击链时序图
复制代码 隐藏代码[用户运行 uzusy28.exe] │ ▼ │ ▼[执行 oo.pyc] ← Python 入口脚本 │ ▼[调用 dd.pyc] ← 解压内嵌 7z (密码 "2026") │ ▼[释放 wefault.exe (外层)] ← 合法 mgodb 改名 │ ▼[启动 app-xxx/wefault.exe (内层)] ← pythonw.exe │ ▼ │ ▼ │ ▼ │ ▼ │ ├── 请求管理员权限 (runas) ├── 创建 C:ProgramDataTencentTencent 目录 ├── 创建 KOOK.lnk 快捷方式 ├── 检测 360 杀软 ├── 关闭 Windows Defender (排除 C:) ├── 禁用 UAC (3个注册表值) ├── 修改 Startup 注册表 ├── 创建计划任务 MicrosoftMicrosoftUpdate │ ▼[读取 base32.pyc 到 RWX 内存并执行] │ ▼ │ ▼ │ ├── 提权: 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:ProgramDataPythonbase32.pyc第二层 shellcodeC:ProgramDataPythonwefault.exe恶意程序副本C:ProgramDataTencentTencentKOOK.lnk伪装快捷方式%LOCALAPPDATA%DisplaySessionContainers.log键盘记录日志
网络
指标值C2 IP43.154.90.28 (腾讯云)C2 域名fachuoifachuoi.comDoH 服务器223.5.5.5 (阿里 DNS)DoH URLhttps://223.5.5.5/resolve?name=fachuoifachuoi.com&type=AUser-AgentDNS-Agent默认端口9999
注册表
注册表路径值名说明HKCUConsoleIpDateC2 配置数据HKCUConsoleIpDatespecial特殊标记HKCUConsole1(多个值)存储的插件/任务HKLM...PoliciesSystemEnableLUA设为 0 (禁用 UAC)HKLM...PoliciesSystemConsentPromptBehaviorAdmin设为 0HKLM...PoliciesSystemPromptOnSecureDesktop设为 0
互斥量
互斥量名称用途GlobalMutex_RAT 防重复运行
计划任务
任务路径触发执行MicrosoftMicrosoftUpdate开机 + 登录C:ProgramDataPythonwefault.exe
分析环境
项目详情静态分析IDA Pro 9.3 + MCP 插件动态分析x64dbg + MCP 插件PyInstaller 解包pyinstxtractor
下一页上一页  (3/5)
回帖(3):
3 # huwg
05-09 12:32
谢谢分享
2 # huwg
05-09 12:32
了解一次
1 # huwg
05-09 12:32
来看看看

全部回帖(3)»
最新回帖
收藏本帖
发新帖