开发者遭针对性钓鱼:恶意npm包GhostLoader潜伏开源生态,SSH密钥与浏览器会话成重灾区
开源软件供应链再次拉响红色警报。JFrog安全研究团队近期披露了一起针对开发者群体的高精度攻击事件——攻击者将恶意代码封装进名为 @openclaw-ai/openclawai 的npm包,对外伪装成合法的OpenClaw CLI安装工具。该威胁内部代号为 GhostLoader,本质上是一套功能完整的信息窃取器叠加远程控制木马(RAT)的复合体,能够在开发者毫无察觉的情况下完成凭证收割、数据外发与长期后门驻留。

一、低可见度伪装:为什么常规审计很难发现它
这个恶意npm包在静态审查阶段几乎不会触发任何告警。它的 package.json 文件结构整洁,src/index.js 出口文件看起来完全正常,且没有引入任何可疑的额外依赖。对于习惯快速扫一眼依赖列表就继续开发的工程师来说,这包"长得"太安全了。
真正的杀招藏在 scripts 目录里。postinstall 钩子会在安装阶段静默执行全局安装,把 openclaw 命令写进系统 PATH。当开发者后续在终端输入 openclaw 时,触发的并不是正常的 CLI 工具,而是经过高强度混淆的 scripts/setup.js——第一阶段加载器。
更狡猾的是,运行后屏幕上会弹出一个带进度条、日志动画的"安装界面",仿真度极高。开发者以为自己在等待正常的软件初始化,实际上混淆代码正在后台外联 C2 服务器 trackpipe.dev,准备下载下一阶段载荷。
二、社会工程学升级:伪造系统弹窗骗取root密码
在载荷投递之前,GhostLoader 会先玩一把心理战。它会弹出仿苹果钥匙串(Keychain)风格的系统提示框,声称需要"安全存储凭证"并要求输入系统密码。更离谱的是,这个弹窗调用了操作系统真实的认证接口做校验——macOS、Windows、Linux 全平台通吃。受害者输入密码后,程序不仅拿到了明文口令,还借"正常认证行为"的假象消解了用户的戒备心。
拿到密码的同时,setup.js 开始解码内置的 XOR 加密 URL 与活动 ID,向 hxxps://trackpipe[.]dev 发起请求,拉取一段经 AES-256-GCM 加密的第二阶段载荷。解密后的 JavaScript 被写入 /tmp/sys-opt-*.js 这类临时文件,在独立 Node 进程中执行,并通过环境变量传递刚刚窃取的密码与活动标签:
-
NODE_AUTH_TOKEN -
NODE_CHANNEL=complexarchaeologist1
大约一分钟后,这个临时文件会自动销毁,极大增加了事后取证难度。
三、攻击链拆解:从一次npm install到长期后门
第二阶段载荷 GhostLoader 本体是一个长达 11700 行的 CommonJS 模块。它的首要任务是建立持久化机制,把自己伪装成"npm 遥测服务"潜伏下来:
表格
| 平台 | 持久化路径 |
|---|---|
| macOS / Linux | ~/.cache/.npm_telemetry/monitor.js |
| Windows | %APPDATA%/.npm_telemetry/monitor.js |
为了保活,它会向 .zshrc、.bashrc、.bash_profile 追加伪装成"NPM Telemetry Integration Service"的启动项;在 Linux 上写入 @reboot 定时任务;同时用 PID 锁保证单例运行,防止重复启动暴露行踪。
C2 通信采用 JSON 格式响应,包含 payload(Base64 加密载荷)与 k(十六进制解密密钥),解密算法仍为 AES-256-GCM。首次上线后,GhostLoader 会在 10 分钟内完成一轮高强度数据搜刮,并通过 Telegram Bot 向攻击者发送"新会话"告警,内容涵盖受害者的系统密码、主机名、IP、国家与设备配置。
四、开发者成了"高价值目标":窃取清单触目惊心
与泛用型木马不同,GhostLoader 的攻击清单明显是为开发者量身定制的。除了常规的浏览器密码、Cookie 和支付信息,它还会专门搜刮以下核心资产:
基础设施凭证
-
SSH 私钥(
~/.ssh/目录) -
AWS、Azure、GCP 云平台 Access Key
-
Kubernetes
kubeconfig -
Docker 配置与仓库凭证
-
npm、Git 账号令牌
-
GitHub CLI 主机配置
加密货币资产
-
主流钱包应用数据
-
浏览器扩展助记词(BIP-39)
-
Solana 密钥
AI 智能体与项目数据
-
ZeroClaw、PicoClaw、OpenClaw 目录下的智能体配置
-
环境变量中的 API 密钥(OpenAI、Stripe 等)
浏览器与系统深度数据
-
macOS 与 iCloud 钥匙串
-
Chromium、Firefox 存储的密码与 Cookie
-
桌面、文档、下载目录中的敏感文件
对于受苹果数据保护(Data Protection)限制的 Safari 数据,如果当前权限不足,GhostLoader 还会通过 AppleScript 诱导用户为终端授予"完全磁盘访问权限",甚至贴心地提供"打开系统设置"的按钮。一旦得手,备忘录、iMessage、邮件、Safari 历史记录乃至苹果账号数据库全部沦陷。

遇到无法直接通过 SQLite 提取的 Cookie 时,这套木马还会启动无头 Chromium,利用 Chrome DevTools Protocol(CDP)通过 --remote-debugging-port 程序化导出全部会话状态。换句话说,攻击者不需要知道你的密码,就能直接接管你已登录的账号。
所有窃取到的数据会被打包成 [国家码]用户名_持久ID.tar.gz,通过多重渠道外发:小文件走 Telegram Bot API,大文件上传 GoFile.io,核心数据同步回传 trackpipe.dev。攻击者的 Telegram 会收到一份格式化的 GhostLoader 报告,汇总密码、支付信息、自动填充条目、钱包、助记词、SSH 密钥、权限状态、持久化方式与 AI 智能体信息,一目了然。
五、不止偷数据:GhostLoader的RAT远程控制模式
完成首轮搜刮后,GhostLoader 并不会离场。后续每次启动,它会切换为持久化 RAT 模式,向 C2 面板注册上线并获取 Telegram 配置,进入长期监控状态:
-
剪贴板实时监控:每 3 秒扫描一次剪贴板,专门抓取加密货币私钥、AWS 密钥、OpenAI / Stripe API 密钥以及助记词。
-
指令轮询:约每 25 秒(带随机抖动)向 C2 请求一次指令,支持执行系统命令、更新载荷、重新采集数据、任意目录文件外发、启动/停止 SOCKS5 代理。
-
浏览器会话克隆:收到
CLONE_START指令后,复制完整浏览器配置并启动带远程调试的无头 Chromium,将 CDP WebSocket 端口转发回 C2。攻击者可以直接在浏览器里操作受害者的已登录会话,绕开所有密码验证。
为了对抗安全分析,GhostLoader 还内置了多重规避手段:独立进程运行并伪装进程名、自动清理临时载荷、外发后清空窃取目录、支持 NUKE 自毁指令一键清除启动项与定时任务。这种"用完即焚"的设计让应急响应团队很难在现场提取到完整样本。

六、企业如何防御与事后处置
JFrog 已将 @openclaw-ai/openclawai 纳入 Xray 与 Curation 的拦截名单,使用其软件供应链安全产品的企业可在安装阶段自动阻断该包。对于尚未部署此类工具的团队,建议从以下几个层面加固防线:
事前预防
-
仅通过官方渠道安装 OpenClaw 等开发工具,警惕名称相似或带额外后缀的包名。
-
在 CI/CD 流水线中集成 SCA(软件成分分析)工具,对
postinstall脚本、全局安装行为与可疑网络请求实施强制审查。 -
对请求系统密码、安装阶段下载远程加密载荷的 npm 包保持零容忍。
事后清理(如已安装)
-
检查并清理 Shell 配置文件(
.zshrc、.bashrc、.bash_profile)中名为"NPM Telemetry Integration Service"的启动项。 -
删除
~/.cache/.npm_telemetry/或%APPDATA%/.npm_telemetry/目录,终止monitor.js相关进程。 -
检查系统定时任务(
crontab -l)中标记为"Node.js Telemetry Collection"的条目并删除。 -
卸载恶意包后,强烈建议全盘重装系统。GhostLoader 的持久化机制与自毁逻辑复杂,手工清理极易遗漏。
-
轮换所有可能暴露的凭证:SSH 密钥、云平台 Access Key、Git 令牌、API 密钥、钱包助记词。
七、入侵指标(IOC)速查表
表格
| 指标类型 | 具体内容 |
|---|---|
| 恶意包名 | @openclaw-ai/openclawai |
| 包类型 | NPM |
| 涉及版本 | 1.5.15、1.5.14 |
| XRAY-ID | XRAY-949975 |
| C2 域名 | hxxps[://]trackpipe[.]dev |
| 引导路径 | /t/bootstrap?t=fafc0e77-9c1b-4fe1-bf7e-d24d2570e50e |
| 活动 ID | complexarchaeologist1 |
| 安装目录 | ~/.cache/.npm_telemetry/ |
| 执行文件 | monitor.js |
| 临时文件 | /tmp/sys-opt-*.js |
| Shell 注释 | # NPM Telemetry Integration Service |
| Cron 注释 | # Node.js Telemetry Collection |
| 加密算法 | AES-256-GCM(16 字节 IV + 16 字节 Tag) |
| IP 查询接口 | hxxps[://]ipinfo[.]io/json |
| 备用上传 | GoFile.io API |
| 数据外发通道 | Telegram Bot API、C2 面板 |
| 环境变量 | NODE_AUTH_TOKEN、NODE_CHANNEL、NPM_CONFIG_TAG、GHOST_RECOLLECT、GHOST_TG_CONFIG |

这起事件再次印证了一个残酷现实:攻击者正在把开源包管理器当成精准狙击开发者的武器平台。GhostLoader 之所以危险,不仅在于技术层面的混淆与加密,更在于它深度利用了开发者对工具链的天然信任。一次看似平常的 npm install,背后可能是一次完整的内网渗透起点。对于手握核心基础设施凭证的工程师来说,保持对供应链安全的警觉,早已不是可选项,而是必修课。
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐



所有评论(0)