本帖最后由 huoronganquan 于 2025-8-26 16:07 编辑
Node.js 作为一种高性能的 JavaScript 运行环境,凭借强大的功能广泛应用于服务器端开发,为开发者带来诸多便利。然而,其灵活性和跨平台特性在受到开发者青睐的同时,也逐渐吸引了攻击者注意。 近期,火绒工程师协助用户排查问题时发现一款利用 Node.js 语言开发的病毒。该病毒以 MSI 安装包形式传播,运行后会释放 Node.js 环境和经过混淆的后门代码文件。随后,病毒利用 PowerShell 修改注册表实现持久化,并通过以太坊交易记录获取远控服务器地址,最终实现执行任意指令。溯源时发现,其中一个远控服务器为该病毒的生成平台,授权用户可通过该平台生成病毒。火绒安全产品可对上述木马进行拦截查杀。 查杀图
流程图如下: 流程图
一、样本分析 1.初始化 初始化时期目的:样本在初始化时期会准备 Node.js 环境并建立持久化机制,从而使后门模块能够在受害者系统中执行并实现持久驻留。 释放文件:样本以 MSI 安装包形式传播,其在执行初期释放的文件如下图所示。其中,启动器和后门模块共同组成恶意文件,其他文件均为 Node.js 代码执行所需的环境文件。 释放出的文件
执行启动器:随后,样本利用 Powershell 执行被 Base64 编码的指令。解码后可知,该指令用于调用 node.exe 执行 wZQLORCtb9BmKli(启动器)。 Powershell 执行启动器
Node.js 代码被混淆:该启动器代码和后续的后门模块代码均为进行了混淆处理的 Node.js 代码。通过开源项目 js-deobfuscator 对其进行去混淆,可直接观察到病毒源代码。下图为部分混淆代码与部分去混淆后的代码。 去混淆前后对比
安装 Node.js 环境,执行后门模块并持久化:该启动器利用 aes-256-cbc 算法解密 KXcuN61nQb08R2Y(模块提取器)与 BucuAgXvBgLczkQ(模块数据),并进行模块提取。 随后,通过 npm 包管理器安装 ws、pm2和ethers 等网络、进程、以太坊相关模块,从而保障后续后门模块执行所需的环境条件。 最后执行 0rkSA7bBv29ljmZ.js(后门模块),并通过调用 Powershell 将其写入注册表 Software\Microsoft\Windows\CurrentVersion\Run\{随机16字节}(开机自启注册表),从而完成持久化驻留操作。 解密、执行后门模块、持久化
2.后门模块 最终目的:从远程服务器获取到指令并执行。 过滤俄罗斯语言地区:后门模块在获取服务器地址前会通过 PowerShell 获取当前系统用户界面语言,并将使用俄罗斯语言的设备过滤掉。从日志的语言为俄罗斯语推断,病毒作者可能有意避免影响俄语地区用户。 过滤俄罗斯语言地区
获取远控服务器地址:随后,通过以太坊区块链中指定钱包(0x73625b6cdfecc81a4899d221c732e1f73e504a32)与指定智能合约(0xa1b40044ebc2794f207d45143bd82a1b86156c6b)的交易记录获取后门地址,例如 ws://104.219.234.251:3001。在该过程中,样本会先通过多个 RPC 节点获取后门地址,之后从中选取出现次数最多的地址作为当前后门地址。 获取服务器地址
从 etherscan.io 中查询交易记录:通过以太坊区块链浏览器和数据分析平台 etherscan.io 查询到该代码中的钱包地址与智能合约的写入交易记录,从中可以看出该病毒作者会经常更新远控服务器地址。 两天前再次换了一个远控服务器地址
获取动态 Key 与 IV:每次与服务器建立连接后,服务器都会下发新的 Key 与 IV 用于发送数据和接收服务器数据时的加密与解密。此加解密过程使用的算法仍是 aes-256-cbc。 获取 Key 与 IV 代码与相应日志
发送系统信息:从远控服务器获取到动态 Key 和 IV 之后,开始发送用户名、电脑名、系统架构、处理器名、显卡名、MAC 地址、内存地址、卷序列号,以及 BIOS 信息等数据。 获取信息代码与日志
等待服务器指令:随后,开始等待服务器下发指令。当接收到指令时,会先检查消息中的 id 是否为 1;若是,则将 message 插入到 try-catch 结构中。之后,对 message 进行调用,最后将结果加密后回传至远控服务器。但在分析过程中并未获取到服务器后续下发的指令内容。 服务器指令接收执行并发送结果
3.溯源分析 在对该病毒进行溯源时发现,其中一个远控服务器(104.219.234.251)是该病毒的生成平台。此平台利用 Next.js 语言制作,具备多种 API,如 getBotsList(获取受害者用户列表)、sendCommand(发送指令)、sendBulkCommand(发送群体指令)等。推测认为,其中的 sendCommand 和 sendBulkCommand 很有可能是分析过程中未能获取到的服务器后续指令发送 API。 发送指令
此外,该平台还具备编译功能,但此功能需要授权才能使用。通过该功能可以编译出 MSI 版与 PowerShell 版的病毒,猜测其中的 MSI 编译选项即可编译出此次分析的 MSI 安装包样本。 MSI 编译生成
二、附录 C&C:
HASH:
|