一次恶意挖矿样本分析到捕获矿池地址
字数 1395 2025-08-29 22:41:10
恶意挖矿样本分析与矿池地址捕获技术详解
样本基础信息
样本指纹:
- SHA256:
938c187c0c566d3ecd0ca594d027cff745688b409d6ab18e7d836d9ef1bd30de - MD5:
8bb9f094a5c3e8358d931200092e3412 - SHA1:
fced1103ababf08ea6435f43f597240ac6c357e8
静态分析
导入表分析
使用IDA查看导入表发现以下关键API:
- 敏感API:
CreateMutex,GetLastError,Sleep,fopen,fseek,malloc,ftell,fwrite,fputs,CreateProcess - 网络连接相关API:
ws2_32.dll中的网络功能函数
执行流程分析
主函数关键逻辑:
-
互斥体检查:
CreateMutex(NULL, FALSE, "MutexName"); if (GetLastError() == ERROR_ALREADY_EXISTS) { Sleep(1000); return; }- 通过创建互斥体防止程序重复执行
- 如果互斥体已存在则休眠后退出
-
文件操作:
FILE* file = fopen("自身路径", "rb"); fseek(file, 0, SEEK_END); long fileSize = ftell(file); void* buffer = malloc(fileSize); fseek(file, 0, SEEK_SET); fread(buffer, 1, fileSize, file); fclose(file);- 读取样本自身文件内容到内存
- 推测可能包含第二阶段恶意代码
-
文件内容解析:
- 从文件末尾倒数第8字节读取DWORD值
- 从文件末尾倒数第4字节读取DWORD值
- 使用
R13(文件大小)和R14(内存起始地址)进行操作
-
文件写入:
fwrite(buffer, 1, fileSize - 256 - 8, newFile);- 写入大小为文件总大小减去256再减去8字节的数据
-
自我复制:
char randomName[MAX_PATH]; GenerateRandomName(randomName); fputs(randomName, file); CreateProcess(randomName, ...);- 生成随机文件名
- 将自身复制到新文件并执行
- 循环复制到
C:\Windows\System\目录
动态分析技巧
绕过循环复制
-
调试方法:
- 在复制代码区域外设置断点
- 运行到断点位置跳过循环
-
寄存器修改:
- 循环通过
js指令判断次数 - 结果存储在
SF寄存器 - 双击
SF寄存器设置为1可跳过循环
- 循环通过
矿池程序识别
- 发现
xmrig相关代码:知名开源矿工程序 - 微软Defender识别为挖矿木马
- 实际功能为隐蔽挖矿而非CS木马
矿池地址捕获技术
方法一:字符串分析
-
在IDA中搜索字符串
-
发现关键配置信息:
{ "algo": "cn/r", "url": "3.120.209.58:8080", "pools": [...] }cn/r:CryptoNightR算法,常用于门罗币挖矿url字段即为矿池地址
-
威胁情报验证:
- 微步显示安全
- VirusTotal有标记为"Miner"
方法二:动态调试捕获
-
断点设置:
- 在
ws2_32.dll中的网络API设置断点 - 重点关注
GetAddrInfoW等函数
- 在
-
API分析:
int GetAddrInfoW( PCWSTR pNodeName, // 主机名/IP地址 PCWSTR pServiceName, // 端口/服务名 const ADDRINFOW* pHints, PADDRINFOW* ppResult );- x64调用约定:第一个参数在
RCX寄存器 - 动态调试时查看
RCX值即为矿池地址
- x64调用约定:第一个参数在
-
调试过程:
- 断在
GetAddrInfoW时查看寄存器 - 确认
3.120.209.58:8080为矿池地址
- 断在
总结与防护建议
技术要点总结
- 样本使用自我复制和互斥体确保持久化
- 采用多阶段加载方式隐藏真实功能
- 使用开源xmrig进行加密货币挖矿
- 矿池地址可通过静态字符串和动态调试捕获
防护建议
-
检测:
- 监控
CreateMutex和自复制行为 - 检测
ws2_32.dll的异常网络连接 - 关注
C:\Windows\System\目录的可疑文件
- 监控
-
防御:
- 更新防病毒软件规则
- 限制不明程序的网络访问
- 监控系统资源异常消耗
-
分析:
- 结合静态和动态分析方法
- 重点关注文件操作和网络行为
- 利用威胁情报验证可疑地址
通过以上详细分析流程,安全研究人员可以有效地识别和分析此类挖矿恶意软件,并采取相应的防护措施。