SHA1-HULUD 病毒硬盘递归检测器

SHA1-HULUD 病毒硬盘递归检测器

🚨 一场席卷 npm 生态的供应链攻击

2025 年 11 月,npm 生态系统遭受了一次大规模的供应链攻击 ------ SHA1-HULUD pt 2 。这次攻击影响了 288+ 个流行的 npm 包,包括:

  • PostHog 全家桶 (@posthog/*, posthog-node)
  • Zapier 包 (@zapier/*)
  • AsyncAPI 工具链 (@asyncapi/*)
  • Postman 相关包 (@postman/*)
  • ENS Domains (@ensdomains/*, ethereum-ens)
  • MCP 包 (mcp-use, @mcp-use/*)
  • 以及更多...

如果你的项目依赖了这些包,你的敏感信息可能已经泄露:GitHub tokens、AWS 凭证、NPM tokens、API keys 等等。

🛡️ 解决方案:SHA1-HULUD Scanner(递归扫描增强版)

SHA1-HULUD Scanner 是一个专门用于检测 SHA1-HULUD pt 2 攻击的 bash 扫描工具。

在原版的基础上,我添加了递归扫描功能(v2.2,https://github.com/zhaokang555/sha1-hulud-scanner,使其能够一次性扫描整个目录树中的所有 Node.js 项目,极大地提升了扫描效率和覆盖范围。

✨ 核心特性

🆕 递归扫描,一键搞定(v2.2 新增)

原版只能逐个扫描项目,现在

使用 -r 递归模式,可以一次性扫描整个目录下的所有 Node.js 项目(扫描最多 3 层深度的所有项目):

bash 复制代码
# 扫描整个用户主目录
./sha1-hulud-scanner.sh -r ~

# 扫描工作目录下的所有项目
./sha1-hulud-scanner.sh -r ~/Projects

递归模式的优势:

  • 💼 批量检查工作项目 - ~/Projects 下几十个项目一次搞定
  • 🏠 全盘安全检查 - 扫描整个用户目录,不遗漏任何项目
  • 📊 综合报告 - 自动汇总所有项目的扫描结果
  • 🛡️ 容错设计 - 某个项目扫描失败不影响其他项目

🚀 快速开始

安装

推荐:v2.2 增强版(支持递归扫描)

bash 复制代码
# 克隆增强版(包含递归扫描功能)
git clone git@github.com:zhaokang555/sha1-hulud-scanner.git
cd sha1-hulud-scanner
chmod +x sha1-hulud-scanner.sh

使用

递归扫描多个项目

bash 复制代码
# 扫描当前目录下的所有项目
./sha1-hulud-scanner.sh -r .

# 扫描指定目录
./sha1-hulud-scanner.sh -r ~/Projects

# 扫描整个用户主目录
./sha1-hulud-scanner.sh -r ~

📊 实际效果展示

递归模式汇总报告

复制代码
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
📊 SCAN SUMMARY
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Total projects scanned: 15
✅ Clean projects: 14
🚨 Compromised projects: 1
⚠️  Failed scans: 0

🚨 Compromised Projects:
  • /Users/username/work/legacy-project

🔧 技术实现

扫描原理

阶段 1-3:模式匹配

使用正则表达式在不同的文件中搜索受感染的包名:

  • package.json 中的 dependenciesdevDependencies
  • node_modules 目录结构
  • 各种锁文件格式(包括二进制的 bun.lock

阶段 4:特征检测

SHA1-HULUD 攻击的一个特征是恶意包名称中包含 "sha1",扫描器会:

  1. 提取所有包含 "sha1" 的包名
  2. 与已知的合法包列表对比
  3. 标记可疑的包

递归扫描架构

复制代码
用户调用: ./sha1-hulud-scanner.sh -r ~/Projects
    ↓
find_all_projects()  # 查找所有 package.json 文件
    ↓
validate_project()   # 验证每个项目
    ↓
scan_all_projects()  # 批量扫描循环
    ├─ scan_single_project(project1)  # 4阶段扫描
    ├─ scan_single_project(project2)  # 容错:失败不中断
    └─ scan_single_project(project3)
    ↓
print_summary()      # 综合报告
    ├─ 统计信息(总数、干净、受感染、失败)
    ├─ 受感染项目列表
    ├─ 失败项目列表
    └─ 修复建议
    ↓
exit_with_code()     # 返回正确的退出码
相关推荐
小李飞刀李寻欢2 个月前
kauditd0 病毒/挖矿程序完全清除方法初试
网络·安全·病毒·挖矿
小锋学长生活大爆炸5 个月前
【教程】Windows安全中心扫描设置排除文件
windows·安全·系统·扫描·病毒·安全中心
路星辞*6 个月前
交换机常见蠕虫病毒介绍
运维·网络·安全·病毒
饼干帅成渣9 个月前
小小小病毒(3)(~_~|)
c++·病毒
Huanzhi_Lin1 年前
记录一次电脑被入侵用来挖矿的过程(Trojan、Miner、Hack、turminoob)
电脑·安全威胁分析·病毒·木马·挖矿
易我数据恢复大师1 年前
电脑文件夹被病毒隐藏了怎么办?
电脑·病毒·文件隐藏
威迪斯特1 年前
linux系统安全:开源的反病毒工具ClamAV的安装配置使用和维护介绍
linux·运维·centos·系统安全·扫描·病毒·木马
快乐星空Maker1 年前
C++:病毒系列回归记3/3 (Doge智能系统已上线)
开发语言·c++·病毒·沙雕程序·整蛊
Java小学生丶1 年前
记一次NACOS开放公网访问导致服务器被挖矿的解决流程 [kdcflush] acosd
分布式·nacos·病毒·云服务器