社区应用 最新帖子 精华区 社区服务 会员列表 统计排行
  • 17阅读
  • 1回复

[分享]远控服务器孕育Node.js恶意脚本,依托以太坊完成远程操控

楼层直达
z3960 
级别: FLY版主
发帖
823585
飞翔币
219088
威望
215837
飞扬币
2828977
信誉值
8

[font=-apple-system, BlinkMacSystemFont, &quot]Node.js 作为一种高性能的 JavaScript 运行环境,凭借强大的功能广泛应用于服务器端开发,为开发者带来诸多便利。然而,其灵活性和跨平台特性在受到开发者青睐的同时,也逐渐吸引了攻击者注意。近期,火绒工程师协助用户排查问题时发现一款利用 Node.js 语言开发的病毒。该病毒以 MSI 安装包形式传播,运行后会释放 Node.js 环境和经过混淆的后门代码文件。随后,病毒利用 PowerShell 修改注册表实现持久化,并通过以太坊交易记录获取远控服务器地址,最终实现执行任意指令。溯源时发现,其中一个远控服务器为该病毒的生成平台,授权用户可通过该平台生成病毒。火绒安全产品可对上述木马进行拦截查杀。
查杀图
[font=-apple-system, BlinkMacSystemFont, &quot]流程图如下:
流程图
[font=-apple-system, BlinkMacSystemFont, &quot]一、样本分析1. 初始化初始化时期目的:样本在初始化时期会准备 Node.js 环境并建立持久化机制,从而使后门模块能够在受害者系统中执行并实现持久驻留。释放文件:样本以 MSI 安装包形式传播,其在执行初期释放的文件如下图所示。其中,启动器和后门模块共同组成恶意文件,其他文件均为 Node.js 代码执行所需的环境文件。
释放出的文件
[font=-apple-system, BlinkMacSystemFont, &quot]执行启动器:随后,样本利用 Powershell 执行被 Base64 编码的指令。解码后可知,该指令用于调用 node.exe 执行 wZQLORCtb9BmKli(启动器)。
Powershell 执行启动器
[font=-apple-system, BlinkMacSystemFont, &quot]Node.js 代码被混淆:该启动器代码和后续的后门模块代码均为进行了混淆处理的 Node.js 代码。通过开源项目 js-deobfuscator 对其进行去混淆,可直接观察到病毒源代码。下图为部分混淆代码与部分去混淆后的代码。
去混淆前后对比
[font=-apple-system, BlinkMacSystemFont, &quot]安装 Node.js 环境,执行后门模块并持久化:该启动器利用 aes-256-cbc 算法解密 KXcuN61nQb08R2Y(模块提取器)与 BucuAgXvBgLczkQ(模块数据),并进行模块提取。随后,通过 npm 包管理器安装 ws、pm2和ethers 等网络、进程、以太坊相关模块,从而保障后续后门模块执行所需的环境条件。最后执行 0rkSA7bBv29ljmZ.js(后门模块),并通过调用 Powershell 将其写入注册表 SoftwareMicrosoftWindowsCurrentVersionRun{随机16字节}(开机自启注册表),从而完成持久化驻留操作。
解密、执行后门模块、持久化
[font=-apple-system, BlinkMacSystemFont, &quot]2. 后门模块最终目的:从远程服务器获取到指令并执行。过滤俄罗斯语言地区:后门模块在获取服务器地址前会通过 PowerShell 获取当前系统用户界面语言,并将使用俄罗斯语言的设备过滤掉。从日志的语言为俄罗斯语推断,病毒作者可能有意避免影响俄语地区用户。
过滤俄罗斯语言地区
[font=-apple-system, BlinkMacSystemFont, &quot]获取远控服务器地址:随后,通过以太坊区块链中指定钱包(0x73625b6cdfecc81a4899d221c732e1f73e504a32)与指定智能合约(0xa1b40044ebc2794f207d45143bd82a1b86156c6b)的交易记录获取后门地址,例如 ws://104.219.234.251:3001。在该过程中,样本会先通过多个 RPC 节点获取后门地址,之后从中选取出现次数最多的地址作为当前后门地址。
获取服务器地址
[font=-apple-system, BlinkMacSystemFont, &quot]从 etherscan.io 中查询交易记录:通过以太坊区块链浏览器和数据分析平台 etherscan.io 查询到该代码中的钱包地址与智能合约的写入交易记录,从中可以看出该病毒作者会经常更新远控服务器地址。
两天前再次换了一个远控服务器地址
[font=-apple-system, BlinkMacSystemFont, &quot]获取动态 Key 与 IV:每次与服务器建立连接后,服务器都会下发新的 Key 与 IV 用于发送数据和接收服务器数据时的加密与解密。此加解密过程使用的算法仍是 aes-256-cbc。
获取 Key 与 IV 代码与相应日志
[font=-apple-system, BlinkMacSystemFont, &quot]发送系统信息:从远控服务器获取到动态 Key 和 IV 之后,开始发送用户名、电脑名、系统架构、处理器名、显卡名、MAC 地址、内存地址、卷序列号,以及 BIOS 信息等数据。
获取信息代码与日志
[font=-apple-system, BlinkMacSystemFont, &quot]等待服务器指令:随后,开始等待服务器下发指令。当接收到指令时,会先检查消息中的 id 是否为 1;若是,则将 message 插入到 try-catch 结构中。之后,对 message 进行调用,最后将结果加密后回传至远控服务器。但在分析过程中并未获取到服务器后续下发的指令内容。
服务器指令接收执行并发送结果
[font=-apple-system, BlinkMacSystemFont, &quot]3.  溯源分析在对该病毒进行溯源时发现,其中一个远控服务器(104.219.234.251)是该病毒的生成平台。此平台利用 Next.js 语言制作,具备多种 API,如 getBotsList(获取受害者用户列表)、sendCommand(发送指令)、sendBulkCommand(发送群体指令)等。推测认为,其中的 sendCommand 和 sendBulkCommand 很有可能是分析过程中未能获取到的服务器后续指令发送 API。
发送指令
[font=-apple-system, BlinkMacSystemFont, &quot]此外,该平台还具备编译功能,但此功能需要授权才能使用。通过该功能可以编译出 MSI 版与 PowerShell 版的病毒,猜测其中的 MSI 编译选项即可编译出此次分析的 MSI 安装包样本。
MSI 编译生成
[font=-apple-system, BlinkMacSystemFont, &quot]二、附录C&C:
[font=-apple-system, BlinkMacSystemFont, &quot]HASH:
本帖最近评分记录: 1 条评分 飞扬币 +50
爱我中华 飞扬币 +50 昨天 19:26 您的帖子很精彩,感谢您的付出!
关键词: 服务器
我不喜欢说话却每天说最多的话,我不喜欢笑却总笑个不停,身边的每个人都说我的生活好快乐,于是我也就认为自己真的快乐。可是为什么我会在一大群朋友中突然地就沉默,为什么在人群中看到个相似的背影就难过,看见秋天树木疯狂地掉叶子我就忘记了说话,看见天色渐晚路上暖黄色的灯火就忘记了自己原来的方向。
级别: 茶馆馆主
发帖
640900
飞翔币
223524
威望
4006
飞扬币
3250333
信誉值
0

只看该作者 1 发表于: 昨天 19:27
安全第一