Avinash-019/WatchTower
GitHub: Avinash-019/WatchTower
WatchTower 是一个基于 AI 的 Windows 终端安全监控平台,专为中小型安全团队设计,提供多主机实时事件采集、威胁情报富化和自动化告警分类功能。
Stars: 0 | Forks: 0
# WatchTower
### AI 驱动的终端安全监控
WatchTower 从**多台 PC 同时**收集真实的 Windows 安全事件,通过实时威胁情报丰富每条告警,并使用 **Claude AI** 自动分类——在几秒内返回判定结果、严重程度评分、MITRE ATT&CK 映射和 IR 处置手册。
专为中小型安全团队构建,无需企业级成本即可实现整个 Windows 终端群的集中可见性。
## 架构
```
PC-1 → agent_network.py ──┐
PC-2 → agent_network.py ──┤──▶ server.py (central) ──▶ watchtower.db ──▶ dashboard.py
PC-3 → agent_network.py ──┤ (browser)
... │
PC-12 → agent_network.py ──┘
```
**三个组件,一个共享数据库:**
| 文件 | 运行位置 | 角色 |
| ---------------------- | ----------------------------- | ---------------------------------------------- |
| `agent_network.py` | 每台被监控的 PC | 读取 Windows 事件 → 发送至服务器 |
| `server.py` | 中央服务器(1 台机器) | 接收所有代理的事件 → 写入数据库 |
| `dashboard.py` | 中央服务器(同一台机器) | Streamlit 仪表板 — 13 个页面,全主机视图 |
| `windows_log_agent.py` | 仅单 PC 模式 | 独立代理(无需服务器) |
## 快速开始
### 单 PC(独立运行,无需服务器)
```
git clone https://github.com/Avinash-019/watchtower.git
cd watchtower
pip install -r requirements.txt
cp .env.example .env # set ANTHROPIC_API_KEY
streamlit run dashboard.py # open http://localhost:8501
# 仅限 Windows — 以管理员身份打开 CMD:
python windows_log_agent.py
```
### 多 PC(终端群监控)
#### 第 1 步 — 中央服务器设置
```
# 在中央服务器上(可以是网络中的任意一台机器)
pip install -r requirements.txt
cp .env.example .env
# 在 .env 中设置:
# ANTHROPIC_API_KEY=...
# SOC_API_SECRET=your-long-random-secret ← 所有机器上保持一致
# 启动采集服务器
python server.py
# 运行在 http://0.0.0.0:8000
# 启动 dashboard(单独的终端)
streamlit run dashboard.py
# 打开 http://YOUR_SERVER_IP:8501
```
#### 第 2 步 — 在每台被监控的 PC 上设置代理
```
# 将这些文件复制到每台 PC:
# agent_network.py
# .env
# 每台 agent PC 上的 .env:
SOC_SERVER_URL=http://YOUR_SERVER_IP:8000
SOC_API_SECRET=your-long-random-secret ← must match server
ANTHROPIC_API_KEY=... ← optional, for local AI triage
# 在每台 PC 上以管理员身份打开 CMD:
python agent_network.py
```
代理将在 5 秒内出现在 **终端群概览** 页面中。
## 功能
### 终端群范围
- **🏢 终端群概览** — 每台被监控 PC 的实时状态卡片、每台主机告警计数、终端群事件时间线、告警分布图表
- **🖥️ 实时监控** — 可按主机、日志源、严重程度、异常标志筛选的实时事件流
- **🗼 主机选择器** — 侧边栏下拉菜单,可在"所有主机"视图与任意单台 PC 之间切换
- **📊 告警仪表板** — 包含主机名列的完整告警表格,支持按主机筛选
- **🗺️ 网络地图** — 交互式威胁图谱,显示哪些攻击者 IP 针对了哪些主机
- **📋 报告** — AI 值班报告包含终端群健康状况、各主机亮点、代理状态
### 每条告警的情报
- **Claude AI 分类** — 判定结果、严重程度 1-10、置信度百分比、威胁类型、攻击阶段、即时处置建议
- **MITRE ATT&CK** — 20 多种事件类型映射到技术 + 战术 + 子技术
- **威胁情报** — VirusTotal、AbuseIPDB、Shodan、ipapi.co(真实 API 调用)
- **风险评分** — 综合 0-100 分,由 AI 严重程度 + 判定结果 + 端口风险 + VT 标记计算得出
- **IR 处置手册** — AI 生成的遏制、调查、证据收集步骤
- **IOC 提取** — 从原始日志消息中自动提取 IP、域名、MD5、CVE
- **告警关联** — 将来自同一源 IP 的攻击分组为攻击活动
### 运营功能
- **自定义规则引擎** — 定义 IP/事件/端口规则以强制判定结果
- **IP 封禁管理器** — 所有代理自动共享封禁列表
- **AI 聊天** — 具备完整终端群上下文的流式 SOC 聊天机器人
- **威胁狩猎** — 跨所有主机的自然语言狩猎查询
- **离线缓冲** — 服务器不可达时代理在本地缓冲事件,重连后回放
- **Telegram 告警** — 包含主机名称的 P1/P2 实时推送通知
## 监控的 Windows 事件(50+ 事件 ID)
| 来源 | 关键事件 |
| ----------------- | --------------------------------------------------------------------------------------------------------------------------- |
| Security | 4624/4625 登录、4648 显式凭据、4672 特权、4697/4698 持久化、4720/4726/4732/4740 账户、1102 日志清除 |
| System | 7034/7045 服务、104 日志清除 |
| PowerShell | 4103/4104 脚本块(可疑关键词检测) |
| Sysmon | 进程创建、网络连接、注册表(如已安装) |
| Firewall | 5156/5157 网络连接 |
| Windows Defender | 1116/1117 恶意软件检测/处置 |
| Task Scheduler | 计划任务创建 |
| Terminal Services | RDP 会话事件 |
## API 密钥
| 密钥 | 是否必需 | 来源 |
| ----------------------------------------- | ----------------- | ---------------------------------------------------------- |
| `ANTHROPIC_API_KEY` | ✅ 是 | [console.anthropic.com](https://console.anthropic.com) |
| `SOC_API_SECRET` | ✅ 是(多 PC) | 自行定义 — 使用一个长随机字符串 |
| `VIRUSTOTAL_API_KEY` | 可选 | [virustotal.com](https://www.virustotal.com/gui/my-apikey) |
| `ABUSEIPDB_API_KEY` | 可选 | [abuseipdb.com](https://www.abuseipdb.com/account/api) |
| `SHODAN_API_KEY` | 可选 | [account.shodan.io](https://account.shodan.io) |
| `TELEGRAM_BOT_TOKEN` + `TELEGRAM_CHAT_ID` | 可选 | [@BotFather](https://t.me/BotFather) |
## 模拟模式
在 macOS/Linux 上(无 `pywin32`),两个代理会自动检测操作系统并以**模拟模式**运行——每 5 秒生成逼真的合成事件。所有仪表板功能完全相同。非常适合演示。
```
python windows_log_agent.py # auto simulation on non-Windows
python agent_network.py # same — sends simulated events to server
```
## 扩展
| 规模 | 推荐配置 |
| -------- | ------------------------------------------------------------------------- |
| 1-5 台 PC | SQLite(默认,零配置) |
| 5-50 台 PC | 在 .env 中设置 `POSTGRES_URL` — server.py 自动切换到 PostgreSQL |
| 50+ 台 PC | 在代理和服务器之间添加 Redis 队列,使用 gunicorn 部署 server.py |
## 安全性
- 零硬编码密钥 — 所有凭证从 `.env` 加载
- `.env` 和 `*.db` 在 `.gitignore` 中 — 永不提交
- 所有代理 ↔ 服务器通信通过 `X-SOC-Secret` 头进行身份验证
- 代理为只读 — 仅读取 Windows 事件日志,从不修改系统状态
- SQLite 数据库仅限本地;除 AI API 调用外,不向云端发送任何数据
## 许可证
MIT — LICENSE
标签:agent-network, AI-powered security, AI安全终端监控, AI驱动安全, AMSI绕过, API接口, automated triage, centralized visibility, Claude AI, Conpot, CSV导出, endpoint detection, fleet监控, FTP漏洞扫描, incident response playbook, IP 地址批量处理, Kubernetes, MITRE ATT&CK mapping, MITRE ATT&CK映射, multi-host monitoring, open-source security tool, PE 加载器, real-time monitoring, security agent, security dashboard, security database, SIEM替代方案, small security team, SOC平台, Streamlit仪表盘, threat intelligence enrichment, WATCHTOWER, Windows event collection, Windows事件日志, Windows安全, Windows安全事件采集, 中小型企业安全, 事件响应剧本, 人工智能安全, 低成本企业安全, 合规性, 后渗透, 多主机集中监控, 多代理架构, 多包管理, 威胁情报富化, 威胁检测, 安全事件管理, 安全代理, 安全仪表板, 安全可视化, 安全告警, 安全团队协作, 安全开源项目, 安全态势感知, 安全数据库, 安全架构, 安全编排, 安全运营, 安全运营中心, 实时事件收集, 实时威胁情报, 扫描框架, 插件系统, 无线安全, 端点安全, 端点检测与响应, 网络安全, 网络安全审计, 网络映射, 脱壳工具, 自动化告警分流, 补丁管理, 请求响应过滤, 轻量级SOC, 逆向工具, 隐私保护, 集中式安全监控