# 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/` | #### 登录界面 系统提供统一的登录入口,支持基于会话的身份认证与角色权限控制。 ![登录界面](docs/login.jpg) #### 首页仪表盘 ![首页仪表盘](docs/index.jpg) #### 资产管理功能 - **资产列表管理**:支持 IP、MAC、厂商、设备名称、操作系统、所属部门、地理位置、标签等字段 - **高级筛选**:按 IP、MAC、类型、重要性、状态等多条件筛选 - **在线状态检测**:使用 nmap 快速检测主机是否在线,支持多线程并发刷新 - **端口关联**:每个资产关联开放端口列表,端口行显示漏洞数徽标 - **分页浏览**:支持自定义每页条数,保持页码状态 #### 资产管理界面 ![IT资产管理](docs/assets.jpg) #### 端口管理功能 - **端口扫描**:支持 nmap 扫描(含服务版本检测 `-sV`)和 socket 探测两种模式 - **版本信息**:自动提取服务版本(如 Apache 2.4.49),用于 CVE 漏洞匹配 - **端口列表**:按资产查看开放端口,支持编辑和删除 #### 端口管理界面 ![端口管理](docs/ports.jpg) #### 主机监控功能 - **多客户端接入**:基于 Safe-Scan 监控客户端周期性上报资产指标 - **实时指标**:CPU、内存、磁盘、网络速率、Top 进程 - **硬件信息**:CPU、内存、磁盘使用率、网卡、GPU 等静态信息采集 - **趋势图表**:支持最近 1/6/24 小时及 7 天历史趋势 #### 主机监控界面 ![主机监控](docs/monitor.jpg) #### 域名管理功能 - **根域名管理**:维护域名注册商、到期时间、重要性等属性 - **子域名发现**:SubFinder 被动收集 + 260+ 前缀 DNS 枚举 - **DNS 防劫持监控**:定期对比 DNS 记录基线,发现变更自动告警 - **域名端口扫描**:解析域名 IP 后执行端口扫描 #### 域名管理界面 ![域名管理](docs/domains.jpg) #### 证书监控功能 - **证书信息获取**:自动采集 SSL/TLS 证书颁发者、有效期、SAN、签名算法等 - **到期提醒**:证书即将过期时自动高亮告警 - **批量扫描**:支持对域名或 IP 批量执行证书扫描 - **证书链分析**:展示完整的证书链与详情 #### 证书监控界面 ![证书监控](docs/certificates.jpg) #### 漏洞管理功能 - **NVD 数据同步**:从 NVD REST API 2.0 同步 CVE 漏洞数据(支持增量/全量/异步) - **CNVD 数据导入**:支持 CSV 格式导入 CNVD 漏洞数据 - **版本匹配引擎**:将端口服务版本与 CVE 受影响版本范围进行语义化比较 - **漏洞跟踪**:支持标记「已修复」/「误报」,填写修复备注 - **报告导出**:导出活跃漏洞 CSV 报告 #### 风险评估功能 - **资产风险评分**:综合漏洞、资产价值、暴露面、证书、域名五维评分 - **风险仪表盘**:整体风险概览、风险等级分布、TOP10 高风险资产 - **单资产风险详情**:风险构成分析与关联漏洞列表 - **风险报告导出**:导出 CSV 格式风险评分报告 - **HTML 可视化报告**:生成包含 ECharts 图表的独立 HTML 报告(风险分布、漏洞柱状图、趋势折线图、TOP20 资产表) - **PDF 报告导出**:基于 Playwright + Chromium 渲染 HTML 后导出 PDF,支持中文字体 - **风险评分历史**:每次重新计算时保存 `RiskScore` 历史,用于趋势分析 #### 风险评估界面 ![风险评估](docs/risk.jpg) #### 告警中心功能 - **多渠道告警**:邮件、Webhook(钉钉/企业微信/飞书/通用 JSON)、短信、站内信 - **告警规则**:按 source_module / source_type / severity 配置生效时间、抑制窗口、聚合周期 - **用户通知偏好**:每个用户可配置接收渠道、关注模块、最小级别 - **告警聚合**:批量离线资产聚合成一条通知,相同资产/模块告警在 N 分钟内只发一次 - **告警归档清理**:支持自动归档已解决/已忽略告警,定期清理过期数据 #### 安全测试功能 - **SQL 注入**:集成 SQLMap,支持快速扫描与深度扫描模式 - **弱口令爆破**:支持 SSH、RDP、MySQL、Redis 等多协议弱口令检测 - **密码字典**:内置常用用户名/密码字典,支持自定义扩展 - **代理管理**:配置 HTTP/SOCKS5 代理,支持扫描流量转发 #### SQL 注入界面 ![SQL注入](docs/sqlmap.jpg) #### 弱口令爆破界面 ![弱口令爆破](docs/remote-test.jpg) #### 任务调度功能 - **多种周期配置**:支持秒、分、时、天、周、月等多种调度周期 - **丰富任务类型**:Python 脚本、系统命令、资产扫描、CVE 同步/匹配等 - **执行历史**:记录任务执行日志、成功率、上下次执行时间 - **输出文件管理**:统一管理扫描产生的输出文件 #### 任务调度界面 ![任务调度](docs/tasks.jpg) #### 系统管理功能 - **平台配置**:设置平台名称、Logo、页脚、浏览器标题 - **数据库配置**:查看数据库状态、表结构与备份信息 - **用户管理**:管理员/普通用户 CRUD 与角色权限控制 - **API Key 管理**:创建/启用/禁用/删除 API Key,按 scope 细粒度授权 - **告警中心**:告警事件确认/解决/忽略、通知日志查看 - **告警规则**:按模块/类型/级别配置通知渠道与接收人 - **站内信**:统一站内告警通知收件箱 - **日志审计**:记录登录日志与操作日志,支持追溯 #### 系统管理界面 ![系统管理](docs/settings.jpg) ### 🖥️ Safe-Scan 监控客户端 [monitor-agent/] 独立运行的跨平台(Windows / Linux)监控客户端,安装后周期性采集本机指标并上报到 Web 服务端。 #### 监控客户端功能 - **默认自动启动**:打开客户端后自动启动监控代理,无需手动点击 - **实时状态标识**:运行状态标签为绿色,停止时为红色 - **一键启停**:启动按钮为绿色、停止按钮为红色,直观提醒当前可操作项 - **指标采集**:CPU、内存、磁盘、网络速率、TOP 进程、硬件信息 - **开机自启**:支持 Windows 与 Linux 开机自动启动 - **开机隐藏**:设置开机自启后,下次启动自动隐藏主界面到托盘(桌面环境)或以无界面后台模式运行(服务器) - **托盘运行**:可最小化到系统托盘,不占用任务栏 - **Linux 支持**:提供 x86_64 / aarch64 两个架构的预编译二进制,可通过 GitHub Release 直接下载 #### 监控客户端界面 ![监控客户端](docs/monitor-client.jpg) #### 下载 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漏洞管理界面 ![CVE漏洞管理](docs/cve.jpg) --- ### ⏰ 任务调度器 [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) 文件