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, 云计算, 代码示例, 协议分析, 威胁检测, 应用识别, 数据分析, 数据包解析, 无后门, 权限提升, 流量过滤, 深度包检测, 网络可见性, 网络安全, 网络安全分析, 网络安全工具, 规则引擎, 进程隐藏, 逆向工具, 速率限制, 隐私保护