GoodEvening07/threat-intelligence-honeypot

GitHub: GoodEvening07/threat-intelligence-honeypot

一个伪装为银行登录页面的生产级蜜罐,用于实时捕获和分析真实的撞库攻击与自动化扫描活动,帮助安全团队收集威胁情报并研究攻击者行为模式。

Stars: 0 | Forks: 0

# Credit Bank Union 威胁情报蜜罐 一个逼真的虚假银行登录门户,可实时捕获和分析现实世界中的撞库、暴力破解和自动化扫描活动。 本项目作为网络安全实践学习项目构建,旨在研究攻击者行为、机器人流量模式和威胁情报收集,无需任何推广。只需暴露一个 IP,即可观察会出现什么情况。 ![Python](https://img.shields.io/badge/Python-3.10+-blue) ![Flask](https://img.shields.io/badge/Flask-2.3+-lightgrey) ![License](https://img.shields.io/badge/License-MIT-green) ## 功能特性 - **逼真的诱饵** 伪装成“Credit Bank Union”的令人信服的银行登录页面,用于吸引自动化扫描器和手动攻击者 - **实时日志记录** 每次登录尝试都会记录 IP、尝试的凭据、User-Agent、地理位置和机器人标志 - **管理仪表盘**(受密码保护)包含: - 攻击计数器:总尝试次数、唯一 IP 数量、机器人与人类比例 - 7 天攻击时间线图表 - 带有按位置划分的攻击标记的交互式世界地图 - 点击即可进行 IP 富集:通过 ip-api.com 获取 ISP、组织、AS 编号、代理/VPN/数据中心/移动网络标志(在浏览器端获取,服务器零额外负载) - 支持对所有字段进行实时过滤的完整可搜索日志表 - **机器人检测** 通过 User-Agent 特征(curl、wget、python-requests、扫描器等)标记自动化工具 - **地理定位** 使用 MaxMind GeoLite2-City 映射攻击来源 - **Splunk 集成** 可选的 HEC 转发,用于 SIEM 数据摄取 - **移动端响应式** 仪表盘和登录页面可在所有屏幕尺寸上运行 ## 技术栈 | 组件 | 技术 | |---------------|-------------------------------------| | 后端 | Python / Flask | | WSGI server | Gunicorn | | 前端 | Vanilla JS, Leaflet.js, Chart.js | | 地理定位 | MaxMind GeoLite2-City | | IP 富集 | ip-api.com(浏览器端) | | 部署 | Ubuntu 24.04, systemd 服务 | ## 设置说明 ### 1. 克隆仓库 ``` git clone https://github.com/GoodEvening07/threat-intelligence-honeypot.git cd threat-intelligence-honeypot ``` ### 2. 创建虚拟环境并安装依赖项 ``` python3 -m venv venv source venv/bin/activate # Windows: venv\Scripts\activate pip install -r requirements.txt ``` ### 3. 获取 GeoLite2 数据库(可选) 1. 在 [maxmind.com](https://www.maxmind.com/en/geolite2/signup) 创建一个免费的 MaxMind 账户 2. 下载 `GeoLite2-City.mmdb` 3. 将其放置在 `geoip/GeoLite2-City.mmdb` 如果没有此文件,应用仍可运行,只是地图会显示占位符。 ### 4. 设置环境变量 ``` export FLASK_SECRET_KEY="your-random-secret-key" export ADMIN_PASSWORD="your-strong-password" # 可选:Splunk HEC export SPLUNK_HEC_URL="https://your-splunk:8088/services/collector" export SPLUNK_HEC_TOKEN="your-token" ``` ### 5. 运行 ``` # Development python app.py # Production gunicorn --workers 2 --bind 0.0.0.0:5000 app:app ``` ### 6. 访问仪表盘 运行前,请在 `app.py` 中将 `ADMIN_PREFIX` 更改为唯一的随机字符串。 然后导航至 `/admin-{YOUR_PREFIX}/dashboard` ——系统将提示您进行 HTTP Basic Auth(用户名:`admin`,密码:`ADMIN_PASSWORD` 的值)。 ## 分析日志 (CLI) 用于快速分析捕获数据的独立终端脚本: ``` python analyze_logs.py ``` 输出内容:主要攻击 IP、尝试最多的用户名和密码(已掩码)、机器人比例以及每小时攻击分布条形图。 ## 生产部署 (VPS) 在每月 6 美元的 Vultr Ubuntu 24.04 服务器上运行此项目的关键注意事项: - 在端口 80/443 上使用 **nginx** 作为反向代理运行 - 防火墙:仅开放端口 22 (SSH)、80、443 - 使用 **systemd 服务** 并设置 `Restart=always`,使其在重启后仍能存活 - 在 venv **内部** 安装 geoip2:`venv/bin/pip install geoip2` ——系统的 pip 不会影响 venv 的 Python 环境 - 将密钥保存在 systemd 的 `Environment=` 行中,切勿硬编码 systemd 单元示例(`/etc/systemd/system/honeypot.service`): ``` [Unit] Description=Credit Bank Union Honeypot After=network.target [Service] User=root WorkingDirectory=/root/threat-intelligence-honeypot Environment="PATH=/root/threat-intelligence-honeypot/venv/bin" Environment="FLASK_SECRET_KEY=your-secret" Environment="ADMIN_PASSWORD=your-password" ExecStart=/root/threat-intelligence-honeypot/venv/bin/gunicorn --workers 2 --bind 127.0.0.1:5000 app:app Restart=always [Install] WantedBy=multi-user.target ``` ## 我的观察结果 在暴露服务器数小时内(未分享链接,未进行推广): - 大部分流量是全天候运行撞库字典的**自动化机器人** - 攻击源自数十个国家,其中许多通过**数据中心 IP 和 VPN** 进行路由 - 机器人的 User-Agent 非常明显(`python-requests`、`curl`、`Go-http-client`)——手动攻击者较少,但速度更慢、更有针对性 - 常见的凭据对:`admin/admin`、`admin/123456`、`test/test` 以及大型的 rockyou 风格密码列表 ## 法律与道德声明 本项目**仅供教育和研究用途**。请仅在你拥有或已获得明确操作授权的基础设施上进行部署。攻击日志已从此仓库中排除——切勿公开披露真实的攻击者数据(IP、凭据)。
标签:Bot检测, Chart.js, CISA项目, CMS安全, Flask, Gunicorn, Honeypot, IT运维, JavaScript, Leaflet.js, MaxMind, PoC, Python, Socks5代理, 凭证填充, 后端开发, 威胁情报, 安全监控系统, 安全管理, 密码管理, 开发者工具, 恶意流量分析, 撞库, 攻击分析, 数据可视化, 无后门, 暴力破解, 网络安全, 蜜罐, 证书利用, 逆向工具, 隐私保护, 黑客行为分析