the heart of lucifer

看看影音恶意挖矿行为分析

近日,部分用户出现电脑GPU占用率高,电脑温度升高,风扇噪声增大等问题。具体现象为电脑中C盘可使用空间骤降,且在C盘Ethash文件夹内,发现存在大量的1G左右的垃圾文件;电脑闲置状态时,风扇转速增快,电脑发热增加,GPU使用率达到100%。非闲置状态时,恢复正常。经过远程调试分析发现是看看影音在后台偷偷利用用户电脑的运算资源进行以太币(一种类似比特币的数字货币)挖矿导致。

1.jpg

[看看影音的版本和公司信息]

安装看看影音后,会注册组件%APP_DATA%\Video Legend\RBC\Program\RBCShellExternal.dll到注册表的explorer加载项,从而开机即可加载运行,然后通过lua脚本控制,下载挖矿模块到本地利用GPU挖矿,整个流程如下图所示:

2.png

[看看影音挖矿行为整体流程简图]

RBCShellExternal.dll分析

该组件是一个商业功能模块,RBC是Remote Bussiness Control的缩写。顾名思义,这个模块可以通过远程配置来控制用户电脑上运行不同的模块,比如升级、修复、广告弹窗、推广安装等,也包括挖矿。

RBCShellExternal.dll会通过rundll32.exe来加载模块RBCEntry.dll,并通过命令行参数来检测调试工具。

3.jpg

[加载RBCEntry.dll的命令行]

完整命令行如下:

rundll32.exe"%APP_DATA%\Video Legend\RBC\Program\RbcEntry.dll", Control_RunDLL/thread /src ..\\..\\Xar\\Rbc.xar /killex /priority 0 /checktime /delay 1 /idle%d /busy %d  /debug /bkwndlist"Microsoft Visual;HTTPAnalyzer;WinDBG;OllyDebug;fiddler;SmartSniff;\t\t\t\t\t\t\t\tSpy++;Spy;ATL/MFC;任务管理器;DebugView;Process    Explorer;File Monitor;RegistryMonitor;Wireshark;OllyICE;OllyDBG;Sysinternals" /bkprocesslist"fiddler.exe;windbg.exe;devenv.exe;taskmgr.exe;wireshark.exe;\t\t\t\t\t\t\t\t\thttpanalyzer.exe;smsniff.exe;filemon.exe;regmon.exe;procmon.exe;ollydbg.exe;softice.exe;cis.exe;\t\t\t\t\t\t\t\t\ttasklist.exe;procexp.exe;ollyice.exe;processspy.exe;spyxx.exe;winspy.exe;cv.exe"

参数/src指定了要加载的lua脚本模块(已打包成xar格式),通过lua脚本来控制任务;参数/bkwndlist指定要查找的窗口标题,参数/bkprocesslist指定要查找的进程名,一旦枚举到指定的窗口或进程名,立刻结束进程,防止被用户发现。

LUA脚本分析

RbcEntry.dll封装了LUA引擎,加载后首先解析Rbc.xar,然后调用其中的onload.lua,启动整个脚本。Rbc.xar是任务调度模块,核心功能是从云端下载任务控制脚本并加载运行。

Rbc.xar解包后目录树如下:

Rbc.xar

└─layout

│  onload.lua

└─luacode

kkp.curl.lua

rbc.base.lua

rbc.eventsource.lua

rbc.filter.lua

rbc.helper.lua

rbc.lua

rbc.scheduler.lua

rbc.setting.lua

rbc.task.lua

rbc.version.lua

onload.lua主要功能是加载各个脚本,代码如下:

4.png

[onLoad.lua加载脚本]

最后加载rbc.scheduler.lua里面包含了远程配置的任务脚本url:http:/***.kankan.com/rbc/taskschedule_v1.2.dat

5.jpg

[rbc.scheduler.lua调度脚本]

从各个函数名称可以看出,该脚本是主要功能是调度任务的运行。而脚本taskschedule_v1.2.dat则是真正的任务脚本。

taskschedule_v1.2.dat中配置了各种任务的参数,其中挖矿任务的参数配置块如下:

6.jpg

[挖矿任务脚本的参数配置块]

其中link就是该任务模块的下载地址,通常是xar包;frequency是执行频率;googleid和cnzzid是活跃统计标识。configurl是脚本里面使用的远程配置,主要是挖矿DLL模块的下载地址和MD5,具体内容请看下文。

任务模块下载后保存在%APP_DATA%\VideoLegend\RBC\Task目录下:

7.png

[%APP_DATA%\VideoLegend\RBC\Task下生成的各任务目录]

整理所有任务URL,如下:

http:// ***.kankan.com/rbc/fixrbclaunch_v1.2.cab

http://***.kankan.com/rbc/startip_v3.2.cab

http://***.kankan.com/rbc/upkkp_v1.20.cab

http://***.kankan.com/rbc/uprbc_v1.11.cab

http://***.kankan.com/rbc/uprbcxar_v1.1.cab

http://***.kankan.com/rbc/checkintegrity_v1.9.xar

http://***.kankan.com/rbc/arkkp_v5.2.cab

http://***.kankan.com/rbc/aikkp_v6.1.xar

http://***.kankan.com/rbc/arfix_v1.0.xar

http://***.kankan.com/rbc/dc_fixplugin_v4.2.lua

http://***.kankan.com/rbc/fixplugin_v12.0.cab

http://***.kankan.com/rbc/fixplugin_v11.5.cab

http://***.kankan.com/rbc/launchkkp_v10.1.xar

http://***.kankan.com/rbc/launchkkp_v20.1.cab

http://***.kankan.com/rbc/rbctip_v5.10.cab

http://***.kankan.com/rbc/newstip_v2.21.cab

http://***.kankan.com/rbc/rbcbiz_v3.3.cab

http://***.kankan.com/rbc/rbcbizlite_v1.3.cab

http://***.kankan.com/rbc/biztask_v2.1.cab

http://***.kankan.com/rbc/fixpusher_v1.3.cab

http://***.kankan.com/rbc/dc_task_v5.3.xar

http://***.kankan.com/rbc/partnerlink_v2.2.cab

http://***.kankan.com/rbc/partnerdll_v2.11.xar

http://***.kankan.com/rbc/arbrowserlink_v2.9.xar

http://***.kankan.com/rbc/dc_arbrowserlink_v2.3.xar

http://***.kankan.com/rbc/arbrowserlinkq_v1.6.xar

http://***.kankan.com/rbc/dc_arbrowserlinkq_v1.2.xar

其中http://***.kankan.com/rbc/partnerdll_v2.11.xar是挖矿任务控制脚本,md5为8EF1948C5EA9B8113706CBFF1EBB8CF5;解包后只有一个脚本onload.lua,主要功能是根据配置参数configurl下载deploy64.dll到%TEMP%目录下并加载运行。而deploy64.dll正是挖矿的主体模块。

configurl配置的脚本内容如下:

8.jpg

[挖矿任务脚本配置的DLL下载地址]

里面配置了deploy.dll的3个下载地址caburl、caburl_without、caburl_withoutwithdll,其中caburl是编译了opencl的,caburl_without是没有编译opencl的,caburl_withoutwithdll是没有编译opencl但打包了OpenCl.dll的。但脚本中总是去下载caburl,最后调用rundll32.exe加载Deploy64.dll运行:

9.png

[脚本调用rundll32.exe加载Deploy64.dll]

完整命令行如下:

c:\windows\system32\rundll32.exe“%TEMP%\Deploy64.dll” ,Control_RunDLL index_class_d=%d

其中参数index_class_d在taskschedule_v1.2.dat中的任务参数配置块中指定。

Deploy64.dll加载起来后就开始执行真正的挖矿代码了,是导致GPU使用率大增、电脑过热、C盘可用空间变小的真正元凶。

Deploy64.dll分析

Deploy64.dll加载后会创建2个线程:CSafeRT::MonitorThread和EthThread。其中CSafeRT::MonitorThread是监控线程,而EthThread是挖矿线程。

CSafeRT::MonitorThread

该线程会创建一个窗口,窗口类名为__deploy_CSafeRTImpl,窗口名称为__deploy_CSafeRTImpl_i_1_5,然后在窗口过程函数中检测调试器和枚举窗口,如果检测到被调试或有检测工具窗口存在则退出。

10.png

[检测到正在被调试则退出]

11.png

[检测到以上窗口标题则退出]

EthThread

Ethread是执行挖矿的主体线程,首先下载挖矿配置文件http://***.kankan.com/deploy/dtask%d_.ini,其中%d由传入参数index_class_d指定,目前0-7有效。该配置文件内容如下:

12.png

[挖矿配置文件]

读取配置字段后使用AES128算法解密,得到

p = “http://eth-asia1.nanopool.org:8888”;us = “0x7016df7C2d2AcF0DAc218A410e61002A66837151;

0xEaABAF0384EE73bca43c2A698e240d64de09081b;

0x0af856fbEd6e93A01b3c4557D64edc99C5a5d46B;

0x669F588F103764f98b94ceBFB6fB93bbd5dF2CFc;

0xedC148759dFdFfA3EEfF01Ea64B2aBf20642799f;

0xfE7c793eD4F16B6d05eC763D98389590b0c812E1;

0xc556d14247A59d1E0886bB21b4fAe1481C744191;

0xb1d42965F539eAF688938A16be47558053D57A52;

0x6563b8A0a6238edc8c3bBD7E23AB6174DED92165;

0x9C3dc3Bc89a0f16B1CBc2bA8b35427d286F783ec;

0xFfB6faEF01A41330425ae1795601f6D3F7c1d762”

[解密得到的挖矿参数]

然后拼接得到 http://eth-asia1.nanopool.org:8888/0xFfB6faEF01A41330425ae1795601f6D3F7c1d762

14.png

[启动挖矿参数]

传的参数给自身进程,开始挖矿。其中参数-G指定使用GPU挖矿,参数-F指定矿场url。挖矿开始后会在用户目录下生成Ethash目录,其中的挖矿数据文件格式如下,单个文件大小超过1.5GB。同时造成用户电脑GPU占用率飙升,电脑发热增大等现象。

15.png

[Deploy64.dll生成的挖矿文件]

以上就是看看影音利用用户电脑运算资源进行挖矿的整个过程分析。由于看看影音本身属于正常软件,通常被各安全软件直接信任,从而导致这种恶意行为难以被发现。目前毒霸可以查杀该恶意行为。

16.png

[毒霸拦截查杀挖矿病毒]

17.png

[毒霸清理挖矿数据文件]

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注