SeifMoussa/offline-network-packet-analyzer-lab

GitHub: SeifMoussa/offline-network-packet-analyzer-lab

一个基于 Python 的纯离线网络数据包分析实验室项目,通过解析本地合成日志和字节夹具,结合 YAML 检测规则实现威胁分诊与报告生成,适用于网络安全防御人员的技能展示。

Stars: 0 | Forks: 0

# 离线网络数据包分析器实验室 [![CI](https://github.com/SeifMoussa/offline-network-packet-analyzer-lab/actions/workflows/ci.yml/badge.svg)](https://github.com/SeifMoussa/offline-network-packet-analyzer-lab/actions/workflows/ci.yml) [![CodeQL](https://github.com/SeifMoussa/offline-network-packet-analyzer-lab/actions/workflows/codeql.yml/badge.svg)](https://github.com/SeifMoussa/offline-network-packet-analyzer-lab/actions/workflows/codeql.yml) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://github.com/SeifMoussa/offline-network-packet-analyzer-lab/blob/main/LICENSE) 离线网络数据包分析器实验室是一个防御性的、仅限离线的网络安全作品集项目。它分析本地合成数据包/事件日志、测试中手工制作的合成字节夹具、流摘要、检测规则、风险评分、脱敏证据以及 Markdown/JSON 报告。 这不是一个实时的嗅探器。它不捕获数据包,不检查网络接口,不解析 PCAP 文件,不需要 sudo/root 权限,不使用原始套接字或 AF_PACKET,不使用 Scapy,也不提取凭证。它不能替代生产环境的 IDS 或 NDR。 CI/CodeQL 已在本地配置,但尚未通过 GitHub 验证。该仓库尚未发布,也没有创建任何标签或发布版本。 ## 目标岗位 本项目旨在方便以下岗位人员进行代码审查: - SOC Analyst - Network Security Analyst - Detection Engineer - Security Engineer - Incident Response 实习生 ## 展示内容 - 无需实时流量采集的防御性数据包分析思维 - 协议头解析基础知识 - 严格的本地文件加载和样本验证 - 基于归一化事件的流和协议摘要 - 基于 YAML 的检测规则和警报分诊 - 确定性的风险评分 - 仅使用安全合成标记的敏感标记脱敏 - 适合作品集审查的 Markdown 和 JSON 报告 - Pytest、Ruff、本地文档检查、GitHub Actions、CodeQL 和 Dependabot 配置 ## 功能 - 本地 JSON、CSV 和文本合成样本加载器 - 验证允许的 IP 范围、域名、文件类型和样本大小 - Ethernet、IPv4、TCP 元数据和 UDP 元数据解析器 - 对畸形记录和畸形字节夹具的受控处理 - 流摘要、协议计数、主要来源、主要目标和主要通信方 - 基于 YAML 的合成检测规则 - 包含严重性、置信度、得分、风险级别、证据和指导的结构化警报 - 使用 `[REDACTED]` 脱敏的敏感标记证据 - JSON 和 Markdown 报告生成 - 针对显式本地输入、严重性过滤和失败阈值 (`fail-on`) 的 CLI 强化 - 文档安全检查和工作流配置测试 ## 技术栈 - Python 3.12 - `argparse` - `dataclasses` - `struct` - PyYAML - pytest - pytest-cov - Ruff - GitHub Actions - CodeQL - Dependabot ## 支持的合成样本 该项目仅支持安全的本地合成数据: - 合成 JSON 数据包/事件日志 - 合成 CSV DNS 类日志 - 合成文本 HTTP 类日志 - 仅在测试中手工制作的合成字节夹具 允许的值仅限于私人实验室范围、保留的文档 IP 范围、`example.com`、`example.org`、`example.net`、`.test` 域以及合成的 hostname。 ## 安全边界 - 仅用于防御 - 仅限离线/本地文件 - 仅限合成样本 - 无实时网络嗅探 - 无实时数据包捕获 - 无 raw sockets - 无 AF_PACKET - 无 sudo/root/CAP_NET_RAW 权限要求 - 无混杂模式 - 无数据包注入 - 无 ARP 欺骗 - 无 MITM 逻辑 - 无 PCAP 解析 - 无 Scapy - 无真实流量 - 无真实数据包捕获 - 无凭证提取 - 无 payload 转储 - 不能替代生产环境的 IDS/NDR ## 解析器概述 解析器模块仅对传入解析器函数的 `bytes` 进行操作。 - Ethernet:目的 MAC、源 MAC、EtherType、payload 提取 - IPv4:版本、IHL、TTL、协议、源 IP、目的 IP、payload 提取 - TCP 元数据:端口、序列号、确认号、数据偏移量、标志 - UDP 元数据:端口、长度、校验和、payload 提取 解析器测试仅使用手工制作的字节数组。不包含任何二进制样本文件、PCAP 文件或复制的真实数据包字节。 ## 流和协议摘要 流摘要是由从本地合成样本加载的归一化 `PacketEvent` 记录构建而成的。摘要包括: - 按来源、目的、协议和端口划分的流密钥 - 事件计数和字节总数 - 协议计数 - 目标端口计数 - 主要来源 - 主要目标 - 主要通信方 - 畸形记录计数 ## 检测类别 默认的合成检测包括: - 重复的连接尝试 - 来自单一源的多个目标端口 - 对可疑 `.test` 域的 DNS 查询 - 大容量合成出站流 - 异常目标端口 - 意外的协议和端口配对 - 重复的连接失败标记 - 可疑的合成 HTTP user-agent 标记 - 内部到文档范围的目标模式 - 带有脱敏证据的合成敏感标记检测 规则位于 [rules/signatures.yaml](rules/signatures.yaml)。 ## 评分和脱敏 警报会获得 0 到 100 之间的确定性实验室得分,以及信息、低、中、高或危急的风险等级。评分是透明的,旨在用于实验室分诊,而非生产风险评级。 敏感标记处理仅识别已批准的合成标记常量,并在 CLI 输出、警报证据、JSON 报告和 Markdown 报告中将它们呈现为 `[REDACTED]`。本项目不解析或提取真实的机密信息。 ## 报告 报告由本地合成样本生成,包括: - 安全范围 - 输入和文件摘要 - 流和协议摘要 - 检测摘要 - 带有得分的警报 - 脱敏证据 - 分诊指导 - 限制说明 示例报告: - [JSON 报告](reports/examples/offline_packet_analysis_report.json) - [Markdown 报告](reports/examples/offline_packet_analysis_report.md) ## CLI 示例 安装开发依赖: ``` python -m pip install -e ".[dev]" ``` 显示帮助: ``` python -m offline_packet_analyzer --help ``` 清点本地合成样本: ``` python -m offline_packet_analyzer inventory --input samples --format json ``` 验证本地合成样本: ``` python -m offline_packet_analyzer validate-samples --input samples ``` 摘要已加载的合成事件: ``` python -m offline_packet_analyzer summarize --input samples --format json python -m offline_packet_analyzer summarize --input samples --format text ``` 运行安全的合成检测: ``` python -m offline_packet_analyzer detect --input samples --format json python -m offline_packet_analyzer detect --input samples --format text python -m offline_packet_analyzer detect --input samples --format json --min-severity high python -m offline_packet_analyzer detect --input samples --format json --fail-on high ``` `--fail-on` 仅在存在达到或超过所选严重级别的警报时返回非零退出代码。 生成脱敏报告: ``` python -m offline_packet_analyzer report --input samples --output reports/examples/offline_packet_analysis_report.json --format json python -m offline_packet_analyzer report --input samples --output reports/examples/offline_packet_analysis_report.md --format markdown ``` 目录输入默认是递归的。在清点、验证、摘要、检测或报告命令上使用 `--no-recursive` 可以仅检查本地目录的直接子文件。 ## 测试和质量状态 最新的本地验证: - `164 passed` - `92.50%` 覆盖率 - `90%` 覆盖率门禁 - Ruff 检查通过 - Ruff 格式检查通过 - 文档安全检查通过 - CLI 冒烟测试通过 - 成功生成稳定的示例报告 - CLI/报告输出中不存在原始的已批准敏感标记常量 运行本地质量检查: ``` python -m pytest python -m pytest --cov=offline_packet_analyzer --cov-report=term-missing --cov-fail-under=90 python -m ruff check . python -m ruff format --check . python scripts/check-docs.py ``` ## CI 和 CodeQL 状态 GitHub Actions CI、CodeQL 和 Dependabot 已在本地配置。由于该代码库尚未发布,它们尚未通过 GitHub 验证。 已配置的工作流: - CI:测试、Ruff、覆盖率门禁、文档安全检查、CLI 冒烟测试 - CodeQL:使用 security-and-quality 查询进行 Python 分析 - Dependabot:每周更新 pip 和 GitHub Actions ## 项目结构 ``` .github/ GitHub templates, CI, CodeQL, Dependabot docs/ Safety, schema, detection, testing, release, portfolio docs reports/examples/ Stable redacted JSON and Markdown example reports rules/ Safe synthetic detection rules samples/logs/ Synthetic JSON, CSV, and text sample logs samples/raw/ Raw fixture policy documentation scripts/ Documentation safety checks src/offline_packet_analyzer/ detections/ Rule loading and detection engine flows/ Flow and protocol summaries guidance/ Defensive triage guidance loaders/ Local JSON, CSV, and text loaders models/ Event, flow, alert, packet, load models parsers/ Ethernet, IPv4, TCP, UDP metadata parsers redaction/ Synthetic marker redaction reporting/ JSON and Markdown report generation scoring/ Deterministic risk scoring tests/ Unit, CLI, safety, workflow, documentation tests ``` ## 已知限制 - 仅使用合成的本地样本 - 不处理真实的数据包捕获 - 不检查实时网络接口 - 不解码来自真实流量的应用层 payload - 不执行凭证提取 - 不能替代 IDS、NDR、SIEM 或数据包捕获平台 - CI/CodeQL 尚未在 GitHub 上运行 ## 许可证 MIT 许可证。请参阅 [LICENSE](LICENSE)。
标签:Beacon Object File, DNS 反向解析, IP 地址批量处理, Python, 安全规则引擎, 恶意代码分类, 数据脱敏, 无后门, 网络流量分析, 风险评分