Skip to content

Latest commit

 

History

1 Commit

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 

Repository files navigation

malware-scan

一个 Claude Code skill,用于扫描源代码仓库中的注入恶意代码、供应链后门、混淆加载器

本 skill 源自真实事件响应 —— 一次 EtherHiding 风格的 JS 加密货币窃取器被隐藏在 hardhat.config.ts 中(在约 200 个空格的空白填充后塞入一行 2000+ 字符的混淆代码)。完整案例见 references/incident-2026-03-25.md

能做什么

按 8 个阶段走完一次完整的恶意代码审计:

  1. Scope — 确定扫描范围(工作树 / git history / 单个 commit)
  2. Literal IoC sweep — 字面 IoC 全量 grep(CRITICAL)
  3. Structural pattern sweep — 混淆手法的结构化正则匹配(HIGH)
  4. Long-line sweep — 识别空白填充隐藏注入的长行(HIGH)
  5. Package lifecycle audit — 审查 package.jsonpreinstall/postinstall/...(MEDIUM)
  6. Git history sanity — 查找"commit message 与改动文件不符"的可疑提交(MEDIUM)
  7. CI / Docker / entrypoint audit — 审查 workflow、Dockerfile、entrypoint 脚本(MEDIUM)
  8. Report — 按 CRITICAL/HIGH/MEDIUM/INFO 分级输出结构化报告

前置条件

  • Claude Code CLI 已安装
  • 系统已安装 rg(ripgrep)、gitawkbase64(标准 Linux/macOS 环境通常已具备)

安装

方式 A — 用户级安装(推荐)

对当前用户下所有项目生效。

git clone <this-repo-url> ~/.claude/skills/malware-scan
chmod +x ~/.claude/skills/malware-scan/scripts/scan.sh

如果是从本地目录复制而来:

mkdir -p ~/.claude/skills/malware-scan
cp -a /path/to/malware-scan/. ~/.claude/skills/malware-scan/
chmod +x ~/.claude/skills/malware-scan/scripts/scan.sh

方式 B — 项目级安装

仅对某个具体项目生效(会随项目一起被 Claude Code 加载)。

mkdir -p <your-project>/.claude/skills
git clone <this-repo-url> <your-project>/.claude/skills/malware-scan
chmod +x <your-project>/.claude/skills/malware-scan/scripts/scan.sh

验证安装

打开一个新的 Claude Code 会话,在目标仓库下输入下面任意一句:

  • scan this repo for malware
  • audit for backdoors
  • 帮我检查这个仓库是否被注入了恶意代码

Claude 应当自动触发 malware-scan skill 并按 8 阶段流程开始审计。你也可以在 Claude Code 中运行 /skills(或查看 skill 列表的命令)确认 malware-scan 已出现。

使用方式

方式 1 — 交互式(推荐)

直接让 Claude Code 走完整流程,它会逐阶段汇报发现并在最后给出分级报告:

scan the current repo for injected malware and supply-chain backdoors

Claude 会在发现 CRITICAL 条目时提醒你:不要原地编辑,而是从干净 commit 回滚、并轮转所有可能泄露的凭据。

方式 2 — 一次性脚本快扫

只运行 Phase 2–5 的快速扫描(不替代完整流程):

~/.claude/skills/malware-scan/scripts/scan.sh /path/to/repo

脚本默认也会扫描被 .gitignore 隐藏的文件,并将命中内容做终端安全转义后再输出,避免恶意控制字符直接污染终端。

如果你明确只想做更窄、更快的一轮扫描,可以关闭 ignored-file 扫描:

SCAN_IGNORED=0 ~/.claude/skills/malware-scan/scripts/scan.sh /path/to/repo

输出为转义后的发现清单,需要人工或让 Claude 进一步分诊。

触发词(从 SKILL.md 摘录)

  • "audit this repo for malware / backdoors / injected code"
  • "is this commit / PR / dependency safe?"
  • "we think we were compromised — check the code"
  • "scan for obfuscated / suspicious code"
  • "review these commits from <untrusted author>"

以及在审查涉及 *.config.{ts,js,cjs,mjs}package.json lifecycle scripts、.github/workflows/*、Dockerfile、committed build output 的变更时,Claude 也会主动触发。

目录结构

malware-scan/
├── SKILL.md                         # skill 主定义(Claude Code 会自动加载)
├── README.md                        # 本文件
├── scripts/
│   └── scan.sh                      # Phase 2–5 一键扫描脚本
└── references/
    ├── iocs.md                      # 字面 IoC 列表(持续更新)
    ├── patterns.md                  # 结构化正则模式
    └── incident-2026-03-25.md       # 驱动本 skill 产生的案例研究

安全说明

  • 对可疑仓库做历史审查时,不要直接运行裸 git loggit show。请沿用 scripts/scan.sh 中相同的 hardened git -c ... 选项。
  • 不要把解码后的 payload、原始 grep 命中或 git show 输出直接打到终端。恶意控制字符可能伪造 UI 或污染剪贴板。
  • 真实事件响应请放在容器或一次性虚机里执行,不要在带生产凭据的开发机上跑。

升级

cd ~/.claude/skills/malware-scan && git pull

卸载

rm -rf ~/.claude/skills/malware-scan

更新 IoC / Pattern 库

发现新的攻击手法时,编辑 references/iocs.md(字面字符串)或 references/patterns.md(正则)并提交。skill 下次被触发时即生效,无需重启 Claude Code。

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages