czantoine/smap-ai-recon-center

GitHub: czantoine/smap-ai-recon-center

一个结合被动侦察引擎、本地大模型分析与 Grafana 可视化的轻量级安全威胁情报平台,用于实现攻击面可见性与 AI 辅助风险评估。

Stars: 1 | Forks: 0

License: MIT Stars Issues Last Commit Docker SQLite Ollama AI LinkedIn

Smap AI Recon Center

基于 Smap、SQLite、Grafana 和 Ollama 构建的 AI 驱动的被动网络侦察与威胁情报平台。

Grafana Dashboard Badge

## 概述 **Smap AI Recon Center** 是一个轻量级、容器化的平台,用于**被动攻击面可见性**、**威胁情报探索**和**AI 辅助的风险分析**。 它结合了: - [**Smap**](https://github.com/s0md3v/Smap),一个基于 **Shodan InternetDB** 构建的被动式 Nmap 替代方案 - 一个基于 Python 的 **SQLite 导入器和数据富化 pipeline** - 一个用于可视化和运营分析的 **Grafana 仪表板** - 一个由 **Ollama** 提供支持的可选**本地 AI 分析层** 该平台将被动侦察输出转化为结构化的安全数据集,并进行了以下富化: - **CVSS 评分** - **严重性分类** - **基于主机的风险评分** - **基于 CPE 的技术指纹识别** - **主机自动打标签** - **SSL/TLS 元数据提取** - **地理信息富化** - **跨扫描的漂移检测** - **AI 生成的执行摘要和主机级别的威胁评估** 最终的结果是一个紧凑但强大的侦察和情报技术栈,适用于: - 安全监控 - 暴露面审查 - 资产可见性 - 轻量级 SOC 工作流 - 红队侦察跟踪 - 教育、实验室和演示 ![grafana_dashboard_smap](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/47ce1c49d4023821.png) ## 核心功能 ### 被动侦察与富化 - 使用 **Shodan InternetDB** 进行被动主机和服务发现 - 支持 **JSON、JSONL、XML 和 nmap 风格输出**的导入 pipeline - **CVSS 标准化**和严重性映射 - **基于主机的风险计算** - 从 CPE 字符串中**提取技术** - **自动为主机打标签** - **地理和 ASN 信息富化** - **SSL/TLS 元数据提取** - 防止重复并支持增量 schema 迁移 ### AI 辅助威胁分析 - 通过 **Ollama** 实现完全本地的 **基于 LLM 的分析** - **基于主机的 AI 风险评估** - **扫描级别的执行摘要** - **结构化的建议和修复提示** - AI 输出直接存储在 **SQLite** 中 - 不依赖外部的 AI SaaS 平台 ### 可视化与运营 - Grafana 仪表板 [(ID: **24085**)](https://grafana.com/grafana/dashboards/24085) - 以威胁为中心和以资产为中心的视图 - 操作历史和漂移跟踪 - 可过滤的表格和交互式可视化 - 在现有侦察工作流程之上分层的 AI 专属仪表板区域 ## 架构 ``` ┌────────────┐ │ targets.txt│ └─────┬──────┘ │ ▼ ┌──────────────────────────────┐ │ smap-importer │ │------------------------------│ │ passive recon via Smap │ │ CVSS + severity scoring │ │ CPE tech fingerprinting │ │ host auto-tagging │ │ SSL/TLS extraction │ │ geo enrichment │ │ writes smap.db │ └──────────────┬───────────────┘ │ ▼ ┌────────────────┐ │ SQLite DB │ │ smap.db │ └──────┬─────────┘ │ ┌──────────┴──────────┐ ▼ ▼ ┌───────────────┐ ┌────────────────┐ │ Grafana │ │ AI Analyzer │ │---------------│ │----------------│ │ dashboard │ │ Ollama-powered │ │ threat views │ │ host analysis │ │ asset views │ │ scan summaries │ └───────────────┘ └────────────────┘ ``` ## 数据流 1. **Smap** 查询 **Shodan InternetDB** 以获取每个目标的被动情报。 2. **`import_smap.py`** 解析并富化结果,然后将其写入 **`smap.db`**。 3. **Grafana** 通过 `frser-sqlite-datasource` 插件读取 SQLite 并渲染仪表板。 4. 可选的 **AI 分析器**读取同一个数据库,将上下文主机和扫描数据发送给 **Ollama**,并将结果存储回 SQLite。 5. 该仪表板同时展示**原始被动侦察情报**和**AI 生成的上下文分析**。 ## 技术栈 | 组件 | 角色 | |---|---| | **Smap** | 被动的主机、服务和漏洞枚举 | | **Python** | 导入、富化、schema 迁移、AI 编排 | | **SQLite** | 轻量级的单文件数据存储 | | **Grafana** | 仪表板展示和运营可见性 | | **Ollama** | 用于 AI 分析的本地 LLM runtime | | **Docker Compose** | 可复现的部署 | ## 数据库 Schema 该平台使用单个 SQLite 数据库:**`smap.db`**。 ### 核心表 ``` scans hosts ports vulnerabilities technologies host_tags ``` ### AI 表 ``` ai_scan_analysis ai_host_analysis ```
核心 schema 参考 | 表 | 主要用途 | |---|---| | **scans** | 每次扫描/导入存储一行记录 | | **hosts** | 存储富化后的主机级别情报 | | **ports** | 存储开放端口和服务元数据 | | **vulnerabilities** | 存储 CVE、CVSS、严重性和参考信息 | | **technologies** | 存储解析出的基于 CPE 的技术 | | **host_tags** | 存储生成的标签及其来源 |
AI schema 参考 | 表 | 主要用途 | |---|---| | **ai_scan_analysis** | AI 扫描执行摘要和建议 | | **ai_host_analysis** | 包含评分和操作建议的基于主机的 AI 评估 |
## 仪表板覆盖范围 Grafana 仪表板包含以下部分: ### ⟩⟩⟩ 系统状态 | 面板 | 描述 | |---|---| | LAST RECON | 最近一次扫描导入的时间戳 | | OPS | 扫描操作的总数 | | TARGETS | 匹配当前过滤器的唯一 IP | | PORTS | 不同的开放端口 | | VULN HOSTS | 至少具有一个 CVE 的主机 | | CVEs | 唯一的 CVE 标识符 | | TECHS | 从 CPE 解析出的不同技术 | | TAGS | 不同的主机标签 | | VULN % | 易受攻击的过滤主机百分比 | | MAX CVSS | 所有主机中最高的 CVSS 分数 | | AVG P/H | 每台主机的平均开放端口数 | ![grafana_dashboard_smap-system_status](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/6894149efc023830.png) ### ⟩⟩⟩ AI 威胁分析 | 面板 | 描述 | |---|---| | AI RISK LEVEL | 最近分析的扫描的 AI 评估整体风险等级 | | HOSTS ANALYZED | AI 引擎处理的主机数量 | | AI HIGH+CRIT | 被 AI 分类为 HIGH 或 CRITICAL 的主机 | | AVG AI SCORE | 已分析主机的平均 AI 计算风险评分 | | AI MODEL | 用于最近分析的 LLM 模型 | | LAST AI RUN | 最近一次 AI 分析执行的时间戳 | | AI EXECUTIVE SUMMARY | 带有上下文建议的扫描级别 AI 摘要 | | AI RISK DISTRIBUTION | 按 AI 生成的风险等级划分的主机环形图 | | AI vs STATIC RISK | 导入器风险分类与 AI 解读之间的比较 | | AI HOST THREAT INDEX | 包含 AI 风险等级、评分、摘要和建议操作的主机排列表 | | AI ASSESSMENT HISTORY | 包含 AI 扫描摘要、使用的模型、风险等级和建议的历史记录表 | ### ⟩⟩⟩ 威胁矩阵 | 面板 | 描述 | |---|---| | HOST THREAT INDEX | 可排序表格:IP、漏洞数量、最高 CVSS、风险等级、组织、端口 | | SEVERITY BREAKDOWN | 按严重性划分的漏洞环形图(颜色编码) | | EXPLOIT FREQUENCY | 15 个最常见的 CVE 环形图 | | RISK LEVELS | 按计算出的风险等级划分的主机环形图 | | BLAST RADIUS | 条形图:按受影响主机数量排名的 CVE(带有严重性标签) | | EXPLOIT DATABASE | 可过滤表格:CVE ↔ IP ↔ CVSS ↔ Severity ↔ Port ↔ Service | ![grafana_dashboard_smap_threat_matrix](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/698b462aee023832.png) ### ⟩⟩⟩ 攻击面与技术指纹识别 | 面板 | 描述 | |---|---| | SERVICE FINGERPRINTS | 服务/产品分布饼图 | | TECHNOLOGY STACK | 按主机数量排列的技术条形图(来自 CPE) | | HOST TAGS | 来源:标签分布条形图(shodan、os、service、status) | | PORT SCAN | 表格:端口、服务、主机数量 | | OS ENUMERATION | 操作系统分布饼图 | | COMPLETE HOST INVENTORY | 完整表格:IP、主机名、组织、ASN、风险、CVE、CVSS、端口、技术、标签 | | HOST RECON DETAIL | 表格:IP、端口、协议、服务、产品、版本、状态、banner、CPE、SSL | ![grafana_dashboard_smap_attack_surface_&_tech_fingerprinting](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/5159cb6b58023841.png) ![grafana_dashboard_smap_full_recon_detail](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/a8c23f3b4b023843.png) ### ⟩⟩⟩ 操作历史 | 面板 | 描述 | |---|---| | LAST HOSTS | 最近一次扫描中的主机数量 | | CVE Δ | 两次扫描之间的漏洞数量差值 | | OPERATION LOG | 对比近期扫描中主机/CVE/端口的条形图 | | NEW TARGETS | 首次出现的 IP | | GONE DARK | 自上次扫描后消失的 IP | | ⚠ NEW THREATS | 在最近一次扫描中首次检测到的 CVE(带有严重性) | | ✓ RESOLVED CVEs | 不再存在的 CVE | ![grafana_dashboard_smap_operation_history](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/dec896e19e023848.png) 你可以在此处访问公开的仪表板页面: - [Grafana Dashboard 24085](https://grafana.com/grafana/dashboards/24085) 仪表板 ID:**24085** ## 设计初衷 | 设计选择 | 原因 | |---|---| | **被动侦察** | 不与目标进行直接交互 | | **SQLite** | 简单、便携,适用于轻量级部署的高效方案 | | **Grafana** | 成熟且灵活的可视化层 | | **Ollama** | 具有强大隐私性和便携性的本地 AI 推理 | | **Docker Compose** | 快速设置和可复现性 | 这种架构专门针对**中小型部署**、**便携式演示**、**实验室**以及**快速运营可见性**进行了优化。 ## 快速开始 ``` git clone https://github.com/czantoine/smap-ai-recon-center cd smap-ai-recon-center/quickstart docker compose up -d --build ``` 然后在此处打开 Grafana: - `http://localhost:3009` 有关完整的部署指南,请参阅 [quickstart/README.md](quickstart/README.md)。 ## 关于 Smap Smap 项目:[https://github.com/s0md3v/Smap](https://github.com/s0md3v/Smap) | 功能 | 详情 | |---|---| | **方式** | 通过 Shodan InternetDB 进行被动侦察 | | **速度** | 无需主动探测的快速枚举 | | **认证** | 无需 API 密钥 | | **输出格式** | JSON, XML, greppable, normal, all | | **用例** | 被动资产和暴露面发现 | ## 随时间变化的 Stargazers [![Stargazers over time](https://starchart.cc/czantoine/smap-ai-recon-center.svg?variant=adaptive)](https://starchart.cc/czantoine/smap-ai-recon-center)
标签:AI风险缓解, Grafana, Smap, 威胁情报, 安全可视化, 实时处理, 开发者工具, 插件系统, 本地大模型, 版权保护, 逆向工具