Xyness/Phantom

GitHub: Xyness/Phantom

一个集成 Rust 端口扫描与 Python 多模块侦察的攻击面分析框架,提供可视化仪表板、风险评分和报告导出功能。

Stars: 0 | Forks: 0

# Phantom — 攻击面分析器 一个安全侦察和攻击面分析框架,结合了 Rust 异步端口扫描器、Python 侦察模块、FastAPI 后端和 Next.js 仪表板。 ## 截图 ![Phantom 仪表板](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/96c140076b141250.png) ## 架构 ``` phantom/ ├── scanner/ # Rust async TCP port scanner (tokio, clap) ├── recon/ # Python recon modules (DNS, TLS, HTTP, OSINT, Exposure) ├── api/ # FastAPI backend (orchestration, scoring, PDF export) ├── dashboard/ # Next.js + Tailwind + Recharts (interactive dashboard) ├── db/ # PostgreSQL schema ├── scripts/ # Utility scripts └── docker-compose.yml ``` ## 功能特性 - **端口扫描器** — 基于信号量限流的异步 TCP 连接扫描及 Banner 抓取 (Rust/tokio) - **DNS 侦察** — A/AAAA/MX/NS/TXT/CNAME 解析、区域传送检测、子域名枚举(字典 + crt.sh) - **TLS 分析** — 证书有效性、协议版本审计、HSTS 检查 - **HTTP 安全** — 安全头部评分、技术栈检测、CORS 分析 - **OSINT** — WHOIS、ASN (RDAP)、证书透明度监控 - **暴露检测** — 敏感路径模糊测试、.git 暴露、头部敏感信息、robots.txt 分析 - **CVE 匹配** — 本地精选数据库(约 100 个 CVE),支持基于正则的 Banner 匹配 - **风险评分** — 加权严重性公式(严重=10,高危=7,中危=4,低危=1),范围为 0-100 - **PDF 报告** — 通过 Jinja2 + WeasyPrint 生成 HTML 转 PDF - **扫描对比** — 对比不同扫描之间的发现、端口和子域名 - **深色仪表板** — 交互式 UI,包含风险仪表盘、严重性图表、发现表格和对比视图 ## 快速开始 ### 使用 Docker Compose(推荐) ``` cp .env.example .env docker compose up --build ``` - **仪表板**: http://localhost:3000 - **API**: http://localhost:8000 - **API 文档**: http://localhost:8000/docs ### 手动设置 ``` # Database docker compose up db -d # Scanner cd scanner && cargo build --release # Recon 模块 cd recon && pip install -e ".[dev]" # API cd api && pip install -e ".[dev]" uvicorn app.main:app --reload # Dashboard cd dashboard && npm install && npm run dev ``` ## API 参考 | 方法 | 端点 | 描述 | |--------|----------|-------------| | POST | `/api/v1/scans` | 创建并启动新扫描 | | GET | `/api/v1/scans` | 列出所有扫描 | | GET | `/api/v1/scans/{id}` | 获取扫描详情 | | GET | `/api/v1/scans/{id}/findings` | 获取扫描发现(可过滤) | | GET | `/api/v1/scans/{id}/report/json` | 导出 JSON 报告 | | GET | `/api/v1/scans/{id}/report/pdf` | 导出 PDF 报告 | | POST | `/api/v1/comparisons` | 对比两次扫描 | | GET | `/health` | 健康检查 | ### 创建扫描 ``` curl -X POST http://localhost:8000/api/v1/scans \ -H "Content-Type: application/json" \ -d '{ "target": "example.com", "ports": "22,80,443,8000-9000", "modules": ["dns", "tls", "http", "osint", "exposure"], "confirm_authorization": true }' ``` `confirm_authorization: true` 字段是必需的 —— 它作为您拥有扫描目标授权的明确确认。 ## 运行测试 ``` # 所有测试 ./scripts/run-tests.sh # 单独组件 cd scanner && cargo test cd recon && pytest tests/ -v cd api && pytest tests/ -v cd dashboard && npm run build ``` ## 技术栈 | 组件 | 技术 | |-----------|------------| | 端口扫描器 | Rust, tokio, clap | | 侦察模块 | Python 3.12, httpx, dnspython, cryptography | | 后端 | FastAPI, SQLAlchemy (async), Pydantic v2 | | 数据库 | PostgreSQL 16 | | 仪表板 | Next.js 14, Tailwind CSS, Recharts | | PDF 导出 | Jinja2, WeasyPrint | | 容器化 | Docker, Docker Compose | ## 设计决策 1. **Rust 扫描器作为子进程** — 清晰的进程边界、独立的测试、JSON 标准输出接口 2. **全面异步** — FastAPI、SQLAlchemy async、httpx、asyncio.gather 用于并发侦察 3. **通过 asyncio.create_task 执行后台任务** — 扫描编排中相比 Celery 更注重简洁性 4. **加权严重性评分** — 侧重侦察(非 CVSS),对数缩放至 100 5. **精选本地 CVE 数据库** — 无外部 API 依赖,基于正则的 Banner 匹配 6. **授权关卡** — 每次主动扫描都需要显式的 `confirm_authorization: true` ## 许可证 MIT 许可证 —— 详见 [LICENSE](LICENSE)。
标签:CVE匹配, DNS侦察, DNS查询工具, Docker, ESC4, FastAPI后端, GitHub, HTTP安全检测, Next.js仪表盘, OSINT, PostgreSQL, Python, Rust, Rust异步扫描, TLS分析, 代码生成, 可视化界面, 子域名枚举, 安全侦察, 安全防御评估, 实时处理, 密码管理, 插件系统, 攻击面分析, 无后门, 无线安全, 测试用例, 渗透测试工具, 白帽工具, 端口扫描器, 系统安全, 网络安全, 网络安全审计, 网络流量审计, 自动化侦察, 证书透明度, 请求拦截, 逆向工具, 隐私保护, 风险评分