针对被植入后门的 Claude Code 2.1.313 扩展(Cursor 市场,2026 年 10 月)的只读扫描器:SSH 密钥、持久化、反向隧道。支持 macOS + Linux。
针对被植入木马的 [email protected] 扩展的只读扫描器和检测规则。
[!WARNING] Cursor 市场于 2026-10-29, 09:27–20:35 UTC 提供了并非由 Anthropic 发布的构建版本。它会植入 SSH 密钥和持久化机制,然后向
134.209.82[.]225打开反向隧道。 升级到 2.1.314 只会移除该扩展,而不会清除它植入的内容。
由 HappyHackingSpace 开发的独立社区工具。与 Anthropic 或 Cursor 无关联。
目录: 快速开始 · 检查内容 · 检测规则 · 如果发现命中 · 阻断 C2 · IOC · 参考资料
git clone https://github.com/happyhackingspace/claude-code-backdoor-check.git
cd claude-code-backdoor-check
bash check.sh # fast scan
bash check.sh --deep # + sshd log analysis (slower on macOS)
0 干净 · 1 发现指标 · 2 用法错误。| 输出 | 退出码 | 含义 |
|---|---|---|
✖ COMPROMISED | 1 | 发现活跃的恶意产物:密钥、投放的文件、持久化、隧道、C2 主机密钥,或恶意构建版本 |
! EXPOSED | 1 | 2.1.313 曾在某个时间点被安装,但未发现任何活跃的恶意产物 |
✔ CLEAN | 0 | 无指标 |
| # | 领域 | 查找内容 |
|---|---|---|
| 1 | 扩展 | Cursor / VS Code / Windsurf / VSCodium 目录中的 2.1.313、恶意 extension.js 哈希、加载器字符串 |
| 2 | 安装历史 | extensions.json、.obsolete、VSIX 缓存、编辑器日志中的 2.1.313 |
| 3 | SSH 密钥 | authorized_keys 中的 svc-telemetry 密钥 |
| 4 | 投放的文件 | ~/.config/.smt、.smtk、.stk_* 临时文件 |
| 5 | 持久化 | macOS:LaunchAgents/Daemons · Linux:cron、systemd、autostart · 两者:shell rc 文件 |
| 6 | 进程 | 反向隧道(ssh -R *:0:localhost:22 tunnel@…)和 .smt 运行器 |
| 7 | 网络 | 活跃的 C2 连接;known_hosts 中的 C2 |
| 8 | SSH 服务器 | :22 监听器;使用 --deep 时,检查通过攻击者密钥或 127.0.0.1 的 sshd 登录 |
| 9 | 暴露情况 | 需要轮换的凭据环境变量名称和凭据文件(从不读取值) |
[!NOTE]
com.apple.sysmond也是真实的 Apple 系统守护进程。只有用户域(~/Library/LaunchAgents)中的副本是恶意的。
适用于 EDR/SIEM 流水线和全舰队狩猎。与本文档其余部分不同,规则文件中的 C2 未做去毒处理,因为它们必须与之匹配。
rules/sigma/)| 规则 | 日志来源 | 级别 |
|---|---|---|
| 到 C2 的反向 SSH 隧道 | process_creation | critical |
| 到 C2 的连接 | network_connection | critical |
| 投放的隧道脚本 / 密钥 | file_event | high |
伪造的 com.apple.sysmond LaunchAgent | file_event · macOS | high |
| 从编辑器进程树启用远程登录 | process_creation · macOS | high |
@reboot cron / .smt 执行 | process_creation · Linux | high |
从编辑器执行 SysMon 计划任务 / 安装 OpenSSH | process_creation · Windows | high |
pip install sigma-cli
sigma plugin install splunk # or elasticsearch, microsoft365defender, …
sigma convert -t splunk --without-pipeline rules/sigma/
rules/yara/claude_code_backdoor.yar)| 规则 | 匹配内容 |
|---|---|
HHS_ClaudeCode_Backdoor_Loader | 被植入木马的 extension.js(哈希或加载器字符串) |
HHS_ClaudeCode_Backdoor_TunnelScript | 释放的 .smt / smt.cmd |
HHS_ClaudeCode_Backdoor_Persistence | 指向该脚本的 LaunchAgent、@reboot cron、SysMon 任务 |
HHS_ClaudeCode_Backdoor_AuthorizedKey | 包含 svc-telemetry 密钥的 authorized_keys |
yara -r -s rules/yara/claude_code_backdoor.yar \
~/.cursor/extensions ~/.vscode/extensions ~/.config ~/.ssh ~/Library/LaunchAgents
[!TIP] Sigma 规则还覆盖了 Windows(计划任务、OpenSSH 安装),而
check.sh并不覆盖这些内容。
[!CAUTION] 该持久化机制大约每 60 秒重新打开一次隧道。先遏制,再清理。Cursor 也提供了官方修复脚本:参见其安全公告。
1. 遏制。 将机器离线,或阻断 C2。
2. 在删除任何内容之前保留证据:
mkdir -p ~/ioc-evidence && cd ~/ioc-evidence
bash /path/to/check.sh --deep --no-color > scan.txt
cp -p ~/.ssh/authorized_keys ~/.ssh/known_hosts ~/.config/.smt ~/.config/.smtk . 2>/dev/null
[!IMPORTANT]
.smtk是攻击者的私有隧道密钥。请将证据文件夹保密。
3. 清理。 移除持久化、终止隧道、删除相关产物:
C2="$(echo '134.209.82[.]225' | tr -d '[]')"
launchctl bootout gui/$(id -u)/com.apple.sysmond
rm -f ~/Library/LaunchAgents/com.apple.sysmond.plist
pkill -f "tunnel@$C2"; pkill -f 'autossh -M 0'; pkill -f '\.config/\.smt'
sed -i.bak '/svc-telemetry/d' ~/.ssh/authorized_keys
ssh-keygen -R "$C2"
rm -f ~/.config/.smt ~/.config/.smtk "$TMPDIR"/.stk_*
sudo systemsetup -setremotelogin off # if you don't use SSH
crontab -l | grep -vE '\.config/\.smt|tunnel@' | crontab -
# disable and remove any systemd/autostart entries check.sh reported
pkill -f "tunnel@$C2"; pkill -f 'autossh -M 0'; pkill -f '\.config/\.smt'
sed -i.bak '/svc-telemetry/d' ~/.ssh/authorized_keys
ssh-keygen -R "$C2"
rm -f ~/.config/.smt ~/.config/.smtk /tmp/.stk_* /var/tmp/.stk_*
sudo systemctl disable --now ssh # if you don't use SSH
4. 替换扩展。 移除 anthropic.claude-code-2.1.313* 并安装 ≥ 2.1.314。
5. 验证。 bash check.sh --deep 应退出 0。
6. 轮换凭据,从另一台干净的机器上操作:SSH 密钥、git 令牌、云和 API 密钥、注册表令牌。从 [9/9] 下列出的内容开始。
7. 重建机器,如果 C2 出现在 known_hosts 中,或 sshd 接受了攻击者的密钥。
使用 --deep 运行。至少轮换 [9/9] 下列出的机密,因为它们的名称已被信标外传。保持 C2 被封锁。
植入物直接连接 IP,因此 DNS 过滤器(NextDNS、Pi-hole)永远看不到它。在防火墙层面封锁它:
| 工具 | 命令 |
|---|---|
| LuLu | 规则 → 添加规则 → 进程 *,地址 134.209.82[.]225(不含方括号),端口 *,阻止 |
| pf | echo "block drop out quick to $C2" | sudo tee -a /etc/pf.conf && sudo pfctl -f /etc/pf.conf -e |
| iptables | sudo iptables -I OUTPUT -d "$C2" -j DROP(在 Docker 主机上还需 DOCKER-USER) |
| nftables | sudo nft add rule inet filter output ip daddr "$C2" drop |
| 类型 | 值 |
|---|---|
| 包 | [email protected](darwin-arm64、win32-x64) |
| C2 | 134.209.82[.]225:tcp/22 反向 SSH,tcp/8099 hxxp://…/beacon |
| SSH 密钥 | 注释 svc-telemetry |
| 密钥指纹 | SHA256:0Z6R+DF64Do2nwQic8a7kkfDLNNk4IiK+2U2Rci4htk |
extension.js SHA-256 | ecb58cb29078d9646ad1dcdbe51526f2d9cfea06be5fb2ab183e8ecc3ab6bf15 |
| 文件 | ~/.config/.smt、~/.config/.smtk、$TMPDIR/.stk_<hex> |
| 持久化 · macOS | ~/Library/LaunchAgents/com.apple.sysmond.plist |
| 持久化 · Linux | @reboot crontab 条目 |
| 持久化 · Windows | 计划任务 SysMon、启动项 sysmon.cmd、%USERPROFILE%\.config\smt.cmd |
| 进程 | ssh -N -R '*:0:localhost:22' tunnel@…、autossh -M 0 |
| 侦察服务 | api.ipify[.]org、ifconfig[.]me |
check.sh 不支持 Windows。请使用 Sigma 规则或 Cursor 的 remediate-windows.ps1。known_hosts 为空并不能证明隧道从未连接过。© 2026 HappyHackingSpace