R0s3mrcx/reconops

GitHub: R0s3mrcx/reconops

ReconOps 是一个容器化平台,通过自动化扫描和机器学习异常检测,为 DevSecOps 工作流提供基础设施可见性和攻击面情报。

Stars: 0 | Forks: 0

# ReconOps 侦察操作 **为DevSecOps工作流提供基础设施可见性与攻击面情报。** ReconOps是一个容器化平台,它持续发现暴露的网络服务,使用混合机器学习与规则引擎进行分类,并将实时发现结果推送到运维仪表板。作为一个DevSecOps实验室项目,它反映了现代安全团队如何应对基础设施可见性问题——自动化发现、异常检测与结构化报告,并集成到标准的工程工作流中。 ![CI](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/330a673cef021511.svg) ![Python](https://img.shields.io/badge/Python-3.11-3776ab?style=flat-square&logo=python&logoColor=white) ![FastAPI](https://img.shields.io/badge/FastAPI-0.111-009688?style=flat-square&logo=fastapi&logoColor=white) ![React](https://img.shields.io/badge/React-18-61dafb?style=flat-square&logo=react&logoColor=white) ![Docker](https://img.shields.io/badge/Docker-Compose-2496ed?style=flat-square&logo=docker&logoColor=white) ![License](https://img.shields.io/badge/License-MIT-22c55e?style=flat-square) ## 仪表板 | 扫描配置 | 实时结果 | |---|---| | ![扫描表单](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/4148cdda6b021512.png) | ![实时扫描](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/5283094b42021513.png) | | 发现分析 | 风险分析 | |---|---| | ![发现](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/0d8eb02ec4021513.png) | ![分析](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/058f5b9261021514.png) | ## 为何选择 ReconOps? 在大多数基础设施环境中,*预期*运行的服务与*实际*运行的服务之间存在差距。开发服务在迭代后被遗留暴露。调试时打开的数据库端口从未关闭。遗留服务在内部网段上无人察觉地运行。 ReconOps通过以下方式解决这一差距: - 使用 Nmap 自动化发现 IP 范围和子网 - 使用透明、可解释的风险模型对发现进行分类 - 发现与预期基础设施模式不符的异常情况 - 通过结构化的运维界面实时呈现结果 - 通过 Docker Compose、CI/CD 和 Prometheus 融入现有工作流 其目标并非渗透测试,而是基础设施感知——了解正在运行什么、在哪里运行以及是否应在那里运行。 ## 功能特性 ### 扫描 - 通过 Nmap(`-sV` 服务版本检测)进行主动端口与服务发现 - 通过 OWASP Amass 进行被动资产与子域名枚举 - 三种扫描配置文件: - 快速(前100个端口) - 隐蔽(SYN扫描,低噪音) - 全量(全部65535个端口) ### 分类 - 混合风险评分:60%启发式规则 + 40%机器学习异常信号 - 基于每次扫描自身基线训练的 Isolation Forest 异常检测 - 七个服务类别: - `high_risk` - `db_exposed` - `admin_panel` - `legacy` - `iot` - `dev_exposed` - `standard` - 为每个检测到的服务提供通俗易懂的发现描述 ### 运维 - 实时 WebSocket 推送——发现结果随检测即时呈现 - 每次扫描可导出结构化 Markdown 报告 - Prometheus 指标端点,用于可观测性集成 - 会话内扫描历史记录(内存中) ### 工程 - 通过 Docker Compose 单命令部署 - 多阶段前端构建(Vite → nginx) - GitHub Actions CI:静态分析、类型检查、容器扫描 - 使用 `structlog` 的结构化日志记录 - 通过 `.env` 进行基于环境的配置 ## 架构 ``` ┌─────────────────────────────────────────────────────────────────┐ │ ReconOps Platform │ │ │ │ ┌───────────────────────────────────────────────────────────┐ │ │ │ React Dashboard │ │ │ │ (Vite · TypeScript · Recharts) │ │ │ └───────────────────────┬───────────────────────────────────┘ │ │ │ REST + WebSocket │ │ ┌───────────────────────▼───────────────────────────────────┐ │ │ │ FastAPI Backend │ │ │ │ (async · Pydantic v2 · structlog · Prometheus) │ │ │ └────────┬─────────────────────────┬────────────────────────┘ │ │ │ │ │ │ ┌────────▼─────────┐ ┌──────────▼──────────┐ │ │ │ Scanner Service │ │ ML Classifier │ │ │ │ │ │ │ │ │ │ Nmap ─────────► │ │ Feature extraction │ │ │ │ python-nmap │ │ Isolation Forest │ │ │ │ │ │ Heuristic rules │ │ │ │ OWASP Amass ──► │ │ Composite scoring │ │ │ │ passive DNS │ │ │ │ │ └──────────────────┘ └─────────────────────┘ │ │ │ │ ┌───────────────────────────────────────────────────────────┐ │ │ │ Observability: Prometheus /metrics · structlog JSON │ │ │ └───────────────────────────────────────────────────────────┘ │ └─────────────────────────────────────────────────────────────────┘ ``` 部署:Docker Compose(后端 + 前端 + 可选监控栈) CI/CD:GitHub Actions → Bandit → TypeScript → Docker 构建 → Trivy ## 机器学习设计 ### 为何选择 Isolation Forest? 大多数基于机器学习的安全工具需要带标签的训练数据。对于基础设施扫描,这种数据并不存在通用的形式。每个环境都不同,“正常”的标准完全取决于被扫描的特定网络。 Isolation Forest 是一种无监督异常检测算法。它不需要带标签的数据集。相反,它从扫描本身学习统计基线,然后根据服务与该基线的差异程度对每个服务进行评分。 这使其适用于此问题,因为模型在每次扫描中自我校准,无需预先训练,且运行高效。 ### 特征工程 | 特征 | 描述 | 信号 | |---|---|---| | `port_normalized` | 端口号 / 65535 | 连续尺度位置 | | `is_privileged` | 端口 < 1024 | 系统级服务指标 | | `is_ephemeral` | 端口 > 49151 | 动态范围标志 | | `is_well_known` | 标准服务端口 | 已知安全服务 | | `is_open` | 二值状态 | 暴露确认 | | `service_len_norm` | 服务名称长度 / 20 | 特异性代理 | | `is_db_range` | 数据库端口成员 | 数据库暴露 | | `is_high_nonstandard` | >1024 且非标准 | 影子服务信号 | ### 混合评分 ``` risk_score = (heuristic_score × 0.60) + (ml_anomaly_score × 0.40) ``` 启发式层处理领域知识强于统计的已知恶意特征。机器学习层处理通用的异常检测。 ## 快速开始 ### 要求 - Docker - Docker Compose ### 运行 ``` git clone https://github.com/r0s3mrcx/reconops.git cd reconops docker-compose up --build ``` 前端:`http://localhost:3000` 后端 API:`http://localhost:8000` Swagger UI:`http://localhost:8000/docs` ## 本地开发 ### 后端 ``` cd backend python -m venv venv source venv/bin/activate pip install -r requirements.txt uvicorn app.main:app --reload --port 8000 ``` 在 Arch Linux 上安装 Nmap: ``` sudo pacman -S nmap ``` ### 前端 ``` cd frontend npm install npm run dev ``` ## API 参考 | 方法 | 端点 | 描述 | |---|---|---| | GET | `/health` | 健康检查 | | POST | `/api/scans` | 开始扫描 | | GET | `/api/scans/{id}` | 获取扫描结果 | | GET | `/api/scans/{id}/report` | 下载报告 | | WS | `/api/scans/{id}/ws` | 实时事件推送 | | GET | `/metrics` | Prometheus 指标 | | GET | `/docs` | Swagger UI | ## 可观测性 ``` docker-compose --profile monitoring up --build ``` - Prometheus → `http://localhost:9090` - Grafana → `http://localhost:3001` ## 部署 ### 前端 → Vercel 将 React 前端作为静态应用程序部署。 ### 后端 → Render 将 FastAPI 后端部署为 Web 服务。 重要提示: - 使用允许列表限制扫描目标 - 不要公开暴露无限制的扫描功能 ## 合规使用 ReconOps 仅用于: - 授权基础设施扫描 - 教育性 DevSecOps 实验室 - 内部可见性工具 - CI/CD 安全验证 切勿未经明确许可扫描系统。 ## 已知限制 | 限制 | 解决路径 | |---|---| | 仅内存存储 | 添加 PostgreSQL 或 Redis | | 无身份验证 | 添加 OAuth2 或 API 密钥 | | 无计划任务 | 添加 APScheduler | | 小范围扫描降低机器学习质量 | 使用更大的子网基线 | ## 未来改进 - PostgreSQL 持久化 - OAuth2 身份验证 - 计划扫描 - CVE 关联 - Slack/Webhook 告警 - 扫描差异对比 - 历史分析 ## 关于 ReconOps 为以下目标而构建: **自主攻击面收敛** **技术栈:** FastAPI · React · Scikit-learn · Docker Compose · GitHub Actions · Prometheus · Nmap · OWASP Amass
标签:Apex, AV绕过, CTI, DevSecOps, Docker, FastAPI, Isolation Forest, NIDS, Nmap, OWASP Amass, Python, React, Syscalls, WSL, 上游代理, 云存储安全, 安全防御评估, 容器化, 异常检测, 插件系统, 攻击面情报, 无后门, 服务发现, 机器学习, 结构化查询, 网络安全, 网络扫描, 自动化安全, 自动化攻击, 自定义请求头, 虚拟驱动器, 请求拦截, 逆向工具, 隐私保护, 风险分析