近期,火绒威胁情报系统监测到一款木马病毒正在网吧快速传播。该病毒被激活后,可接收并执行黑客下发的恶意模块,包括各种广告推广、DNS劫持、URL劫持、刷量控制、传奇登陆器劫持等。除此之外,该病毒还采用了多种对抗手段,隐蔽性极强。目前,火绒安全产品可对上述病毒进行拦截查杀,请用户及时更新病毒库以进行防御。


查杀图

  该病毒被运行后,会先从C&C服务器接收一个主加载器MainProShell.dll,然后将其注入到系统进程Explorer.exe中,以执行各种恶意操作。同时,该病毒还部署了一个看门狗模块(MainProcKeeper.dll),确保其持续在系统中活跃。该病毒执行流程,如下图所示:

病毒执行流程

此外,火绒安全工程师在分析过程中发现一篇专利内容,描述的DNS劫持与本次分析的样本使用技术一致,相关专利信息,如下图所示:

专利信息

在继续查看专利申请人的其他专利时,发现了一个名为“一种针对多个网吧或机房群控分发软件的方法”的专利信息,与本次分析的病毒样本运行模式极为相似。目前尚无法确认该专利作者与该病毒之间是否存在直接的关联,相关专利信息,如下图所示:

专利信息

火绒安全工程师在此建议,网吧经营者需安装并定期更新杀毒软件,同时加强设备管理,及时修复安全漏洞,确保各台终端处于最新的安全防护状态。

一、 样本分析

病毒启动之后,通过一个多阶段加载器机制在系统关键进程中部署恶意模块。首先,病毒从C&C服务器接收主加载器 MainProShell.dll。病毒将这个主加载器注入到系统进程 Explorer.exe 中。MainProShell.dll 是次加载器,主要负责将 gox64.dll(payload)随机注入到其他的系统进程以执行恶意操作。同时,病毒还部署了 MainProcKeeper.dll,这是一个看门狗模块,被注入到winlogon.exe。其主要职责是监控 MainProShell.dll 的运行状态,确保它在系统中持续活跃。防止 MainProShell.dll 遭遇注入失败或运行中断,MainProcKeeper.dll 会将MainProShell.dll重新注入到explorer进程中,这大大增加了恶意软件的持久性。这种复杂的注入策略,不仅提高了病毒的隐蔽性,同时也使其更加抗干扰,难以被杀毒软件侦测和清除。从C&C服务器接收恶意模块MainProShell.dll并注入到explorer进程中的相关代码,如下图所示:

注入MainProShell.dll模块

将看门狗模块从资源中读出并注入到winlogon中执行 ,相关代码,如下图所示:

注入看门狗模块

在MainProShell.dll模块中会创建一个互斥体,如果MainProShell.dll没有运行,互斥体就会失效,所以在看门狗模块中会循环判断互斥体是否存在,如果不存在就将MainProShell.dll重新注入到explorer进程中,相关代码,如下图所示:


看门狗

第二加载器阶段,MainProShell.dll会从将gox64.dll从资源节区中取出,并注入到随机的系统进程中,相关代码,如下图所示:

注入gox64.dll模块

在恶意模块gox64.dll中,会请求C&C服务器配置信息,根据配置信息来下载执行各种恶意模块,如:URL劫持、DNS劫持、广告推广、刷量控制、传奇登陆器劫持、反调试等恶意模块。除此之外,该模块还具备多种对抗手段,如反虚拟机,检测杀毒软件,通过hook系统API来隐藏真实的域名信息等。反虚拟机会通过GetSystemFirmwareTable函数来检测是否在虚拟机中,相关代码,如下图所示:

检测虚拟机

代码还会检测用户电脑中是否存在杀毒软件,相关代码,如下图所示:

检测是否存在杀毒软件

通过HOOK 网络相关API来隐藏真实的域名,HOOK之后,调用该函数时传入无效的域名,但是在内部HOOK代码处修改域名为正常域名,HOOK相关代码,如下图所示:


hook网络相关API

以InternetOpenUrlW函数为例,HOOK之后,在HOOK函数内部会修改无效的域名为正常域名,相关代码,如下图所示 :


InternetOpenUrlW HOOK代码

从C&C服务器接收执行恶意模块,相关代码,如下图所示:

接收执行C&C服务器下发恶意模块解密后的配置信息中有数十个模块,部分配置信息,如下图所示:

恶意模块配置信息

火绒安全工程师获取到的部分恶意模块列表,如下图所示:

部分恶意模块列表

内存加载C&C服务器下发的恶意模块,相关代码,如下图所示:

内存加载恶意模块


恶意模块分析

由于病毒的恶意模块数量众多,以下仅挑选有代表性的恶意模块进行详细分析。


桌面图标广告推广模块

该模块负责向用户电脑桌面中添加广告,模块被加载后,会先从C&C服务器获取配置信息,再根据配置信息来创建推广的图标,获取配置信息,相关代码,如下图所示:


获取配置信息

获取到的配置信息,如下图所示:

配置信息

获取到配置信息之后,该模块就会根据配置信息在桌面创建推广的广告图标,相关代码,如下图所示:

创建桌面广告图标

创建的桌面图标,如下图所示:

创建的桌面图标


浏览器书签广告推广模块

该模块的功能是向用户浏览器书签中添加广告,模块被加载后,会先从C&C服务器获取配置信息,再根据配置信息来向用户浏览器书签中添加广告。从C&C服务器获取配置信息,相关代码,如下图所示:

从C&C服务器获取配置信息获取到的配置信息,如下图所示:

获取到的配置信息

获取到配置信息之后,再根据配置信息来向相关浏览器中添加书签广告,相关代码,如下图所示:

向浏览器添加书签广告

被添加书签广告之后的浏览器,如下图所示:

被添加书签广告之后的浏览器


刷量控制模块

该模块的功能是根据C&C服务器的配置信息,对指定的URL访问进行刷访问量,模块启动之后,会先从C&C服务器获取要刷流量的URL,相关代码,如下图所示:


从C&C服务器获取配置信息

获取到的配置信息,如下图所示:

配置信息

将接收到要刷量的URL组成html代码,在后台进行刷量,相关代码,如下图所示:

html代码

通过fiddler抓包工具可以监控到流量数据,如下图所示:


fiddler流量监控


DNS劫持模块

DNS劫持模块启动之后,首先获取DNS缓存服务的pid,然后将劫持模块注入到DNS缓存服务中,相关代码,如下图所示:

将劫持模块注入到DNS缓存服务中

在注入的劫持模块中,通过HOOK WSARecvMsg函数来监控和修改系统中所有DNS请求,HOOK相关代码,如下图所示:

HOOK WSARecvMsg函数

在HOOK WSARecvMsg函数中对DNS请求进行劫持,相关代码,如下图所示:

DNS劫持


URL劫持模块
URL劫持模块启动后,会先从C&C服务器获取劫持相关的配置信息,相关代码,如下图所示:

获取劫持相关的配置信息

获取到的部分配置信息,如下图所示:


获取到的部分配置信息

获取到劫持相关的配置信息之后,会将URL劫持相关的模块,注入到浏览器进程进行劫持,相关代码,如下图所示:

注入劫持模块


传奇登陆器劫持模块
该模块主要负责劫持用户电脑中的传奇登陆器,来推广指定的传奇。模块启动之后,会先从C&C服务器中获取相关配置文件,再根据配置文件进行检测,如果存在指定的传奇客户端就进行劫持。获取配置信息相关代码,如下图所示:

获取配置信息代码

由于安全工程师在调试的过程中并未获取到相关配置信息,无法进行动态调试。以下是分析人员通过对恶意文件的静态分析的结果,分析发现配置信息中存在几个字段:icomd5,filemd5等字段 ,病毒通过这几个字段信息来确定要劫持的登陆器,以icomd5为例,模块会遍历系统中的进程并计算图标文件的MD5值来判断是否为劫持的登陆器,计算图标MD5相关代码,如下图所示:

计算图标md5

确认是要劫持的登陆器之后,会将劫持模块注入到目标进程中,相关代码,如下图所示:

注入劫持模块

在劫持模块中会对ShowWindow 函数进行HOOK,相关代码,如下图所示:

HOOK ShowWindow

在HookShowWindow中,会创建一个新的窗口来代替代替原窗口,相关代码,如下图所示:

劫持登陆器界面


反调试模块

反调试模块启动后,会通过枚举Windows窗口的类名和标题来检测是否存在特定的调试软件,相关代码,如下图所示:

检测用户电脑中的软件会检查的窗口标题和类名列表,如下图所示:


会检查的窗口标题和类名列表

二、附录

C&C:

HASH:

扫码免费获取资源: