Qt免杀样本分析
字数 1671 2025-08-29 22:41:32
Qt免杀样本分析教学文档
样本基本信息
- SHA256: 9090807bfc569bc8dd42941841e296745e8eb18b208942b3c826b42b97ea67ff
- 检测情况: 引擎0检出(免杀样本),但微步云沙箱行为分析判定为恶意
- 样本类型: Qt框架编写的PE文件,采用白加黑技术
行为分析
进程行为
- 调用
winver获取主机基本信息 - 调用
taskmgr并以taskmgr身份再次调用自身(提权行为)
文件行为
- 无文件写入
- 原文件运行后自删除
注册表行为
- 添加计划任务:
- 启动权限:SYSTEM
- 执行频率:每两小时一次
网络行为
- 未检出明显网络行为
技术细节分析
主程序技术特点
- Qt框架:增加分析难度
- PoolParty timer模块:
- 利用内置计时器线程池任务执行shellcode
- 项目地址:PoolParty
调试技巧
- API断点法:由于动态调试困难,建议在
VirtualAlloc下断点 - 调用堆栈回溯:首次
VirtualAlloc位置通常是第一个shellcode载入点
Shellcode分析
-
第一段shellcode:
- 创建内存并对数据进行魔改RC4解密
- 密钥:
12345 - 解密结果:DLL文件
-
后续操作:
- 内存对齐并跳转入口段初始化
- 进入第二个函数找到run函数并执行
DLL逻辑分析
-
权限判断:
- 获取主程序名称
- 如果不是
winlogon.exe则进入初始化流程 - 如果是管理员权限进入
sub_180004240,否则进入sub_180001000
-
非管理员运行:
- 拼接路径:
C:\windows\system32\winver.exe - 生成类似UUID的值,利用RPC通信提权
- 调用
taskmgr.exe并使用CreateProcessAsUserW创建子线程
- 拼接路径:
-
管理员运行:
- 复制两段代码:当前shellcode和RC4未解密的DLL数据
- 遍历进程查找
winlogon.exe获取进程ID - 将shellcode写入
winlogon.exe进程 - 利用ALPC(高级本地过程调用)完成权限维持
-
winlogon.exe内运行:
- 再次魔改RC4解密,解密出IP地址(疑似C2)
- 创建文件:
C:\Program Files\Common Files\System\Overwolf.exe - 同目录下创建
teamspeak_control.dll和teamspeak_control.bin - 启动线程执行shellcode
-
计划任务创建:
- 解密获取计划任务COM组件的CLSID和riid
- 初始化COM组件
- 执行命令创建计划任务
- 最后删除自身
白加黑技术分析
- DLL导出函数:所有导出函数内容设置为相同,调用任意一个即触发恶意行为
- 调试技巧:在
DeleteFileW下断点回溯源头 - 执行流程:
- 读取同目录下的
.bin文件 - 解密shellcode并执行DLL中的逻辑
- 读取同目录下的
攻击流程总结
- 主程序(Qt)利用PoolParty timer创建并调用shellcode
- shellcode调用DLL的run函数
- run函数为DLL提权并重新加载
- 提权后将shellcode注入
winlogon.exe - 在
winlogon.exe中:- 生成白加黑文件
- 创建计划任务(每两小时执行一次)
- 白加黑文件重复上述流程,但无需再次提权(因计划任务以SYSTEM身份运行)
C2情报
- 在X情报社区查询发现多个同源样本
- 检出木马类型有助于初步研判建立框架
防御建议
- 监控异常进程行为,特别是
winver和taskmgr的异常调用 - 关注计划任务的异常创建,特别是SYSTEM权限的高频任务
- 对Qt程序特别是使用PoolParty timer模块的保持警惕
- 监控
winlogon.exe的异常内存写入 - 关注
Overwolf.exe和teamspeak_control.dll的组合出现 - 建立对RC4加密行为的检测机制