Baibhav-coder/deep-packet-inspection-analyzer

GitHub: Baibhav-coder/deep-packet-inspection-analyzer

基于 Python 和 Scapy 的深度包检测引擎,用于离线分析 PCAP 流量并实现应用识别、威胁检测和规则过滤。

Stars: 0 | Forks: 0

## 🚀 深度包检测 (DPI) 分析器 – Python 实现 本项目使用 Python 实现了一个深度包检测 (DPI) 引擎,用于分析来自 PCAP 文件的流量,对应用流量进行分类,检测可疑活动,并应用基于规则的过滤。 该系统模拟了现实世界中企业网络安全工具的工作方式,包括: 🔍 流量检测 🌐 应用识别 🛡️ 威胁识别 📊 网络分析 ⚡ 多线程数据包处理 本项目展示了现代防火墙、IDS/IPS 系统和流量监控工具如何在内部分析网络数据包。 ## 📚 目录 1️⃣ 什么是深度包检测 2️⃣ 网络背景知识 3️⃣ 项目概述 4️⃣ 系统架构 5️⃣ 数据包处理流程 6️⃣ 项目结构 7️⃣ 核心组件 8️⃣ 威胁检测 9️⃣ 运行分析器 🔟 理解输出结果 1️⃣1️⃣ 扩展项目 ## 🔍 1. 什么是深度包检测 深度包检测 (DPI) 是一种用于检查网络数据包的技术,它超越了简单的头部分析。 传统的网络监控仅检查: 源 IP (Source IP) 目的 IP (Destination IP) 端口号 (Port number) 然而,DPI 会检查实际的数据包内容 (payload),以识别应用程序并检测恶意流量。 ## 💡 实际应用场景 🏢 企业防火墙 🛡️ 入侵检测系统 (IDS) 📡 ISP 流量监控 👨‍👩‍👧 家长内容过滤 🦠 恶意软件检测系统 ## DPI 工作流程 PCAP 流量 ⬇ 数据包解析器 ⬇ 流跟踪器 ⬇ 应用分类 ⬇ 规则引擎 ⬇ 流量分析 + 输出 ## 🌐 2. 网络背景知识 网络通信遵循分层架构。 📡 网络协议栈 应用层 HTTP / HTTPS / DNS 传输层 TCP / UDP 网络层 IP 寻址 数据链路层 以太网帧 每个数据包包含多个嵌套的头部。 以太网头部 ➡ IP 头部 ➡ TCP/UDP 头部 ➡ 负载 (应用数据) DPI 引擎分析这些层以确定: ✔ 源主机和目的主机 ✔ 传输协议 ✔ 应用类型 ✔ 可疑流量模式 ## 🧠 3. 项目概述 此 DPI 分析器从 PCAP 捕获文件读取网络流量,分析每个数据包,并生成详细报告。 🛠️ 分析器执行的操作 1️⃣ 从 PCAP 捕获中读取数据包 2️⃣ 解析 Ethernet/IP/TCP/UDP 头部 3️⃣ 提取应用信息 4️⃣ 识别应用流量 5️⃣ 应用安全规则 6️⃣ 检测可疑活动 7️⃣ 生成网络统计信息 8️⃣ 生成详细的 DPI 报告 ## 🏗️ 4. 系统架构 分析器由几个处理模块组成。 PCAP 读取器 ⬇ 数据包解析器 ⬇ 连接跟踪器 ⬇ 规则引擎 ⬇ 威胁检测器 ⬇ 流量统计 每个模块处理数据包并将结果转发到下一阶段。 这种模块化架构使系统易于扩展和维护。 ## ⚙️ 5. 数据包处理流程 分析器处理的每个数据包都遵循此流水线: 从 PCAP 读取数据包 ⬇ 解析 Ethernet 头部 ⬇ 解析 IP 头部 ⬇ 解析 TCP/UDP 头部 ⬇ 提取 Payload ⬇ 识别应用 ⬇ 应用过滤规则 ⬇ 更新网络统计信息 🔑 流标识 连接使用五元组 进行跟踪: 源 IP 目的 IP 源端口 目的端口 协议 这允许将属于同一网络连接的数据包进行分组。 ## 📂 6. 项目结构 deep-packet-inspection-analyzer app_classifier.py ➡ 应用识别逻辑 packet_parser.py ➡ 解析 Ethernet/IP/TCP/UDP 头部 pcap_reader.py ➡ 从 PCAP 文件读取数据包 sni_extractor.py ➡ 提取 TLS SNI 域名 rule_engine.py ➡ 应用安全规则 connection_tracker.py ➡ 跟踪活动连接 traffic_stats.py ➡ 数据包和字节统计 connection_stats.py ➡ 连接分析 decision_stats.py ➡ 允许 / 阻止 决策 bandwidth_stats.py ➡ 流量带宽分析 threat_detector.py ➡ 检测可疑流量 top_talkers.py ➡ 识别最活跃的主机 output_writer.py ➡ 将过滤后的流量写入 PCAP thread_safe_queue.py ➡ 线程安全队列 fast_path.py ➡ 快速数据包处理 load_balancer.py ➡ 将数据包分发给工作线程 mt_dpi_engine.py ➡ 多线程 DPI 引擎 test_reader.py ➡ 主入口点 ## 🧩 7. 核心组件 📥 PCAP 读取器 从 PCAP 文件读取数据包数据。 负责: 打开 PCAP 文件 读取数据包头部 提取原始数据包数据 📦 数据包解析器 提取协议头部,包括: Ethernet IPv4 TCP UDP 提取的关键信息: ✔ 源 IP ✔ 目的 IP ✔ 端口 ✔ 协议 🧠 应用分类器 使用以下方式识别应用流量: 端口号 TLS SNI 域名 流量模式 示例: YouTube Facebook Google Netflix DNS HTTPS HTTP 🛡️ 规则引擎 对流量的应用过滤规则。 支持的规则包括: 阻止特定端口 阻止特定应用 阻止特定域名 示例规则: block_port(4444) 🔗 连接跟踪器 使用五元组 维护每个连接的状态。 跟踪: 数据包计数 字节计数 应用类型 连接状态 🚨 威胁检测器 检测可疑活动,例如: 恶意软件命令通道 异常端口 可疑域名 示例检测: ⚠ 可疑端口: 4444 ⚠ 可能的木马通信 ## 🕵️ 8. 威胁检测 分析器检测通常与恶意活动相关的流量模式。 示例包括: 木马命令端口 可疑域名 未知加密流量 异常通信模式 威胁警报出现在最终报告中: THREAT ALERTS Possible trojan activity detected Suspicious connection on port 4444 ## ▶️ 9. 运行分析器 安装所需依赖 pip install scapy 运行分析器 python test_reader.py 分析特定的 PCAP 文件 python test_reader.py capture.pcap ## 📊 10. 理解输出结果 分析器生成详细的报告。 🔗 连接摘要 列出检测到的网络流。 示例: 142.250.185.206:443 → 192.168.1.100 Application: GOOGLE Packets: 4 Bytes: 300 📈 流量统计 显示指标,例如: 总数据包 总字节 应用分布 ⚖ 决策统计 显示过滤决策: ALLOW BLOCK MONITOR 🌐 Top Talkers (主要通信主机) 识别最活跃的主机。 示例: 192.168.1.100 Packets: 72 Bytes: 5468 🚨 威胁警报 显示分析器检测到的可疑流量。 ## 🔧 11. 扩展项目 该项目可以通过多种方式进行扩展。 可能的改进: 📡 实时数据包捕获 🤖 机器学习流量分类 🦠 恶意软件签名检测 📊 用于监控的 Web 仪表板 📉 数据包可视化工具 ⚡ 分布式 DPI 处理 ## 🧾 总结 本项目演示了深度包检测 (DPI) 系统的内部工作原理。 它提供了以下方面的实践经验: 📡 网络数据包分析 🔍 应用流量分类 🛡️ 安全规则执行 🚨 威胁检测 📊 网络统计分析 该项目作为一个学习平台,适用于: 网络安全 网络工程 数据包分析 入侵检测系统 ⭐ 如果您觉得这个项目有用,请考虑给仓库一个 Star!
标签:AMSI绕过, AWS, DNS枚举, DPI, PCAP, PyShark, Python, Scapy, 云计算, 代码示例, 协议分析, 威胁检测, 应用识别, 数据分析, 数据包解析, 无后门, 权限提升, 流量过滤, 深度包检测, 网络可见性, 网络安全, 网络安全分析, 网络安全工具, 规则引擎, 进程隐藏, 逆向工具, 速率限制, 隐私保护