近期,火绒威胁情报系统监测到一款木马病毒正在网吧快速传播。该病毒被激活后,可接收并执行黑客下发的恶意模块,包括各种广告推广、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缓存服务的pid,然后将劫持模块注入到DNS缓存服务中,相关代码,如下图所示: 将劫持模块注入到DNS缓存服务中在注入的劫持模块中,通过HOOK WSARecvMsg函数来监控和修改系统中所有DNS请求,HOOK相关代码,如下图所示: HOOK WSARecvMsg函数在HOOK WSARecvMsg函数中对DNS请求进行劫持,相关代码,如下图所示: DNS劫持
URL劫持模块启动后,会先从C&C服务器获取劫持相关的配置信息,相关代码,如下图所示: 获取劫持相关的配置信息获取到的部分配置信息,如下图所示: 获取到的部分配置信息获取到劫持相关的配置信息之后,会将URL劫持相关的模块,注入到浏览器进程进行劫持,相关代码,如下图所示: 注入劫持模块
该模块主要负责劫持用户电脑中的传奇登陆器,来推广指定的传奇。模块启动之后,会先从C&C服务器中获取相关配置文件,再根据配置文件进行检测,如果存在指定的传奇客户端就进行劫持。获取配置信息相关代码,如下图所示: 获取配置信息代码由于安全工程师在调试的过程中并未获取到相关配置信息,无法进行动态调试。以下是分析人员通过对恶意文件的静态分析的结果,分析发现配置信息中存在几个字段:icomd5,filemd5等字段 ,病毒通过这几个字段信息来确定要劫持的登陆器,以icomd5为例,模块会遍历系统中的进程并计算图标文件的MD5值来判断是否为劫持的登陆器,计算图标MD5相关代码,如下图所示: 计算图标md5确认是要劫持的登陆器之后,会将劫持模块注入到目标进程中,相关代码,如下图所示: 注入劫持模块在劫持模块中会对ShowWindow 函数进行HOOK,相关代码,如下图所示: HOOK ShowWindow在HookShowWindow中,会创建一个新的窗口来代替代替原窗口,相关代码,如下图所示: 劫持登陆器界面
反调试模块启动后,会通过枚举Windows窗口的类名和标题来检测是否存在特定的调试软件,相关代码,如下图所示: 检测用户电脑中的软件会检查的窗口标题和类名列表,如下图所示: 会检查的窗口标题和类名列表
C&C:
HASH:
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)