-
-
[原创]银狐WinOS伪装魔兽插件,远控木马攻击链分析
-
发表于: 1天前 100
-
近期,我司安全团队监测到一款通过仿冒“魔兽世界新手盒子”官网传播的远控木马。攻击者利用搜索引擎优化与社交平台传播钓鱼链接,诱导用户下载未签名的恶意安装包,实施供应链投毒与“白加黑”DLL侧加载攻击,最终窃取用户虚拟财产及敏感信息。

一、程序运行概述
安全团队随即启动应急响应,对涉事样本及攻击链路展开深度分析。分析确认,这是一起典型的供应链投毒结合“白加黑”DLL侧加载的定向木马攻击事件,攻击者利用游戏辅助工具的高频下载场景,批量传播远控木马,以实现对受害主机的持久化控制与敏感数据窃取。
恶意安装包文件属性中不包含任何有效的代码签名信息,无法通过Windows受信任根证书颁发机构的验证。
合法的“魔兽世界新手盒子”安装包则具备完整的数字签名链,签名者信息与软件开发商一致。
该木马采用业界已知的“白加黑”侧加载(DLL Side-Loading)技术实现规避检测。
恶意安装程序在首次执行(即用户双击运行安装包)时,即会于后台静默释放并启动远控木马主体,无需额外用户交互。
在首次安装时,远控木马就会被启动。
攻击者选取一款具备知名厂商有效数字签名的合法可执行文件(以下简称“白程序”)。白程序在正常执行过程中需动态加载若干依赖库(DLL)。攻击者将其中的合法DLL替换为同名恶意动态链接库,并将白程序与恶意DLL置于同一目录下。当白程序被启动时,操作系统按搜索顺序加载该恶意DLL。DLL入口点(DllMain)中即包含恶意线程创建逻辑,进而从远程服务器下载解密并执行远控核心载荷。


在安装阶段通过计划任务实现持久化。打开 taskschd.msc 程序可以看到该程序被设置为了计划任务,该任务配置为在任意用户登录时触发,执行路径指向上述白程序,从而保证攻击者与 C2 服务器的连接能够在每次用户会话初始化时快速重建,维持长期控制能力。
运行流程如下:

二、危害评估
该程序已被证实能够接收并执行服务端下发的任意代码,使其本质上成为一个功能可动态扩展的木马平台。攻击者可借此远程投递键盘鼠标模拟程序、凭据窃取模块、勒索软件或其他恶意载荷,无需重新感染主机。结合其对用户空闲状态的精准监测,攻击者能够在受害者离开时通过模拟输入实施隐蔽操作,这正是玩家反馈“电脑没关,空闲一段时间后,鼠标自行移动、装备被盗”的技术原因,该威胁已具备绕过交互式防护、实现实时劫控的能力。
综合评估,该木马集资产侦察、远程控制、恶意载荷分发能力于一体,危害等级极高。其主要风险包括:
1.系统被持久控制:可安装后门、关闭安全软件。使受害主机长期沦为“肉鸡”。
2.直接财产损失:窃取受害人计算机上的各种信息,隐私以及虚拟资源财产。
3.供应链或内网威胁:以受害主机为支点,可对内网其他计算机发起攻击。
三、恶意行为逆向分析
AdbWinApi.dll
作为“白加黑”侧加载链中的动态链接库,该恶意DLL(AdbWinApi.dll)的DllMain函数内容如下,在DLL刚加载时它就会创建一个新的线程去执行恶意代码避免堵塞主线程。
该线程负责从远程服务器下载最新的恶意代码,将下载的数据复制至该缓冲区,在解密完成之后申请可执行内存创建新线程执行恶意代码。
上线模块.dll
通讯协议
该模块封装了两种通讯协议(TCP和UDP),其采用面向对象的设计,两种对象均通过多态虚函数接口提供统一的加密、发送、接收与连接行为。
每次向服务器连接时都会生成32字节的随机秘钥,该秘钥作用于本次连接的所有流量。在初始连接时,恶意程序会将生成的32字节随机秘钥以明文的内容发送给服务器。而在后续的加密与解密过程中都将使用这个秘钥。而加密算法则是作者自己实现的、轻量级的魔改 XOR 流密码。
本次会话的秘钥则为 frAQBc8Wsa1xVPfvJcrgRYwTiizs2tr
66 72 41 51 42 63 38 57 73 61 31 78 56 50 66 76 4A 63 72 67 52 59 77 54 69 69 7A 73 32 74 72 00
心跳包
在与服务器同步之后,恶意程序会启动一个新线程定时(每隔5秒)向服务器发送一个心跳包( 0xC9 )用来确保“傀儡机”存活。
配置下发
恶意软件根据解析服务器返回的数据来决定下一步的动作。如果第一个字节不为 0xC9 (表示本次接收的数据并不是心跳包同步),并且恶意软件初次上线,则在 HKCU\Console\0\d33f351a4aeea5e608853d1a56661059 注册表路径下写入总计 264,195 字节 的配置数据,其中包含登录模块.dll(一个PE文件),用来加载登录模块的shellcode,版本标识等内容。


如果数据长度为 101 字节,则代表是特殊的命令包。用来从持久化配置中提取数据到进程的内存空间中,赋值给 lpAddress
此外,该恶意程序还会检测是否是服务器下发的特殊执行命令,如果匹配成功,则将之前持久化的配置作为shellcode执行进程注入。此时恶意软件已经具备了初步远程控制功能。
进程注入
恶意软件的注入器模块首先读取注册表中持久化存储的 PE 载荷,在内存中逐字节搜索标记字符串 denglupeizhi。定位到该标记后,程序将紧随其后的配置占位数据替换为服务端下发的最新连接参数,包括 C2 服务器的 IP 地址与端口号,从而实现被注入载荷的运行时动态配置更新。


完成配置替换后,恶意软件将更新后的服务器地址写入注册表键 HKLM\SOFTWARE\IpDates_info,键值名为 IpDates_info,用于记录当前生效的 C2 连接信息。
此外,注入器会根据预设的标志位决定注入目标。若标志位启用,恶意软件将采用线程劫持技术,将修改后的载荷注入至新创建的傀儡进程中。否则就在自身创建的新线程中执行。恶意软件通过外部循环持续监控目标进程状态,确保注入后的恶意线程始终保持运行。这一机制在避免额外进程创建的同时,增强了载荷执行的隐蔽性与稳定性。


登录模块.dll
配置初始化
恶意软件从注册表中提取登录模块并将其注入目标进程后,该核心模块即被激活。作为整个恶意框架的中枢,该模块启动后首先尝试读取此前写入的注册表配置项,完成运行参数的初始化并设置全局变量。从代码入口点开始,程序便执行一套高度隐蔽且具备自愈能力的进程迁移与持久化方案。


关键进程滥用
该恶意软件通过调用 NtSetInformationProcess 函数并传入 ProcessBreakOnTermination(信息类 29)将当前进程标记为 Windows 关键进程。一旦该进程因查杀、崩溃或任何其他原因终止,操作系统将立即触发 CRITICAL_PROCESS_DIED 蓝屏死机。此机制将系统稳定性与恶意进程的存续强行绑定,既可阻止用户或安全软件结束其进程,也在客观上增加了应急响应和样本清除的难度。
强行终止的结果如下:
进程迁移与持久化机制分析
该恶意软件首先以挂起状态创建该系统进程,通过构建远程引导数据块,将引导数据块和引导函数注入到傀儡进程中。注入完成后,两块内存的访问保护被临时设置为不可访问,并在最终激活前恢复为可执行可读写,以规避基于内存扫描的检测。整个注入过程结束后,函数创建远程线程但保持其挂起状态,并休眠 60 秒,使恶意行为在时间维度上与注入操作脱钩,增强对动态分析系统的抗性。
被注入的引导代码 f_WaitForParentExitAndRelaunch 在远程线程被恢复后即开始执行。调用 WaitForSingleObject 无限期等待父进程退出,一旦原始进程终止(无论主动退出还是被动终止),引导代码立即利用已注入的模块路径调用 WinExec,最后调用 ExitProcess 销毁当前 svchost 傀儡进程。重新启动的恶意进程在操作系统进程链表中成为 svchost.exe 的直接子进程,与原始启动器无任何父子关联。
为确保上述迁移机制在傀儡进程被意外终止后仍能自动恢复,恶意软件新建了线程,形成一条永不退出的看护循环。该线程持续以最小查询权限打开并检查所创建傀儡进程的退出状态。当检测到进程退出码已不再是 STILL_ACTIVE(259),或根本无法打开目标进程时,立即重新调用,生成全新的傀儡进程并注入相同负载,随后继续监控新生成的进程实例。
建立C2通信
在上述工作完成之后,恶意软件开始尝试建立C2通信,它根据预先配置的协议类型动态创建TCP或UDP套接字,连接远程服务器后立马开始收集当前受害主机的详细信息以完成“登录”。随后函数通过事件机制等待服务端下发指令,进入命令接受与处理循环。
受害者信息收集上报
在建立远程连接后即刻执行一次完整的主机资产侦察,并将采集结果封装为结构化数据包发送至 C2 服务器。函数通过捕获当前用户活动状态,包括前台窗口标题与键盘鼠标空闲时长,为攻击者判断用户是否在场提供实时依据。
程序调用 gethostname 与 gethostbyname 获取主机名及所有本地 IP 地址,并通过 GetNativeSystemInfo 与注册表查询提取操作系统版本、架构(x86/x64)、CPU 核心数等基础硬件指纹。在此基础上,又分别枚举本地硬盘容量与剩余空间、物理内存大小,以及通过 DXGI 接口遍历显卡型号、显存与显示器分辨率,使攻击者掌握目标环境的计算能力与存储资源。
除常规资产信息外,该模块还刻意收集了若干高价值情报:通过 CollectInstalledSecurityProducts 获取已部署的安全软件名称,用于评估防御强度并制定规避策略;通过 GetSystemDirectoryW 记录系统目录路径,为后续文件投放与持久化提供定位参考。
流量内容如下:
通过初始密钥和对程序加密算法的逆向可以写出流量的解密脚本,解密出的部分内容如下所示:
命令分发与远程控制核心
恶意软件通信模块存在一个命令分发中枢,负责解析服务端下发的指令码并调度执行相应的恶意功能。该函数接收来自 C2 服务器的载荷数据,通过首字节命令标识符进行分支路由,涵盖信息窃取、系统控制、持久化维护、环境清理及远程代码执行等多个维度,构成攻击者对受害主机实施全面操控的核心调度机制。
函数首先检查注册表项 HKCU\Console\IpDatespecial 是否存在且长度大于 1 字节,以此作为某种条件开关。若该值不存在或为空,则直接进入 switch 分支,按命令码执行相应逻辑;若存在该注册表项,则跳过所有命令处理,可能用于暂时屏蔽远程指令的执行。


在命令集中,攻击者预置了丰富且灵活的操作原语:
1.信息窃取类:可分别触发系统完整信息采集、动态数据上报及自定义数据回传,使攻击者持续获取受控主机的软硬件资产、进程列表及运行状态。
2.系统与进程控制类:允许攻击者断开现有连接、强制退出恶意进程或执行系统关机/重启,实现对受害主机运行状态的直接干预。
3.远程执行与载荷投递类:负责处理文件更新、下载执行任意可执行文件,以及通过线程劫持方式注入执行服务端下发的 Shellcode,使攻击者可在无文件痕迹下动态扩展恶意功能。
4.持久化与配置管理类:用于更新配置、保存持久化数据、启动或终止主连接守护线程,以及通过注册表键值控制后续行为,确保恶意软件在不同运行阶段均受服务器精准调控。
5.反取证与自保类:负责清理恶意痕迹、删除系统事件日志、执行自复制重启,配合此前分析的进程关键标记和傀儡进程守护,形成立体化抗清除体系。
6.状态反馈与隐蔽通信类:用于检测指定进程是否存活、上报注入模块工作状态,以及按需回传系统简要信息,使 C2 得以评估载荷执行效果并调整攻击策略。

其他辅助模块
在完成对受控主机基本环境信息(包括操作系统版本、已安装安全软件、进程列表、网络配置等)的采集与回传后,恶意远控程序会向命令控制(C2)服务器发起第二阶段载荷请求。该请求通常携带受害主机的唯一标识符,以获取针对当前环境定制化的辅助功能模块。这些模块旨在扩展攻击者的操控能力,涵盖文件系统管理、屏幕画面实时监控、键盘记录、注册表编辑、Shell命令执行等远程控制操作,使攻击者能够对目标系统实施高度细粒度的交互式控制。
所有下载的辅助组件并未以独立的磁盘文件形式落盘,而是经内存解密后,直接以二进制原始格式(未加密、未压缩)写入Windows注册表。其存储路径固定于当前用户(HKEY_CURRENT_USER)下的软件类(SOFTWARE\Classes)子键中,具体路径如下:
\HKEY_CURRENT_USER\SOFTWARE\Classes\5e5eb504be63e96266e6f12a1127c2ff\0\32af87c1e3d8531abcb9fc927688e14e
\HKEY_CURRENT_USER\SOFTWARE\Classes\5e5eb504be63e96266e6f12a1127c2ff\0\c5e86acfcb8aef5cf588f75231c831ed
\HKEY_CURRENT_USER\SOFTWARE\Classes\5e5eb504be63e96266e6f12a1127c2ff\0\f81702de02285733e8700972e9ea6b04
每个注册表项下存储一个完整的DLL或Shellcode形态的辅助模块。


每一个辅助模块均内置一个完整的远程命令分发器。该分发器与登录模块一样都采用状态码映射机制,每个预定义的状态码唯一对应一项远程控制指令。攻击者在C2端下发指令时,只需在通信报文中携带对应的状态码与可选参数,目标主机上的模块即会解析该码,并调用相应的功能例程予以执行。
桌面控制
该模块是远控木马中负责实时屏幕监控与用户交互劫持的核心组件,通过加密指令实现对受害者桌面的持续窥探、输入行为的完全控制以及剪贴板数据的静默窃取,构成信息窃取与欺诈操控的关键环节。
1.实时屏幕图像捕获与质量调节:支持以指定图像质量启动屏幕录像,并能够动态调整捕获帧率(每秒帧数),使攻击者可根据网络状况和目标价值灵活切换高清或低带宽模式,持续获取受害者的操作画面与敏感信息。
2.输入设备接管与重放:可远程锁定或解锁受害者的键盘和鼠标,剥夺用户的控制权。在锁定期间,攻击者能够向受控主机注入预定义的输入序列(如键盘按键、鼠标移动与点击),模拟真实操作。
3.剪贴板数据窃取与注入:能够静默读取剪贴板中的文本内容并加密回传,获取用户复制的密码、密钥、银行账号等敏感信息。同时支持将远程构造的恶意内容(如钓鱼链接、勒索信息)写入剪贴板,诱导用户粘贴执行或混淆操作。
输入设备接管
在输入设备重放函数中,恶意软件主要使用 Win32API 提供的 mouse_event 和 keybd_event 来实现。该恶意软件通过将远程控制端下发的事件序列解析为包含消息类型、坐标及虚拟键码的结构化记录,在切换至用户活动桌面后,结合 GetDeviceCaps 获取的屏幕分辨率将记录中的像素坐标换算为绝对坐标,随后循环调用 mouse_event 和 keybd_event 等 API 精确还原所有鼠标移动、按键点击及键盘输入,并使用 BlockInput 解除物理输入阻塞以确保模拟执行的流畅性。
实时屏幕监控
恶意软件首先调用 SwitchToInputDesktop 确保线程附着于当前用户的活动桌面,随后获取全屏 DC 并根据 GetSystemMetrics 与 GetDeviceCaps 计算多显示器虚拟屏幕的缩放因子和捕获区域,构建两个兼容 DC 与 DIBSection 作为双缓冲,同时分配行比较缓冲区以支持后续的差异检测与压缩。
该恶意软件通过独立线程循环调用单帧捕获函数实现实时屏幕监控:每轮先切换到用户活动桌面,获取光标位置并计算其在捕获区域内的相对坐标,再通过 BitBlt 将当前桌面图像拷贝到兼容位图中,若启用差异模式则调用差异压缩算法减少数据量,最后将原始图像或差异数据经通用压缩后封装为带消息类型和数据长度的网络数据包,通过虚函数接口发送至控制端。
系统管理
该模块是远控木马中负责系统深度操控与信息窃取的核心组件,赋予攻击者近乎完整的系统管理权限。它不仅能全面收集受害主机的运行环境、进程网络与安全配置,还可直接干预进程生命周期、劫持系统服务及主机文件,为持久化控制和横向移动提供关键支撑。
1.系统环境全面侦察:可枚举当前桌面所有可见窗口及详细属性,采集所有TCP/UDP网络连接,遍历已安装的软件清单,读取系统事件日志,递归提取用户收藏夹内容,并能窃取系统Hosts文件。所有信息均序列化后加密回传。
2.进程与窗口的任意操控:支持按进程ID终止任意进程,并在必要时启用SeDebugPrivilege。可挂起或恢复指定进程的全部线程,实现“冻结”效果,或直接关闭目标窗口。更为激进的指令允许在终止进程后循环删除其可执行文件,甚至通过构造畸形目录(....\)绕过文件锁定机制,实现不可恢复的恶意文件清除。


3.系统服务与主机文件劫持:能够停止、暂停、恢复及永久删除Windows服务,攻击者可借此禁用杀毒软件、防火墙或关键系统组件。通过覆盖写入系统Hosts文件,可实施DNS劫持,将安全站点或业务域名重定向至恶意服务器,为后续钓鱼或中间人攻击创造条件。
4.任务计划持久化与代码执行:提供对Windows任务计划程序的完全控制,包括更新任务配置、启用/禁用任务以及立即触发执行。这使得攻击者可将恶意脚本或程序注册为计划任务,实现开机自启或定时激活,确保长期驻留。此外,模块还内置进程注入引擎,能够向合法进程插入并执行任意Shellcode,达成无文件攻击与隐蔽运行。
5.任意命令执行与窗口操控:可直接调用WinExec执行任意程序,并能够动态修改窗口的显示状态,实现隐藏恶意窗口或干扰用户操作。这些能力使攻击者可随时投放额外载荷、执行脚本或扰乱受害者桌面环境,进一步扩大破坏范围。
文件管理
该模块是远控木马中专门负责文件系统操控与数据窃取的核心组件,通过加密信道接收数十种远程指令,在受害主机上实现隐蔽且不可逆的文件删除、大规模敏感文件收集、底层磁盘元数据读取及任意载荷投递执行,构成信息窃取与系统破坏的关键环节。
1.敏感文件搜索与窃取:枚举指定目录下的文件列表并加密回传,根据预设搜索模式自动匹配、复制或移动目标文件至暂存区,并利用命令 0x1A 在后台线程将收集到的文件打包为 ZIP 压缩档,为后续隐蔽上传做好准备。
2.底层磁盘侦察与 MFT 解析:直接打开磁盘卷并发送 FSCTL 请求,读取 NTFS 主文件表(MFT),从而绕过文件系统权限检查枚举所有文件记录,实现无痕迹的大规模文件定位。
3.文件与目录破坏:可即时删除指定文件或递归清除整个目录树,且不经过回收站。配合设置的强制模式,可能进一步绕过文件锁定或安全软件拦截,对关键数据造成不可逆损害。
4.远程载荷投递与执行:可在受控端分块写入任意文件内容,实现恶意载荷的静默落地。直接启动可执行文件或通过 cmd.exe 执行任意命令,无需用户交互。
上面为钓鱼新手盒子的功能分析,在这里还是要提醒广大游戏玩家,在下载程序的时候一定要从官方网站进行下载。下载之后尽可能的去查看软件是否有正规签名,避免不小心中了钓鱼套路感染病毒最后造成了财产损失或数据泄露。
四、IoCs
MD5:fdd2dce566f9bfabf1941d0159fd769e
SHA-1:4f7d33cf46e1b99e1fb9fac1765cba5dc11f7647
SHA-256:8a88f4eb3d331a93047ed15af54235f32579dabf14e31bb08391e314ca8f4895