yashwantraj147-eng/honeypot-system

GitHub: yashwantraj147-eng/honeypot-system

这是一款集成了多协议模拟、威胁情报关联及可视化管理界面的轻量级多功能蜜罐系统,旨在诱捕攻击并记录详细操作日志。

Stars: 1 | Forks: 0

# 🛡️ HoneypotNet — 多服务蜜罐系统 HoneypotNet 部署了四个模拟的易受攻击服务 —— **SSH、HTTP、FTP 和 Telnet** —— 用于吸引恶意行为者并记录其所有操作:尝试的凭证、执行的命令、上传的 Payload 以及扫描器探测。基于 Web 的管理仪表板允许您过滤、搜索和导出捕获的数据。 ## ⚠️ 法律免责声明 ## 📁 项目结构 ``` honeypot-system/ ├── main.py # Monolith launcher (all services in threads) ├── config.yaml # Central configuration (API keys, ports, etc.) ├── requirements.txt # Python dependencies ├── Dockerfile # Monolith Docker image ├── docker-compose.yml # Multi-container orchestration ├── .gitignore │ ├── core/ # Shared infrastructure │ ├── __init__.py │ ├── config_loader.py # YAML config singleton │ ├── logger.py # SQLite central logger │ ├── geoip.py # ip-api.com geolocation │ ├── threat_intel.py # AbuseIPDB lookup │ ├── alerting.py # Email + Telegram alerts │ ├── rate_limiter.py # Per-IP sliding-window limiter │ └── enrichment.py # Geo + TI + DB + alert in one call │ ├── honeypots/ # Emulated vulnerable services │ ├── __init__.py │ ├── ssh_honeypot.py # Paramiko SSH server │ ├── http_honeypot.py # Flask HTTP server │ ├── ftp_honeypot.py # Raw-socket FTP server │ └── telnet_honeypot.py # Raw-socket Telnet server │ ├── admin/ # Web admin panel │ ├── __init__.py │ ├── app.py # Flask dashboard app │ └── templates/ │ ├── login.html │ └── dashboard.html │ ├── docker/ # Per-service Dockerfiles │ ├── Dockerfile.ssh │ ├── Dockerfile.http │ ├── Dockerfile.ftp │ ├── Dockerfile.telnet │ └── Dockerfile.admin │ ├── tests/ │ └── test_honeypots.py # Unit + integration tests │ ├── data/ # Runtime data (auto-created) │ ├── honeypot.db # SQLite database │ ├── ssh_host_key # Auto-generated RSA key │ └── uploads/ # Files uploaded via HTTP honeypot │ └── logs/ # Rotating text log files └── honeypot.log ``` ## 🚀 快速开始 ### 选项 A — 本地运行(开发环境) ``` # Clone and enter the project git clone && cd honeypot-system # 创建虚拟环境 python -m venv venv source venv/bin/activate # Linux/macOS venv\Scripts\activate # Windows # 安装依赖 pip install -r requirements.txt # 编辑配置 cp config.yaml config.yaml.bak # Edit config.yaml — set your AbuseIPDB key, Telegram bot token, etc. # 启动所有服务 python main.py ``` 服务将在 `config.yaml` 中定义的端口上启动: | Service | Default Port | |----------|-------------| | SSH | 2222 | | HTTP | 8080 | | FTP | 2121 | | Telnet | 2323 | | Admin UI | 5000 | ### 选项 B — Docker Compose(生产环境) ``` # 1. Edit config.yaml with your API keys # 2. Build and launch all containers docker-compose up -d --build # 3. Tail logs docker-compose logs -f # 4. Stop everything docker-compose down ``` ## 🖥️ 管理仪表板 导航至 `http://localhost:5000` 并使用 `config.yaml` 中的凭证登录(默认:`admin` / `honeypot_admin_2024`)。 **功能特性:** - 📊 汇总卡片(总事件数、唯一 IP 数、各服务计数) - 🔍 按服务、源 IP、日期范围过滤 - 📄 分页事件表 - 📥 过滤结果的 CSV 导出 - 🌍 地理位置数据(国家、城市) - ⚠️ AbuseIPDB 信心评分 ## 🔔 告警 ### Email (SMTP) 在 `config.yaml` 中设置 `alerting.email.enabled: true` 并配置您的 SMTP 服务器。对于 Gmail,请使用 [App Password](https://support.google.com/accounts/answer/185833)。 ### Telegram Bot 1. 通过 [@BotFather](https://t.me/BotFather) 创建一个机器人并获取 token。 2. 给 [@userinfobot](https://t.me/userinfobot) 发送消息以获取您的 Chat ID。 3. 设置 `alerting.telegram.enabled: true` 并填写 `bot_token` 和 `chat_id`。 告警对**每个 IP 进行速率限制**(可配置 `cooldown_seconds`)以防止消息泛滥。 ## 🌍 地理位置与威胁情报 | Feature | Provider | Free Tier | |---------------|---------------|--------------------------| | Geolocation | ip-api.com | 45 req/min, no key | | Threat Intel | AbuseIPDB | 1 000 checks/day (free) | 这两个模块均会在内存中缓存结果(LRU)以最大程度减少 API 调用。 ## 🧪 测试 ``` # 运行所有测试 pytest tests/ -v # With coverage pytest tests/ -v --cov=core --cov=honeypots --cov=admin ``` 测试套件包括: - 针对日志记录器、geoIP、威胁情报、速率限制器和告警模块的**单元测试** - **集成测试**,在高端口启动每个蜜罐并验证协议行为 - 使用 Flask 测试客户端的**管理仪表板测试** ## 🛡️ 反检测特性 - **逼真的 Banner**:SSH、FTP 和 HTTP 头部模仿真实生产软件版本。 - **逼真的 Shell**:SSH 和 Telnet 对 `id`、`uname`、`ls`、`cat /etc/passwd` 等命令返回逼真的响应。 - **伪造目录列表**:FTP 提供看似真实的文件列表,包含具有诱惑力的文件名(如 `database.sql`、`.htpasswd`)。 - **扫描器陷阱**:HTTP 蜜罐暴露带有“禁止”路径的 `/robots.txt`、`.env`、`/phpmyadmin`、`/.git/config`。 - **速率限制**:避免被识别为接受无限连接的黑洞。 ## 📋 配置参考 | Key | Description | Default | |------------------------------|------------------------------------------|-------------------------| | `general.database_path` | SQLite 文件路径 | `data/honeypot.db` | | `general.log_level` | 日志详细程度 | `INFO` | | `services..port` | 每个蜜罐的监听端口 | See `config.yaml` | | `geoip.rate_limit_per_minute`| 每分钟最大的 ip-api.com 请求数 | 45 | | `threat_intel.abuseipdb_api_key` | 您的 AbuseIPDB API key | *(placeholder)* | | `alerting.cooldown_seconds` | 每个 IP 两次告警之间的最小秒数 | 300 | | `rate_limiting.max_connections`| 窗口内每个 IP 的最大连接数 | 30 | ## 📦 数据库架构 ``` CREATE TABLE events ( id INTEGER PRIMARY KEY AUTOINCREMENT, timestamp TEXT NOT NULL, -- ISO-8601 UTC src_ip TEXT NOT NULL, service TEXT NOT NULL, -- ssh | http | ftp | telnet action TEXT NOT NULL, payload TEXT, -- JSON blob geo_country TEXT, geo_city TEXT, geo_lat REAL, geo_lon REAL, abuse_score INTEGER DEFAULT -1 ); ``` ## 📜 许可证 本项目在 **MIT License** 下发布。详见 [LICENSE](LICENSE)。 *为防御者构建。保持安全。 🛡️*
标签:AbuseIPDB, AMSI绕过, Docker, ETW劫持, Flask, GeoIP, Honeypot, NIDS, Paramiko, PoC, Python, SQLite, SSH, Telegram, Telnet, Web管理面板, 协议模拟, 告警系统, 地理位置, 多服务蜜罐, 威胁情报, 威胁检测, 安全运营, 安全防御评估, 容器化, 开发者工具, 开源安全工具, 扫描框架, 数据导出, 无后门, 日志记录, 时间线生成, 暴力破解, 版权保护, 红队对抗, 网络安全, 蓝队, 蜜罐, 证书利用, 诱捕系统, 请求拦截, 逆向工具, 逆向工程平台, 邮件告警, 隐私保护