logo

CICFlowMeter:强大的网络流量分析工具

Published on

介绍

CICFlowMeter 是一个开源的网络流量分析工具,由加拿大网络安全研究所(Canadian Institute for Cybersecurity)开发。它的主要特点包括:

  • 生成双向流并计算80多个网络流量特征
  • 支持从现有特征列表中选择所需特征
  • 提供添加新特征的功能
  • 允许控制流超时的持续时间
  • 输出为易于处理的 CSV 格式文件

CICFlowMeter 的输出包含每个流的标识符(FlowID、SourceIP、DestinationIP、SourcePort、DestinationPort 和 Protocol)以及相应的网络流量特征,这使得它成为网络安全研究、流量分类、异常检测和入侵检测等任务的理想工具。

安装

安装 CICFlowMeter 的步骤如下:

  1. 克隆 GitHub 仓库:

    git clone https://github.com/datthinh1801/cicflowmeter.git
    cd cicflowmeter
    
  2. 安装依赖并设置环境:

    python3 setup.py install
    
  3. 验证安装: 安装完成后,可以在命令行中运行 cicflowmeter --version 来验证安装是否成功。

使用方法

CICFlowMeter 提供了灵活的命令行选项,以下是一些常见的使用场景:

  1. 基础命令结构:

    cicflowmeter [-h] (-i INPUT_INTERFACE | -f INPUT_FILE) [-c] [-u URL_MODEL] output
    
  2. 从 PCAP 文件中提取特征:

    cicflowmeter -f example.pcap -c flows.csv
    
  3. 实时捕获网卡流量:

    sudo cicflowmeter -i eth0 -c flows.csv
    
  4. 指定输出目录(序列模式):

    cicflowmeter -i eth0 -c /path/to/output/directory
    
  5. 使用自定义 URL 模型:

    cicflowmeter -f example.pcap -c flows.csv -u /path/to/url_model.pkl
    

提取的特征值

CICFlowMeter 提取的特征值涵盖了网络流量的多个方面,主要包括:

1. 流的基本特征

  • 流持续时间 (Flow Duration): 一个流的总持续时间。
  • 协议类型 (Protocol): 使用的协议(例如 TCP、UDP、ICMP)。
  • 源/目的地 IP 和端口 (Source/Destination IP and Port): 流的源和目的地 IP 地址和端口号。
  • 流的方向 (Flow Direction): 流的方向(例如,出站、入站)。

2. 时间相关特征

  • 最小/最大/平均/标准偏差的分组间隔时间 (Min/Max/Mean/StdDev Inter Packet Time): 分组到达时间的统计数据。
  • 分组传输时间 (Packet Time): 分组传输的时间分布特征。

3. 分组大小相关特征

  • 最小/最大/平均/标准偏差的分组大小 (Min/Max/Mean/StdDev Packet Size): 分组大小的统计数据。
  • 总分组数 (Total Packet Count): 一个流中的总分组数量。
  • 每秒分组数量 (Packets per Second): 流中分组传输的速率。

4. 字节数相关特征

  • 总字节数 (Total Bytes): 一个流中传输的总字节数。
  • 每秒字节数 (Bytes per Second): 流中字节传输的速率。

5. 标志位特征

  • FIN、SYN、RST、PSH、ACK、URG 标志的计数 (Count of FIN/SYN/RST/PSH/ACK/URG Flags): 各种 TCP 标志位的统计计数。
  • TCP 窗口大小 (TCP Window Size): TCP 窗口大小的统计数据。

6. 流的比率特征

  • 源/目的地分组比率 (Src/Dst Packet Ratio): 源 IP 和目的地 IP 之间传输的分组比率。
  • 源/目的地字节比率 (Src/Dst Bytes Ratio): 源 IP 和目的地 IP 之间传输的字节比率。

7. 标志的分布特征

  • 下行流量标志的分布 (Down/Up Flow Flag Distribution): 流中各类标志的下行/上行分布情况。

8. 时间窗口相关特征

  • 时间窗口内的分组计数 (Packet Count in Time Window): 在给定时间窗口内的分组计数。
  • 流开始和结束时间 (Flow Start/End Time): 流的开始和结束时间。

9. 字节和分组的累积特征

  • 累积字节数 (Cumulative Bytes): 流中累积的字节数。
  • 累积分组数 (Cumulative Packets): 流中累积的分组数。

这些特征可以用来描述一个网络流的特性,并且在网络流量分析和入侵检测系统中起到至关重要的作用。CICFlowMeter 的灵活性使其能够根据研究的需要提取特定的特征,从而支持不同的网络分析任务。

高级用法

  1. 自定义特征选择: CICFlowMeter 允许用户自定义要提取的特征。可以通过修改配置文件来实现这一点。

  2. 集成到自动化工作流: CICFlowMeter 可以轻松集成到自动化脚本或更大的数据处理管道中,例如:

    #!/bin/bash
    for file in /path/to/pcap/files/*.pcap; do
        cicflowmeter -f "$file" -c "${file%.pcap}_flows.csv"
    done
    
  3. 实时监控和警报: 结合其他工具,可以使用 CICFlowMeter 实现实时网络监控和异常检测:

    cicflowmeter -i eth0 -c - | awk -F',' '{if($SomeFeatureColumn > Threshold) print "Alert: Anomaly detected!"}'
    

注意事项

  • 实时捕获流量通常需要超级用户权限。
  • 处理大型 PCAP 文件或长时间运行实时捕获可能会消耗大量系统资源。
  • 确保有足够的磁盘空间来存储生成的 CSV 文件,特别是在处理大量数据时。

结论

CICFlowMeter 是一个强大而灵活的网络流量分析工具,适用于各种网络安全和研究场景。通过提供丰富的流量特征和易用的接口,它为研究人员和安全专家提供了深入分析网络行为的能力。无论是进行离线数据分析还是实时网络监控,CICFlowMeter 都是一个值得考虑的工具。