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 - 多源入侵检测与关联引擎
[](https://python.org)
[](LICENSE)
[](https://www.iiit.ac.in)
[](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异常检测, 严重度控制, 主机日志分析, 信号融合, 免杀技术, 去重, 噪声抑制, 多传感器关联, 多阶段入侵检测, 子域名枚举, 实时检测, 异常检测, 扫描检测, 数据关联, 无后门, 暴力破解检测, 滑动窗口分析, 系统安全, 规则启发式, 逆向工具, 黄金证书