etern1ty-crypto/HONEY-MIND
GitHub: etern1ty-crypto/HONEY-MIND
基于 Rust 和 Tokio 异步运行时的低交互 TCP 蜜罐,通过模拟 SSH、HTTP、Telnet 等协议表层捕获攻击者扫描和凭据提交行为,输出结构化 JSONL 日志与 Prometheus 监控指标。
Stars: 0 | Forks: 0
[-orange?style=flat-square&logo=rust&logoColor=white)](https://www.rust-lang.org)
[](LICENSE)
[]()
[]()
[]()
**🇷🇺 [Русский](#-описание) · 🇬🇧 [English](#-overview)**
## 🇬🇧 概述
`minotaur` 是一个用 Rust 编写的低交互型 TCP 蜜罐。它监听已配置的端口,模拟足够的协议表层以诱使扫描器提交(横幅、凭据、请求路径),并写入结构化的 JSONL 会话日志和 Prometheus 指标。
### 支持的协议
| 协议 | 模拟 | 捕获内容 |
|:---|:---|:---|
| **SSH** | `SSH-2.0-…` 服务器标识字符串 | 客户端横幅(libssh、paramiko、Go x/crypto…)+ 原始字节 |
| **HTTP** | `HTTP/1.x` 响应(404,可配置) | 请求行、Host、User-Agent、完整请求头 |
| **Telnet** | 登录/密码提示(3次尝试) | 用户名、密码、已过滤的 IAC 字节 |
| **Raw** | 可选横幅,随后持续读取直到关闭 | 捕获所有端口上的任意 TCP 流量 |
### 核心特性
- **结构化 JSONL 日志** — 时间戳、UUID、协议、源/目的地址、持续时间、hex + ASCII 预览、已解析的事件
- **Prometheus `/metrics`** — 连接数、字节数、活动会话、持续时间直方图(按协议分类)
- **基于 IP 的速率限制** — 60秒滑动窗口,可配置的每分钟限制
- **全局会话上限** — 基于 `Semaphore` 的并发会话限制
- **优雅关闭** — 通过 `CancellationToken` 处理 `SIGINT`/`SIGTERM`
- **运行时零外部依赖** — 单个静态二进制文件
### 快速开始
```
# Build
cargo build --release
# Configure
cp config.example.toml minotaur.toml
# 编辑 minotaur.toml 以设置端口、协议、Banners
# Validate config
./target/release/minotaur --config minotaur.toml validate-config
# Run
./target/release/minotaur --config minotaur.toml run
# 对于端口 < 1024(请勿以 root 身份运行!)
sudo setcap 'cap_net_bind_service=+ep' target/release/minotaur
```
### 配置示例
```
[logging]
output = "honeypot.jsonl"
stdout = false
buffer_size = 1024
[metrics]
enabled = true
bind = "127.0.0.1:9090"
[server]
max_concurrent_sessions = 1024
session_timeout_seconds = 60
rate_limit_per_ip_per_min = 120
[[endpoint]]
bind = "0.0.0.0:2222"
protocol = "ssh"
banner = "SSH-2.0-OpenSSH_8.4p1 Debian-5+deb11u3"
[[endpoint]]
bind = "0.0.0.0:8080"
protocol = "http"
server_header = "nginx/1.18.0"
http_status = 404
[[endpoint]]
bind = "0.0.0.0:2323"
protocol = "telnet"
banner = "Welcome to Ubuntu 22.04 LTS"
[[endpoint]]
bind = "0.0.0.0:6379"
protocol = "raw"
banner = "-NOAUTH Authentication required.\r\n"
```
### 架构
```
┌──────────────────────────────────────────┐
│ minotaur (1 process) │
│ │
TCP ──┐ │ ┌──────────┐ │
│ │ │ Endpoint │──┐ │
TCP ──┼─accept├──▶│ listeners│ │ ┌──────────────┐ │
│ │ │ (per │ └──▶│ protocol │ │
TCP ──┘ │ │ port) │ │ handler task │ │
│ └──────────┘ │ (1 per conn) │ │
│ ▲ └──────┬───────┘ │
│ │ check rate-limit │ SessionState│
│ │ acquire semaphore │ │
│ ┌───┴──────┐ ▼ │
│ │ ratelimit│ ┌─────────────┐ │
│ └──────────┘ │ Logger task │──▶ JSONL file
│ ┌──────────┐ │ (bounded ch)│──▶ stdout
│ │ metrics │ └─────────────┘ │
│ │ hyper / │◀── /metrics scrape │
│ │ hyper-util│ │
│ └──────────┘ │
└──────────────────────────────────────────┘
```
### 会话记录示例
```
{
"ts": "2026-05-11T18:53:36.212Z",
"session_id": "eb1ba5f6-13f0-44d2-9cf8-e2c2773600b8",
"protocol": "http",
"src": "203.0.113.4:54836",
"dst_port": 8080,
"duration_ms": 12,
"bytes_received": 91,
"events": [{
"type": "http_request",
"method": "GET",
"path": "/wp-admin",
"host": "target.example",
"user_agent": "Mozilla/5.0 (compatible; Scanner)"
}],
"close_reason": "server_closed"
}
```
### 测试
```
# Unit + integration 测试(约 29 个测试)
cargo test
# End-to-end smoke test
cd examples/e2e && cargo run
```
测试涵盖了配置解析、JSONL 序列化、速率限制器、Prometheus 导出器、各协议处理程序以及端到端 TCP 集成。
### 它不做什么
- **非高交互型** — 没有真实的 SSH 传输、没有 shell、没有真实的 HTTP 应用
- **无 eBPF/XDP** — 纯 `tokio::net::TcpListener` 用户空间套接字
- **无反指纹** — 提供默认的逼真设置,但没有抖动/TLS 塑形
- **无攻击响应** — 仅记录日志,不进行阻断或反击
- **无日志转发** — 请使用 `fluentbit`、`vector` 或您自己的 Sidecar
### 技术栈



## 🇷🇺 描述
`minotaur` — это low-interaction TCP-ханипот на Rust. Слушает настроенные порты, эмулирует минимум протокола для того, чтобы сканеры «засветились» (баннеры, логины, HTTP-запросы), и записывает структурированные JSONL-логи + Prometheus-метрики.
### 协议支持
| Протокол | Эмуляция | Что захватывает |
|:---|:---|:---|
| **SSH** | `SSH-2.0-…` идентификация сервера | Баннер клиента + сырые байты |
| **HTTP** | HTTP/1.x ответ (404, настраиваемый) | URL, Host, User-Agent, заголовки |
| **Telnet** | Login/Password (3 попытки) | Логины, пароли, IAC-очистка |
| **Raw** | Опциональный баннер + чтение до закрытия | Любой TCP трафик |
### 关键功能
- **JSONL логи** — timestamp, UUID, протокол, src/dst, длительность, hex + ASCII
- **Prometheus `/metrics`** — подключения, байты, активные сессии, гистограммы
- **Rate-limiting** — скользящее окно 60с на IP
- **Graceful shutdown** — `SIGINT`/`SIGTERM` через `CancellationToken`
- **Один статический бинарник** — без зависимостей в runtime
### 快速开始
```
# Build
cargo build --release
# Configure
cp config.example.toml minotaur.toml
# Validate config
./target/release/minotaur --config minotaur.toml validate-config
# Run
./target/release/minotaur --config minotaur.toml run
# 测试(约 29 个测试)
cargo test
```
### 许可证
MIT — 详情请参见 [LICENSE](LICENSE)。
标签:IP 地址批量处理, JSONL, MIT开源许可, PE 加载器, Rust, SSH, TCP/IP网络, Telnet, Tokio, 低交互蜜罐, 入侵检测系统, 协议仿真, 可视化界面, 威胁情报, 子域名枚举, 安全数据湖, 密码管理, 开发者工具, 异步编程, 插件系统, 攻击行为分析, 欺骗技术, 监控与度量, 端口监听, 系统安全, 网络安全, 网络安全防御, 网络流量分析, 网络流量审计, 自定义请求头, 蓝军防御, 蜜罐, 规避防御, 证书利用, 通知系统, 隐私保护