# safe-scan
**Repository Path**: ai14tan/safe-scan
## Basic Information
- **Project Name**: safe-scan
- **Description**: 安全扫描脚本
- **Primary Language**: Python
- **License**: MulanPSL-2.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 1
- **Forks**: 0
- **Created**: 2026-06-07
- **Last Updated**: 2026-07-21
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# 安全扫描平台 (safe-scan)
一个基于 Python 的**网络安全扫描与资产管理平台**,集成**主机扫描**、**端口扫描**、**子域名发现**、**漏洞检测**、**SQL注入检测**、**SSL证书监控**、**CVE漏洞库管理**、**任务调度**与**资产管理系统**等核心功能。Web 端提供统一的可视化管理界面,扫描结果自动入库并支持版本对比、漏洞匹配和风险评估。
---
## 🏗️ 功能架构
### 系统架构图
```mermaid
graph TB
subgraph Platform["安全扫描平台 safe-scan"]
direction TB
subgraph Web["展示层 Web UI"]
direction LR
W1["资产管理
· 资产 · 端口 · 监控"]
W2["域名&证书
· 域名 · DNS告警 · 证书"]
W3["安全漏洞
· 漏洞库 · 漏洞记录 · 匹配 · 风险"]
W4["安全测试
· SQL注入 · 弱口令 · Fuzz"]
W5["任务调度
· 任务 · 日志 · 输出"]
W6["系统管理
· 平台 · 用户 · API Key · 告警"]
end
subgraph Engine["业务逻辑层 扫描引擎"]
direction LR
E1["scan-host
主机扫描
ARP+ICMP+Masscan
平台类型识别"]
E2["scan-port
端口扫描
两阶段
分类扫描"]
E3["scan-subdomain
子域名发现
SubFinder
DNS枚举"]
E4["scan-vuln
漏洞扫描
Nmap NSE"]
E5["scan-sqlmap
SQL注入
SQLMap"]
E6["NVD 同步
NVD API
CNVD"]
end
subgraph Data["数据层 持久化"]
direction LR
D1["SQLite
assets.db
资产/端口/域名/证书
CVE漏洞/匹配记录
用户/配置/同步日志"]
D2["Excel 导出
scan-host/port
subdomain/vuln/sqlmap"]
D3["INI 配置
config.ini
domains.ini
task_config"]
end
subgraph Task["任务调度层"]
T1["task_scheduler.py
支持: 周期任务
IP扫描 · 端口扫描
域名 · CVE同步
告警清理"]
end
end
Web --> Engine
Engine --> Data
Engine --> Task
```
### 模块关系图
```mermaid
graph TB
Web["Web 管理
Flask"]
subgraph Scanners["扫描引擎"]
direction LR
SH["scan-host
主机扫描"]
SP["scan-port
端口扫描"]
SS["scan-subdomain
子域名发现"]
end
DB["结果自动入库
Web 数据库"]
CVE["CVE 匹配引擎
端口版本 ↔ 漏洞库"]
Report["漏洞记录 & 报告"]
Web -->|"importlib 调用"| Scanners
SH --> DB
SP --> DB
SS --> DB
DB --> CVE
CVE --> Report
```
---
## 📋 功能清单
### 一级功能总览
| 序号 | 一级功能 | 二级功能数 | 说明 | 状态 |
|:---:|---------|:---:|------|:---:|
| 1 | 资产管理 | 8 | 资产录入、扫描、端口管理、在线检测、主机监控 | ✅ |
| 2 | 域名&证书 | 9 | 域名维护、子域名发现、DNS防劫持监控、SSL证书监控 | ✅ |
| 3 | 安全漏洞 | 8 | 漏洞库同步、版本匹配、漏洞跟踪、风险评估 | ✅ |
| 4 | 安全测试 | 5 | SQL注入、弱口令爆破、Web Fuzz、密码字典、代理管理 | ✅ |
| 5 | 任务调度 | 7 | 定时任务、手动触发、执行日志 | ✅ |
| 6 | 系统管理 | 6 | 平台配置、用户权限、API Key、告警中心 | ✅ |
| 7 | RESTful API | 7 | API Key认证、细粒度授权、assets/ports/domains/certificates/alerts/users/tasks | ✅ |
| 8 | 独立扫描工具 | 5 | CLI扫描程序,可脱离Web独立运行 | ✅ |
### 二级功能明细
#### 1. 资产管理
| 功能 | 说明 | 路由 |
|------|------|------|
| 资产列表 | 支持 IP/MAC/厂商/OS/平台类型/部门/标签 等多字段展示与筛选,分页浏览 | `/assets/` |
| 资产添加 | 手动录入资产信息,支持 IP/MAC/类型/重要性/平台类型等 | `/assets/add` |
| 资产编辑 | 修改资产属性,支持批量字段更新 | `/assets/edit/` |
| 资产删除 | 删除资产及关联端口数据 | `/assets/delete/` |
| 资产导入 | 从 Excel 批量导入资产数据,支持平台类型列 | `/assets/import` |
| 资产导出 | 导出资产列表为 Excel 文件,包含平台类型 | `/assets/export` |
| 资产详情 | 查看资产完整信息及关联端口列表 | `/assets/detail/` |
| 在线状态检测 | Nmap 并发检测资产在线状态,自动更新最后在线时间 | `/assets/refresh-online` |
| 主机监控 | 多客户端 CPU/内存/磁盘/网络/进程/硬件信息采集与展示 | `/monitor/dashboard` |
#### 2. 端口管理
| 功能 | 说明 | 路由 |
|------|------|------|
| 端口列表 | 按资产查看开放端口,显示漏洞数徽标 | `/ports/` |
| 端口扫描 | 两阶段扫描:快速发现 + 差异化详细扫描 | `/ports/scan` |
| 端口添加 | 手动添加端口记录 | `/ports/add` |
| 端口编辑 | 修改端口信息(服务/版本/状态) | `/ports/edit/` |
| 端口删除 | 删除端口及关联漏洞匹配记录 | `/ports/delete/` |
| 端口导出 | 导出端口数据为Excel | `/ports/export` |
| 端口详情 | 查看端口详细信息及关联漏洞 | `/ports/detail/` |
#### 3. 域名&证书
| 功能 | 说明 | 路由 |
|------|------|------|
| 域名列表 | 根域名管理,显示注册商/到期时间/子域名数 | `/domains/` |
| 域名添加 | 添加根域名,支持批量导入 | `/domains/add` |
| 域名编辑 | 修改域名属性(重要性/备注等) | `/domains/edit/` |
| 域名删除 | 删除域名及关联子域名/DNS记录 | `/domains/delete/` |
| 域名详情 | 查看域名完整信息及子域名列表 | `/domains/detail/` |
| 子域名扫描 | SubFinder被动收集 + 基础DNS枚举(260+前缀) | `/domains/scan` |
| 域名端口扫描 | 解析域名IP后扫描开放端口 | `/domains/port-scan` |
| DNS监控 | DNS记录基线对比,发现变更自动告警 | `/domains/dns-alerts` |
| DNS记录 | 查看域名DNS解析记录详情 | `/domains/dns/` |
| 证书列表 | 证书信息展示,到期状态高亮 | `/certificates/` |
| 证书添加 | 手动添加证书监控目标 | `/certificates/add` |
| 证书删除 | 删除证书记录 | `/certificates/delete/` |
| 证书扫描 | 获取SSL/TLS证书信息(颁发者/有效期/SAN) | `/certificates/scan` |
| 证书详情 | 查看证书完整信息及链式结构 | `/certificates/detail/` |
#### 4. 安全漏洞
| 功能 | 说明 | 路由 |
|------|------|------|
| 漏洞库 | CVE漏洞条目浏览,支持搜索/筛选/分页 | `/cve/cve-list` |
| 漏洞记录 | 资产端口与CVE匹配结果,状态跟踪 | `/cve/cve-matches` |
| 漏洞详情 | CVE条目详细信息(CVSS/厂商/版本范围/CPE) | `/cve/entry/` |
| 匹配详情 | 漏洞匹配记录详情(资产/端口/服务版本) | `/cve/match/` |
| NVD同步 | 增量同步(7天)/1月/3月/1年/全量同步,异步执行 | `/cve/cve-sync` |
| CNVD导入 | CSV格式导入CNVD漏洞数据 | `/settings/cve-import` |
| 漏洞匹配 | 端口服务版本与CVE受影响版本语义化比较 | `/cve/run-match` |
| 报告导出 | 导出活跃漏洞CSV/XLSX报告 | `/cve/export` |
#### 5. 风险评估
| 功能 | 说明 | 路由 |
|------|------|------|
| 风险仪表盘 | 整体风险概览、风险等级分布、TOP10高风险资产 | `/risk/` |
| 资产风险详情 | 单资产风险评分、风险构成分析、漏洞列表 | `/risk/asset/` |
| 风险评分API | 获取单个资产风险评分(JSON格式) | `/risk/api/score/` |
| 重新计算 | 批量重新计算所有资产风险评分 | `/risk/api/recalculate` |
| 风险报告导出 | 导出所有资产风险评分CSV报告 | `/risk/report` |
| HTML综合报告 | 生成可视化 HTML 安全评估报告(含图表/趋势) | `/risk/report/comprehensive` |
| 单资产HTML报告 | 生成单个资产的可视化 HTML 报告 | `/risk/report/asset/` |
| PDF报告 | 将 HTML 报告导出为 PDF | `/risk/report/.../pdf` |
**风险评分算法(0-100分):**
| 维度 | 权重 | 评分因素 |
|------|------|---------|
| 漏洞风险 | 40分 | CVE数量、严重程度、是否有公开Exploit |
| 资产价值 | 20分 | 资产重要性等级(核心/重要/一般/低) |
| 暴露面 | 20分 | 开放端口数量、高危端口(Telnet/RDP/SMB等) |
| 证书风险 | 10分 | 证书过期、自签名、弱签名算法 |
| 域名风险 | 10分 | 域名到期时间、DNS变更告警 |
**风险等级划分:**
| 评分范围 | 风险等级 | 颜色标识 |
|---------|---------|---------|
| 70-100 | 严重风险 | 🔴 红色 |
| 50-69 | 高危风险 | 🟠 橙色 |
| 30-49 | 中危风险 | 🟡 黄色 |
| 1-29 | 低危风险 | 🟢 绿色 |
| 0 | 安全 | 🔵 蓝色 |
#### 6. 任务调度
| 功能 | 说明 | 路由 |
|------|------|------|
| 任务列表 | 展示所有任务状态、调度周期、成功率 | `/tasks/` |
| 任务添加 | 创建任务,支持10种任务类型 | `/tasks/add` |
| 任务编辑 | 修改任务配置(调度/参数/启停) | `/tasks/edit/` |
| 任务删除 | 删除任务(自动备份配置) | `/tasks/delete/` |
| 手动执行 | 立即触发任务执行 | `/tasks/run/` |
| 任务日志 | 查看任务执行历史和详细日志 | `/tasks/logs` |
| 输出文件 | 管理扫描输出文件 | `/tasks/output` |
**支持的任务类型:**
| 任务类型 | 说明 | 调度示例 |
|---------|------|---------|
| Python脚本 | 执行指定Python脚本 | `daily 09:00` |
| 系统命令 | 执行系统Shell命令 | `10m` |
| IT资产IP扫描 | 扫描指定网段资产 | `60m` |
| IT资产端口扫描 | 扫描在线资产常见端口 | `12h` |
| IT资产全端口扫描 | 扫描在线资产全部端口 | `72h` |
| IT资产在线检测 | 检测资产在线状态 | `1h` |
| 域名子域名扫描 | 发现目标域名子域名 | `60m` |
| 域名端口扫描 | 扫描域名开放端口 | `60m` |
| CVE漏洞同步 | 从NVD同步漏洞数据 | `weekly Mon 02:00` |
| CVE漏洞匹配 | 匹配资产与漏洞 | `weekly Mon 03:00` |
#### 6. 系统管理
| 功能 | 说明 | 路由 |
|------|------|------|
| 平台配置 | 设置平台名称/Logo/页脚/浏览器标题 | `/settings/platform` |
| 数据库配置 | 查看数据库状态和表结构 | `/settings/database` |
| 用户管理 | 用户CRUD,角色权限(admin/user) | `/users/` |
| API Key 管理 | 创建/启用/禁用/删除 API Key,细粒度 scope 授权 | `/api-keys/` |
| 告警中心 | 告警事件列表、确认/解决/忽略、通知日志 | `/alerts/` |
| 告警规则 | 按模块/类型/级别配置通知渠道与接收人 | `/settings/alert-rules` |
| 通知偏好 | 用户个人通知渠道与关注模块配置 | `/settings/notification-preference` |
| 站内信 | 站内告警通知收件箱 | `/users/inbox` |
| 个人资料 | 查看/修改个人信息 | `/users/profile` |
| 修改密码 | SHA256加密存储 | `/users/change-password` |
#### 7. RESTful API
基于 Flask Blueprint 实现的 RESTful API,统一前缀 `/api/v1`。
**认证方式**
| Header 方式 | 示例 |
|-------------|------|
| `X-API-Key` | `X-API-Key: ss_xxxxxxxxxxxxxxxx` |
| `Authorization` | `Authorization: ApiKey ss_xxxxxxxxxxxxxxxx` |
**权限范围(Scope)**
| Scope | 说明 |
|-------|------|
| `admin` | 拥有所有权限 |
| `assets:read` / `assets:write` | 资产读取 / 写入 |
| `ports:read` / `ports:write` | 端口读取 / 写入 |
| `domains:read` / `domains:write` | 域名读取 / 写入 |
| `certificates:read` / `certificates:write` | 证书读取 / 写入 |
| `alerts:read` / `alerts:write` | 告警读取 / 写入 |
| `users:read` / `users:write` | 用户读取 / 写入 |
| `tasks:read` / `tasks:write` | 任务读取 / 写入 |
| `api_keys:read` / `api_keys:write` | API Key 管理 |
**核心端点**
| 模块 | 路径 | 说明 |
|------|------|------|
| 资产 | `GET /api/v1/assets` | 资产列表(分页) |
| 资产 | `POST /api/v1/assets` | 创建资产 |
| 资产 | `GET /api/v1/assets/` | 资产详情 |
| 端口 | `GET /api/v1/ports` | 端口列表 |
| 域名 | `GET /api/v1/domains` | 域名列表 |
| 证书 | `GET /api/v1/certificates` | 证书列表 |
| 告警 | `GET /api/v1/alerts` | 告警列表 |
| 用户 | `GET /api/v1/users` | 用户列表 |
| 任务 | `GET /api/v1/tasks` | 任务列表 |
| 任务 | `POST /api/v1/tasks//run` | 手动执行任务 |
完整 API 目录可在 Web 端 `系统管理 → API Key` 页面查看。
### 独立扫描工具(CLI)
| 工具 | 功能 | 核心特性 |
|------|------|---------|
| `scan-host.py` | 主机发现 | ARP+ICMP+Masscan 三模式、多线程、MAC 厂商识别、平台类型识别、Excel 对比 |
| `scan-port.py` | 端口扫描 | Masscan 预扫描 + 两阶段策略、分类 NSE 脚本、服务版本检测、Excel 对比 |
| `scan-subdomain.py` | 子域名发现 | SubFinder+DNS枚举、260+字典、批量扫描 |
| `scan-vuln.py` | 漏洞扫描 | Nmap NSE vuln脚本、fast/full/custom模式 |
| `scan-sqlmap.py` | SQL注入检测 | SQLMap集成、快速/深度扫描、批量URL |
---
## ✨ 功能特性
### ️ 资产管理系统 [web/]
基于 Flask 的 Web 管理平台,提供统一的资产、端口、域名、证书、漏洞可视化管理。
#### 核心模块
| 模块 | 功能 | 路由 |
|------|------|------|
| **资产管理** | 资产录入、编辑、删除、筛选、在线状态检测、主机监控 | `/assets/` `/monitor/dashboard` |
| **端口管理** | 端口扫描、版本检测、端口列表管理 | `/ports/` |
| **域名&证书** | 根域名管理、子域名发现、DNS监控、SSL证书监控 | `/domains/` `/certificates/` |
| **安全漏洞** | CVE漏洞库同步、版本匹配、漏洞跟踪、风险评估 | `/cve/` `/risk/` |
| **安全测试** | SQL注入、弱口令爆破、Web Fuzz、密码字典、代理管理 | `/sqlmap/` `/remote-test/` `/fuzz/` |
| **任务调度** | 定时任务配置、执行历史、手动触发 | `/tasks/` |
| **系统管理** | 平台配置、用户权限、API Key、告警中心、站内信 | `/settings/` `/users/` `/api-keys/` `/alerts/` |
| **RESTful API** | API Key认证、细粒度授权、多模块 CRUD | `/api/v1/` |
#### 登录界面
系统提供统一的登录入口,支持基于会话的身份认证与角色权限控制。

#### 首页仪表盘

#### 资产管理功能
- **资产列表管理**:支持 IP、MAC、厂商、设备名称、操作系统、所属部门、地理位置、标签等字段
- **高级筛选**:按 IP、MAC、类型、重要性、状态等多条件筛选
- **在线状态检测**:使用 nmap 快速检测主机是否在线,支持多线程并发刷新
- **端口关联**:每个资产关联开放端口列表,端口行显示漏洞数徽标
- **分页浏览**:支持自定义每页条数,保持页码状态
#### 资产管理界面

#### 端口管理功能
- **端口扫描**:支持 nmap 扫描(含服务版本检测 `-sV`)和 socket 探测两种模式
- **版本信息**:自动提取服务版本(如 Apache 2.4.49),用于 CVE 漏洞匹配
- **端口列表**:按资产查看开放端口,支持编辑和删除
#### 端口管理界面

#### 主机监控功能
- **多客户端接入**:基于 Safe-Scan 监控客户端周期性上报资产指标
- **实时指标**:CPU、内存、磁盘、网络速率、Top 进程
- **硬件信息**:CPU、内存、磁盘使用率、网卡、GPU 等静态信息采集
- **趋势图表**:支持最近 1/6/24 小时及 7 天历史趋势
#### 主机监控界面

#### 域名管理功能
- **根域名管理**:维护域名注册商、到期时间、重要性等属性
- **子域名发现**:SubFinder 被动收集 + 260+ 前缀 DNS 枚举
- **DNS 防劫持监控**:定期对比 DNS 记录基线,发现变更自动告警
- **域名端口扫描**:解析域名 IP 后执行端口扫描
#### 域名管理界面

#### 证书监控功能
- **证书信息获取**:自动采集 SSL/TLS 证书颁发者、有效期、SAN、签名算法等
- **到期提醒**:证书即将过期时自动高亮告警
- **批量扫描**:支持对域名或 IP 批量执行证书扫描
- **证书链分析**:展示完整的证书链与详情
#### 证书监控界面

#### 漏洞管理功能
- **NVD 数据同步**:从 NVD REST API 2.0 同步 CVE 漏洞数据(支持增量/全量/异步)
- **CNVD 数据导入**:支持 CSV 格式导入 CNVD 漏洞数据
- **版本匹配引擎**:将端口服务版本与 CVE 受影响版本范围进行语义化比较
- **漏洞跟踪**:支持标记「已修复」/「误报」,填写修复备注
- **报告导出**:导出活跃漏洞 CSV 报告
#### 风险评估功能
- **资产风险评分**:综合漏洞、资产价值、暴露面、证书、域名五维评分
- **风险仪表盘**:整体风险概览、风险等级分布、TOP10 高风险资产
- **单资产风险详情**:风险构成分析与关联漏洞列表
- **风险报告导出**:导出 CSV 格式风险评分报告
- **HTML 可视化报告**:生成包含 ECharts 图表的独立 HTML 报告(风险分布、漏洞柱状图、趋势折线图、TOP20 资产表)
- **PDF 报告导出**:基于 Playwright + Chromium 渲染 HTML 后导出 PDF,支持中文字体
- **风险评分历史**:每次重新计算时保存 `RiskScore` 历史,用于趋势分析
#### 风险评估界面

#### 告警中心功能
- **多渠道告警**:邮件、Webhook(钉钉/企业微信/飞书/通用 JSON)、短信、站内信
- **告警规则**:按 source_module / source_type / severity 配置生效时间、抑制窗口、聚合周期
- **用户通知偏好**:每个用户可配置接收渠道、关注模块、最小级别
- **告警聚合**:批量离线资产聚合成一条通知,相同资产/模块告警在 N 分钟内只发一次
- **告警归档清理**:支持自动归档已解决/已忽略告警,定期清理过期数据
#### 安全测试功能
- **SQL 注入**:集成 SQLMap,支持快速扫描与深度扫描模式
- **弱口令爆破**:支持 SSH、RDP、MySQL、Redis 等多协议弱口令检测
- **密码字典**:内置常用用户名/密码字典,支持自定义扩展
- **代理管理**:配置 HTTP/SOCKS5 代理,支持扫描流量转发
#### SQL 注入界面

#### 弱口令爆破界面

#### 任务调度功能
- **多种周期配置**:支持秒、分、时、天、周、月等多种调度周期
- **丰富任务类型**:Python 脚本、系统命令、资产扫描、CVE 同步/匹配等
- **执行历史**:记录任务执行日志、成功率、上下次执行时间
- **输出文件管理**:统一管理扫描产生的输出文件
#### 任务调度界面

#### 系统管理功能
- **平台配置**:设置平台名称、Logo、页脚、浏览器标题
- **数据库配置**:查看数据库状态、表结构与备份信息
- **用户管理**:管理员/普通用户 CRUD 与角色权限控制
- **API Key 管理**:创建/启用/禁用/删除 API Key,按 scope 细粒度授权
- **告警中心**:告警事件确认/解决/忽略、通知日志查看
- **告警规则**:按模块/类型/级别配置通知渠道与接收人
- **站内信**:统一站内告警通知收件箱
- **日志审计**:记录登录日志与操作日志,支持追溯
#### 系统管理界面

### 🖥️ Safe-Scan 监控客户端 [monitor-agent/]
独立运行的跨平台(Windows / Linux)监控客户端,安装后周期性采集本机指标并上报到 Web 服务端。
#### 监控客户端功能
- **默认自动启动**:打开客户端后自动启动监控代理,无需手动点击
- **实时状态标识**:运行状态标签为绿色,停止时为红色
- **一键启停**:启动按钮为绿色、停止按钮为红色,直观提醒当前可操作项
- **指标采集**:CPU、内存、磁盘、网络速率、TOP 进程、硬件信息
- **开机自启**:支持 Windows 与 Linux 开机自动启动
- **开机隐藏**:设置开机自启后,下次启动自动隐藏主界面到托盘(桌面环境)或以无界面后台模式运行(服务器)
- **托盘运行**:可最小化到系统托盘,不占用任务栏
- **Linux 支持**:提供 x86_64 / aarch64 两个架构的预编译二进制,可通过 GitHub Release 直接下载
#### 监控客户端界面

#### 下载 Linux 客户端
每次推送 `v*` 标签后,GitHub Actions 会自动编译并发布到 Release:
- [SafeScanMonitor-linux-x86_64](https://github.com//safe-scan/releases/latest/download/SafeScanMonitor-linux-x86_64)
- [SafeScanMonitor-linux-aarch64](https://github.com//safe-scan/releases/latest/download/SafeScanMonitor-linux-aarch64)
> 请将下载链接中的 `` 替换为实际仓库所属组织/用户名。
下载后赋予执行权限即可运行:
```bash
chmod +x SafeScanMonitor-linux-x86_64
./SafeScanMonitor-linux-x86_64 --tray
```
---
### 主机扫描 [scan-host.py]
- **多种目标输入格式**:单个 IP、CIDR 网段(如 `192.168.1.0/24`)、IP 范围(如 `192.168.1.1-192.168.1.100`)
- **ARP + ICMP + Masscan 三模式扫描**:
- ARP:局域网内最快最准
- ICMP ping:跨网段兼容
- Masscan:高速主机发现,失败自动回退到 Nmap/ICMP
- **平台类型自动识别**:根据操作系统/TTL 识别 `windows / linux / mac / network / other`
- **本机 IP 自动识别与补录**:即使不在扫描范围内,也会把本机加进结果
- **MAC 地址自动识别**:OUI 厂商查询,跨网段时显示 N/A
- **反向 DNS 解析**:获取主机名
- **多线程并行扫描**:每个网段一个线程,互不阻塞
- **Excel 自动对比**:与上一次扫描结果对比
- 🟡 **新发现设备** → 整行黄色
- 🔴 **MAC / 厂商 / 主机名 / 操作系统 / 平台类型 发生变化** → 对应单元格红色
---
### 🔍 端口扫描 [scan-port.py]
- **Masscan 预扫描 + 两阶段扫描策略**:
- 第一阶段:Masscan 快速端口发现,无 Masscan 时回退到 Nmap/socket
- 第二阶段:差异化详细扫描(根据端口类型选择 NSE 脚本)
- **端口分类差异化扫描**:针对 web、database、remote、mail、fileshare、dns、vuln 等类别使用不同脚本
- **服务版本检测**:支持获取中间件产品关键字和版本号(如 Apache-Coyote/1.1)
- **多线程并发**:默认并发扫描,速度快
- **从主机扫描结果自动导入目标**:可直接使用 `scan-host-result.xlsx` 作为目标
- **Excel 自动对比**:与上一次扫描结果对比
- 🟡 **新开放端口** → 整行黄色
- 🔴 **状态 / 服务 / MAC 发生变化** → 对应单元格红色
---
### 🌐 子域名发现 [scan-subdomain.py]
- **双模式支持**:
- SubFinder被动收集(30+数据源,需要安装SubFinder)
- 基础DNS枚举(内置260+常用子域名前缀)
- **批量扫描**:支持从文件读取域名列表
- **自定义字典**:支持加载自定义子域名字典
- **多线程扫描**:默认10线程并发
- **多格式导出**:支持Excel和文本格式输出
---
### 漏洞扫描 [scan-vuln.py]
- **三种扫描模式**:
- fast(快速扫描):基础漏洞检测
- full(全量扫描):深度漏洞检测
- custom(自定义):用户指定参数
- **Nmap NSE脚本支持**:使用vuln类别脚本进行漏洞检测
- **端口范围扫描**:支持指定端口范围
---
### 💉 SQL注入检测 [scan-sqlmap.py]
- **集成SQLMap**:利用SQLMap进行自动化SQL注入检测
- **快速扫描模式**:60秒超时,Level 1检测
- **深度扫描模式**:可配置Level/Risk级别
- **批量扫描**:支持从文件读取URL列表
---
### SSL证书监控 [web/certificates/]
- **证书信息获取**:自动获取 SSL/TLS 证书的颁发者、有效期、SAN、签名算法等
- **过期提醒**:证书即将过期时自动告警
- **证书链分析**:显示完整的证书链信息
---
### 🛡️ CVE漏洞库管理 [web/cve/]
#### 数据同步
| 功能 | 说明 |
|------|------|
| **NVD 增量同步** | 获取最近 7 天的新漏洞(快速) |
| **NVD 全量同步** | 获取 2002 年至今所有 CVE 数据(约 25 万条,异步后台执行) |
| **CNVD 导入** | 上传 CSV 文件导入 CNVD 漏洞数据 |
#### 版本匹配引擎
- **服务名标准化**:自动映射扫描器输出的服务名到 CVE 产品名(如 `ssh` → `openssh`)
- **语义化版本比较**:支持 `>=`、`>`、`<=`、`<` 版本范围匹配
- **三种匹配模式**:精确匹配、模糊匹配、版本范围匹配
#### 漏洞跟踪
- **状态管理**:active(活跃)/ resolved(已修复)/ false_positive(误报)
- **修复备注**:标记状态时可填写修复说明
- **报告导出**:导出活跃漏洞 CSV 报告
#### CVE漏洞管理界面

---
### ⏰ 任务调度器 [task/task_scheduler.py]
- **多种周期配置**:秒、分钟、小时、天、周、月等多种调度周期
- **任务类型支持**:
- Python 脚本执行
- 系统命令执行
- IT资产端口扫描(内置)
- CVE漏洞同步(内置)
- CVE漏洞匹配(内置)
- **持久化状态**:记录任务执行历史、成功率、上下次执行时间
- **日志记录**:自动记录任务执行日志到 `task/logs/` 目录
- **后台运行**:支持后台启动、停止,方便长期运行
- **Web管理界面**:通过 Web 界面配置和管理任务
---
### 📊 Excel 对比工具(独立脚本)
- **主机扫描对比** (`scan-host-excel-compare.py`):对比 `scan-host-result.xlsx` 中两个 sheet 的差异
- **端口扫描对比** (`scan-port-excel-compare.py`):对比 `scan-port-result.xlsx` 中两个 sheet 的差异
> 💡 注:对比功能已经**集成**到两个主程序中,扫描完成后自动执行。独立脚本主要用于事后手动对比。
---
### 📦 打包工具 [build_exe.py]
- **一键打包**:将所有 Python 脚本打包为独立的 exe 文件
- **批量打包**:支持打包单个或所有程序
---
## 📁 文件结构
```
safe-scan/
├── scan-host.py # 主机扫描程序
├── scan-port.py # 端口扫描程序
├── scan-subdomain.py # 子域名发现程序
├── scan-vuln.py # 漏洞扫描程序
├── scan-sqlmap.py # SQL注入检测程序
├── web/tasks/scan-online.py # 在线状态检测程序
├── scan-host-excel-compare.py # 主机扫描结果对比工具
├── scan-port-excel-compare.py # 端口扫描结果对比工具
├── scan-log.py # 扫描日志公共模块(原 scan_utils.py)
├── nmap_scanner.py # Nmap扫描器模块(共享)
├── config.ini # 主机扫描配置文件(IP 段列表)
├── domains.ini # 子域名扫描配置文件(域名列表)
├── hosts.ini # 主机扫描配置文件(备用)
├── build_exe.py # PyInstaller 打包脚本
├── build_exe.bat # 打包脚本(CMD)
├── oui/
├── tools/
│ ├── nmap-7.99-setup.exe # Nmap 安装包
│ └── subfinder.exe # SubFinder 子域名发现工具
├── monitor-agent/ # 监控客户端
├── task/
├── web/ # 资产管理系统(Flask Web应用)
│ ├── run.py # 应用启动入口
│ ├── app.py # Flask 应用工厂
│ ├── utils.py # 公共工具函数
│ ├── remote_utils.py # 远程工具函数
│ ├── requirements.txt # Python 依赖列表
│ ├── .env # 环境变量配置
│ ├── database/ # 数据库模块
│ ├── home/ # 首页仪表盘
│ ├── auth/ # 认证模块
│ ├── users/ # 用户管理
│ ├── api/ # RESTful API 与 API Key 管理
│ ├── alerts/ # 告警中心
│ ├── assets/ # 资产管理模块
│ ├── ports/ # 端口管理模块
│ ├── monitor/ # 主机监控模块
│ ├── domains/ # 域名管理模块
│ ├── certificates/ # 证书监控模块
│ ├── cve/ # CVE漏洞管理模块
│ ├── risk/ # 风险评估与报告生成模块
│ ├── services/ # 业务服务(告警服务、通知服务)
│ ├── sqlmap/ # SQL注入检测模块
│ ├── fuzz/ # Web应用Fuzz测试模块
│ ├── remote_test/ # 弱口令爆破模块
│ ├── web_shell/ # WebShell / 远程终端模块
│ ├── settings/ # 系统管理模块
│ ├── tasks/ # 任务调度模块
│ ├── model/ # 数据模型管理模块
│ ├── templates/ # Jinja2模板文件
│ │ ├── macros/ # 宏模板
│ │ ├── api/ # API Key 管理模板
│ │ ├── alerts/ # 告警中心模板
│ │ ├── assets/ # 资产管理模板
│ │ ├── ports/ # 端口管理模板
│ │ ├── monitor/ # 监控模板
│ │ ├── domains/ # 域名管理模板
│ │ ├── certificates/ # 证书管理模板
│ │ ├── cve/ # CVE管理模板
│ │ ├── risk/ # 风险评估与报告模板
│ │ ├── settings/ # 系统管理模板
│ │ ├── sqlmap/ # SQL注入模板
│ │ ├── fuzz/ # Fuzz测试模板
│ │ ├── remote_test/ # 弱口令爆破模板
│ │ ├── tasks/ # 任务调度模板
│ │ ├── users/ # 用户管理模板
│ │ └── model/ # 数据模型模板
│ └── static/ # 静态资源文件
│ ├── css/ # 样式文件
│ ├── js/ # JavaScript 文件
│ └── vendor/ # 第三方库(ECharts 等)
├── reports/ # 生成的 HTML/PDF 报告(运行期自动生成)
├── docs/ # 文档与截图
└── README.md
```
---
## 🚀 安装依赖
```bash
# 基础依赖
pip install scapy openpyxl
# 可选依赖
pip install python-nmap # 端口扫描版本检测
pip install sublist3r # 子域名发现高级模式
# 资产管理系统依赖
cd web
pip install -r requirements.txt
```
**PDF 报告依赖(可选)**
HTML 报告转 PDF 默认使用 Playwright + Chromium。如需此功能,请额外安装:
```bash
pip install playwright
playwright install chromium
```
> **Windows 用户注意**:
> 1. 若提示缺少 WinPcap / Npcap,建议安装 [Npcap](https://nmap.org/npcap/)(Wireshark 通常已自带)
> 2. 端口扫描需要安装 nmap.exe 并加入 PATH
> 3. 子域名发现推荐安装 [SubFinder](https://github.com/projectdiscovery/subfinder)
---
## 📖 使用说明
### 0️⃣ 资产管理系统
#### 运行方式
```bash
# 进入 web 目录
cd web
# 运行 Flask 应用
python app.py
```
#### 访问地址
- 默认访问地址:http://localhost:80
- 默认管理员账号:admin / admin123
#### 功能模块
| 功能 | 说明 |
|------|------|
| 资产管理 | 资产录入、编辑、删除、筛选、在线检测、主机监控 |
| 端口管理 | 端口扫描、版本检测、端口列表管理 |
| 域名&证书 | 根域名管理、子域名发现、DNS监控、SSL证书监控 |
| 安全漏洞 | CVE漏洞库同步、版本匹配、漏洞跟踪、风险评估 |
| 安全测试 | SQL注入、弱口令爆破、Web Fuzz、密码字典、代理管理 |
| 任务调度 | 定时任务配置、执行历史、手动触发 |
| 系统管理 | 平台配置、用户权限、API Key、告警中心、站内信 |
| RESTful API | API Key认证、细粒度授权、多模块数据接口 |
---
### 1️⃣ 主机扫描
#### 配置文件格式 (`config.ini`)
```ini
# 每行一个 IP 段,支持 CIDR、IP 范围、单个 IP
# 注释行以 # 或 ; 开头
192.168.1.0/24
192.168.3.0/24
192.168.100.1-192.168.100.50
10.0.0.1
```
#### 运行方式
**交互式运行:**
```bash
python scan-host.py
```
**命令行参数模式:**
```bash
# 使用默认配置文件
python scan-host.py
# 指定自定义配置文件
python scan-host.py -h my_hosts.ini
# 直接指定扫描目标(单个 IP 段)
python scan-host.py -i 192.168.1.0/24
# 指定多个扫描目标
python scan-host.py -i 192.168.1.0/24 -i 10.0.0.1-10.0.0.50
# 指定输出文件名
python scan-host.py -o my_result.xlsx
# 仅预览配置(不执行扫描)
python scan-host.py --dry-run
# 组合使用
python scan-host.py -i 192.168.31.0/24 -o custom_result.xlsx
```
#### 命令行参数
| 参数 | 说明 | 默认值 |
|------|------|--------|
| `-h, --hosts` | IP 地址配置文件路径 | `hosts.ini` |
| `-i, --ip` | 直接指定扫描目标 IP 段(支持多次使用) | — |
| `-o, --output` | 输出 Excel 文件名 | `host-result.xlsx` |
| `--dry-run` | 仅显示配置,不执行扫描 | 关闭 |
| `--detect-os` | 启用 Nmap 操作系统检测 | 关闭 |
| `--force-icmp` | 强制使用 ICMP ping 扫描(跳过 masscan/Nmap) | 关闭 |
| `--no-nmap` | 禁用 Nmap,强制使用系统 ping | 关闭 |
| `--no-masscan` | 禁用 masscan 加速,仅使用 Nmap/ICMP | 关闭 |
| `--masscan-rate` | masscan 发包速率(pps) | 1000 |
| `--masscan-wait` | masscan 等待响应秒数 | 1 |
| `--masscan-timeout` | masscan 整体超时秒数 | 600 |
#### 支持的 IP 段格式
| 格式 | 示例 | 说明 |
|------|------|------|
| CIDR 网段 | `192.168.1.0/24` | 扫描整个网段 |
| IP 范围 | `192.168.1.1-192.168.1.100` | 扫描指定范围 |
| 单个 IP | `192.168.1.1` | 扫描单个主机 |
---
### 2️⃣ 端口扫描
#### 运行方式
**交互式运行:**
```bash
python scan-port.py
```
**命令行参数模式:**
```bash
# 从主机扫描结果读取目标,扫描常用端口
python scan-port.py
# 从主机扫描结果读取目标,扫描指定端口范围
python scan-port.py -p 1-1000
# 指定自定义 Excel 文件
python scan-port.py -e my-devices.xlsx -p 80,443,8080
# 手动指定 IP,扫描常用端口
python scan-port.py -i 192.168.1.1
# 手动指定 IP,全端口扫描
python scan-port.py -i 192.168.1.100 -p all
# 指定输出文件名
python scan-port.py -i 192.168.1.1 -p 1-1000 -o custom-output.xlsx
# 从文件读取大量目标 IP
python scan-port.py -f ips.txt -p 1-1000
```
#### 命令行参数
| 参数 | 说明 | 默认值 |
|------|------|--------|
| `-i, --ip` | 目标 IP(可多次指定以扫描多个 IP,否则从 Excel 读取) | — |
| `-e, --excel` | 从指定 Excel 文件读取设备列表 | `output/host-result.xlsx` |
| `-o, --output` | 输出 Excel 文件名 | `port-result.xlsx` 或 `scan-port-{IP}.xlsx` |
| `-p, --port` | 端口范围或列表(`all`=全端口 1-65535;格式: 1-1000 或 80,443,8080) | 全端口 |
| `-f, --ip-file` | 从文本文件读取目标 IP 列表(每行一个 IP,`#` 开头为注释) | — |
| `--no-masscan` | 禁用 masscan 快速预扫描,强制使用 Nmap/socket | 关闭 |
| `--masscan-rate` | masscan 发包速率(pps),覆盖 config.ini 中的配置 | — |
#### 端口分类扫描
| 类别 | 端口 | 扫描脚本 |
|------|------|----------|
| web | 80, 443, 8080, 8443... | http-title, http-headers, ssl-cert |
| database | 3306, 5432, 1433, 27017... | mysql-info, redis-info, mongodb-databases |
| remote | 22, 23, 3389, 5900 | ssh-auth-methods, rdp-enum-encryption |
| mail | 25, 110, 143, 465 | smtp-commands, pop3-capabilities |
| fileshare | 139, 445, 21 | smb-os-discovery, ftp-anon |
| dns | 53, 853 | dns-nsid |
| vuln | 135, 137, 138, 514 | vuln |
---
### 3️⃣ 子域名发现
#### 配置文件格式 (`domains.ini`)
```ini
# 每行一个域名,注释行以 # 开头
example.com
baidu.com
# test.example.com
```
#### 运行方式
```bash
# 使用默认配置文件
python scan-subdomain.py
# 指定单个域名
python scan-subdomain.py -d example.com
# 使用基础DNS枚举模式
python scan-subdomain.py -d example.com --basic
# 使用自定义字典
python scan-subdomain.py -d example.com -w subdomains.txt
# 批量扫描
python scan-subdomain.py -f domains.txt -o results.xlsx
# 文本输出格式
python scan-subdomain.py -d example.com --txt
```
#### 命令行参数
| 参数 | 说明 | 默认值 |
|------|------|--------|
| `-d, --domain` | 目标域名 | — |
| `-f, --file` | 从文件读取域名列表 | `domains.ini` |
| `-w, --wordlist` | 自定义子域名字典 | 内置字典 |
| `-t, --threads` | 并发线程数 | 10 |
| `-o, --output` | 输出文件名 | 自动命名 |
| `--basic` | 使用基础DNS枚举 | 关闭 |
| `--txt` | 输出为文本格式 | 关闭 |
---
### 4️⃣ 漏洞扫描
#### 运行方式
```bash
# 快速扫描(推荐)
python scan-vuln.py -t 192.168.1.1 -m fast
# 全量扫描
python scan-vuln.py -t 192.168.1.0/24 -m full
# 指定端口范围
python scan-vuln.py -t 192.168.1.1 -p 1-1000
# 输出结果
python scan-vuln.py -t 192.168.1.1 -o vuln-result.xlsx
```
#### 命令行参数
| 参数 | 说明 | 默认值 |
|------|------|--------|
| `-t, --target` | 目标IP或网段 | — |
| `-p, --ports` | 端口范围 | 1-65535 |
| `-m, --mode` | 扫描模式:fast/full/custom | fast |
| `-o, --output` | 输出文件名 | `vuln-result.xlsx` |
---
### 5️⃣ SQL注入检测
#### 运行方式
```bash
# 快速扫描
python scan-sqlmap.py -u "http://target.com/page?id=1" --quick
# 完整扫描
python scan-sqlmap.py -u "http://target.com/page?id=1" --batch --level=3
# 批量扫描
python scan-sqlmap.py -f urls.txt -o results.xlsx
# 文本输出
python scan-sqlmap.py -u "http://target.com/page?id=1" --txt
```
#### 命令行参数
| 参数 | 说明 | 默认值 |
|------|------|--------|
| `-u, --url` | 目标URL | — |
| `-f, --file` | 从文件读取URL列表 | — |
| `-o, --output` | 输出文件名 | `sqlmap-results.xlsx` |
| `--quick` | 快速扫描模式 | 关闭 |
| `--batch` | 批处理模式(无需交互) | 关闭 |
| `--level` | 检测级别(1-5) | 1 |
| `--txt` | 输出为文本格式 | 关闭 |
---
### 6️ 任务调度器
#### 配置文件格式 (`task/task_config.ini`)
```ini
[task:scan-host-daily]
type = python
schedule = daily 09:00
command = scan-host.py
enabled = true
description = 每天早上 9 点执行主机扫描
[task:scan-port-10m]
type = python
schedule = 10m
command = scan-port.py -p 1-1000
enabled = true
description = 每 10 分钟扫描危险端口
[task:online-check-1h]
type = python
schedule = 1h
command = web/tasks/scan-online.py
enabled = true
description = 每小时检测一次资产在线状态
[task:asset-port-scan]
type = asset_port_scan
schedule = daily 02:00
enabled = true
description = 每天凌晨 2 点扫描在线资产的端口
[task:cve-sync]
type = cve_sync
schedule = daily 03:00
enabled = true
description = 每天凌晨 3 点同步 NVD 漏洞库
[task:cve-match]
type = cve_match
schedule = daily 04:00
enabled = true
description = 每天凌晨 4 点执行漏洞匹配
```
#### 调度周期格式
| 格式 | 说明 | 示例 |
|------|------|------|
| `Xs` | 每 X 秒执行 | `10s` |
| `Xm` | 每 X 分钟执行 | `5m` |
| `Xh` | 每 X 小时执行 | `2h` |
| `daily HH:MM` | 每天指定时间执行 | `daily 09:00` |
| `weekly DDD HH:MM` | 每周指定星期和时间执行 | `weekly Mon 10:00` |
| `monthly D HH:MM` | 每月指定日期和时间执行 | `monthly 1 08:00` |
#### 运行方式
```bash
# 列出所有任务
python task/task_scheduler.py --list
# 前台运行(调试模式)
python task/task_scheduler.py --foreground
# 后台启动
python task/task_scheduler.py --start
# 停止后台调度器
python task/task_scheduler.py --stop
# 手动执行指定任务
python task/task_scheduler.py --run scan-host-daily
# 使用自定义配置文件
python task/task_scheduler.py -c custom.ini --start
```
---
### 7️⃣ 打包成 EXE
```bash
# 打包所有程序
python build_exe.py
# 打包单个程序
python build_exe.py scan-host
python build_exe.py scan-port
python build_exe.py scan-subdomain
python build_exe.py scan-vuln
python build_exe.py scan-sqlmap
python build_exe.py task-scheduler
# 清理构建文件
python build_exe.py clean
# 使用 PowerShell 打包(推荐)
.\build_exe.ps1
```
#### 打包后的使用
```bash
# 运行打包后的程序
dist/scan-host.exe -i 192.168.1.0/24
dist/scan-port.exe -i 192.168.1.1 -p 1-1000
dist/scan-subdomain.exe -d example.com
dist/scan-vuln.exe -t 192.168.1.1 -m fast
dist/scan-sqlmap.exe -u "http://target.com/page?id=1" --quick
dist/task-scheduler.exe -c task_config.ini --start
```
---
## 📋 Excel 输出格式
### 主机扫描结果 (scan-host-result.xlsx)
| 列 | 说明 | 对比标记 |
|---|------|---------|
| 扫描时间 | 设备被发现的时间戳 | — |
| IP地址 | 设备 IP(主键) | — |
| MAC地址 | 设备 MAC 地址 | 变化 → 🔴 红色 |
| 设备类型(厂商) | OUI 识别出的厂商 | 变化 → 🔴 红色 |
| 主机名 | 反向 DNS 解析结果 | 变化 → 🔴 红色 |
| 操作系统 | 识别到的操作系统 | 变化 → 🔴 红色 |
| 平台类型 | 自动识别平台:windows/linux/mac/network/other | 变化 → 🔴 红色 |
**新发现的设备** → 整行 🟡 黄色高亮
### 端口扫描结果 (scan-port-result.xlsx)
| 列 | 说明 | 对比标记 |
|---|------|---------|
| 扫描时间 | 扫描完成时间 | — |
| IP地址 | 目标设备 IP | — |
| MAC地址 | 设备 MAC 地址 | 变化 → 🔴 红色 |
| 设备类型(厂商) | OUI 识别出的厂商 | 变化 → 🔴 红色 |
| 主机名 | 反向 DNS 解析结果 | 变化 → 红色 |
| 端口 | 目标端口号 | — |
| 状态 | open / closed | 变化 → 🔴 红色 |
| 服务 | 端口对应服务名 | 变化 → 🔴 红色 |
| 产品版本 | 服务版本信息 | 变化 → 🔴 红色 |
**新发现的端口** → 整行 黄色高亮
### 子域名扫描结果 (subdomain-*.xlsx)
| 列 | 说明 |
|---|------|
| 扫描时间 | 扫描完成时间 |
| 子域名 | 发现的子域名 |
| IP地址 | 解析到的IP地址 |
---
## ️ 数据库模型
### 核心实体
| 模型 | 说明 | 关键字段 |
|------|------|----------|
| **User** | 用户管理 | username, password_hash, role, last_login |
| **SystemConfig** | 系统配置 | key, value |
| **Asset** | 资产 | ip, mac, vendor, device_name, os, status, importance |
| **Port** | 资产端口 | asset_id, port_number, protocol, service, version, state |
| **Domain** | 根域名 | domain, registrar, expiry_date |
| **Subdomain** | 子域名 | domain_id, subdomain, ip, source |
| **DnsRecord** | DNS记录基线 | domain_id, record_type, record_value |
| **DnsAlert** | DNS变更告警 | domain_id, change_type, old_value, new_value |
| **Certificate** | SSL证书 | domain, issuer, not_before, not_after, san |
| **CveEntry** | CVE漏洞条目 | cve_id, title, severity, cvss_score, affected_product |
| **CveMatch** | 漏洞匹配记录 | cve_id, asset_id, port_id, matched_version, status |
| **CveSyncLog** | CVE同步日志 | source, status, total_fetched, total_new |
| **RiskScore** | 风险评分历史 | asset_id, score, level, breakdown, calculated_at |
| **AlertEvent** | 告警事件 | source_module, source_type, severity, status, title |
| **AlertRule** | 告警规则 | source_module, source_type, severity, channels, window_minutes |
| **UserNotificationPreference** | 用户通知偏好 | user_id, channels, modules, min_severity |
| **UserAlert** | 用户站内信 | user_id, alert_event_id, is_read |
| **NotificationLog** | 通知发送日志 | channel, recipient, status, response |
| **ApiKey** | API Key | key_hash, scopes, enabled, last_used_at |
---
## ⚠️ 注意事项
1. **管理员权限**:ARP 扫描需要管理员/root 权限;无权限时自动回退到 ICMP ping 扫描
2. **WinPcap / Npcap**:Windows 下推荐安装 Npcap(Wireshark 自带)
3. **Nmap安装**:端口扫描和漏洞扫描需要安装 nmap.exe 并加入 PATH
4. **全端口扫描耗时**:全端口扫描可能需要较长时间(每个 IP 约数分钟)
5. **防火墙影响**:目标设备的防火墙可能阻止 ARP/ICMP 响应,导致漏检或误判
6. **跨网段 MAC**:跨网段扫描可能无法获取 MAC 地址(显示为 N/A)
7. **Sheet 数量**:Excel 文件会随时间累积大量 sheet,建议定期归档旧文件
8. **配置文件注释**:配置文件中 `#` 和 `;` 开头的行都会被当作注释处理
9. **合法授权**:扫描目标网络前请确保获得合法授权
10. **SQL注入检测**:SQLMap扫描可能对目标造成影响,请谨慎使用
11. **NVD API 限制**:NVD API 2.0 单次查询时间范围不能超过 120 天,全量同步会自动分段
12. **异步同步**:CVE 全量同步在后台线程执行,页面可实时查看进度
---
## 📋 待实现功能规划
### 高优先级 - 核心安全功能
| 功能 | 描述 | 状态 |
|------|------|------|
| **合规性检查** | 对照等保2.0、PCI-DSS等标准进行合规检测,生成检查报告 | ⏳ 待实现 |
| **漏洞POC验证** | 自动验证高危漏洞的可利用性,减少误报 | ⏳ 待实现 |
### 🟡 中优先级 - 增强功能
| 功能 | 描述 | 状态 |
|------|------|------|
| **RESTful API** | 提供API接口供外部系统调用,支持集成到SIEM/SOAR平台 | ✅ 已完成 |
| **HTML报告生成** | 生成可视化的安全评估报告,包含图表和风险趋势分析 | ✅ 已完成 |
| **告警中心** | 多渠道告警、告警规则、用户通知偏好、站内信 | ✅ 已完成 |
### 📅 实施路线图
```
阶段1(已完成) 阶段2(已完成) 阶段3(进行中)
───────────────── ───────────────── ────────────────
• 资产管理系统 • SQL注入检测模块 • 合规性检查
• 端口管理 • 分布式扫描代理 • 漏洞POC验证
• 域名管理 • 监控客户端增强 • 更多报告模板
• 证书监控 • Web应用Fuzz测试 • 大屏可视化
• CVE漏洞库集成 • 漏洞修复方案管理
• 版本匹配引擎 • 子域名编辑/删除
• 任务调度增强 • 代理扫描支持
• 风险评估 • 告警通知
• 主机监控 • RESTful API
• • HTML/PDF报告生成
• • API Key管理
• • 告警中心
```
---
## 💡 扩展建议
- **完善 OUI 厂商数据库**:从 [IEEE OUI 官方列表](https://standards-oui.ieee.org/) 下载完整数据库
- **设备类型推断**:结合开放端口进一步分类设备类型(路由器、交换机、服务器等)
- **多线程优化**:进一步优化端口扫描的并发策略,平衡速度与准确性
- **分布式扫描**:支持多节点分布式扫描大型网络
- **NVD API Key**:申请 NVD API Key 可提升同步速率(从 5次/30秒 提升到 50次/30秒)
---
## 📜 License
本项目采用 [木兰宽松许可证,第2版](LICENSE)(Mulan Permissive Software License, Version 2)开源授权。
- 允许自由复制、使用、修改及分发
- 不提供商标许可
- 详见项目根目录 [LICENSE](LICENSE) 文件