Harshit7623/Packet_Peeper

GitHub: Harshit7623/Packet_Peeper

一个集实时数据包捕获、网络流量分析、设备发现与安全威胁检测于一体的综合性网络监控平台。

Stars: 1 | Forks: 0

# Packet Peeper - 高级网络安全监控器 ![CI - Pytest](https://static.pigsec.cn/wp-content/uploads/repos/cas/2a/2a194aef27737689a94fd76730a52b805e75363dfd9113d6ed74e4efd04edb09.svg) ![Version](https://img.shields.io/badge/version-1.0.0-blue.svg) ![Python](https://img.shields.io/badge/python-3.8+-blue.svg) ![React](https://img.shields.io/badge/react-19-61dafb.svg?logo=react) ![Electron](https://img.shields.io/badge/electron-28.1.0-47848f.svg?logo=electron) ![License](https://img.shields.io/badge/license-MIT-green.svg) Packet Peeper 是一个综合性的网络安全监控和数据包分析平台,提供实时网络流量监控、高级威胁检测和设备追踪功能。它将强大的数据包捕获能力与智能安全分析相结合,并配备了一个美观、直观的 Web 界面。 ![Packet Monitor Dashboard](https://static.pigsec.cn/wp-content/uploads/repos/cas/e7/e724023f6b69fa62715c551b2208b8e8d70b4700091351f6ecacc215ea8326f8.png) ## 目录 - [功能](#features) - [项目结构](#project-structure) - [前置条件](#prerequisites) - [安装与使用](#installation--usage) - [工作原理](#how-it-works) - [配置](#configuration) - [架构](#architecture) - [开发](#development) - [API 端点与 WebSocket 事件](#api-endpoints--websocket-events) - [故障排除](#troubleshooting) ## 功能 ### 核心数据包捕获与分析 - **实时数据包捕获**:实时监控网络流量,并提供详细的数据包信息 - **协议分析**:按协议自动分类数据包 - **服务分类**:识别 WhatsApp、YouTube、Facebook、Instagram、Netflix、Telegram、Zoom、AWS、Cloudflare 等服务 - **基于 DNS 的分类**:通过被动的 DNS 查询/响应分析进行服务识别 - **TLS SNI 解析**:从 HTTPS 连接中提取主机名以实现更好的分类 - **IP 范围匹配**:将流量与已知服务的 IP 范围进行匹配 ### 安全与认证 - **本地用户认证**:使用 bcrypt 哈希和 JWT token 的安全登录系统。 - **数据持久化**:集成 SQLite,用于稳健存储用户配置文件和应用状态。 ### 网络安全与威胁检测 ![Security Alerts Live Detection](https://raw.githubusercontent.com/Harshit7623/Packet_Peeper/main/docs/assets/security_demo.gif) - **实时安全监控**:分析数据包以识别潜在的安全威胁 - **攻击检测**: - 端口扫描检测:识别可疑的端口扫描企图 - DDoS 攻击检测:检测分布式拒绝服务攻击 - 暴力破解检测:监控针对 SSH、RDP、Telnet 的暴力破解登录企图 - DNS 隧道检测:识别基于 DNS 的数据外发企图 - **安全警报**:针对检测到的威胁实时发出通知,并附带严重程度级别(低、中、高、严重) - **警报冷却管理**:通过可配置的冷却期防止警报轰炸 - **详细证据**:为每个检测到的威胁收集全面的证据 ### 设备与网络管理 ![Connected Devices Topology](https://static.pigsec.cn/wp-content/uploads/repos/cas/68/686e56eb7ce919365bfac77ec72178f815f297f46b6a68d78999edd43b38284a.gif) - **活动设备检测**:实时发现并追踪网络上的设备 - **设备信息**: - IP 地址检测 - MAC 地址解析 - 使用 OUI(MAC 地址前缀查找)识别设备制造商 - 主机名解析 - 设备类型分类 - **设备流量监控**:追踪每个设备的传入/传出数据包和字节数 - **网络接口检测**:自动检测网络接口并计算 CIDR - **设备统计信息**:每个设备的实时数据包和字节计数器 ### 流量分析与监控 ![Traffic Analysis & Top Talkers](https://static.pigsec.cn/wp-content/uploads/repos/cas/d3/d39467136badf4b9eb6ece5d30621e0c92f75388265b24c6f640c6fe5d4dfc95.png) - **网络统计**:全面的带宽和流量分析 - 当前带宽使用情况 - 峰值带宽追踪 - 平均带宽计算 - 基于协议的流量细分 - **活动连接监控**:追踪带有源、目标和端口信息的实时连接 - **Top 主机分析**:识别网络活动最频繁的主机 - **带宽历史记录**:用于趋势分析的时间序列带宽数据 ### 系统与性能监控 ![System Core Health & Resources](https://static.pigsec.cn/wp-content/uploads/repos/cas/ea/ead6918e644eb098de560810e94b04d2c964d776eec1efea3f322d280a74f8b6.png) - **系统资源监控**: - CPU 使用率追踪 - 内存使用情况监控 - 磁盘空间利用率 - **网络性能指标**: - 延迟测量 - 抖动计算 - 丢包率追踪 ### Web 界面与可视化 ![Command Center Overview](https://static.pigsec.cn/wp-content/uploads/repos/cas/bc/bc98253025185256ce74317622869be3f42f046b1bf8fcfa09cbedede483f14f.png) - **现代 React 仪表板**:简洁、响应式的 UI,提供多种视图 - **实时更新**:基于 WebSocket 的实时更新(200ms 刷新率) - **多个仪表板页面**: - **Packet Monitor**:详细的数据包捕获视图 - **Alerts**:带有严重程度指示器的安全警报 - **Devices**:网络设备发现和监控 - **Network Traffic**:实时流量分析和 Top 主机 - **Statistics**:系统和网络性能指标 - **Analytics**:用于流量分析的图表和图形 - **Logs**:应用程序和系统日志查看器 - **Reports**:网络分析报告生成 - **Settings**:应用程序配置 - **交互式图表**:使用 Chart.js 直观展示网络数据 - **连接状态指示器**:实时的 WebSocket 连接状态 ## 项目结构 ``` NetworkSnifferr/ ├── attack_tests/ # Attack simulation toolkit ├── backend/ # Flask + Socket.IO backend │ ├── app.py │ ├── packet_sniffer.py │ ├── network_security_monitor.py │ ├── config/ # Backend configuration overrides │ ├── services/ # Authentication & Database services │ ├── tests/ # Pytest test suites │ └── requirements.txt ├── core_sniffer_rs/ # Experimental Rust packet-capture core (PyO3/pcap/pnet) ├── desktop/ # Electron desktop wrapper ├── docs/ # Detailed documentation ├── frontend/ # React + Vite frontend │ ├── src/ │ ├── package.json │ └── vite.config.ts ├── docker_compose.yml └── README.md ``` ## 前置条件 - Python 3.8+ - Node.js 14+ - 管理员/root 权限(在 Windows/Linux 上捕获数据包时需要) - 具备数据包捕获能力的网络接口 - Visual C++ Build Tools(适用于 Windows,如果从源代码编译包) ## 安装与使用 Packet Peeper 现在通过 Electron 作为独立的桌面应用程序分发。这是使用该平台最推荐且最简单的方式。 ### 桌面应用程序(推荐) 1. 导航到 `desktop/electron/dist/` 目录,或者从 GitHub Releases 页面下载最新版本。 2. **Linux**:为 AppImage 添加可执行权限并运行: chmod +x "Packet Peeper-1.0.0.AppImage" sudo -E ./"Packet Peeper-1.0.0.AppImage" --no-sandbox *(注意:`sudo -E` 会保留您的环境变量,以便显示正常工作,并且绑定到网络接口进行原始数据包捕获时需要用到它)。* 3. Electron 包装器将自动启动已编译的 Python 后端,连接 React 前端,并显示仪表板。 ### 开发者设置(从源码) 如果您希望修改代码或在未编译 Electron 应用程序的情况下从源码运行应用程序,请参阅 [构建指南](BUILD.md) 获取完整说明。 #### 后端设置 1. 克隆仓库: git clone https://github.com/Harshit7623/Packet_Peeper.git cd Packet_Peeper 2. 创建并激活虚拟环境: # Windows python -m venv venv venv\Scripts\activate # Linux/macOS python3 -m venv venv source venv/bin/activate 3. 安装 Python 依赖项: pip install -r backend/requirements.txt #### 前端设置 1. 导航到 React 应用程序目录: cd frontend 2. 安装 Node.js 依赖项: npm install 3. 返回根目录: cd .. ## 用法 ### 启动后端 运行 Flask 应用程序,并将网络接口名称作为参数传入: ``` # Windows python backend/app.py auto # Linux python backend/app.py auto # macOS python backend/app.py auto ``` **Linux 注意事项(推荐):** 授予一次数据包捕获能力,这样您就不需要每次运行都使用 sudo: ``` sudo setcap cap_net_raw,cap_net_admin=eip "/path/to/NetworkSnifferr/.venv/bin/python" "/path/to/NetworkSnifferr/.venv/bin/python" backend/app.py auto ``` 如果您不想设置 capabilities,请使用 virtualenv 中的 Python 通过 sudo 运行: ``` sudo "/path/to/NetworkSnifferr/.venv/bin/python" backend/app.py auto ``` 要查找您的网络接口名称: ``` # Windows python -c "from scapy.all import conf; print(conf.ifaces)" # Linux/macOS ip link show ``` 后端将启动于 `http://localhost:5000`,并开始在指定的接口上捕获数据包。 ### 启动前端 在单独的终端中,导航到 frontend 目录并启动开发服务器: ``` cd frontend npm run dev ``` 前端将可以通过 `http://localhost:5173` 访问。 ### 攻击模拟(仅用于测试) 要测试安全检测功能,请确保后端正在运行,然后使用: ``` cd attack_tests python run_all_attacks.py ``` 这将模拟各种攻击: - 端口扫描 - DDoS 企图 - 暴力破解登录企图 - DNS 隧道 **注意**:这仅用于您拥有或被授权测试的网络上的测试/教育目的。 ## 工作原理 ### 数据包捕获流水线 1. **接口选择**:用户指定要监控的网络接口 2. **数据包捕获**:Scapy 使用 BPF 过滤器捕获接口上的所有数据包 3. **数据包处理**:解析并分析每个数据包: - IP 层提取(源/目标 IP) - 传输层分析 - 端口信息提取 - 协议识别 4. **服务分类**:使用多种方法对数据包进行分类: - 基于 DNS 的分类(被动 DNS 缓存) - TLS SNI 主机名提取 - 与已知服务 CIDR 块的 IP 范围匹配 - 基于端口的回退分类 5. **安全分析**:分析每个数据包是否存在威胁: - 端口扫描检测(基于当前活动配置文件的动态阈值) - DDoS 检测(基于当前活动配置文件的动态阈值) - 暴力破解检测(基于当前活动配置文件的动态阈值) - DNS 隧道检测(DNS 查询中的可疑模式) 6. **设备追踪**:发现并监控活动设备: - IP 地址追踪 - MAC 地址解析 - 设备制造商识别 - 主机名解析 - 每个设备的流量统计 7. **实时广播**:通过 WebSocket 将数据发送到连接的客户端 8. **前端显示**:React 仪表板实时显示数据包、警报和统计信息 ### 安全检测引擎 NetworkSecurityMonitor 类实现了多种检测算法: - **有状态分析**:随时间追踪连接和模式 - **时间窗口检测**:使用可配置的时间窗口进行模式分析 - **冷却管理**:通过针对每个源的冷却期防止警报轰炸 - **证据收集**:为每个警报收集详细的证据 - **严重性分类**:将威胁分类为低、中、高或严重 ### WebSocket 通信 - 后端每 200ms 发送一次更新 - 前端维持持久的 WebSocket 连接 - 在 WebSocket 不可用时回退到轮询 - 带有指数退避的自动重连 ## 配置 ### 警报阈值(在 network_security_monitor.py 中) 阈值现在由动态配置文件系统(`strict`、`balanced`、`sensitive`、`test`)控制。可以通过 API 更改活动配置文件。 ``` # Alert cooldown ALERT_COOLDOWN_SECONDS: configurable (default 120, reduced for test modes) # Thresholds 动态更新,无需重启。 ``` ### BPF 过滤器(在 packet_sniffer.py 中) ``` (tcp or udp) and not arp and not (udp and (port 67 or 68 or 5353 or 1900 or 123)) ``` 过滤掉来自 DHCP、mDNS、SSDP、NTP 的噪音 ### 服务映射 服务分类基于域名和 IP 范围: - Google、Facebook、WhatsApp、Instagram、Netflix、Microsoft、Telegram、Slack、Zoom、AWS、Cloudflare - 可通过 service_map.json 进行扩展 ## 架构 ### 后端组件 **app.py - Flask WebSocket 服务器** - 初始化带有 Socket.IO 支持的 Flask 应用程序 - 管理 WebSocket 连接 - 向所有连接的客户端广播实时更新 - 实现客户端请求的事件处理程序 - 管理警报广播系统 **packet_sniffer.py - 数据包捕获引擎** - 在指定接口上基于 Scapy 的数据包捕获 - 实时设备发现和追踪 - 数据包分类和服务识别 - 统计信息聚合(带宽、协议等) - 用于协议分析的 TCP 流重组 - 用于数据包处理的回调系统 **network_security_monitor.py - 安全分析引擎** - 威胁检测算法 - 数据包统计追踪 - 攻击模式识别 - 带有冷却管理的警报生成 - 为检测到的威胁收集证据 ### 前端组件 **React 仪表板** - 实时数据包监控 - 安全警报可视化 - 设备网络映射 - 网络流量分析 - 系统统计信息显示 - 交互式报告生成 **Socket.IO 客户端** - 维持与后端的持久连接 - 接收并处理实时更新 - 自动重连处理 - 回退到轮询模式 ## 性能核心(实验性) 仓库包含一个实验性的原生系统编程模块,位于 `core_sniffer_rs/`。该模块代表了正在进行的性能优化工作,旨在探索直接在 Rust 中进行高吞吐量数据包处理: - **原生捕获和解析**:利用 `pcap` 和 `pnet` 以原生速度捕获和拆解 Ethernet、IPv4、TCP、UDP 和 ICMP 帧。 - **Python FFI 桥接:使用 `PyO3` 创建一个编译好的 Python 扩展(`RustSniffer`),它公开了非阻塞的捕获控制方法,并通过零拷贝 JSON 字符串调用 Python 回调。 - **集成状态**:此模块目前处于实验阶段,作为未来扩展的架构概念验证。它尚未接入活动的 `packet_sniffer.py` 生产流水线中,允许当前的 Scapy 实现在优化原生核心的同时保持广泛的兼容性。 ## 开发 ### 后端开发 关键模块及其职责: - `app.py`:Flask 应用程序设置,WebSocket 事件处理程序 - `packet_sniffer.py`:数据包捕获,设备检测,统计信息 - `network_security_monitor.py`:安全分析和威胁检测 - `test_attacks.py`:用于测试检测能力的攻击模拟 添加新功能: 1. 扩展 `PacketSniffer` 类以进行新的数据包分析 2. 将检测算法添加到 `NetworkSecurityMonitor` 3. 在 `app.py` 中创建新的 WebSocket 事件处理程序 ### 前端开发 React 应用程序使用: - **React Hooks**:使用 useState、useEffect 进行状态管理 - **Socket.IO Client**:实时通信 - **Chart.js**:数据可视化 - **React Router**:页面之间的导航 添加新的仪表板页面: 1. 在 `src/components/` 中创建新组件 2. 在 `App.js` 中添加路由 3. 在 `sidebar.js` 中添加导航链接 ## 性能考量 - **数据包捕获**:使用 BPF 过滤器减少内核到用户空间的数据传输 - **内存管理**:用于捕获数据包的循环缓冲区(最多 10,000 个数据包) - **TCP 流组装**:自动清理旧的流(5 分钟超时) - **设备追踪**:高效的基于 IP 的字典,实现 O(1) 查找 - **警报冷却**:在保持响应性的同时防止警报轰炸 ## 安全性考量 - **需要管理员权限**:数据包捕获需要提升的权限 - **仅限本地网络**:设备检测限于配置的网络范围 - **无加密**:仅在受信任的网络上使用(WebSocket 处于开发阶段)。将 WebSocket 通信升级为安全的 WSS/TLS 加密已在积极规划中。 - **本地用户认证**:已实现并处于活动状态;需要通过后端进行设置。 - **服务指纹识别**:基于公共 IP 范围和域名数据库 ## 故障排除 ### 常见问题 **1. 权限错误:“No module named 'scapy'”** ``` pip install -r backend/requirements.txt ``` **2. 无法捕获数据包** - 确保您正在使用管理员/sudo 权限运行 - 验证网络接口名称是否正确 - 检查接口是否处于活动状态并具有 IP 地址 **3. WebSocket 连接失败** - 确保后端在端口 5000 上运行 - 检查防火墙设置 - 验证前端是否正在尝试连接到正确的后端 URL **4. 未检测到设备** - 等待 30 秒以上以发现设备 - 确保网络中有活动设备 - 检查设备流量是否正在流动 **5. 未生成警报** - 等待攻击模拟运行 - 检查攻击流量是否在受监控的接口上 - 验证 network_security_monitor.py 中的警报阈值 **6. 数据包捕获率低** - 检查接口 MTU 和数据包大小 - 验证没有其他工具正在消耗数据包 - 如有必要,降低 BPF 过滤器的复杂性 ## 依赖项 ### 后端 - **scapy** (2.5.0):网络数据包捕获和分析 - **flask** (3.0.2):Web 框架 - **flask-socketio** (5.3.6):Flask 的 WebSocket 支持 - **flask-cors** (4.0.0):用于跨源请求的 CORS 标头 - **python-socketio** (5.11.1):Socket.IO 服务器实现 - **python-engineio** (4.8.0):Engine.IO 传输层 - **eventlet** (0.35.2):异步事件处理 - **psutil** (5.10.0):系统和进程监控 - **tldextract** (5.1.2):用于域名分析的 TLD 提取 - **requests** (2.31.0):用于设备制造商查找的 HTTP 请求 - **pandas** (2.1.4):数据分析和处理 - **reportlab** (4.1.0):PDF 报告生成 - **fpdf** (1.7.2):PDF 创建实用工具 ### 前端 - **react** (18.2.0):UI 框架 - **react-dom** (18.2.0):React DOM 渲染 - **react-router-dom** (6.30.0):客户端路由 - **socket.io-client** (4.7.2):WebSocket 客户端 - **chart.js** (4.4.9):图表和图形库 - **react-chartjs-2** (5.3.0):Chart.js 的 React 封装 ## API 端点与 WebSocket 事件 ### REST API 端点 **认证与用户管理** - `POST /api/auth/login`:进行认证并接收 JWT - `GET /api/auth/profile`:获取当前用户配置文件 - `POST /api/auth/change-password`:更新用户密码 - `POST /api/auth/logout`:使会话失效 **系统配置** - `POST /api/test-mode`:动态切换检测配置文件 ### WebSocket 事件(来自后端) - `connect` / `disconnect`:客户端连接状态 - `devices_update`:实时活动设备列表 - `scan_devices`:设备扫描状态 - `alerts_sync`:实时安全警报 - `statistics_update`:实时网络和系统统计信息 - `logs_update`:应用程序和系统日志 ### WebSocket 事件(发往后端) - 连接后通过命名空间自动处理。 ## 未来增强功能 - [x] 数据库持久化(集成 SQLite/PostgreSQL) - [x] 用户认证和授权 - [x] 多用户支持与 RBAC - [x] 高级过滤和搜索 - [x] 基于机器学习的异常检测 (`ML Detect`) - [x] 历史数据分析 (`History` & `Insights`) - [x] 自定义警报规则构建器 (`Rules`) - [x] 与 SIEM 系统集成 (`SIEM`) - [x] 深入检查明文协议 payload (`Payload`) - [x] 协议解析插件 - [x] 基于 GeoIP 的威胁映射 (`Threat Map`) - [ ] 移动应用程序支持 - [ ] 云部署支持 - [ ] WebSocket 的高级加密 ## 贡献 欢迎贡献!请遵循以下准则: 1. Fork 该仓库 2. 创建功能分支 3. 提交您的更改 4. 推送到该分支 5. 创建 Pull Request ## 许可证 该项目在 MIT 许可证下授权 - 有关详细信息,请参阅 LICENSE 文件。 ## 免责声明 此工具仅用于教育和授权的安全测试目的。未经授权访问计算机系统是非法的。在进行安全评估之前,请务必获得适当的授权。 ## 致谢 - [Scapy](https://scapy.net/) - 网络数据包操作库 - [Flask](https://flask.palletsprojects.com/) - Python Web 框架 - [React](https://reactjs.org/) - JavaScript UI 库 - [Socket.IO](https://socket.io/) - 实时通信库 - [Chart.js](https://www.chartjs.org/) - JavaScript 图表库 - [TLDExtract](https://github.com/john-kurkowski/tldextract) - TLD 提取 - 开源社区的启发和支持 ## 支持 如有问题、疑问或建议: - 在 GitHub 上开启一个 issue - 查看现有文档 - 查看故障排除部分 ## 作者 **Harshit7623** - GitHub: https://github.com/Harshit7623/Packet_Peeper
标签:Flask, React, Rust, Syscalls, 可视化界面, 异常检测, 深度包检测, 红队行动, 网络安全, 网络安全分析, 网络流量审计, 逆向工具, 防御绕过, 隐私保护