turntuptechnologies-ai/kumogakure

GitHub: turntuptechnologies-ai/kumogakure

一个部署在 Cloudflare Workers 上的无服务器低交互式 Web 蜜罐,专门用于诱捕和记录常见网络攻击探测。

Stars: 0 | Forks: 0

# kumogakure 一个面向 Cloudflare Workers 的无服务器低交互式 Web 蜜罐。 ## 功能介绍 - 在攻击者和漏洞扫描器常探测的路径上提供伪装响应,包括 WordPress 管理员页面、`.env` 文件、Spring Actuator、云元数据端点等。 - 将每个请求记录到 Cloudflare D1,完整请求头和请求体在包含有效载荷时会被离线存储至 R2。 - 标记携带已知漏洞特征的请求(如 Log4Shell、Spring4Shell、SQL注入、XSS、路径遍历、SSTI、SSRF 等)。 - 完全运行在 Cloudflare 免费套餐内。 ## 技术栈 - 基于 Cloudflare Workers 的 TypeScript - 使用 [Hono](https://hono.dev) 进行路由 - Cloudflare D1 存储请求元数据 - Cloudflare R2 存储完整有效载荷档案 - Cron 触发器用于每日数据保留策略执行 ## 快速开始 ``` pnpm install wrangler d1 create kumogakure # capture the database_id, paste into wrangler.jsonc wrangler d1 migrations apply kumogakure wrangler deploy ``` 部署完成后,可通过 `kumogakure..workers.dev` 访问 Worker。 发送一些探测请求,然后检查 `requests` 表。 如需包含 R2 存储桶创建、`curl` 验证和故障排查的完整分步指南,请参阅 [`docs/DEPLOY.md`](docs/DEPLOY.md)。 ## 配置说明 `wrangler.jsonc` 中暴露的配置项: - `BODY_R2_THRESHOLD`(默认 `8192`)— 当请求体大小(字节)超过此值时,请求头与请求体打包存入 R2。 - `BODY_READ_LIMIT`(默认 `65536`)— 截断前从请求体读取的最大字节数。超过此大小的请求体将按此限制存储,并在 D1 中标记 `body_truncated = 1`。 - `RETENTION_DAYS`(默认 `30`)— 捕获的请求在每日 Cron 删除前的保留天数。 - `GC_BATCH_SIZE`(默认 `1000`)— 数据保留扫描的分页大小。D1 行按此批次大小扫描,每批次发出一个 R2 删除数组调用。 ## 项目结构 ``` src/ ├── index.ts Worker entry, Hono routing ├── bait/ │ ├── catalog.ts Explicit bait paths │ ├── patterns.ts Regex bait patterns │ └── templates/ Response body modules ├── signals/ Exploit signature detection ├── storage/ D1 and R2 adapters ├── fingerprint/ Anti-fingerprinting headers └── gc/ Cron-triggered cleanup docs/ Deployment and policy documentation migrations/ D1 schema migrations tests/ Vitest unit and integration tests worker-configuration.d.ts Generated runtime types (committed; regenerate with `pnpm types`) ``` ## 文档 - [`docs/DEPLOY.md`](docs/DEPLOY.md) — 从全新克隆开始的完整部署指南,包括资源调配、架构迁移、验证和故障排查。 - [`docs/RESPONSE_TEMPLATE_POLICY.md`](docs/RESPONSE_TEMPLATE_POLICY.md) — 所有响应模板必须遵循的规则(虚拟数据原则、真实性分级、金丝雀标记策略)。贡献新模板前必读。 ## 开发指南 执行 `pnpm install` 后,可使用以下脚本: | 命令 | 功能说明 | |---|---| | `pnpm dev` | 使用 `wrangler dev` 本地运行 Worker | | `pnpm types` | 根据 `wrangler.jsonc` 重新生成 `worker-configuration.d.ts`(绑定或变量变更后运行) | | `pnpm typecheck` | 使用 `tsc --noEmit` 对项目进行类型检查 | | `pnpm lint` | 通过 Biome 进行代码检查和格式化 | | `pnpm format` | 应用 Biome 格式化 | | `pnpm test` | 运行一次 Vitest 测试套件 | | `pnpm test:watch` | 以监视模式运行 Vitest | | `pnpm migrations:apply` | 对远程数据库应用 D1 迁移 | | `pnpm run reset:data` | 清除所有捕获数据(R2 对象 + D1 行)。默认清除本地数据;添加 `-- --remote` 可清除部署数据。详见 [`docs/DEPLOY.md`](docs/DEPLOY.md) | ### 添加新的诱饵路径 1. 确定适用的类别(或在 `src/types.ts` 中引入新类别)。 2. 将路径添加到 `src/bait/catalog.ts`(或正则表达式添加到 `src/bait/patterns.ts`),并指定模板名称。 3. 在 `src/bait/templates/.ts` 下创建模板模块,导出 `TemplateFn`。遵循 [`docs/RESPONSE_TEMPLATE_POLICY.md`](docs/RESPONSE_TEMPLATE_POLICY.md)。 4. 在 `src/bait/templates/index.ts` 中注册该模板。 5. 在 `tests/unit/templates/.test.ts` 下添加单元测试。 6. 使用 `pnpm typecheck`、`pnpm lint` 和 `pnpm test` 进行验证。 ## 许可证 MIT 许可证 — 详见 [LICENSE](LICENSE)。
标签:AMSI绕过, Cloudflare D1, Cloudflare R2, Cron Triggers, ETW劫持, Hono, OISF, TLS, TypeScript, Web安全, Web漏洞扫描, 云蜜罐, 低交互蜜罐, 免费层, 威胁检测, 安全插件, 攻击模拟, 无服务器, 日志管理, 日志记录, 漏洞分析, 漏洞签名, 程序员工具, 网络安全, 自动化攻击, 蓝队分析, 蜜罐, 证书利用, 请求日志, 负载存档, 路径探测, 防御工具, 隐私保护, 驱动签名利用