mayankmittal29/Detectron-Multi-Source-Intrusion-Detection-and-Correlation-Engine

GitHub: mayankmittal29/Detectron-Multi-Source-Intrusion-Detection-and-Correlation-Engine

一个基于多传感器关联与滑动窗口分析的开源IDS,旨在降低误报并提升对扫描、暴力破解与多阶段入侵的检测精度。

Stars: 0 | Forks: 0

# 🛡️ Detectron - 多源入侵检测与关联引擎 [![Python](https://img.shields.io/badge/Python-3.10%2B-blue?logo=python)](https://python.org) [![License](https://img.shields.io/badge/License-MIT-green)](LICENSE) [![Course](https://img.shields.io/badge/Course-CS8.403-purple)](https://www.iiit.ac.in) [![Institute](https://img.shields.io/badge/Institute-IIIT%20Hyderabad-orange)](https://www.iiit.ac.in) ## 📖 目录 - [概述](#-overview) - [架构](#-architecture) - [目录结构](#-directory-structure) - [功能特性](#-features) - [检测算法](#-detection-algorithms) - [攻击场景](#-attack-scenarios) - [核心安全要求](#-core-security-requirement) - [安装与设置](#-setup--installation) - [运行 IDS](#-running-the-ids) - [交互式菜单](#-interactive-menu) - [引导式实战演练](#-guided-masterclass-tour) - [指标与评估](#-metrics--evaluation) - [贡献者](#-contributors) ## 🌐 概述 传统 IDS 系统仅对单一数据流进行操作——无论是网络流量还是主机日志。这使得它们极易被绕过:攻击者伪造网络事件或禁用某个传感器即可完全规避检测。 本项目实现了一个 **多源关联引擎**,在滑动时间窗口内融合独立传感器(网络与主机)的信号。只有当多个独立数据源相互印证时,告警才会升级为 **Critical**,显著降低误报率同时保持检测能力。 本系统为 **CS8.403 — 系统与网络安全**,海得拉巴 IIIT,实验作业 4。 ## 🏗️ 架构 ``` main.py ├── sensors.py ← NetworkSensor + HostSensor ├── attack_simulator.py ← Reproducible attack & benign scenario macros ├── correlation_engine.py ← Sliding window, scoring, rule-based + statistical detection ├── alert_manager.py ← Severity enforcement, deduplication, formatted output └── ids_utils.py ← Schema, logging, MetricsTracker (Precision/Recall/F1/CPU/Memory) ``` **数据流:** ``` [NetworkSensor] ──┐ ├──► [CorrelationEngine] ──► [AlertManager] ──► 🚨 Alert [HostSensor] ──┘ │ [MetricsTracker] ``` 所有组件通过 **统一的 JSON 事件模式**(模式版本 2.0)进行通信,并在每个模块中严格执行。 ## 📁 目录结构 ``` multi-sensor-ids-correlation-engine/ │ ├── main.py # 🎮 Interactive shell + guided masterclass entry point ├── sensors.py # 📡 NetworkSensor (Scapy/synthetic) & HostSensor (auth.log/synthetic) ├── correlation_engine.py # 🧠 Sliding window, rule engine, statistical anomaly detection ├── alert_manager.py # 🚨 Alert generation, severity enforcement, deduplication ├── attack_simulator.py # 💣 Attack + benign scenario macros (fully reproducible) ├── ids_utils.py # 🔧 Unified schema, logger, MetricsTracker, SimulatedTime │ ├── README.md # 📖 This file └── SECURITY.md # 🔐 Security design, threat model, architectural decisions ``` ## ✨ 功能特性 ### 🔭 双传感器遥测 - **NetworkSensor** — 通过 [Scapy](https://scapy.net/)(需 `sudo`)进行实时抓包,并具备自动回退到合成流生成的能力 - **HostSensor** — 实时读取 `/var/log/auth.log`(Linux),并具备回退到合成登录事件生成的能力 - 两者均使用相同的统一 JSON 模式输出事件,以便下游无缝处理 ### 🪟 滑动窗口关联 - 事件在可配置的时间窗口内关联(默认:**5 秒**) - 过期事件会在每次新摄入时自动剔除 - 虚拟时间修补(`SimulatedTime`)确保测试中具备确定性、可重现的窗口行为,无需真实 I/O 延迟 ### 📊 三层检测 1. **聚合评分模型** — 加权证据累加(`score = Σ w(e)`) 2. **统计 Z 分数异常** — 检测对校准基线的偏离(`z_f = (f_t − μ_f) / (σ_f + ε)`) 3. **基于规则的检测器** — 8 条针对已知攻击模式的确定性启发式规则 ### 🔐 核心安全要求强制执行 - **Critical** 告警仅在以下情况下被允许: - 至少两个独立传感器在窗口内相互印证,**或** - 确定性的多步骤模式被触发 - 在 `AlertManager` 层强制执行,关联引擎无法绕过 ### 🔇 智能去重 - 每个签名独立的冷却缓存防止告警疲劳(默认:**10 秒**) - 动态剥离波动整数值(分数、Z 值)以确保去重签名在快速升级攻击中保持稳定 - 一次完整的 20 端口扫描(4 条活跃规则 × 20 个事件 ≈ 80 个潜在告警)可压缩为 **4 个可执行告警** ### 📉 传感器优雅降级 - 可在运行时通过 `engine.disable_sensor(name)` / `engine.enable_sensor(name)` 启用或禁用任意传感器 - 当 NetworkSensor 离线时,EMA 状态衰减至零,防止陈旧威胁分数污染后续检测 - 单传感器模式下严重性自动上限为 **High** ### 📈 完整指标报告 - 精确率、召回率、F1 分数 - 真正例 / 假正例、假负例 - 平均与峰值告警延迟(毫秒) - 平均 CPU 使用率与峰值内存(MB) - 总虚拟运行时间 - 由 `tracemalloc` + `psutil` 提供支持 ## 🧮 检测算法 ### 算法 1 — 聚合评分模型 ``` score(u, t) = Σ w(e) ``` 每个事件特征贡献一个加权分数。阈值映射到严重性等级: | 分数范围 | 严重性 | |----------|--------| | > 0 | Info | | > 20 | Medium | | > 35 | High | | > 50 | Critical(需来源检查) | ### 算法 2 — 统计 Z 分数(登录异常) ``` z_f = (f_t − μ_f) / (σ_f + ε) ``` 基准 μ 和 σ 在专用基线阶段校准。阈值如下: | Z 分数范围 | 严重性 | |------------|--------| | 2.5 < z ≤ 5.0 | Medium | | z > 5.0 | High | ### 算法 3 — EMA SYN-Flood 检测器(课程幻灯片算法 2) ``` D_i = (SYN − FIN) / (FIN + ε) S_i = α · D_i + (1 − α) · S_{i−1} ``` 其中 α = 0.4,τ₂ = 2.0。当 `S_i > τ₂` 时,检测到洪水。 ### 基于规则的检测器 | 规则 | 触发条件 | 严重性 | |------|----------|--------| | 规则 1 | ≤30 个事件内 >15 个唯一端口(快速扫描) | High | | 规则 2 | >30 个事件内 >5 个唯一端口(慢速扫描) | Medium | | 规则 3 | ≥6 次连续登录失败(暴力破解) | Medium | | 规则 4 | 失败后成功登录(系统被攻破) | High | | 规则 5 | 同一 IP 的端口扫描 + 登录失败(关联) | High | | 规则 6 | 扫描 → 暴力 → 成功杀伤链(多步骤) | Critical | | 规则 7 | 成功登录后可疑进程(横向移动) | Critical | | 规则 8 | >5 个独立 IP 访问 >3 个端口(分布式扫描) | High | ## 💥 攻击场景 | Key | 场景 | 规则 / 算法 | |-----|------|-------------| | `4` | 快速端口扫描 | 规则 1、EMA | | `5` | 慢速端口扫描 + 噪声注入 | 规则 2、规则 8 | | `6` | 暴力破解认证 | 规则 3、Z 分数 | | `7` | 噪声注入(FP 压力测试) | 去重 | | `8` | 重放攻击 | EMA SYN 检测器 | | `9` | SYN 洪水(5 波 × 600 SYN) | 算法 2(EMA) | | `A` | 传感器故障 | 优雅降级 + Critical 降级 | | `C` | 多步骤系统入侵 | 规则 4、5、6 — 真正的 Critical | | `L` | 横向移动(反弹 Shell) | 规则 7 | | `G` | 引导式实战演练(全部 10 阶段) | 所有规则 + 算法 | ## 🔐 核心安全要求 IDS 在 `AlertManager` 层强制执行强制多源 corroboration 规则: ``` Critical alert ← (len(sources) >= 2) OR (multi_step = True) otherwise → downgraded to High ``` **原因:** 攻击者若控制或伪造单个传感器,不应能触发 Critical 升级。通过要求独立 corroboration: - 仅由 NetworkSensor 观察到的 SYN 洪水 → **High**(非 Critical) - 仅由 HostSensor 观察到的暴力破解 → **High**(非 Critical) - 两个传感器共同观察到的杀伤链 → **Critical** ✅ - 仅由 HostSensor 观察到的横向移动(规则 7,多步骤标志)→ **Critical** ✅ ## ⚙️与设置 ### 先决条件 - Python **3.10+** - pip ### 安装依赖 ``` pip install scapy psutil ``` ### 克隆仓库 ``` git clone https://github.com/mayankmittal29/Detectron-Multi-Source-Intrusion-Detection-and-Correlation-Engine.git cd detectron ``` ## 🚀 运行 IDS ### 标准模式(合成数据 — 无需 Root) ``` python3 main.py ``` 所有场景在合成模式下均可完整运行。这是运行实战演练和评估指标的推荐方式。 ### 实时捕获模式(Scapy — 需要 Root) ``` sudo python3 main.py ``` 然后在交互式 Shell 中按下 `S` 以启动实时 Scapy 抓包和 `auth.log` 跟踪。 ## 🎮 交互式菜单 启动后,IDS 提供完整的交互式 Shell: ``` ╔══════════════════════════════════════════════════════════════════════╗ ║ MULTI-SOURCE IDS — INTERACTIVE SHELL ║ ╠══════════════════════════════════════════════════════════════════════╣ ║ ── Primitives ── ║ ║ [1] Send benign HTTP flow (normal user activity) ║ ║ [2] Send failed login (attacker probing) ║ ║ [3] Send successful login (attacker gets in!) ║ ║ [P] Send suspicious process event (lateral movement) ║ ╠══════════════════════════════════════════════════════════════════════╣ ║ ── Scenario Macros ── ║ ║ [4] MACRO: Fast Port Scan (Rule 1) ║ ║ [5] MACRO: Slow Port Scan + Noise (Rule 2) ║ ║ [6] MACRO: Brute Force (Rule 3 + Statistical Anomaly) ║ ║ ... ║ ╠══════════════════════════════════════════════════════════════════════╣ ║ [G] GUIDED TOUR: Full exhaustive masterclass (all scenarios) ║ ╠══════════════════════════════════════════════════════════════════════╣ ║ [0] EXIT and print evaluation metrics report ║ ╚══════════════════════════════════════════════════════════════════════╝ ``` **系统控制:** | 按键 | 操作 | |------|------| | `B` | 切换基线模式(校准 μ 和 σ) | | `T` | 前进虚拟时钟 1 秒 | | `F` | 前进虚拟时钟 10 秒(刷新滑动窗口) | | `S` | 切换实时 Scapy 抓包(需 Root) | | `0` | 退出并打印完整评估报告 | ## 🎓 引导式实战演练 按下 `G` 运行完整的 10 阶段引导式实战演练。每个阶段均有前置说明并独立触发: | 阶段 | 场景 | 展示的关键概念 | |------|------|----------------| | 1 | 基线生成(15 轮) | μ 与 σ 的真实流量校准 | | 2 | 窗口刷新 | 实验间状态隔离 | | 3 | 快速端口扫描(20 个端口) | 规则 1 + EMA + 去重 | | 4 | 暴力破解(10 次尝试) | 规则 3 + Z 分数升级 | | 5 | 慢速扫描 + 35 个噪声事件 | 规则 2 + 规则 8 + 噪声容忍 | | 6 | SYN 洪水(5 波 × 600 SYN) | 算法 2 + Critical 降级 | | 7 | 传感器故障 | 优雅降级 + EMA 衰减 | | 8 | 重放攻击(15×) | EMA 检测修改后的重放 | | 9 | 多步骤系统入侵 | 规则 4/5/6 — 真正的 Critical | | 10 | 横向移动 | 规则 7 — 反弹 Shell | ## 📊 指标与评估 完成引导式实战演练并按下 `0` 后,系统将输出完整的评估报告: ``` ════════════════════════════════════════════════ IDS EVALUATION REPORT ════════════════════════════════════════════════ ── Detection Quality ── True Positives (TP) 28 False Positives (FP) 4 False Negatives (FN) 1 Precision 0.875 Recall 0.966 F1-Score 0.918 ── System Performance ── Avg Alert Latency 0.11 ms Max Alert Latency 0.30 ms Avg CPU Usage 84.6 % Peak Memory Usage 0.169 MB Current Memory Usage 0.102 MB Total Virtual Runtime 81.18 s ════════════════════════════════════════════════ ``` **亮点:** - 🎯 **F1 分数:0.918** — 通过基线校准、去重签名归一化及阶段间状态隔离实现 - ⚡ **平均延迟:0.11 毫秒** — 关联引擎每个事件处理时间低于 1 毫秒 - 🪶 **峰值内存:0.169 MB** — 高度优化的滑动窗口与状态管理 ## 👥 贡献者 | 姓名 | 角色 | |------|------| | **Mayank Mittal** | 关联引擎、检测算法、传感器架构 | | **Aryaman Mahajan** | 攻击模拟器、场景设计、指标追踪 | | **Vansh Motwani** | 告警管理器、安全设计、文档与报告 | ## 📄 许可证 本项目作为 **CS8.403 — 系统与网络安全**,海得拉巴 IIIT 的一部分提交。 仅限学术使用。
标签:CS8.403, EMA SYN Flood检测, IIIT Hyderabad, Python, Z-score异常检测, 严重度控制, 主机日志分析, 信号融合, 免杀技术, 去重, 噪声抑制, 多传感器关联, 多阶段入侵检测, 子域名枚举, 实时检测, 异常检测, 扫描检测, 数据关联, 无后门, 暴力破解检测, 滑动窗口分析, 系统安全, 规则启发式, 逆向工具, 黄金证书