Rusheelraj/Breach-Tower
GitHub: Rusheelraj/Breach-Tower
自托管暗网凭据泄露监控平台,整合七大情报源持续追踪企业暴露凭据并在攻击者利用前发出告警。
Stars: 0 | Forks: 0
Breach Tower
面向小型企业的自托管暗网凭据监控平台。
Breach Tower 会持续在泄露数据库、粘贴网站、窃密日志 Telegram 频道以及实时 CTI 威胁情报源中,全方位搜寻您公司暴露的凭据——并在攻击者利用它们之前发送可操作的告警。 ## 它的功能 大多数泄露通知服务都是被动的:您往往在几个月后通过新闻报道才得知。Breach Tower 会运行定时扫描任务,覆盖 **7 个情报源**,按严重程度对每个发现进行评分,并通过电子邮件或 Slack 近实时地通知您的团队。 **核心流程:** 1. 您将域名和电子邮件模式添加为监控目标 2. 调度器每 3–24 小时运行一次(可配置) 3. 每个监控器搜索与您的目标相关的泄露凭据 4. 发现的结果会被评分(CRITICAL → LOW),去重并存储 5. 告警将发送到您的收件箱或 Slack 频道 ## 情报源 | 监控器 | 来源 | 需要密钥 | |---|---|---| | **Leak-Lookup** | 聚合泄露数据库 | 是 | | **LeakCheck** | 凭据泄露搜索(回退到免费的公共 API) | 可选 | | **BreachDirectory** | 明文 + 哈希密码数据包 | 是 (RapidAPI) | | **IntelligenceX** | 暗网 / 深网搜索 | 是 | | **Telegram** | 窃密日志频道 (Telethon) | 是 (API ID/Hash) | | **Paste Sites** | Pastebin 抓取 + DDG 回退 | 否 | | **CTI Feeds** | ctifeeds.andreafortuna.org (5 个订阅源) | 否 | CTI Feeds 覆盖范围:数据泄露、钓鱼网站、地下数据市场、勒索软件受害者和网站篡改。 ## 严重程度评分 每个发现都会自动进行评分: | 分数 | 严重程度 | 示例 | |---|---|---| | >= 70 | CRITICAL | 近期 Telegram 窃密日志中的明文密码 | | 45-69 | HIGH | 泄露数据库中的密码哈希 | | 25-44 | MEDIUM | 粘贴网站数据包中的电子邮件 + 域名 | | < 25 | LOW | 旧泄露事件中仅暴露的电子邮件 | 评分因素:数据类型(明文 +40,哈希 +20,电子邮件 +5)、来源优先级以及时效性加成。 ## 功能特性 **监控** - 每次扫描周期运行 7 个并行情报监控器 - 每个目标的扫描历史记录和统计数据 - 去重——不会为同一发现发送重复告警 - 手动触发扫描(所有目标或单个目标) - 计划性的一次性扫描 **告警** - 电子邮件 (SMTP) 并附带修复步骤 - 格式丰富的 Slack webhook - SIEM webhook 集成(JSON 或 CEF 格式) - 可配置的最低严重程度阈值 **仪表板与报告** - 带有严重程度过滤器的实时告警信息流 - 趋势图表和来源对比分析 - 告警确认和修复工作流 - CSV 和 PDF 导出 **用户管理** - 基于角色的访问控制:Admin 和 Analyst - TOTP 2FA 支持 - Microsoft Entra ID / Azure AD SSO - 带有 IP 记录的活动会话跟踪 - 每一项操作的完整审计追踪 **安全性** - 带有服务器端密码验证的凭据保险库 - 默认情况下,UI 中所有的 API 密钥均被隐藏 - JWT 身份验证 + 会话撤销 - 通过环境变量强制执行 CORS - 告警保留策略(可配置) - 原子化 `.env` 写入(终止时不会损坏数据) - Telegram 会话文件受 `chmod 600` 保护 ## 技术栈 | 层级 | 技术 | |---|---| | Backend API | FastAPI + Uvicorn | | Database | PostgreSQL + SQLAlchemy ORM | | Scheduler | APScheduler | | Frontend | React 18 + Vite 5 | | Styling | Tailwind CSS 3 | | Charts | Recharts | | Auth | JWT (python-jose) + TOTP (pyotp) + MSAL | | Telegram | Telethon | | Containerization | Docker + Docker Compose | ## 快速开始——一行命令安装程序 ### Linux 在任何 Linux 服务器或虚拟机上安装的推荐方法: ``` cd /tmp && sudo bash -c "$(curl -fsSL https://raw.githubusercontent.com/Rusheelraj/Breach-Tower/main/install.sh)" ``` 两个安装程序都会执行以下操作: - 如果尚未安装,则安装 Docker 和 Docker Compose - 将仓库克隆到安装目录 - 提示输入电子邮件、SMTP 和 Slack 设置 - 自动生成高强度的加密密钥 - 构建并启动所有容器 - 等待健康检查通过 ### Windows 在**已提升权限(管理员)的 PowerShell** 提示符中运行: ``` Set-ExecutionPolicy Bypass -Scope Process -Force irm https://raw.githubusercontent.com/Rusheelraj/Breach-Tower/main/install.ps1 | iex ``` 将安装到 `C:\breach-tower`。 ### 安装后 ``` Dashboard : http://localhost:3000 API Docs : http://localhost:8000/docs ``` 1. 打开仪表板并**注册您的管理员帐户**(第一个用户将获得管理员角色) 2. 前往 **Settings → Intelligence Sources** 并输入您的 API 密钥 3. 前往 **Settings → Telegram** 通过 UI 验证您的 Telegram 会话 4. 前往 **Targets** 并添加您的域名或电子邮件模式 5. 运行您的第一次扫描 ### 更新 **Linux:** ``` sudo bash /opt/breach-tower/install.sh --update ``` **Windows(管理员 PowerShell):** ``` PowerShell -ExecutionPolicy Bypass -File C:\breach-tower\install.ps1 -Update ``` ### 卸载 **Linux:** ``` sudo bash /opt/breach-tower/install.sh --uninstall ``` **Windows(管理员 PowerShell):** ``` PowerShell -ExecutionPolicy Bypass -File C:\breach-tower\install.ps1 -Uninstall ``` ## 手动 Docker 设置 如果您更愿意手动设置: ``` git clone https://github.com/Rusheelraj/Breach-Tower.git cd Breach-Tower cp .env.example .env ``` 使用您的配置编辑 `.env`(参见下面的[环境变量](#environment-variables-reference)),然后: ``` docker compose up --build ``` - Frontend: http://localhost:3000 - API: http://localhost:8000 ## 本地开发设置 使用 `docker-compose.dev.yml` 可以仅在 Docker 中运行 PostgreSQL,并在本地运行后端和前端: ``` # 仅启动 postgres docker compose -f docker-compose.dev.yml up -d # Backend python -m venv venv source venv/bin/activate # Windows: venv\Scripts\activate pip install -r requirements.txt cp .env.example .env # fill in values — use localhost:5432 for DATABASE_URL uvicorn backend.main:app --reload --port 8000 # Frontend (单独终端) cd frontend npm install npm run dev # dev server on :3000 with /api proxy to :8000 ``` ## 添加目标 登录后,前往 **Targets** 并添加: - **Domain** —— 例如 `yourcompany.com` —— 监控与此域名相关的所有凭据 - **Email pattern** —— 例如 `*@yourcompany.com` —— 监控所有员工的电子邮件地址 系统将在每次运行时针对所有活动目标扫描所有已配置的监控器。 ## 配置监控器 前往 **Settings** 并在每个情报源下输入您的 API 密钥。未配置密钥的监控器将被自动跳过。Paste Sites 和 CTI Feeds 不需要密钥,并且始终处于活动状态。 通过 Settings UI 保存的 API 密钥将在**下次扫描**时生效——无需重启容器。 要在不删除密钥的情况下禁用特定监控器,请在 **Settings → Enable / Disable** 中将其关闭,或设置: ``` DISABLED_MONITORS=breach,telegram ``` ## Telegram 监控器设置 Telegram 监控器使用 [Telethon](https://github.com/LonamiWebs/Telethon) 来监控公开的窃密日志频道。 **通过 UI 设置(推荐):** 1. 从 [my.telegram.org](https://my.telegram.org) 获取您的 `TELEGRAM_API_ID` 和 `TELEGRAM_API_HASH` 2. 前往 **Settings → Telegram — Stealer Log Channels** 3. 输入您的 API ID 和 API Hash,然后点击 **Save Configuration** 4. **Session Authentication** 面板将会出现——输入您的手机号码并点击 **Send Code** 5. 输入您在 Telegram 应用中收到的验证码并点击 **Verify** 6. 完成——监控器将在下次运行时进行扫描 会话文件存储在 `/opt/breach-tower/breachtower_session.session`(权限为 `600`),并通过 Docker 卷挂载在容器重启后保留。 ## 项目结构 ``` breach-tower/ ├── backend/ │ ├── api/ # FastAPI route handlers │ ├── alerts/ # Email, Slack, SIEM delivery │ ├── db/ # SQLAlchemy models + database setup │ ├── monitors/ # 7 intelligence monitor modules │ ├── scoring/ # Severity scoring algorithm │ ├── config.py │ ├── main.py # FastAPI app entrypoint │ └── scheduler.py # APScheduler job runner ├── frontend/ │ └── src/ │ ├── pages/ # React pages (Dashboard, Targets, Settings, etc.) │ ├── auth/ # AuthContext, token validation │ ├── api.js # API client │ └── App.jsx ├── .env.example ├── docker-compose.yml ├── docker-compose.dev.yml # Dev: postgres only ├── install.sh # One-liner Linux installer └── requirements.txt ``` ## 环境变量参考 | 变量 | 必需 | 描述 | |---|---|---| | `DATABASE_URL` | 是 | PostgreSQL 连接字符串 | | `DB_PASSWORD` | 是 | Postgres 密码 (由 docker-compose 使用) | | `JWT_SECRET` | 是 | 用于 JWT 签名的密钥 (至少 32 个字符) | | `VAULT_PASSWORD` | 是 | 用于在 UI 中解锁凭据保险库的密码 | | `ENVIRONMENT` | 否 | 设置为 `production` 以强制执行 JWT 长度并禁用 Swagger | | `SMTP_HOST` | 否 | SMTP 服务器主机名 | | `SMTP_PORT` | 否 | SMTP 端口 (默认为 587) | | `SMTP_USER` | 否 | SMTP 登录名 | | `SMTP_PASS` | 否 | SMTP 密码或应用专用密码 | | `ALERT_EMAIL` | 否 | 告警电子邮件的收件人地址 | | `SLACK_WEBHOOK` | 否 | Slack 入站 webhook URL | | `LEAKLOOKUP_API_KEY` | 否 | Leak-Lookup API 密钥 | | `LEAKCHECK_API_KEY` | 否 | LeakCheck API 密钥 (如果缺失则回退到免费层) | | `INTELX_API_KEY` | 否 | IntelligenceX API 密钥 | | `BREACH_DIRECTORY_KEY` | 否 | BreachDirectory / RapidAPI 密钥 | | `TELEGRAM_API_ID` | 否 | Telegram API ID (来自 my.telegram.org) | | `TELEGRAM_API_HASH` | 否 | Telegram API Hash | | `PASTEBIN_API_KEY` | 否 | Pastebin API 密钥 (用于抓取 API 访问) | | `PASTEBIN_API_USER_KEY` | 否 | Pastebin 用户密钥 | | `SCAN_INTERVAL_HOURS` | 否 | 计划扫描之间的间隔小时数 (默认为 6) | | `DISABLED_MONITORS` | 否 | 要跳过的以逗号分隔的监控器键名 | | `ALLOWED_ORIGINS` | 否 | CORS 允许的来源 (默认为 http://localhost:3000) | | `AZURE_CLIENT_ID` | 否 | Microsoft Entra App 客户端 ID (用于 SSO) | | `AZURE_TENANT_ID` | 否 | Microsoft Entra 租户 ID (用于 SSO) | ## 常用命令 ``` # 查看实时 backend 日志 cd /opt/breach-tower && sudo docker-compose logs -f backend # 查看所有服务日志 sudo docker-compose logs -f # 停止所有服务 sudo docker-compose down # 启动服务 (停止后) sudo docker-compose up -d # 代码更改后重新构建 sudo docker-compose up -d --build # 更新到最新版本 sudo bash /opt/breach-tower/install.sh --update # 完全卸载 (移除所有数据) sudo bash /opt/breach-tower/install.sh --uninstall ``` ## 安全说明 - **永远不要提交 `.env` 文件**——它包含机密信息。默认情况下,它已被 `.gitignore` 排除。 - 在生产环境中,`JWT_SECRET` 必须至少为 32 个字符——如果它太短或缺失,应用将拒绝启动。 - 生成高强度的 JWT 密钥:`python3 -c "import secrets; print(secrets.token_hex(64))"` - 凭据保险库使用 `hmac.compare_digest` (时间安全的比较) 进行密码验证。 - 设置 `ENVIRONMENT=production` 以禁用 `/docs` 和 `/redoc` Swagger 端点。 - 在生产环境中,请将 `ALLOWED_ORIGINS` 限制为您实际的前端域名。 - 不要将 8000 端口直接暴露在公网上——请将其置于反向代理 (nginx、Caddy) 之后。 - Telegram 会话文件以 `chmod 600` 权限存储——仅限所有者读写。 ## 许可证 私有——保留所有权利。 *专为防御性安全行动而构建。请仅监控您自己的资产。*标签:Atomic Red Team, Breach Database, BreachDirectory, CTI Feeds, IntelligenceX, LeakCheck, Pastebin爬取, RapidAPI, Slack机器人报警, Stealer Logs监控, Telegram威胁监控, 中小企业安全, 企业安全, 凭证泄露监控, 威胁情报平台(TIP), 威胁狩猎(Threat Hunting), 实时处理, 情报收集(OSINT), 数据泄露检测, 数据防泄漏(DLP), 暗网威胁情报, 暗网爬虫, 测试用例, 源代码泄露, 漏洞利用预警, 版权保护, 网络安全, 网络资产管理, 自定义脚本, 自托管安全平台, 请求拦截, 账号安全, 逆向工具, 邮件通知, 隐私保护, 风险评分