h3ma209/krain-sec

GitHub: h3ma209/krain-sec

一个用 Go 构建的高仿真企业蜜罐,通过伪造 SOC 控制台、SSH shell 和 honeytoken 来引诱并捕获攻击者行为,供蓝队检测研究与威胁分析使用。

Stars: 2 | Forks: 0

krain-sec

krain-sec

Go Docker Status License

**高仿真欺骗蜜罐**,伪装成企业内部安全运营控制台 (`CORP-PROD-SRV05.internal` — Krain Threat Detection & Response)。 提供 HTTP 登录 + SOC 仪表盘、带有诱饵文件的 SSH 管理员 shell、honeytoken、WebRTC 泄露探测以及爬虫诱饵 (`robots.txt` / `sitemap.xml`)。 ## 目录 - [功能](#features) - [适用人群](#who-this-is-for) - [吸引目标](#who-it-attracts) - [快速开始](#quick-start) - [默认诱饵凭据](#default-decoy-credentials) - [Docker Compose](#docker-compose) - [配置说明](#configuration) - [测试诱饵](#try-the-bait) - [项目结构](#project-layout) - [安全须知](#safety) - [路线图](#roadmap) - [贡献指南](#contributing) - [许可证](#license) ## 功能 | 领域 | 能力 | |------|----------------| | **HTTP** (`:8080`) | 企业登录、JWT 仪表盘、WebRTC ICE 探测、telemetry API | | **SSH** (`:2222`) | 类似 OpenSSH 的 banner、伪造的交互式 shell、bash/PS 历史记录 | | **Honeytoken** | Break-glass 凭据、伪造的 AWS 密钥、SSH 密钥、runbook + `/t/{id}.gif` beacon | | **诱饵** | 极具吸引力的 `robots.txt` + 逼真的 `sitemap.xml` | | **Tarpit** | 针对贪婪抓取者的 `/logs/` gzip 炸弹 | | **技术栈** | 通过 Compose 可选的 MySQL + Grafana | ## 适用人群 | 受众 | 原因 | |----------|-----| | 蓝队 / SOC | 当扫描器或人类试探时触发的诱饵资产 | | 检测工程师 | 用于规则和 pipeline 的带标签 HTTP/SSH/canary 流量 | | 研究人员 / 学生 | 无需接触真实 IdP 即可研究欺骗与归因 | | 家庭实验室 / 紫队 | 隔离 VLAN 上的安全攻击者游乐场 | **不是**真实的 SSO 门户、SIEM 或生产环境认证栈。 ## 吸引目标 - 跟随 `robots.txt` / sitemap 的互联网扫描器 - 针对伪造控制台的撞库攻击 - 下载“break-glass” / runbook 压缩包的好奇人类 - 深入挖掘 SSH 历史记录和 canary 文件的中低水平操作者 专为**嘈杂、高流量和好奇的**对手优化——(目前)还不是完整的 APT 牢笼。 ## 快速开始 **前提条件:** [Go 1.25+](https://go.dev/dl/),可选 [Docker](https://docs.docker.com/) / [reflex](https://github.com/cespare/reflex) ``` git clone https://github.com/h3ma209/krain-sec.git cd krain-sec go mod download go run ./cmd/krain-sec ``` 开发环境热重载: ``` make krain # needs reflex; sources cmd/krain-sec/.env if present ``` | 端点 | URL | |----------|-----| | 登录 / 仪表盘 | http://127.0.0.1:8080 | | SSH | `ssh -p 2222 admin@127.0.0.1` | ## 默认诱饵凭据 这些是**故意的诱饵**。切勿在真实系统中重复使用。 | 界面 | 用户名 | 密码 | |---------|----------|----------| | HTTP | `admin` | `1234567890` | | SSH | `admin` | `secret123` | ## Docker Compose 运行带有 MySQL + Grafana 的蜜罐: ``` cp .env.example .env docker compose up -d --build ``` | 服务 | 端口 | |---------|------| | 蜜罐 HTTP | `8080` | | 蜜罐 SSH | `2222` | | Grafana | `3000` (`admin` / `admin` — 请修改此密码) | | MySQL | `3306` | ``` docker compose down ``` ## 配置说明 | 变量 | 用途 | 默认值 | |----------|---------|---------| | `HONEYTOKEN_BASE_URL` | 植入文件内 canary beacon 链接的公开基础 URL | `http://127.0.0.1:8080` | 有关 MySQL / Grafana 的设置,请参见 [`.env.example`](./.env.example)。 ## 测试诱饵 ``` curl -s http://127.0.0.1:8080/robots.txt curl -s http://127.0.0.1:8080/sitemap.xml | head curl -sI http://127.0.0.1:8080/t/ht-brk-a7f3c91e.gif # → HONEYTOKEN_HIT in logs ssh -p 2222 admin@127.0.0.1 # ls Documents # cat Documents/VPN_Breakglass_Credentials.txt ``` 需要关注的日志信号:`ssh auth attempt`、`WEBRTC_LEAK`、`HONEYTOKEN_HIT`。 ## 项目结构 ``` krain-sec/ ├── cmd/krain-sec/ # Entrypoint ├── internal/ │ ├── http_pot.go # HTTP pot, robots, sitemap, telemetry │ ├── ssh_pot.go # SSH pot │ ├── identity.go # CORP-PROD-* naming │ ├── decoy/ # Fake shell + history + virtual FS │ └── honeytoken/ # Canaries + gzip tarpit ├── html/ # Login + dashboard UI ├── deploy/ # MySQL init, Grafana provisioning ├── docker-compose.yml ├── Dockerfile └── honeypot_architecture_plan.md ``` ## 安全须知 在暴露到任何互联网或实验室环境之前: 1. 专用主机 / VLAN — 不得与真实 IdP、VPN 或云共享密钥 2. 严格的出站限制 — 蜜罐不得访问生产网络 3. 仅限带外日志记录 4. 将每次命中视为恶意行为 ## 路线图 有关 DNS canary、Office 文档 beacon、端口 22 上的 Endlessh 以及 SIEM 数据传输,请参见 [`honeypot_architecture_plan.md`](./honeypot_architecture_plan.md)。 ### 状态 实验室 / 研究阶段。已交付的核心界面:HTTP + SSH 蜜罐、Tier-1 honeytoken、WebRTC 探测、robots/sitemap 诱饵。 ## 许可证 尚未发布许可证。如果您为了私人实验室使用而 fork,请保留上述道德警告。当项目宣布开源时,将添加正式的 `LICENSE` 文件。

专为喜欢半熟诱饵的蓝队打造。

标签:Docker, Go, Ruby工具, StruQ, WebRTC, 后端开发, 安全, 安全防御评估, 日志审计, 版权保护, 蜜罐, 证书利用, 请求拦截, 超时处理