GoodEvening07/threat-intelligence-honeypot
GitHub: GoodEvening07/threat-intelligence-honeypot
一个伪装为银行登录页面的生产级蜜罐,用于实时捕获和分析真实的撞库攻击与自动化扫描活动,帮助安全团队收集威胁情报并研究攻击者行为模式。
Stars: 0 | Forks: 0
# Credit Bank Union 威胁情报蜜罐
一个逼真的虚假银行登录门户,可实时捕获和分析现实世界中的撞库、暴力破解和自动化扫描活动。
本项目作为网络安全实践学习项目构建,旨在研究攻击者行为、机器人流量模式和威胁情报收集,无需任何推广。只需暴露一个 IP,即可观察会出现什么情况。
  
## 功能特性
- **逼真的诱饵** 伪装成“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代理, 凭证填充, 后端开发, 威胁情报, 安全监控系统, 安全管理, 密码管理, 开发者工具, 恶意流量分析, 撞库, 攻击分析, 数据可视化, 无后门, 暴力破解, 网络安全, 蜜罐, 证书利用, 逆向工具, 隐私保护, 黑客行为分析