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: ![]() |
本站为个人博客,博客所发布的一切破解软件、补丁、注册机和注册信息及软件的文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。
本站所有内容均来自网络,版权争议与本站无关,您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容,如有需要,请去软件官网下载正版。
访问和下载本站内容,说明您已同意上述条款。
本站为非盈利性站点,不贩卖软件,不会收取任何费用,所有内容不作为商业行为。