Potat0-0/marauders-map

GitHub: Potat0-0/marauders-map

针对 Void Dokkaebi 供应链攻击的检测工具集,提供 Git 取证、代码扫描、依赖检查和 IOC 匹配能力,帮助开发者发现隐藏在 JS 配置文件中的区块链 C2 恶意代码。

Stars: 0 | Forks: 0

# Void Dokkaebi — 检测工具与 IOC 仓库 用于检测 **Void Dokkaebi** 活动(也被称为 *Contagious Interview* / *Famous Chollima*)的检测工具、入侵指标 (IOC) 和分析笔记 ——这是一起归因于 DPRK 的供应链攻击,通过虚假的求职面试针对 JavaScript 开发者,将恶意代码隐藏在 `tailwind.config.js`、`routes/user.js` 等类似文件中,并使用 **TRON 区块链 (TronGrid API) 作为 C2**。 ## 本仓库包含的内容 | 路径 | 内容 | |---|---| | `/iocs/` | 钱包地址、文件哈希、代码字符串、API endpoint | | `/scripts/` | 用于本地和远程扫描的 Bash + Python 检测脚本 | | `/rules/yara/` | [待办] 用于 TronGrid C2 模式检测的 YARA 规则 | | `/rules/semgrep/` | [待办] 用于 CI pipeline 集成的 Semgrep 规则 | | `/notes/` | 分析笔记、时间线、感染方法 | ## 快速开始 或者使用完整的扫描器: ``` git clone https://github.com/Potat0-0/marauders-map cd marauders-map chmod +x scripts/scan.sh ./scripts/scan.sh /path/to/your/project ``` ## 脚本 本仓库包含多个检测脚本,每个脚本针对 Void Dokkaebi 活动的不同方面。所有脚本都位于 `/scripts/` 目录中。 ### 前置条件 所有脚本都需要 `git` 和 `bash`(版本 3+)。大多数兼容 macOS、Linux 和 Windows (Git Bash)。 对于基于 JavaScript 的扫描 (`scanner.js`),需要 Node.js 14+。 ### 可用脚本 #### 1. **`git_tz_forensics.sh`** — Git 历史取证 分析你的 git 仓库,寻找表明存在恶意活动的历史篡改和提交异常迹象。 **检测内容:** - Author/Committer 时区不匹配(在外部环境中重写历史的迹象) - 与仓库基准相比异常的 Committer 时区 - 显示强制重写的 Reflog 条目(amend、rebase、force-push、filter-branch、reset、cherry-pick) - 双胞胎提交(相同的提交信息 + Author 日期,不同的哈希值 = 重写的提交) - 时间顺序违规(Author 日期在 Committer 日期之后) **用法:** ``` ./scripts/git_tz_forensics.sh [repo_path] ./scripts/git_tz_forensics.sh # uses current directory ./scripts/git_tz_forensics.sh /home/dev/myproject ``` **示例输出:** ``` Repository: /home/dev/myproject Analysis : 2026-06-10 14:32:10 UTC SECTION 1 · Baseline Timezone Detection Committer timezone distribution: 150 commits +00:00 ████████████████████████████ 42 commits -05:00 ████████ 15 commits +08:00 ███ Baseline (dominant) committer timezone: +00:00 SECTION 2 · Author / Committer Timezone Mismatch ⚑ abc123def "Add malicious config" Author date : 2026-06-01T10:00:00+00:00 (myname) Committer date : 2026-06-01T10:00:00-05:00 (myname) Timezone shift: author=+00:00 committer=-05:00 ⚑ 3 anomalies detected across all checks. ``` **退出代码:** - `0` — 未发现异常 - `1` — 检测到异常(立即审查) - `2` — 错误(不是 git 仓库或路径无效) #### 2. **`polinrider-checker.sh`** — Node Modules 扫描器 扫描你的 `node_modules/` 目录,查找供应链攻击中常见的可疑模式。 **检查内容:** - `eval()` + Base64 解码模式 - package.json 中可疑的 `postinstall` 脚本 - 混淆的长字符串(Base64 编码的 payload) - 外部网络调用 (HTTP/HTTPS, fetch, axios) - 带有可疑 Unicode/不可见字符的文件 - 最近修改过的文件(过去 7 天内) **用法:** ``` ./scripts/polinrider-checker.sh # 必须在包含 node_modules/ 的目录中运行 # 示例: cd ~/myproject && ../../scripts/polinrider-checker.sh ``` **示例输出:** ``` 🔍 Scanning node_modules for suspicious patterns... ---------------------------------------- 1. Searching for eval + base64 patterns... node_modules/tailwind-plugin-evil/index.js:42:eval(Buffer.from('...',base64')) 2. Searching for suspicious postinstall scripts... node_modules/tailwind/package.json: "postinstall": "node scripts/compile.js" 3. Searching for obfuscated long strings... node_modules/plugin-xyz/lib.js:123:const X='SGVsbG8gV29ybGQgSXMgQWxhcm0gVG8gRGFya25lc3M='; ... ✅ Scan complete. Review findings carefully. ``` #### 3. **`scanner.js`** — JavaScript 代码启发式扫描器 使用启发式评分分析 JavaScript/TypeScript 文件,以查找混淆和代码注入模式。 **检测内容:** - 字符编码技巧(`String.fromCharCode`, `charCodeAt` 等) - 动态代码执行 (`eval()`, `Function()`, `.constructor()`) - 类 Base64 的长字符串(潜在的编码 payload) - Hex/Unicode 转义序列 - 极长的可疑行(>300 字符) **评分系统:** - 每个可疑模式都会加分;得分 ≥4 的行将被报告 - 高权重模式(eval、Function):+4 分 - 编码模式(charCodeAt、fromCharCode):+2–3 分 - 长行:+2 分 **用法:** ``` node ./scripts/scanner.js [root_path] node ./scripts/scanner.js # scans current directory node ./scripts/scanner.js /home/dev/myproject ``` **示例输出:** ``` src/index.js:15 [score=5] -> String.fromCharCode, long_line src/config/evil.mjs:42 [score=6] -> eval, Function, charCodeAt routes/user.js:89 [score=4] -> atob ``` **跳过的目录:** `node_modules`, `.git`, `dist`, `build`, `coverage` #### 4. **`void-vscode-tasks-scanner.sh`** — VS Code Tasks 定位器 在你的计算机上搜索 `.vscode/tasks.json` 文件,这些文件可能包含被智能体编码工具执行的恶意任务定义。 **为什么这很重要:** 此活动专门针对自动执行 VS Code 任务的智能体编码工具(VS Code Copilot、Cursor、Claude Code)。`.vscode/tasks.json` 中的恶意任务可以在 AI 辅助编码会话期间运行任意命令。 **用法:** ``` ./scripts/void-vscode-tasks-scanner.sh [directory1] [directory2] ... ./scripts/void-vscode-tasks-scanner.sh # search current directory ./scripts/void-vscode-tasks-scanner.sh ~/projects # search single directory ./scripts/void-vscode-tasks-scanner.sh ~/projects ~/work /srv # search multiple roots ``` **示例输出:** ``` Searching for .vscode/tasks.json … ════════════════════════════════════════════════ Root: /home/user/projects ✔ project-a/.vscode/tasks.json → /home/user/projects/project-a/.vscode/tasks.json ✔ project-b/.vscode/tasks.json → /home/user/projects/project-b/.vscode/tasks.json ════════════════════════════════════════════════ Found 2 file(s): /home/user/projects/project-a/.vscode/tasks.json /home/user/projects/project-b/.vscode/tasks.json ``` **在找到 tasks.json 文件后:** - 检查内容中是否有可疑的 `"command"` 字段 - 查找网络调用、凭证窃取或 git 历史篡改行为 - 检查 `"runOptions"` —— 如果是 `"runWhen": "folderOpen"` 或类似内容,该任务将自动执行 ## 推荐的扫描工作流 1. **从 git 取证开始:** ./scripts/git_tz_forensics.sh ~/myproject 如果发现异常 → 可能已感染;继续执行步骤 2。 2. **检查可疑的 agent 任务:** ./scripts/void-vscode-tasks-scanner.sh ~/myproject # 检查找到的任何 .vscode/tasks.json 文件 3. **扫描 JavaScript 以查找混淆:** cd ~/myproject node ../../marauders-map/scripts/scanner.js . 4. **如果你有 node_modules,请检查恶意包:** cd ~/myproject ../../marauders-map/scripts/polinrider-checker.sh 5. **审查 IOC:** - 检查此仓库中的 `/iocs/` 以获取已知的钱包地址、文件哈希和代码签名 - 将发现的结果与已知指标进行对比 ## IOC 摘要 完整列表在 `/iocs/` 中。重点: - **C2 通道:** `api.trongrid.io` (TRON 区块链) - **备用 C2:** Aptos 区块链 API - **感染标记:** `global['!']`, `global['_V']` - **目标文件:** `tailwind.config.js`, `routes/user.js`, `postcss.config.mjs`, `next.config.mjs`, `eslint.config.mjs` - **提交篡改工具:** `temp_auto_push.bat` (Windows);macOS 对应版本正在调查中 - **版本化持久化标记:** `C250617A`, `C250618A`, `C250619A`, `C250620A` ## 适用对象 - 想要检查自己项目的**开发者** - 将检测集成到 CI/CD pipeline 中的**安全团队** - 追踪此活动的**威胁情报研究员** - 调查疑似 Void Dokkaebi 感染的**事件响应人员** ## 背景 完整文章:[[Medium 文章链接]] 本仓库源于一次个人调查,此前我发现有恶意代码传播 到了我自己的三个 git 仓库中 —— 全都是在我的身份下提交的, 且全部发生在 VS Code Copilot agent 会话期间。Copilot agent 的参与是 Trend Micro 报告中未提及的**未记录视角**,目前仍在积极 调查中。欢迎社区提供意见。 ## 参考 - [Trend Micro:Void Dokkaebi (2026 年 4 月)](https://www.trendmicro.com/en/research/26/d/void-dokkaebi-uses-fake-job-interview-lure-to-spread-malware-via-code-repositories.html) - [Microsoft MSTIC:Contagious Interview](https://www.microsoft.com/en-us/security/blog/2026/03/11/contagious-interview-malware-delivered-through-fake-developer-job-interviews/) - [OpenSourceMalware:Neutralinojs 漏洞](https://opensourcemalware.com/blog/neutralinojs-compromise) ## 免责声明 所有工具和 IOC 的发布仅供**防御目的**。 不包含任何漏洞利用代码、payload 解密逻辑或活跃的 C2 凭证。 如果你是受影响仓库的维护者,请在采取公开行动前联系我们 —— [你的联系方式]。
标签:Bash, DNS 反向解析, IOC, IP 地址批量处理, MITM代理, Python, Semgrep, WordPress安全扫描, YARA, 云资产可视化, 威胁情报, 应用安全, 开发者工具, 数据可视化, 文档安全, 无后门, 自定义脚本, 逆向工具