一、背景概述
近期,新华三态势感知平台监测到某机器发起过对挖矿域名(xmr-eu2.nanopool.org)的解析请求,客户在发现异常事件后,启动中毒机器上的杀毒软件进行全盘扫描,未检出挖矿木马,带着客户的疑问,新华三安全攻防实验室即刻介入分析。
经验证,该样本的确能躲避多款国内外主流杀毒软件的查杀,通过对样本的深入分析,我们发现该挖矿木马在文件末尾附加了大量空字节、使自身大小达到百MB级别,从而达到杀软和沙箱检测逃逸的目的。根据该挖矿木马的这个特点,我们将其命名为"虚灵矿工"。
二、初步排查
使用ProcessMonitor对样本动态行为进行监测,发现挖矿网络请求由exe进程发起:
命令行带有明显的挖矿程序相关参数:
--cinit-find-x -B --algo=rx/0 --asm=auto --cpu-memory-pool=1 --randomx-mode=auto --randomx-no-rdmsr --cuda-bfactor-hint=12 --cuda-bsleep-hint=100 --url=randomxmonero.eu-west.nicehash.com:3380 --user=3D8RFKShXUnEygTvd3ZMabw4ARhLu74KZq.Lakys --pass= --cpu-max-threads-hint=30 --nicehash --cinit-stealth
在sysmon记录中搜索父进程id,定位到父进程相应文件为:
%APPDATA%\gamelauncher.exe。该文件大小为672M,初步可以推测文件过大是杀毒软件未检出原因。
在sysmon中还定位到exe释放的一个驱动文件:%APPDATA%\libs\WR64.sys
根据gamelauncher.exe的线索,排查启动项,发现一计划任务会在机器开机时启动gamelauncher.exe。
根据排查可以定位挖矿木马和实现持久化的方法,调用关系如下:
三、样本分析
1、样本基本信息
2、样本逻辑图
3、gamelauncher.exe分析
gamelauncher.exe大小为672M,压缩后仅8.42M。使用工具查看时发现有效内容很少,因其实际Payload后添加了大量的空字节。
去除空字节填充之后的文件大小为8.35 MB (8,759,474 字节),查看区块信息,初步确认为Themida加壳。
其启动时会检测监控工具、反调试:
使用ExtremeDumper、AssemblyRebuilder获取到原始.net程序game.exe,game.exe启动会先休眠一分钟,然后对资源数据进行AES解密执行:
资源段数据解密结果为一个新的.net程序,文件名为game-miner.dll,但实际还是exe。
4、game-miner.dll分析
game-miner.dll有变量函数名混淆,这里简单重命名列出功能。
- 有管理员权限情况下,创建计划任务实现持久化,如失败,则设置注册表项实现持久化:
b. 如果当前路径不是 %appdata%/gamelauncher.exe,则杀死sihost64进程,删除%appdata%/libs/路径下的log、sihost64-2.log,将自身复制为%appdata%/gamelauncher.exe并启动,自身退出(实际运行时,只要文件名不是gamelauncher.exe,就会执行以上操作)
c. 读取kumhcdkzhbym资源,解密后写到%appdata%/libs/WR64.sys
d.遍历所有exe进程的命令行,判断是否已经开始挖矿,如果已经有相应参数,则直接退出
e. 解密挖矿参数,解密资源段数据并提取压缩包中的exe文件,开始创建新explorer进程并注入恶意代码执行
f. 以挂起方式创建explorer进程,第6个参数为4,即CREATE_SUSPENDED表示挂起状态,
写挖矿程序到explorer进程相应内存,然后恢复运行,开始挖矿。
g. 写入explorer进程的挖矿程序被加壳,单独运行调试,使用Scylla dump并修复导入表,使用IDA可查看main函数。
我们从https://github.com/xmrig/xmrig下载挖矿程序与dump出的挖矿程序进行对比,main函数基本一致
game-miner.dll释放的WR64.sys pdb路径为:
"d:\hotproject\winring0\source\dll\sys\lib\amd64\WinRing0.pdb"
证书也和下载的xmrig包含的WinRing0x64.sys一致,使用IDA对比结构完全相同。
该恶意程序使用xmrig时,默认会将算力的1%贡献给xmrig项目,相关域名即态感平台监测到的xmr-eu2.nanopool.org。
根据样本分析,可确认挖矿木马执行的整个过程,和态感监测记录符合。
四、同源性分析
根据样本特点,我们关联到github的一个开源项目SilentXMRMiner:
https://github.com/UnamSanctam/SilentXMRMiner
该项目提供高度可定制化的挖矿程序生成能力,根据时间关系,我们取SilentXMRMiner v1.4.4版本按相同配置生成挖矿程序new_game.exe,和game.exe进行对比:
从资源段解密得到game-miner.dll, main函数对比如下:
此外,通过查看项目代码,确定样本分析中提到的sihost64进程为守护进程,可在挖矿程序异常时尝试恢复运行。
通过以上对比关联可以确定,"虚灵矿工"正是在该项目生成的程序基础上,进行了加壳和附加空字节的操作。
五、IOC
domain:
xmr-eu2.nanopool.org
randomxmonero.eu-west.nicehash.com:3380
MD5:
974df47a259b9d5477d768871f3cb5a8
六、新华三处置与防御建议
【处置建议】
1、清除gamelauncher相关的计划任务和注册表中的自启动项;
2、删除%APPDATA%/gamelauncher.exe %APPDATA%/libs/WR64.sys;
3、重新启动操作系统。
【防御建议】
1、尽量在官方下载软件,谨慎使用各大下载站;
2、不要点击来源不明的邮件以及附件;
3、新华三威胁情报与特征库已能进行检测,建议升级到相关最新版本。