andreicscs/HoneyWire

GitHub: andreicscs/HoneyWire

HoneyWire 是一个基于纯 Go 语言构建的超轻量级分布式高保真安全预警系统,通过部署绊线和诱饵传感器实现内网入侵的零误报实时检测与取证。

Stars: 9 | Forks: 0

[![License](https://img.shields.io/badge/license-GPLv3-blue.svg)](LICENSE) [![Status](https://img.shields.io/badge/status-WIP-yellow.svg)]() ## 📋 目录 - [概述](#honeywire) - [截图](#screenshots) - [通用事件标准](#-the-universal-event-standard-bring-your-own-sensor) - [功能](#features) - [架构](#architecture) - [快速入门指南](#-quick-start-guide) - [安全说明](#security-notes) - [技术栈](#tech-stack) - [版本控制和 API 参考](#versioning-and-api-reference) - [运维检查清单](#operational-checklist) # HoneyWire **HoneyWire Sentinel** 是一个轻量级的分布式高信噪比安全早期预警系统,专为内网设计。它取代了传统 SIEM 通过监控合法流量而让分析师淹没在误报中的“放大镜”模式,转而采用高保真 Tripwire(绊线)模型。将传感器精确部署在您需要的地方,例如: - 生产环境 Tripwires:当活跃服务受到不应有的探测时发出警报。通过在不应读取的敏感文件上或不应访问的服务端口上部署传感器,您可以通过入侵者偏离“授权路径”的行为来识别他们。 - 合成诱骗:部署如 [ICMP Canary](./Sensors/official/IcmpCanary/) 或 [Network Scan Detector](./Sensors/official/NetworkScanDetector/) 等诱饵作为诱骗。由于这些传感器不提供任何合法的业务价值,因此其 100% 的流量都是可操作的情报。 一旦触发,说明有问题。设置多个触发器,您就能对入侵者的横向移动有一个清晰的认识。无需调优,没有噪音,只有即时取证。 ## 截图 ### 主仪表盘 ![DashboardDark](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/a3ddb3d782043305.png) ![DashboardLight](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/b7e5fb2fdb043306.png) ## 🔌 通用事件标准(自带传感器) [**社区传感器**](./Sensors/community/) HoneyWire 的真正威力在于 Hub 是**完全传感器无关的**。您不仅限于随附的官方传感器。 通过遵循 **HoneyWire Event Standard V1.0**,您可以用*任何*语言(Bash、Go、Rust、Python)编写脚本来监控*任何内容*,Sentinel UI 将动态解析、语法高亮并渲染您的取证数据。 无论是**深度包检测 (DPI)** 引擎、**DNS sinkhole**、嵌入在 PDF 中的 **Canary Token**、**Email Honeypot**,还是简单的 **TCP Port Tripwire**,只需将此 JSON POST 到 Hub: ``` { "contract_version": "1.0", "severity": "critical", "event_trigger": "malformed_jwt_detected", "source": "104.28.19.12", "target": "Auth Gateway", "sensor_id": "core-dpi-engine", "details": { "protocol": "TCP", "headers_stripped": true, "payload_sample": [ "Authorization: Bearer eyJhbG... [TRUNCATED]", "User-Agent: curl/7.64.1" ] } } ``` *Hub 的前端会自动将数组转换为语法高亮的代码块,并将原始值转换为清晰的详情标签。* ## 功能 - **Sentinel Hub UI:** 一个完全响应式的仪表盘,具有深色/浅色模式、实时的 Chart.js 威胁分布以及动态取证负载检查功能。 - **官方传感器套件:** 包括原生的 [TCP Tarpit](./Sensors/official/TcpTarpit/)、[Web Router Decoy](./Sensors/official/WebRouterDecoy/)、[File Canary (FIM)](./Sensors/official/FileCanary/)、[ICMP Canary](./Sensors/official/IcmpCanary/) 和 [Network Scan Detector](./Sensors/official/NetworkScanDetector/)。 ## 架构 HoneyWire 分为三个独立的微服务: 1. `/Hub`:中央大脑。一个运行嵌入式 SQLite 数据库和 Web 仪表盘的纯 Go 二进制文件。它在 Distroless 容器内以非 root 用户身份运行,将数据安全挂载到专用卷。 2. `/Sensors`:诱饵节点。静态链接的 Go 二进制文件,监听易受攻击的端口,诱捕攻击者,并将入侵数据安全地 POST 回 Hub。 3. `/SDKs`:官方库(如 `sdk-go`),处理安全的 Hub 通信,以便社区开发者轻松构建新传感器。 ## 🚀 快速入门指南 使用我们预构建的 GitHub Container 镜像部署 HoneyWire 只需不到 60 秒。无需编译。 在您的服务器上创建一个新目录,并创建两个文件:`docker-compose.yml` 和 `.env`。 ### 1. `docker-compose.yml` 文件 ``` version: '3.8' services: # 1. THE PERMISSION FIXER: Runs once to ensure the Hub can write to the data volume permission-fixer: image: alpine:latest command: sh -c "chown -R 65532:65532 /data" volumes: - ./honeywire_data:/data # 2. THE HUB: The central Go-based dashboard and API hub: image: ghcr.io/andreicscs/honeywire-hub:latest container_name: honeywire-hub restart: unless-stopped ports: - "${HW_PORT:-8080}:${HW_PORT:-8080}" volumes: - ./honeywire_data:/data depends_on: permission-fixer: condition: service_completed_successfully user: "65532:65532" read_only: true cap_drop: ["ALL"] security_opt: ["no-new-privileges:true"] env_file: - .env # 3. EXAMPLE SENSOR: The TCP Tarpit (See /Sensors for more) tcp-tarpit: image: ghcr.io/andreicscs/honeywire-tcptarpit:latest container_name: hw-tcp-tarpit restart: unless-stopped network_mode: "host" # Required to capture true source IPs user: "0:0" # Required to bind to low ports # Security hardening cap_drop: ["ALL"] cap_add: ["NET_BIND_SERVICE"] read_only: true security_opt: ["no-new-privileges:true"] env_file: - .env ``` ### 2. `.env` 配置 ``` # ========================================== # HUB CONFIGURATION # ========================================== # Secret key used by sensors to authenticate with the Hub HW_HUB_KEY=change_this_to_a_secure_random_string # Optional: Protect the Web UI (Leave blank for no password) HW_DASHBOARD_PASSWORD=admin # Optional: Push Notifications HW_NTFY_URL=https://ntfy.sh/your_private_topic # HW_GOTIFY_URL=https://gotify.example.com/message # HW_GOTIFY_TOKEN=your_token # ========================================== # SENSOR EXAMPLE: TCP TARPIT # ========================================== # Point this to your Hub's IP and Port HW_HUB_ENDPOINT=http://127.0.0.1:8080 HW_SENSOR_ID=tarpit-01 # Ports to monitor, behavior mode, and fake service banner HW_DECOY_PORTS=22,2222,3306 HW_TARPIT_MODE=hold HW_SEVERITY=high HW_TARPIT_BANNER=SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.1\r\n ``` ### 3. 启动陷阱 运行以下命令以拉取镜像并启动蜜罐: ``` docker compose up -d ``` 通过 `http://localhost:8080`(或您服务器的 IP)访问仪表盘。 ### 4. 测试陷阱 一旦您的容器启动,Tarpit 传感器应在 30 秒内于仪表盘的 **Fleet Health** 部分显示为 `ONLINE`。 要验证检测循环,请从另一台机器(或另一个终端)使用 `netcat` 触发诱饵: ``` # Connect to your decoy port (e.g., 2222) at localhost (or your server's IP). nc localhost 2222 ``` 1. **观察诱饵:** 如果 `HW_TARPIT_MODE` 设置为 `hold` 或 `echo`,您将立即看到您的虚假服务横幅。 2. **交互:** 连接将被故意停滞(Tarpit)。输入一个字符串(例如 `admin` 或 `exploit_payload`)并按 Enter。 3. **关闭:** 按 `Ctrl+C` 终止测试连接。 4. **验证捕获:** - 检查 HoneyWire 仪表盘;事件、您的源 IP 和负载将立即显示。 - 如果已配置,您将在移动设备上收到推送通知。 ## 安全说明 * **API 密钥:** 确保您的 `HW_HUB_KEY` 足够复杂,并且在 Hub 和传感器上保持一致。Hub 将拒绝任何密钥不匹配的负载。我们最终将实现从 Hub 为每个传感器自动生成 API 密钥。 * **系统布防:** 您可以在 Hub UI 中切换“System Armed”按钮,以便在进行内网维护或漏洞扫描时暂时禁用推送通知。 * **容器加固:** HoneyWire 使用 `gcr.io/distroless/static-debian12:nonroot`。我们遵循最小权限原则,以确保如果容器被攻破,爆炸范围受到遏制。 * **分布式部署:** 强烈建议在独立的物理或虚拟机上运行 Hub 及其传感器。如果攻击者攻陷了传感器节点,他们不应立即拥有对集中式 Hub 的本地访问权限。 - ! **加密 (HTTPS):** 由于本项目正在开发中,我们**尚未**实现 HTTPS。 务必始终使用反向代理(如 Nginx、Caddy 或 Traefik)通过 HTTPS 提供 Hub Web GUI 和 API。否则,您的 `HW_HUB_KEY` 和 `HW_DASHBOARD_PASSWORD` 将面临网络嗅探的风险。 ## 技术栈 * **后端:** Go 1.25、`net/http`(标准库)、SQLite(纯 Go 驱动) * **前端:** HTML5、TailwindCSS、Alpine.js、Chart.js * **基础设施:** Docker、Docker Compose、Distroless Linux 沙箱 ## 版本控制和 API 参考 - HoneyWire 使用单一事实来源版本文件:仓库根目录下的 `VERSION`。 - 运行时版本通过环境变量覆盖公开:`HW_VERSION`(Hub + 传感器),默认值为 `VERSION`。 - `Hub` 端点: - `GET /api/v1/version` → 返回 `{ "version": "1.0.0" }` - API 文档文件:[📖 API.md](./Docs/API.md),包含完整的后端路由参考和示例负载。 ## 运维检查清单 - [x] 为所有组件设置 `HW_HUB_KEY`。 - [x] 设置可选的 `HW_DASHBOARD_PASSWORD`。 - [x] 在 `VERSION` 中的任何版本升级或环境变量更改后,重新构建/重新部署容器。
标签:BOF, Go语言, ICMP金丝雀, LangChain, minikerberos, SIEM替代, x64dbg, 分布式传感器, 告警降噪, 威胁情报, 安全仪表盘, 安全运营, 实时遥测, 开发者工具, 扫描框架, 无依赖, 无痕部署, 日志审计, 早期预警, 横向移动检测, 欺骗防御, 生产环境布防, 程序破解, 网络扫描检测, 蜜罐, 证书利用, 诱捕技术, 请求拦截, 轻量级, 零运行时依赖, 高保真告警