tushargurav28/Kryphos
GitHub: tushargurav28/Kryphos
基于FastAPI和React的实时Web安全侦察平台,整合多种开源工具实现自动化资产发现与漏洞扫描。
Stars: 0 | Forks: 0
# 🐛 Kryphos v3.4





**现代化的实时 Web 应用安全侦察仪表盘**
[功能特性](#-features) • [安装](#-installation) • [使用](#-usage) • [截图](#-screenshots) • [架构](#-architecture)
## 📖 目录
- [Kryphos 是什么?](#-what-is-recon-dashboard)
- [功能特性](#-features)
- [适用人群](#-who-should-use-this)
- [架构](#-architecture)
- [安装](#-installation)
- [使用](#-usage)
- [截图](#-screenshots)
- [API 端点](#-api-endpoints)
- [配置](#-configuration)
- [故障排除](#-troubleshooting)
- [贡献](#-contributing)
- [许可证](#-license)
## 🤔 Kryphos 是什么?
**Kryphos** 是一个功能强大且用户友好的 Web 应用程序,用于自动化网站和域名的安全侦察。可以把它看作一个**安全扫描器,用于检查网站的潜在漏洞、暴露的信息和安全配置错误**——所有操作都在一个美观且易于使用的界面中完成。
### 🔍 它能做什么?
假设您想检查一个网站是否安全。Kryphos 会自动:
1. **查找所有子域名**(例如 `mail.example.com`、`admin.example.com` 等)
2. **检查哪些子域名存活**并响应
3. **搜索历史存档**以查找旧 URL 和页面
4. **扫描安全漏洞**,使用行业标准工具
5. **检查服务器上的开放端口**
6. **发现隐藏的端点**和 JavaScript 文件
7. **实时显示所有内容**在一个精美的仪表盘上
### 🎯 适用于:
- ✅ **安全研究人员** - 自动化您的侦察工作流程
- ✅ **网站所有者** - 检查您自己网站的安全问题
- ✅ **开发人员** - 学习安全扫描和侦察知识
- ✅ **学生** - 理解 Web 应用安全概念
- ✅ **Bug Bounty 猎人** - 加速您的初始侦察阶段
- ✅ **IT 专业人士** - 监控和审计组织的网络资产
## ✨ 功能特性
### 🔎 核心扫描功能
| 功能 | 描述 | 使用的工具 |
|---------|-------------|------------|
| **子域名枚举** | 查找目标域名的所有子域名 | Subfinder, Assetfinder, Findomain, Chaos |
| **HTTP 探测** | 检查哪些子域名存活并响应 | HTTPX |
| **Wayback URL 收集** | 搜索历史存档中的旧 URL | Wayback Machine API |
| **漏洞扫描** | 扫描安全漏洞和配置错误 | Nuclei |
| **端口扫描** | 检查服务器上的开放端口和服务 | Nmap |
| **Web 爬取** | 发现隐藏的端点和页面 | Katana |
| **JavaScript 分析** | 在 JavaScript 文件中查找秘密和端点 | Custom Scanner |
### 🎨 用户界面功能
| 功能 | 描述 |
|---------|-------------|
| **实时更新** | 通过 WebSocket 即时查看结果 |
| **实时终端** | 实时观察扫描进度 |
| **交互式表格** | 对结果进行排序、过滤和搜索 |
| **详情模态框** | 点击任何结果查看完整详情 |
| **严重程度过滤** | 按严重程度级别过滤漏洞 |
| **导出结果** | 轻松将结果复制到剪贴板 |
| **深色主题** | 适合长时间扫描,保护眼睛 |
| **响应式设计** | 支持桌面和移动设备 |
### 🚀 技术特性
| 功能 | 描述 |
|---------|-------------|
| **异步处理** | 使用 asyncio 实现快速、非阻塞扫描 |
| **数据库存储** | 所有结果保存到 SQLite 数据库 |
| **WebSocket 支持** | 后端和前端之间的实时通信 |
| **REST API** | 用于编程访问的完整 API |
| **错误处理** | 全面的错误处理和日志记录 |
| **速率限制** | 内置速率限制,避免压垮目标 |
| **模板更新** | 扫描前自动更新 Nuclei 模板 |
## 👥 适用人群?
### ✅ 推荐:
- **安全专业人士** - 自动化侦察工作流程
- **网站所有者** - 审计自己网站的安全问题
- **开发人员** - 学习安全扫描概念
- **学生** - 用于理解 Web 安全的教育工具
- **IT 团队** - 监控组织的网络资产
### ❌ 不推荐:
- 未经许可扫描网站
- 非法活动或未经授权的访问
- 未经适当测试的生产环境
- 不熟悉安全概念的用户
## 🏗 架构
### 系统流程图
```
graph TD
A[User Opens Dashboard] --> B[Enter Target Domain]
B --> C[Click Start Full Recon]
C --> D[Backend Creates Scan]
D --> E[Phase 1: Subdomain Enumeration]
E --> E1[Subfinder]
E --> E2[Assetfinder]
E --> E3[Findomain]
E --> E4[Chaos API]
E1 & E2 & E3 & E4 --> E5[Collect Unique Subdomains]
E5 --> F[Phase 2: HTTP Probing]
F --> F1[HTTPX Scan]
F1 --> F2[Check Live Hosts]
F2 --> F3[Extract IPs & URLs]
F3 --> G[Phase 3: Wayback Collection]
G --> G1[Query Archive.org]
G1 --> G2[Collect Historical URLs]
F3 --> H[Phase 4: Nuclei Scan]
H --> H1[Update Templates]
H1 --> H2[Scan All URLs]
H2 --> H3[Collect Vulnerabilities]
F3 --> I[Phase 5: Nmap Scan]
I --> I1[Scan Discovered IPs]
I1 --> I2[Collect Open Ports]
F3 --> J[Phase 6: Katana Crawl]
J --> J1[Crawl Websites]
J1 --> J2[Discover Endpoints]
E5 & F3 & G2 & H3 & I2 & J2 --> K[Save to Database]
K --> L[WebSocket Broadcast]
L --> M[Real-Time UI Updates]
M --> N[Display Results]
N --> O[User Can Filter/Export]
O --> P[Scan Complete]
```
### 技术栈
```
┌─────────────────────────────────────────────────────────┐
│ Frontend (React) │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │ Dashboard│ │ Stats │ │ Terminal │ │ Tables │ │
│ └──────────┘ └──────────┘ └──────────┘ └──────────┘ │
│ WebSocket Client │
└─────────────────────────────────────────────────────────┘
↕ WebSocket
┌─────────────────────────────────────────────────────────┐
│ Backend (FastAPI + Python) │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │ Recon │ │ Scanner │ │ DB │ │ API │ │
│ │ Engine │ │ Modules │ │ Manager │ │Endpoints │ │
│ └──────────┘ └──────────┘ └──────────┘ └──────────┘ │
│ AsyncIO Core │
└─────────────────────────────────────────────────────────┘
↕
┌─────────────────────────────────────────────────────────┐
│ Security Tools (External) │
│ ┌────────┐ ┌────────┐ ┌───────┐ ┌──────┐ ┌────────┐ │
│ │Subfinder│ │ HTTPX │ │Nuclei │ │ Nmap │ │ Katana │ │
│ └────────┘ └────────┘ └───────┘ └──────┘ └────────┘ │
│ ┌────────┐ ┌────────┐ ┌────────────────────────────┐ │
│ │Wayback │ │ FFUF │ │ Assetfinder/Findomain │ │
│ └────────┘ └────────┘ └────────────────────────────┘ │
└─────────────────────────────────────────────────────────┘
↕
┌─────────────────────────────────────────────────────────┐
│ Database (SQLite) │
│ ┌──────────────────┐ ┌──────────────────────────────┐ │
│ │ Scans │ │ Results │ │
│ │ - scan_id │ │ - id, scan_id, phase │ │
│ │ - target │ │ - data (JSON), timestamp │ │
│ │ - status │ │ │ │
│ │ - progress │ │ │ │
│ └──────────────────┘ └──────────────────────────────┘ │
└─────────────────────────────────────────────────────────┘
```
### 扫描工作流程
```
┌─────────────────────────────────────────────────────────────┐
│ SCAN WORKFLOW │
└─────────────────────────────────────────────────────────────┘
┌──────────────┐
│ START │
│ Target: │
│ example.com │
└──────┬───────┘
│
▼
┌──────────────┐
│ PHASE 1 │ ⏱ ~1-2 minutes
│ Subdomains │ 📊 Finds: 100-500 subdomains
└──────┬───────┘
│
▼
┌──────────────┐
│ PHASE 2 │ ⏱ ~2-5 minutes
│ HTTPX │ 📊 Finds: 50-200 live hosts
└──────┬───────┘
│
├──────────────────┬──────────────────┬──────────────┐
│ │ │ │
▼ ▼ ▼ ▼
┌──────────────┐ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐
│ PHASE 3 │ │ PHASE 4 │ │ PHASE 5 │ │ PHASE 6 │
│ Wayback │ │ Nuclei │ │ Nmap │ │ Katana │
│ URLs │ │ Vulns │ │ Ports │ │ Crawl │
└──────┬───────┘ └──────┬───────┘ └──────┬───────┘ └──────┬───────┘
│ │ │ │
│ │ │ │
└──────────────────┴──────────────────┴──────────────┘
│
▼
┌──────────────┐
│ COMPLETE │ ⏱ Total: 5-15 minutes
│ Save to DB │ 📊 All results stored
└──────────────┘
```
## 📦 安装
### 前置条件
在安装 Kryphos 之前,请确保您已具备:
- 已安装 **Python 3.13+**
- 已安装 **Node.js 18+** 和 npm
- 用于克隆仓库的 **Git**
- **安全工具**(将自动或手动安装)
### 步骤 1:克隆仓库
```
# 克隆 repository
git clone https://github.com/YOUR_USERNAME/recon-dashboard.git
# 导航到项目目录
cd recon-dashboard
```
### 步骤 2:安装安全工具
#### 选项 A:自动安装(推荐)
```
# 运行安装脚本
chmod +x install-tools.sh
./install-tools.sh
```
#### 选项 B:手动安装
```
# 安装 Subfinder
go install -v github.com/projectdiscovery/subfinder/v2/cmd/subfinder@latest
# 安装 HTTPX
go install -v github.com/projectdiscovery/httpx/cmd/httpx@latest
# 安装 Nuclei
go install -v github.com/projectdiscovery/nuclei/v3/cmd/nuclei@latest
# 安装 Katana
go install -v github.com/projectdiscovery/katana/cmd/katana@latest
# 安装 Assetfinder
go install github.com/tomnomnom/assetfinder@latest
# 安装 Findomain
# macOS
brew install findomain
# Linux
wget https://github.com/findomain/findomain/releases/latest/download/findomain-linux.zip
unzip findomain-linux.zip
chmod +x findomain
sudo mv findomain /usr/bin/
# 安装 Nmap
# macOS
brew install nmap
# Ubuntu/Debian
sudo apt-get install nmap
# Fedora
sudo dnf install nmap
# 更新 Nuclei templates
nuclei -ut
```
### 步骤 3:安装后端依赖
```
# 导航到 backend 目录
cd backend
# 创建 virtual environment
python3.13 -m venv venv
# 激活 virtual environment
# macOS/Linux
source venv/bin/activate
# Windows
venv\Scripts\activate
# 安装 Python dependencies
pip install -r requirements.txt
# 创建 environment file
cp .env.example .env
# 编辑 .env 并添加您的 API keys (可选)
nano .env
```
### 步骤 4:安装前端依赖
```
# 导航到 frontend 目录
cd ../frontend
# 安装 npm dependencies
npm install
```
### 步骤 5:配置环境
在 `backend` 目录下创建一个 `.env` 文件:
```
# backend/.env
# Chaos API Key (可选 - 用于额外的 subdomain 来源)
CHAOS_API_KEY=your_chaos_api_key_here
# Database URL (对于大多数用户,默认即可)
DATABASE_URL=sqlite+aiosqlite:///./recon.db
# WebSocket heartbeat interval (秒)
WS_HEARTBEAT=30
# Maximum concurrent connections
MAX_CONNECTIONS=100
```
### 步骤 6:验证安装
```
# 检查是否安装了所有工具
which subfinder
which httpx
which nuclei
which nmap
which katana
# 检查 Python dependencies
cd backend
source venv/bin/activate
pip list
# 检查 Node.js dependencies
cd ../frontend
npm list
```
## 🚀 使用
### 启动应用程序
#### 终端 1:启动后端
```
cd backend
source venv/bin/activate # Activate virtual environment
python main.py
```
后端将在 `http://localhost:8000` 启动
#### 终端 2:启动前端
```
cd frontend
npm run dev
```
前端将在 `http://localhost:5173` 启动
### 运行您的第一次扫描
1. **打开浏览器**并访问 `http://localhost:5173`
2. 在输入框中**输入目标域名**(例如 `example.com`)
3. **点击 "Start Full Recon"** 开始扫描
4. **观察实时结果**显示在仪表盘中
5. 使用各种面板**探索结果**:
- **Live Terminal** - 查看扫描进度
- **Subdomains** - 查看所有发现的子域名
- **Live Hosts** - 查看哪些子域名正在响应
- **Wayback URLs** - 来自存档的历史 URL
- **Vulnerabilities** - Nuclei 的安全发现
- **Nmap Results** - 开放端口和服务
- **Katana** - 发现的端点
### 理解结果
#### 严重程度级别
| 颜色 | 严重程度 | 描述 |
|-------|----------|-------------|
| 🔴 | Critical (严重) | 需要立即关注的严重漏洞 |
| 🟠 | High (高危) | 应尽快修复的严重安全问题 |
| 🟡 | Medium (中危) | 值得解决的中等安全问题 |
| 🔵 | Low (低危) | 轻微的安全问题或最佳实践违规 |
| 🟢 | Info (信息) | 信息性发现(技术检测、DNS 记录等) |
#### 发现类型
| 类型 | 描述 | 示例 |
|------|-------------|---------|
| **技术检测** | 网站使用的技术 | Cloudflare, Nginx, WordPress |
| **SSL/TLS** | SSL 证书信息 | TLS 版本、证书颁发者 |
| **DNS 记录** | DNS 配置信息 | MX, NS, TXT, SPF, DMARC 记录 |
| **Headers** | HTTP 安全标头 | 缺少的安全标头 |
| **漏洞** | 实际的安全漏洞 | XSS, SQLi, SSRF 等 |
### 高级用法
#### 使用自定义字典
1. 通过 UI 上传您的字典
2. 从下拉菜单中选择它
3. 开始您的扫描
#### API 用法
```
# 开始新扫描
curl -X POST http://localhost:8000/api/scan \
-H "Content-Type: application/json" \
-d '{"target": "example.com", "enable_nuclei": true}'
# 获取扫描状态
curl http://localhost:8000/api/scan/{SCAN_ID}
# 获取结果
curl http://localhost:8000/api/scan/{SCAN_ID}/results/vulnerability
```
## 📸 截图
### 仪表盘概览
```
[INSERT SCREENSHOT OF MAIN DASHBOARD]
Caption: Main dashboard showing all scan results in real-time
```
### 实时终端
```
[INSERT SCREENSHOT OF LIVE TERMINAL]
Caption: Real-time terminal output showing scan progress
```
### 漏洞结果
```
[INSERT SCREENSHOT OF VULNERABILITIES PANEL]
Caption: Vulnerability findings with severity filtering
```
### Nmap 结果
```
[INSERT SCREENSHOT OF NMAP PANEL]
Caption: Port scan results with expandable details
```
### Wayback URLs
```
[INSERT SCREENSHOT OF WAYBACK PANEL]
Caption: Historical URLs from Wayback Machine archive
```
## 🔌 API 端点
### 扫描管理
| 方法 | 端点 | 描述 |
|--------|----------|-------------|
| `POST` | `/api/scan` | 启动新的侦察扫描 |
| `GET` | `/api/scan/{scan_id}` | 获取扫描状态和进度 |
| `GET` | `/api/scan/latest` | 获取最近的扫描 |
| `GET` | `/api/scans` | 获取所有扫描(最近 50 次) |
### 结果
| 方法 | 端点 | 描述 |
|--------|----------|-------------|
| `GET` | `/api/scan/{scan_id}/results/{phase}` | 获取特定阶段的结果 |
| `GET` | `/api/scan/{scan_id}/results/batch` | 获取带分页的批量结果 |
### 实用工具
| 方法 | 端点 | 描述 |
|--------|----------|-------------|
| `POST` | `/api/upload/wordlist` | 上传自定义字典 |
| `GET` | `/api/wordlists` | 列出可用的字典 |
| `GET` | `/api/health` | 健康检查端点 |
### WebSocket
```
WS /ws/{scan_id}
```
连接到 WebSocket 以在扫描期间获取实时更新。
## ⚙️ 配置
### 后端配置
编辑 `backend/config.py`:
```
class Config:
CHAOS_API_KEY = "your_api_key" # Chaos API for subdomain enumeration
DATABASE_URL = "sqlite+aiosqlite:///./recon.db"
WS_HEARTBEAT = 30 # WebSocket heartbeat interval
MAX_CONNECTIONS = 100 # Maximum concurrent connections
MAX_RESULTS_PER_PHASE = 100000 # Maximum results per phase
BATCH_LIMIT = 50000 # Batch limit for API responses
```
### 扫描配置
在 `backend/recon_engine.py` 中修改扫描行为:
```
# Concurrent scan limits
self.max_concurrent_nmap = 3
self.max_concurrent_nuclei = 5
self.max_concurrent_wayback = 10
```
### 前端配置
编辑 `frontend/vite.config.js` 进行代理设置:
```
server: {
port: 5173,
proxy: {
'/api': 'http://localhost:8000',
'/ws': {
target: 'ws://localhost:8000',
ws: true
}
}
}
```
## 🐛 故障排除
### 常见问题
#### 问题:"Nuclei command not found"
```
# 解决方案:安装 Nuclei
go install -v github.com/projectdiscovery/nuclei/v3/cmd/nuclei@latest
# 验证安装
which nuclei
# 更新 templates
nuclei -ut
```
#### 问题:"WebSocket connection failed"
```
# 解决方案:检查 backend 是否正在运行
curl http://localhost:8000/api/health
# 重启 backend
cd backend
source venv/bin/activate
python main.py
```
#### 问题:"扫描后没有显示结果"
```
# 解决方案:检查 database
cd backend
sqlite3 recon.db "SELECT COUNT(*) FROM results WHERE phase='vulnerability';"
# 检查 backend logs 是否有错误
# 在终端中查找错误信息
```
#### 问题:"扫描卡在 0%"
```
# 解决方案:检查是否安装了安全工具
which subfinder
which httpx
which nuclei
# 如果缺失则重新安装工具
go install -v github.com/projectdiscovery/subfinder/v2/cmd/subfinder@latest
go install -v github.com/projectdiscovery/httpx/cmd/httpx@latest
```
#### 问题:"前端未加载"
```
# 解决方案:清除 cache 并重启
cd frontend
rm -rf node_modules
npm install
npm run dev
```
### 调试模式
在后端启用调试日志记录:
```
# 添加到 recon_engine.py
import logging
logging.basicConfig(level=logging.DEBUG)
```
## 🤝 贡献
我们欢迎各种贡献!以下是您可以提供帮助的方式:
### 如何贡献
1. **Fork 本仓库**
2. **创建功能分支** (`git checkout -b feature/amazing-feature`)
3. **提交您的更改** (`git commit -m 'Add amazing feature'`)
4. **推送到分支** (`git push origin feature/amazing-feature`)
5. **打开一个 Pull Request**
### 代码风格
- Python 代码遵循 PEP 8 规范
- JavaScript/React 代码使用 ESLint
- 编写有意义的提交信息
- 为复杂的逻辑添加注释
### 报告问题
- 使用 GitHub issue 跟踪器
- 提供详细的复现步骤
- 包含错误消息和日志
- 说明您的环境(操作系统、Python 版本等)
## 📄 许可证
本项目根据 MIT 许可证授权 - 详情请参阅 [LICENSE](LICENSE) 文件。
### 这意味着
- ✅ 您可以将此项目用于个人和商业目的
- ✅ 您可以修改和分发代码
- ✅ 您必须包含原始许可证
- ❌ 不提供任何保证
- ❌ 作者不对损害承担责任
## 🙏 致谢
本项目使用了以下出色的开源工具:
- **[Subfinder](https://github.com/projectdiscovery/subfinder)** - 子域名枚举
- **[HTTPX](https://github.com/projectdiscovery/httpx)** - HTTP 探测
- **[Nuclei](https://github.com/projectdiscovery/nuclei)** - 漏洞扫描
- **[Nmap](https://nmap.org/)** - 端口扫描
- **[Katana](https://github.com/projectdiscovery/katana)** - Web 爬取
- **[Wayback Machine](https://archive.org/web/)** - 历史 URL 存档
- **[FastAPI](https://fastapi.tiangolo.com/)** - 后端框架
- **[React](https://react.dev/)** - 前端框架
## 📞 支持
- **问题反馈**: [GitHub Issues](https://github.com/YOUR_USERNAME/recon-dashboard/issues)
- **讨论**: [GitHub](https://github.com/YOUR_USERNAME/recon-dashboard/discussions)
- **电子邮件**: your.email@example.com
## 🎯 路线图
### 版本 3.5(即将推出)
- [ ] PDF 报告生成
- [ ] 电子邮件通知
- [ ] 计划扫描
- [ ] 多目标扫描
- [ ] 导出为 CSV/JSON
### 版本 4.0(未来)
- [ ] Docker 支持
- [ ] Kubernetes 部署
- [ ] 多用户支持
- [ ] API 认证
- [ ] 云集成
**用 ❤️ 为安全社区打造**
[⬆ 回到顶部](#-recon-dashboard-v34)
标签:AV绕过, CTI, FastAPI, GitHub, Google, HTTP探测, Nmap, Nuclei, Python, React, SQLite, Syscalls, Wayback机器, WebSocket, Web安全, 依赖分析, 侦查仪表盘, 子域名枚举, 密码管理, 插件系统, 数据统计, 无后门, 端口扫描, 系统安全, 系统独立性, 网络安全, 蓝队分析, 虚拟驱动器, 计算机取证, 逆向工具, 隐私保护