跳转至

网络流量异常检测与机器学习

难度:🟡 中级 | 领域:网络安全、机器学习 | 阅读时间:约 22 分钟

日常类比

小区保安看人流久了会有直觉:早八点出门、下午快递、夜里安静。凌晨三点频繁进出就会警觉。

网络流量异常检测同理:先学习物联网(Internet of Things, IoT)设备的正常模式(传感器数分钟一个小包、摄像头持续上行),偏离时告警。机器学习(Machine Learning, ML)让"保安"自动学正常,而不是手写每一条规则。

摘要

IoT 流量往往周期强、目的地少、包长相对稳定,适合用统计与学习做基线。本文覆盖流量指纹与多尺度特征、监督/无监督模型、公开数据集、边缘实时流水线与误报治理,并给出局限与改进[1][2][4]。文中代码为教学骨架,非生产完备实现。

1. IoT 流量特征

1.1 与传统 IT 对照

特征 IoT 流量(常见) 传统 IT 流量(常见)
包大小 偏小且较稳定 变化大
发送节奏 周期/事件驱动 更随机、突发多
目的地 少量固定服务 高度多样
协议 MQTT/CoAP/Modbus 等 HTTP(S) 为主
可预测性 相对高 相对低

1.2 指纹特征(示意)

# 教学:从数据包提取设备指纹特征
class IoTTrafficFingerprint:
    def extract_features(self, packets):
        pkt_sizes = [len(p) for p in packets]
        features = {
            'avg_pkt_size': float(np.mean(pkt_sizes)),
            'std_pkt_size': float(np.std(pkt_sizes)),
            'avg_iat': float(np.mean(np.diff([p.time for p in packets]))),
            'unique_dst_count': len({p.dst_ip for p in packets}),
        }
        return features

设备指纹研究显示,仅凭流量侧特征即可在实验环境中区分多种消费级设备;现场 Wi-Fi 漫游与网络地址转换(Network Address Translation, NAT)会降低可分性[3]。


2. 特征工程

2.1 多层次特征

层次 特征例 检测能力倾向
包级 大小、方向、标志位 协议异常
流级 时长、包数、字节 扫描/洪泛
会话级 请求-响应模式 远控通道
设备级 活跃时段、目的地集合 被控后行为漂移
网络级 新边、拓扑变化 横向移动

2.2 滑动窗口

窗口过短噪声大,过长则告警滞后。实践中常用多尺度(秒级到分钟级)并行,再融合[2][4]。载荷字节熵可辅助发现加密隧道或二进制外传,但对已加密业务需谨慎解释。


3. 机器学习模型

3.1 选型对照

模型 类型 优势 劣势 部署倾向
Random Forest 监督 快、可解释 要标签 网关
Isolation Forest 无监督 少标签 高维易不稳 网关
Autoencoder 无监督重构 复杂模式 阈值难定 边缘/云
LSTM-AE 序列 时序依赖 算力高 云/加速器
1D-CNN 局部模式 少手工特征 要数据 边缘/云
GNN 拓扑感知 工程复杂

Kitsune 等在线自编码器集成证明:在部分场景可用轻量无监督做线速向检测,但特征设计与阈值策略决定误报[4]。

3.2 Random Forest 骨架

from sklearn.ensemble import RandomForestClassifier
from sklearn.preprocessing import StandardScaler

class IoTAnomalyDetector:
    def __init__(self):
        self.model = RandomForestClassifier(
            n_estimators=100, max_depth=15, min_samples_leaf=5, n_jobs=-1
        )
        self.scaler = StandardScaler()

    def train(self, X, y):
        Xs = self.scaler.fit_transform(X)
        self.model.fit(Xs, y)

    def predict(self, x):
        xs = self.scaler.transform(x.reshape(1, -1))
        return self.model.predict(xs)[0], self.model.predict_proba(xs)[0]

3.3 轻量 Autoencoder 与阈值

def determine_threshold(model, normal_data, percentile=99):
    model.eval()
    with torch.no_grad():
        recon = model(normal_data)
        errors = torch.mean((normal_data - recon) ** 2, dim=1)
    return torch.quantile(errors, percentile / 100.0).item()

百分位阈值把误报率钉在训练集"正常"分布上;概念漂移后必须重估,否则夜间维护流量会被当成攻击。


4. 公开数据集

数据集 年份 特点 注意
CIC-IoT-2023 2023 设备与攻击类多 类别极不均衡[1]
N-BaIoT 2018 真实恶意软件感染流量 设备种类有限[2]
IoT-23 2020 长期恶意捕获 标签与预处理成本
TON_IoT 2020 多层遥测 场景拼合痕迹
UNSW-NB15 2015 经典基准 IoT 特异性低

N-BaIoT 常用多时间窗口统计特征(百毫秒到分钟)堆叠成高维向量;训练前应做泄漏检查(勿把未来窗口信息塞进当前样本)[2]。


5. 实时检测流水线

镜像/TAP → 包解析 → 流聚合 → 滑动窗口特征 → ML 推理 → 去重聚合 → SIEM
                ↘ PCAP 留存(合规与取证)

边缘侧可用开放神经网络交换格式(Open Neural Network Exchange, ONNX)运行时做推理;特征提取若用纯 Python 往往先成为瓶颈,热点路径宜用 C/Rust。分层策略:边缘粗筛,云端深挖,与边缘 IDS 文一致[4][5]。


6. 误报管理

来源 示例 缓解
行为变更 固件升级后模式变 自适应基线/再训练
地址变更 DHCP 换 IP 用设备指纹而非 IP
合法突发 批量上报 多尺度与相关性
过拟合 训练集单一 交叉场景验证

告警抑制:白名单、同设备同类型冷却时间、动态阈值、多设备并发异常升级。联邦自学习方案(如 DÏoT)尝试减少中心标签依赖,但仍需应对 Non-IID[5]。


7. 实践路径

  1. 用 N-BaIoT 或 CIC 子集训练 Random Forest,建立评估脚本(精确率/召回/F1,按攻击类宏平均)。
  2. 实现包长、到达间隔、流统计与简单周期性特征。
  3. 对比 Isolation Forest / Autoencoder 无监督。
  4. 导出 ONNX,在单板机测尾延迟与中央处理器(CPU)占用。
  5. 接安全信息与事件管理(SIEM)前先做影子模式一周,标定误报。

8. 局限、挑战与可改进方向

1. 高离线分数掩盖管道成本

局限:论文 F1 基于已提取特征;线上解析、流表与窗口计算才是瓶颈[1][4]。 改进:联合压测"包→告警"全路径;报告每秒流数与 p99 延迟。

2. 标签稀缺与概念漂移

局限:生产网几乎无持续攻击标签;季节性与新设备导致基线失效。 改进:人工反馈闭环;漂移检测触发再训练;设备分群建模。

3. 加密与隐私

局限:TLS 普及后载荷特征失效,仅靠侧信道可能误伤业务或触及隐私合规。 改进:专注流元数据与目的地画像;敏感环境做目的限定与最短留存。

4. 对抗与规避

局限:攻击者可抖动时序、填充包长以贴近正常指纹,使基于侧信道的检测失效[4][12]。 改进:多特征融合与集成;保留难伪造的强规则(已知恶意域名/证书钉扎失败等)。

5. 数据集偏差

局限:实验室拓扑与真实厂/园区差异大,迁移性能下降[1][2]。 改进:现场影子流量校准;领域自适应;公开复现时固定划分与种子。


参考文献

[1] E. C. P. Neto et al., "CICIoT2023: A Real-Time Dataset and Benchmark for Large-Scale Attacks in IoT Environment," Sensors / IEEE Access 相关发布, 2023. [2] Y. Meidan et al., "N-BaIoT—Network-Based Detection of IoT Botnet Attacks Using Deep Autoencoders," IEEE Pervasive Computing, 2018. [3] A. Sivanathan et al., "Classifying IoT Devices in Smart Environments Using Network Traffic Characteristics," IEEE Transactions on Mobile Computing, 2019. [4] Y. Mirsky et al., "Kitsune: An Ensemble of Autoencoders for Online Network Intrusion Detection," NDSS, 2018. [5] T. D. Nguyen et al., "DÏoT: A Federated Self-learning Anomaly Detection System for IoT," IEEE ICDCS, 2019. [6] I. Ullah and Q. H. Mahmoud, "Design and Development of a Deep Learning-Based Model for Anomaly Detection in IoT Networks," IEEE Access, 2021. [7] M.-O. Pahl and F.-X. Aubet, "All Eyes on You: Distributed Multi-Dimensional IoT Microservice Anomaly Detection," IEEE CNSM, 2018. [8] A. Habibi Lashkari et al., CIC 流量特征与数据集方法论相关工作, 2018 及后续. [9] R. Doshi et al., "Machine Learning DDoS Detection for Consumer Internet of Things Devices," IEEE S&P Workshops, 2018. [10] M. Zolanvari et al., "Machine Learning-Based Network Vulnerability Analysis of Industrial Internet of Things," IEEE Internet of Things Journal, 2019. [11] N. Koroniotis et al., "Towards the Development of a Realistic Botnet Dataset in the Internet of Things," FGCS, 2019. [12] M. A. Ferrag et al., "Edge-IIoTset" 及工业 IoT 检测基准相关, IEEE Access, 2022.