abhi79920/ThreatEye-X-
GitHub: abhi79920/ThreatEye-X-
ThreatEye X 是一个开箱即用的蜜罐情报与攻击分析平台,通过 Web 诱饵和 Cowrie 遥测数据采集、重构并可视化攻击行为,帮助安全团队高效开展威胁研究与运营。
Stars: 0 | Forks: 0
# ThreatEye X
ThreatEye X 是一个可随时部署的蜜罐情报与攻击分析平台。它能够摄取 Cowrie JSON 遥测数据,重构攻击者会话,对行为进行分类,分配可解释的风险评分,触发警报,并通过精美的防御作战控制台生成调查报告。
它还包含一个主动式 Web 蜜罐:通用的虚假管理员和 WordPress 风格的登录诱饵、虚假 API 登录,以及常见的扫描器陷阱。这些 endpoint 永远不会进行身份验证或暴露真实数据;它们会将恶意尝试捕获到 ThreatEye 的调查工作流中。
## 包含内容
- 安全的 Web 身份验证:注册、登录、密码重置、个人资料管理、服务器会话、CSRF、scrypt 密码哈希、速率限制以及基于角色的访问控制
- JWT API:短期访问 token、refresh token、事件摄取、攻击查询以及仪表板指标
- Cowrie 集成:换行符分隔的 JSON 导入、实时 API 摄取、会话生命周期、登录、凭据、命令以及原始证据保留
- Web 蜜罐:`/admin/login`、`/wp-login.php`、`POST /api/admin/login`,以及 `/.env`、`/phpmyadmin`、`/wp-admin`、`/administrator` 和备份路径扫描器陷阱
- 分析学:暴力破解、撞库、侦察、恶意软件下载,以及带有风险/严重性评分的可疑活动分类
- 运营功能:警报、搜索和多字段过滤器、攻击下钻、事件时间线、审计日志、管理访问控制
- 可视化:响应式 ApexCharts 时间线和严重性图表,以及排名的操作表
- 报告功能:每日、每周和每月的 PDF 简报以及 CSV 证据导出
- PostgreSQL 优先部署,具备零配置 SQLite 回退机制
- 结构化的 JSON 应用程序日志、安全标头、严格的上传验证以及 Docker 部署
## Windows / VS Code 快速开始
### 一键设置
在此文件夹中打开 VS Code PowerShell 终端并运行:
```
Set-ExecutionPolicy -Scope Process Bypass
.\start_windows.ps1
```
然后打开 `http://127.0.0.1:5000`。
默认管理员(在演示环境外请立即修改):
```
admin@threateye.local
ChangeMe!123
```
### 手动设置
```
py -3 -m venv .venv
.\.venv\Scripts\Activate.ps1
pip install -r requirements.txt
Copy-Item .env.example .env
flask --app run.py init-db
flask --app run.py seed-demo
python run.py
```
当 `DATABASE_URL` 缺失或指向 SQLite 时,应用程序会自动创建 `instance/threateye.db`。
## 加载提供的蜜罐日志
登录,选择 **Import logs**,并上传 `sample_data/cowrie.jsonl`。您还可以运行 `flask --app run.py seed-demo` 来创建两周的仪表板数据。
## 测试实时 Web 蜜罐
1. 登录 ThreatEye 并从侧边栏打开 **Web honeypot**。
2. 选择 **Open test decoy** 或直接浏览到 `http://127.0.0.1:5000/admin/login`。
3. 提交任意虚假的测试用户名和密码。切勿输入真实密码。
4. 返回 **Web honeypot** 或 **Investigation center** 查看捕获的 IP、凭据、浏览器、平台、语言、屏幕尺寸、时区、请求路径、严重性以及会话时间线。
诱饵始终会返回身份验证失败。请将其与真实账户和生产数据隔离。如果部署在反向代理之后,仅当该受信任的代理会覆盖传入的转发标头时,才设置 `TRUST_PROXY_HEADERS=true`;否则攻击者可能会伪造其显示的 IP。
要在受控的局域网中进行测试,请将服务绑定到机器的网络接口:
```
$env:APP_HOST="0.0.0.0"
python run.py
```
如果 Windows 防火墙允许 TCP 端口 5000,同一网络上的其他设备随后就可以访问 `http://YOUR-PC-LAN-IP:5000/admin/login`。默认值仍为 `127.0.0.1`,因此诱饵不会被意外暴露。若要进行互联网数据收集,请使用专用的隔离 VM/VPS、HTTPS 反向代理、针对分析师仪表板的防火墙限制、强数据库密码以及 `SESSION_COOKIE_SECURE=true`;切勿对个人工作站进行端口转发。
## API 用法
请求 token:
```
$token = Invoke-RestMethod -Method Post -Uri http://127.0.0.1:5000/api/v1/auth/token `
-ContentType 'application/json' `
-Body '{"email":"admin@threateye.local","password":"ChangeMe!123"}'
```
发送 Cowrie 事件:
```
$headers = @{ Authorization = "Bearer $($token.access_token)" }
$event = Get-Content .\sample_data\cowrie.jsonl -First 1
Invoke-RestMethod -Method Post -Uri http://127.0.0.1:5000/api/v1/events `
-Headers $headers -ContentType 'application/json' -Body $event
```
endpoint 位于 `/api/v1` 下:`POST /auth/token`、`POST /auth/refresh`、`POST /events`、`GET /attacks` 和 `GET /metrics`。
## PostgreSQL 和 Docker
对于本地 PostgreSQL 服务器,请设置:
```
DATABASE_URL=postgresql+psycopg2://user:password@localhost:5432/threateye
```
或者启动完整的 stack:
```
$env:POSTGRES_PASSWORD="use-a-strong-password"
$env:SECRET_KEY="use-a-long-random-secret"
$env:JWT_SECRET_KEY="use-another-long-random-secret"
docker compose up --build
```
对于 HTTPS 生产部署,请设置 `SESSION_COOKIE_SECURE=true`,轮换初始化的管理员密码,在反向代理处终止 TLS,使用持久的速率限制后端(如 Redis),并将密钥保留在源代码控制之外。
## 结构
```
threateye/
admin/ auth/ api/ dashboard/ reports/ # Flask blueprints
services/ # analytics, ingestion, reports, seed data
static/ # cyber UI styling and charts
templates/ # responsive Jinja views
models.py security.py extensions.py # data and security foundation
sample_data/ # Cowrie JSONL telemetry
tests/ # application and API tests
run.py requirements.txt Dockerfile docker-compose.yml
```
## 验证
```
pytest -q
```
包含的测试涵盖了页面可用性、身份验证边界、JWT 签发、事件分析和 API 指标。
标签:Syscall, Web开发, 威胁情报, 安全规则引擎, 安全运营, 开发者工具, 扫描框架, 攻击分析, 测试用例, 蜜罐, 证书利用, 请求拦截, 逆向工具