本项目旨在从网络流量(PCAP 文件)中自动提取行为基元(Behavior Primitives),用于识别异常流量、暴力破解、扫描行为及 C2 通讯特征。项目集成了 Zeek 和 Suricata 两种强大的流量分析引擎,并基于提取的日志进行深度行为建模。
项目主要由以下核心模块组成:
- 传感器层 (
sensors/):wrapper.py: 封装了对 Zeek 和 Suricata 的调用逻辑,负责将 PCAP 转换为结构化日志。
- 分析层 (
analyzer/):loader.py: 负责加载不同来源的日志文件(如conn.log,http.log,eve.json)并转换为 Pandas DataFrame。primitives.py: 核心提取引擎。包含了 46 条预定义的行为基元规则,涵盖扫描、爆破、隧道、异常传输等维度。
- 展示层:
analyze.py: 一键式命令行分析工具。data/: 统一的数据管理目录。
为了确保分析任务的可追溯性,项目采用了统一的 data 目录结构:
data/pcaps/: 存放待分析的原始 PCAP 流量文件。data/logs/: 存放分析结果。每个分析任务会根据时间戳-文件名创建独立子目录。- 示例:
data/logs/20231230-1500-sample/ - 子项目包括:Zeek 日志、Suricata 告警、
primitives.json(原始数据)以及report.txt(人类易读简报)。
- 示例:
确保您的系统中已安装 zeek 和 suricata,且 Python 环境已配置好相关的依赖(pandas, numpy)。
使用一键分析工具处理 PCAP 文件:
python analyze.py --pcap data/pcaps/example.pcap如果您只对特定的行为感兴趣,可以使用 --type 参数。这不仅会过滤输出,还会跳过无关规则的执行并仅加载必要的日志文件,从而显著降低处理开销(内存和计算):
# 仅针对扫描行为进行高效提取
python analyze.py --pcap ... --type SCAN--pcap: (必选) 指向要分析的 PCAP 文件。--type: (可选) 仅输出特定类型的基元,例如python analyze.py --pcap ... --type SCAN。--out_base: (可选) 指定输出根目录,默认为data/logs。
提取出的每个行为基元包含以下关键信息:
- Type: 基元种类名称。
- Rule: 命中该基元时使用的逻辑规则描述。
- Source: 对应的原始日志文件路径。
- Evidence: 命中的具体证据详细信息(如流量大小、错误率、User-Agent 等)。
Behavior Primitive Analysis Project