exiouss:捆绑在npm包中的Cookie窃取器伪装成考试作弊工具

目录

概述

[email protected] 于 2026-05-01 通过 loltestpad 账户发布至 npm,该账户同期还发布了 ixpresso-core(完整 Windows 远程访问木马)、godsplaneyevox(均为 4 月发布的工具),npm 在 48 小时内将这三个包移除。exioussgodsplan 的重建版本,使用新名称发布,但描述和内部项目名称保持不变。它新增了一个 4 月版本所没有的功能:bin/chrome_cookies.ps1,一个完整的 PowerShell 脚本,用于解密并窃取 Chrome、Edge 和 Brave 中 openai.comchatgpt.com 的会话 Cookie。该脚本尚未接入主流程,但已存在且可正常运行。

影响范围:​

  • 该包捆绑了完整的 ChatGPT 和 OpenAI 会话 Cookie 窃取工具,针对 Chrome、Edge 和 Brave,通过 Windows DPAPI 和 AES-256-GCM 解密实现
  • 攻击者针对的是安装此工具来作弊监考考试的学生群体,这部分用户很可能持有有效的 ChatGPT Plus 订阅
  • loltestpad 账户在两次活动中共发布四个包,从 Windows RAT 迭代到带有休眠凭证窃取功能的作弊工具

妥协指标(IoC):​

指标
包名[email protected]
npm 维护者loltestpad
维护者邮箱[email protected]
隐蔽进程SearchApp.exe
持久化路径%LOCALAPPDATA%\Microsoft\Windows\Diagnostics\
启动日志%LOCALAPPDATA%\Microsoft\Windows\Diagnostics\boot.log
终止开关文件%LOCALAPPDATA%\Microsoft\Windows\Diagnostics\.kill_watchdog
uia_extract.exe SHA256e2fda5aa8397799669f29258f69e803cf05d322c1d93269eef6754ca024c3865
uia_extract.exe VirusTotal4/71 — Bkav、CrowdStrike、SecureAge、SentinelOne(均为基于机器学习)
Groq API 密钥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(另有 3 个在 config.json 中)

loltestpad 活动

loltestpad 账户于 2026-04-14 出现,使用 opemails.com(一个一次性邮箱服务)的临时邮箱。48 小时内,它发布了三个包:

包名发布时间实际功能伪装描述
ixpresso-core2026-04-14Windows RAT(Veltrix)"Personal AI System Agent — Control your device via WhatsApp"
godsplan2026-04-14AI 考试作弊工具"High-performance DOM utility and diagnostic bridge"
eyevox2026-04-15轻量级考试作弊变体"Professional Stealth AI Assistant with Multi-Snapshot Reasoning"

npm 在 48 小时内删除了全部三个包。SafeDep 对 ixpresso-core 的分析另有专题——它部署了完整的 Windows RAT,包含浏览器凭证收集、Discord Token 盗窃、Telegram 会话窃取,以及通过 Cloudflare 隧道实现的远程桌面控制。

exiouss 于 2026-05-01 出现在 npm 上,距离 4 月被删除已过去 16 天。其伪装描述与 godsplan 一字不差:"High-performance DOM utility and diagnostic bridge for modern web applications." main.js 将项目命名为 Project Phantom-Batch,与 4 月版本完全相同。内部版本号跳至 v12.0,表明在删除后仍继续开发。

bash
$ curl -s "https://registry.npmjs.org/exiouss" | jq '{maintainers, versions: (.versions | keys)}' { "maintainers": [{ "name": "loltestpad", "email": "[email protected]" }], "versions": ["1.0.4"] }

在注册表的 time 对象中,还可以看到更早的六个版本(1.0.0 到 1.0.10)。这六个版本在本次分析前均已被移除,仅留下 1.0.4 处于活跃状态。

两次活动遵循相同的模式:临时账户、一次性邮箱、伪造的开发者工具描述、Windows 专用有效载荷、以 npm 作为分发渠道。攻击者将 npm 作为托管和信用背书层,而非投毒载体。"直接 npm install" 比 Discord 下载链接看起来合法得多。

捆绑的凭证窃取工具

bin/chrome_cookies.ps1 是本版本新增的功能。4 月的包中并未包含此功能。

该脚本实现了 Chrome DPAPI + AES-256-GCM Cookie 解密。它从各浏览器的 Local State 文件中读取加密的主密钥,使用 ProtectedData.Unprotect 对其进行解密,然后遍历 Chrome、Edge 和 Brave 中 openai.comchatgpt.comauth.openai.comauth0.openai.com 的 Cookie,覆盖多个浏览器配置文件。

powershell
$Domains = @(".openai.com", ".chatgpt.com", "chatgpt.com", "openai.com", "chat.openai.com", "auth0.openai.com", "auth.openai.com") ... $encKeyBytes = $encKeyBytes[5..($encKeyBytes.Length - 1)] $decryptedKey = [Security.Cryptography.ProtectedData]::Unprotect( $encKeyBytes, $null, [Security.Cryptography.DataProtectionScope]::CurrentUser )

main.js 暂未调用此脚本。它打包在 tarball 中供攻击者单独运行,或在后续版本中接入。有效的 auth.openai.com 会话 Cookie 可在无需密码的情况下获得完整的 ChatGPT 账户访问权限——攻击者可以更改邮箱、将原所有者锁在门外,并继承其订阅。

受害者群体使这一切变得有利可图。运行 Windows 考试作弊工具的学生拥有 ChatGPT 账户,其中许多还持有用于学业的高级订阅。考试作弊工具帮助攻击者进入这些机器,而 Cookie 窃取工具则将这种访问转化为实际收益。

学生如何被感染

运行 exiouss 时会部署一个持久的 Electron 覆盖层:一个透明的始终置顶窗口,通过 WDA_EXCLUDEFROMCAPTURE 对监考截图保持不可见,并从 Alt-Tab 和任务栏中隐藏。学生使用 Windows UI Automation 文本提取或 GDI 截图来捕获考试题目,通过 config.json 中的四个硬编码 API 密钥将其发送至 Groq 的 LLM API,然后将答案渲染到覆盖层中。该包通过检测 Safe Exam Browser 的隔离安全桌面并通过 CreateProcessW 在其上生成子 Electron 进程来绕过它。

VirusTotal 对 uia_extract.exe 的分析,显示 4/71 检测率,均为基于机器学习,无特定恶意软件家族名称

uia_extract.exe 二进制文件在 VirusTotal 上的检测率为 4/71,均为机器学习检测。Windows Defender 显示为干净。大多数考试机器运行的杀毒软件无法检测到它。这个作弊工具足够好用,能够在学生群体中传播,这使得凭证窃取工具被部署到越来越多的机器上,而无需额外的分发成本。

结论

loltestpad 攻击者在 4 月被删除后 16 天重新出现,使用相同的账户、相同的描述和相同的代码库。新增的是 chrome_cookies.ps1:一个 ChatGPT 会话窃取工具,已存在且可正常运行,但尚未激活。

威胁模型是社会工程学,而非被污染的 lockfile。学生自愿安装此工具。Cookie 窃取工具处于休眠状态,直到攻击者激活它——无论是接入未来版本,还是通过在终端关闭后仍保持驻留的看门狗进程触发。

任何运行过 exiouss 的系统都应被视为可能已被入侵。检查 %LOCALAPPDATA%\Microsoft\Windows\Diagnostics\ 中的 SearchApp.exeboot.log。轮换存储在 Chrome、Edge 和 Brave 中的凭证。撤销存储在浏览器中的任何 OpenAI API 密钥。

使用 vet 对 lockfile 进行扫描,以在安装前标记来自最近创建账户的包。


相关阅读:​

SafeDep 博客最新动态

关注我们,获取开源安全与工程的最新更新和洞察