RishiKumar1917/Resilient-IoT-Intrusion_Detection_System_for_Smart-Buildings

GitHub: RishiKumar1917/Resilient-IoT-Intrusion_Detection_System_for_Smart-Buildings

面向智能建筑的边缘端 IoT 入侵检测系统,融合 LSTM 自编码器、机器学习集成与规则引擎,实时检测并分类传感器数据篡改攻击。

Stars: 1 | Forks: 0

# 🏢 面向智能建筑的弹性 IoT 入侵检测系统 一个智能的实时安全系统,旨在保护智能建筑免受试图篡改温湿度传感器(如 DHT11)以劫持供暖和制冷系统的黑客攻击。 在本项目中,我们实施了 **ARP 欺骗攻击** `[ARP 欺骗:一种攻击方式,黑客将其计算机连接到网络网关,以拦截和修改传感器读数]` 来劫持和操纵实时传感器数据。随后,我们使用这些被劫持的数据来训练我们的机器学习模型,并开发了 **Snort 规则** `[Snort 规则:用于检测并丢弃恶意流量数据包的网络安全规则]`,以实时识别和阻止这些欺骗企图。
🛡️ 企业级契合度与相关性(BACnet/SC、ISA/IEC 62443 及研究验证) ### 1. 企业安全标准与语义攻击 当今的现代楼宇自动化(操作技术,或称 OT)安全依赖于两个主要层级: * **网络层(BACnet Secure Connect - BACnet/SC):** 在 ASHRAE 135 标准下标准化,它使用 TLS 1.3 加密和 X.509 数字证书来保护通信安全。**然而,BACnet/SC 仅保护“管道”。** 如果传感器遭到物理篡改(例如,用打火机加热)或网关被攻破,BACnet/SC 将毫无阻碍地加密并传递伪造的读数。 * **合规层(ISA/IEC 62443):** 这一全球工业标准强制要求对控制系统进行持续的行为监控和异常检测。 ### 2. 学术与行业证明(存储在 `Project_Documentation/` 中) 我们的混合方法和下一代路线图已得到三篇最新研究出版物的验证: 1. **基于 AI 的传感器防御:** [面向智能建筑的网络智能传感器框架(Sensors,2025 年 12 月)](Project_Documentation/Cybersecure%20Intelligent%20Sensor%20Framework%20Smart%20Buildings.pdf) * *验证内容:* 在智能建筑中使用混合 ML(Random Forest/Ensembles)配合规则来监控传感器数据完整性的行业标准。 2. **基于物理的诊断:** [用于 HVAC 异常检测的物理信息 LLM/模型(NeurIPS 2025 UrbanAI 研讨会)](Project_Documentation/Physics_Informed_LLM_HVAC_Anomaly_Detection.pdf) * *验证内容:* 整合热力学和物理边界约束,以提高模型的透明度并大幅降低误报率。 3. **实时自适应阈值:** [IIoT 环境中的实时自适应异常检测(IEEE TNSM,2024/2026)](Project_Documentation/RealTime_Adaptive_Anomaly_Detection_IIoT.pdf) * *验证内容:* 动态漂移适应和连续反馈循环的必要性,以处理波动的传感器数据流。
## ⚡ 核心升级 * 在多传感器数据流上实现了 **78.10% 的总体准确率**。 * 使用 Streamlit 和 Plotly 构建的**交互式 Web UI 仪表板**。 * 用于持续自适应学习的**人机协同反馈引擎**。 ## ⚠️ 问题:为什么智能建筑需要主动安全防御 随着智能建筑利用 IoT 传感器实现气候控制自动化,它们引入了一个关键的漏洞:物理与数字的重叠。如果黑客篡改了室温传感器,他们就可以欺骗中央 HVAC [供暖、通风和空调] 系统,使其过度加热或持续运行。这会导致巨额的能源账单、物理设备的磨损以及居住者的不适。 尽管存在**企业级云安全解决方案**,但它们存在局限性且速度缓慢。将数以百万计的传感器读数上传到云端会产生延迟 `[delay]`,并且依赖于持续的互联网连接。如果连接中断,安全防御也就失效了。 为了解决这个问题,我们的项目实现了一个**实时混合入侵检测系统 (IDS)**,它直接在智能建筑的边缘 `[边缘:建筑内的本地处理器,而不是远程云服务器]` 运行。这提供了低延迟、弹性的保护,即使建筑失去互联网连接也能正常工作。 ## 🛠️ 技术原理与技术栈 我们的框架使用了一个轻量级、高效的技术栈,专门针对实时边缘处理进行了优化: * **深度学习 (PyTorch):** 我们使用配置为 `64 → 32` 单元的 **LSTM 自编码器** `[LSTM:长短期记忆模型]`。与庞大的 Transformer 模型不同,LSTM 是轻量级的,专为序列时间数据(时间序列)而设计,用于建立建筑物的正常行为基线 `[正常温度曲线]`,并纯粹基于升高的重建误差来标记零日 `[以前未见过]` 攻击。 * **机器学习 (Scikit-Learn):** 并行运行 **Random Forest** 和 **Isolation Forest** 分类器,以便在检测到异常时对特定的攻击特征进行分类。 * **传感器仿真 (DHT11):** DHT11 温湿度传感器是气候控制的行业标准。我们模拟 DHT11 遭到入侵的情况,因为它们可以对针对 HVAC 系统的真实攻击进行建模,展示伪造的读数是如何引发物理设施故障的。 * **Web 仪表板 (Streamlit & Plotly):** 用于实时可视化传感器数据流和检测标志的轻量级仪表板。 * **数据流水线 (Pandas & Numpy):** 优化滑动时间窗口和特征提取。 * **协议 (MQTT):** 支持来自物理边缘设备的异步事件驱动流。 ## ⚠️ 现实世界中的安全威胁与缓解措施 在 **2023 年 12 月(爱尔兰)**,网络攻击者将目标对准了欧洲水务公用事业基础设施,通过暴露的 IoT 网关访问了内部的监控系统。通过篡改传感器数据流,攻击者试图操纵水位、流量计和**化学加药值**,以引发物理设施故障。 传统的基于特征的传统防火墙无法检测到这些隐蔽的、低速慢速的操纵。该项目通过持续监控传感器读数的**滑动窗口**(大小 = 30)并提取关键统计特征,在边缘端阻止入侵,从而实时保护智能建筑免受类似攻击: * **`temp_slope`(趋势):** 捕捉随时间的逐渐变化,以阻止**漂移攻击**。 * **`temp_std`(方差):** 区分平稳的死值(**丢弃攻击**)和高频波动(**噪声攻击**)。 * **`temp_range`(跨度):** 测量完整的峰峰值波动,以识别**注入攻击**。 * **`temp_entropy`(香农熵):** 检测增加的随机性和高频噪声特征。 * **`temp_max_jump` & `temp_spike`:** 识别指示恶意数据注入的突然绝对值偏差(峰值)。 ## 🧠 三级防御混合架构 没有任何单一的检测技术足以应对高级攻击。该系统融合了三个独立的层级以实现强大的弹性: ``` graph TD A[IoT Sensor Stream] --> B[Sliding Window Feature Extraction] B --> C[3-Tier Detection Engine] subgraph C [3-Tier Hybrid Engine] C1[Tier 1: LSTM Autoencoder
Unsupervised Anomaly Flagging] C2[Tier 2: ML Ensembles
Random Forest & Gradient Boosting] C3[Tier 3: Statistical Rule Engine
Deterministic Boundary Checks] end C1 --> D[Anomaly Flag] C2 --> E[Pattern Classification] C3 --> F[Deterministic Bounds Check] D & E & F --> G[Hybrid Decision Engine] G --> H[Predict Attack Type] H --> I[Human-in-the-Loop Override] I --> J[(feedbackmemory.json)] J -->|Continuous Adaptation| G ``` ### 🛡️ 层级详情: 1. **第一层:无监督 LSTM 自编码器(异常检测)** * 仅在正常传感器数据上进行训练,以建立健康建筑行为的基线。 * 压缩序列(`LSTM 64 → LSTM 32`)并重建它们。 * 当均方误差 (MSE) 重建误差超过动态 `3-sigma` 阈值(`Mean + 3 * Std`)时,异常被标记。 2. **第二层:有监督 ML 集成(模式分类)** * **Random Forest:** 充当主要模式学习器,将序列特征(斜率、标准差、范围、熵、峰值、跳跃)映射到攻击类别。 * **Gradient Boosting(当前未使用):** 在离线设置期间进行了训练,但其预测目前在最终的在线决策链中被绕过。我们计划使用投票集成将其整合进来。 * **Isolation Forest:** 并行运作,用于标记未知的异常分布。 3. **第三层:确定性规则引擎(边缘情况防御)** * 与 ML 并行运行,以捕捉明确的物理界限。 * **注入攻击规则:** 如果 `max_jump > 5.0°C` 或 `zscore_max > 5.0` 则触发。 * **重放攻击规则:** 将传入的数据窗口与缓冲区中的历史特征进行比较,以捕捉重复信号。 * **漂移攻击规则:** 当 `abs(slope) > drift_threshold` (0.05) 时触发。 * **丢弃攻击规则:** 如果 `std < 0.1` 且 `range < 0.4`(冻结检测)或 `slope < -0.15`(阶跃下降)则触发。 * **噪声攻击规则:** 如果 `std > 2.0` 且 `entropy > 1.5` 则触发。 ## 🔄 人机协同持续学习循环 为了防止 AI 幻觉并适应季节性建筑运营,该框架整合了一个**持续反馈学习循环**: 1. **系统预测:** 模型分析传感器窗口并输出预测(例如,`噪声攻击 | 置信度:中`)。 2. **用户审查:** 管理员通过 Streamlit 仪表板审查预测,如果它是误报,则覆盖该标签。 3. **内存存储:** 纠正后的特征向量及其目标标签存储在 `feedbackmemory.json` 中。 4. **即时匹配:** 对于后续的推理,分类引擎会检查反馈数据库中是否有相似的历史模式,从而绕过模型错误,并在未来自动纠正类似的警报。 ## 📊 性能评估矩阵 比较应用补丁前后系统的验证结果: | 指标 |当前基线| | :--- | :---: | | **总体准确率** | **78.10%** | | **正常召回率** | **90.16%** (精确率: 94.03%) | | **噪声攻击召回率** | **93.85%** (精确率: 64.21%) | | **漂移攻击召回率** | **43.80%** (精确率: 55.21%) | | **重放攻击召回率** | **3.33%** (精确率: 100.00%) | | **丢弃攻击召回率** | **13.41%** (精确率: 100.00%) | ## 🚀 解决方案路线图: 为了弥合剩余的检测差距,并将这个原型转变为商业级、坚如磐石的智能建筑安全产品,我们正在启动一项积极的技术升级路线图,分为三个核心支柱: ### ⚡ A. 硬件与边缘优化 * **MCU 部署 [ESP32 / ARM Cortex-M]:** 我们正在量化 `[缩小模型大小和数学精度]` 我们的 PyTorch LSTM 模型,以便它们能够直接在壁挂式恒温器传感器内部的低功耗、5 美元的微控制器上运行。 * **ONNX 网关加速:** 部署在边缘网关盒上(如 Raspberry Pi 5 或 NVIDIA Jetson Orin Nano)。将模型导出到 ONNX Runtime 能够实现亚毫秒级的硬件加速预测,可同时处理数千个房间。 * **C++/Rust 特征工程:** 将滑动窗口特征计算重写为 C++ 或 Rust 的 Python 扩展,将延迟从毫秒降至微秒。 ### 📊 B. 企业数据融合与流处理 * **多模态传感器融合:** 仅凭温度很容易被欺骗。我们正在整合 CO2、空气质量 (VOCs)、运动探测器 (PIR) 和 HVAC 电源日志。如果温度出现峰值,但房间是空的并且加热器是关闭的,系统会自动关闭被欺骗的数据流。 * **基于物理的热建模:** 将我们的数据集生成器连接到像 EnergyPlus 这样的建筑能耗模拟器,以生成高度逼真的正常基线,并将阳光、窗户和隔热等因素纳入其中。 ### 🤖 C. 高级 AI 与架构升级 * **通过 LSH 实现常数时间重放搜索:** 我们正在实现局部敏感哈希 (LSH),而不是有限的滑动 100 窗口历史记录。LSH 将窗口波形转换为短特征签名,允许检测器以恒定的 $O(1)$ 时间查询包含 10,000 多个过去窗口的数据库,以瞬间捕捉几天前的重放。 * **季节性与昼夜自适应基线:** 温度基线在白天和黑夜、夏季和冬季之间自然漂移。我们正在部署一种在线自适应基线阈值,它可以根据天气预报和一天中的时间进行自我调整。 * **时域卷积网络 (TCN):** 从递归 LSTM 模型升级为具有膨胀卷积的 1D 时域 CNN。CNN 并行处理时间序列窗口,极大地加快了训练和边缘推理的速度。 ## 📂 项目结构 ``` Resilient-IoT-Intrusion_Detection_System_for_Smart-Buildings/ ├── README.md # Main Project Documentation ├── SECURITY.md # Security reporting guidelines ├── .gitignore # Git ignore file │ ├── IDS_Codebase/ # 🚀 Patched Production Codebase │ ├── app.py # Streamlit UI dashboard │ ├── hybrid_iot_ids.py # Core decision engine │ ├── feedback_engine.py # Feedback database manager │ ├── run_hybrid_demo.py # Automated demo pipeline │ ├── test_hybrid_iot_ids.py # Unit test suite │ ├── enhanced_iot_dataset_3sensors.csv # Multi-sensor active dataset │ ├── feedbackmemory.json # Pre-seeded feedback overrides │ ├── IMPLEMENTATION_SUMMARY.md # Enhanced metrics summary │ ├── detection/ # Replay and config submodules │ ├── features/ # Feature extraction submodules │ └── DataSet Gen/ # Dataset generator scripts │ ├── Snort_Rules/ # 🛡️ Snort Rules & Cyber Scripts │ ├── detect.py # Original rules script │ ├── attacks.py # Original attacks simulator │ └── cyber_output.pages # Research documentation │ ├── Project_Documentation/ # 📂 Combined Documentation & Resources │ ├── Minor Project Presentation.pptx.pptx # Semester-End PowerPoint Presentation │ ├── Cybersecure Intelligent Sensor Framework Smart Buildings.pdf # Academic PDF │ ├── Physics_Informed_LLM_HVAC_Anomaly_Detection.pdf # Academic PDF │ ├── RealTime_Adaptive_Anomaly_Detection_IIoT.pdf # Academic PDF │ ├── Resilient_Smart_Building_Cybersecurity.pdf # Academic PDF │ ├── IDS_MQTT_Report.docx # NIDS Snort Report │ └── ... (other administration reports/forms) │ ├── Datasets/ # 📊 Combined Datasets & Database │ ├── dht11_dataset_10000.csv # Original 10k single-sensor dataset │ ├── log_temp.csv # Temperature log data │ ├── data_cleaner.py # Data preprocessing script │ └── multi_sensor_cleaned_balanced.csv # Cleaned multi-sensor dataset │ ├── hardware/ # 🔌 ESP8266 IoT Device Firmware Code │ ├── Device_01.ino # Device 1 (DHT11) │ ├── Device_02.ino # Device 2 (DHT11) │ └── Device_03.ino # Device 3 (DHT22) │ ├── plots_and_diagrams/ # Diagrams for README.md │ └── ... │ └── archive/ # Exploratory work └── dht11-anomaly-detection-lstm-ae-replay-attack.ipynb # Jupyter notebook ```
🔌 实时 IoT 数据生成层(ESP8266 & DHT11/22 固件) 为了利用实时的实时数据测试我们的入侵检测系统,我们部署了三个物理微控制器,通过 WiFi 传输温度和湿度遥测数据。 ### 🌐 硬件架构 ``` [Device_01: ESP8266 + DHT11] --(MQTT/WiFi)--> [Device_02: ESP8266 + DHT11] --(MQTT/WiFi)--> [MQTT Broker: 192.168.1.8 (Port 1883)] [Device_03: ESP8266 + DHT22] --(MQTT/WiFi)--> ``` ### ⚙️ 设备配置 * **设备 01:** 连接到 **DHT11** 传感器的 ESP8266,位于引脚 D4 (GPIO4)。 * **设备 02:** 连接到 **DHT11** 传感器的 ESP8266,位于引脚 D4 (GPIO4)。 * **设备 :** 连接到 **DHT22**(高精度)传感器的 ESP8266,位于引脚 D4 (GPIO4)。 ### 💾 固件源代码 (ESP8266 C++) 此 C++ 代码保持 MQTT 连接处于活动状态,通过 NTP 同步时间,并每 5 秒向 `sensor/Device_XX` 发布 JSON payload。文件位于 [hardware/](hardware/)。
🛡️ 网络入侵检测(Snort 3 / Snort++ 规则引擎) 虽然我们的机器学习层处理语义攻击,但我们部署了 **Snort 3** 来被动监控网关接口(`eth0`)上的网络级流量(端口 1883 上的 MQTT 和 ICMP 探测)。 ### ⚙️ 执行命令 ``` sudo snort -i eth0 -A alert_fast -c /etc/snort/snort.lua ``` ### 📝 自定义 Snort 规则 我们开发了自定义规则定义,以检测 MQTT 扫描、流量泛洪和侦察扫描事件: | 规则名称 | Snort 3 规则定义 | 目的 | | :--- | :--- | :--- | | **MQTT 连接尝试** | `alert tcp any any -> any 1883 (msg:"[IoT] MQTT Connection Attempt"; sid:2000001; rev:1;)` | 监控到 broker 的活动客户端连接。 | | **SYN 数据包扫描** | `alert tcp any any -> any 1883 (flags:S; msg:"[IoT] MQTT SYN Packet (Possible Scan)"; sid:2000002; rev:1;)` | 标记针对 MQTT 端口的 TCP SYN 端口扫描(例如 Nmap)。 | | **高 MQTT 流量 (DoS)** | `alert tcp any any -> any 1883 (msg:"[IoT] High MQTT Traffic"; detection_filter:track by_src, count 20, seconds 5; sid:2000003; rev:1;)` | 如果源 IP 在 5 秒内泛洪超过 $>20$ 个数据包到 broker,则触发。 | | **侦察 Ping** | `alert icmp any any -> any any (msg:"[IoT] Ping Detected"; sid:2000004; rev:1;)` | 标记识别网络上活动节点的 ICMP 回显扫描请求。 | ### 🛠️ 测试的模拟攻击场景 1. **侦察扫描:** 攻击者运行 `ping 192.168.1.8`。Snort 引发 `[IoT] Ping Detected` 警报。 2. **端口扫描检测:** 攻击者运行 `nmap -p 1883 192.168.1.8`。Snort 引发 `[IoT] MQTT SYN Packet (Possible Scan)`。 3. **拒绝服务:** 攻击者运行 MQTT 消息泛洪。 for i in {1..30}; do mosquitto_pub -h 192.168.1.8 -t test -m "attack"; done Snort 标记异常流量突发并生成 `[IoT] High MQTT Traffic` 警报。
# 🚀 快速开始 ## 📋 前置条件 ## 1️⃣ 安装依赖项 ``` pip install pandas numpy scikit-learn tensorflow streamlit plotly matplotlib ``` 或者,如果有可用的 `requirements.txt` 文件: ``` pip install -r requirements.txt ``` ## 2️⃣ 导航到项目目录 ``` cd IDS_Codebase ``` ## 3️⃣ 启动交互式仪表板 启动 Streamlit Web 应用程序: ``` streamlit run app.py ``` 执行后,打开浏览器并访问: ``` http://localhost:8501 ``` ## 4️⃣ 运行混合模拟演示 执行自动化演示流水线: ``` python run_hybrid_demo.py ``` ## 5️⃣ 执行单元测试 运行完整的测试套件以验证功能: ``` python -m unittest test_hybrid_iot_ids.py ``` ## 🛠 技术栈 | 组件 | 技术 | | ---------------- | ------------------ | | 语言 | Python 3.13 | | 仪表板 | Streamlit | | 机器学习 | TensorFlow | | 数据处理 | Pandas, NumPy | | 可视化 | Plotly, Matplotlib | | 测试 | unittest | | 算法 | Scikit-learn | ## ✅ 预期工作流 ``` Install Dependencies ↓ Launch Dashboard ↓ Run Hybrid Demo ↓ Execute Tests ↓ Analyze Results ```
标签:Kubernetes, LSTM, PKINIT, 入侵检测系统, 凭据扫描, 安全数据湖, 工控安全, 异常检测, 智能建筑, 物联网安全, 逆向工具