AfzalHossan-2005021/Packet-Sniffer

GitHub: AfzalHossan-2005021/Packet-Sniffer

基于 Docker 的隔离网络实验环境,用于演示和教学未加密协议(HTTP/Telnet)的数据包嗅探与流量分析。

Stars: 0 | Forks: 0

# 🔍 网络安全:流量嗅探与分析实验 [![License](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE) [![Python 3.8+](https://img.shields.io/badge/python-3.8%2B-brightgreen.svg)](https://www.python.org/) [![Docker](https://img.shields.io/badge/docker-available-blue.svg)](https://www.docker.com/) ## 📑 目录 - [✨ 功能](#-features) - [🎯 概述](#-overview) - [🏗️ 架构](#️-architecture) - [📋 前置条件](#-prerequisites) - [🚀 快速开始](#-quick-start) - [🛠️ 分步指南](#️-step-by-step-guide) - [📂 项目结构](#-project-structure) - [🔄 工作流程](#-workflow) - [💡 关键概念](#-key-concepts) - [🐛 故障排除](#-troubleshooting) - [⚠️ 免责声明](#️-disclaimer) ## ✨ 功能 🎓 **教育重点** - 专为学习网络安全原理而设计 - 演示真实的数据包嗅探技术 - 展示未加密协议中的漏洞 🔒 **隔离环境** - 完全使用 Docker Compose 进行容器化 - 安全的沙盒化网络模拟 - 无外部网络干扰 🔌 **多协议支持** - HTTP(未加密的 Web 流量) - Telnet(传统的明文协议) - 易于通过自定义协议进行扩展 ⚡ **实时分析** - 实时数据包捕获和检查 - 凭据拦截演示 - Payload 分析功能 ## 🎯 概述 本实验创建了一个隔离的网络环境,以演示未加密协议是如何将敏感数据暴露给网络嗅探的。四个容器在一个桥接的 Docker 网络上进行交互: | 组件 | 角色 | 目的 | |-----------|------|---------| | 🔴 **攻击者** | 被动观察者 | 捕获并分析网络流量 | | 💻 **受害者** | 流量生成器 | 模拟合法的用户连接 | | 🌐 **HTTP 服务器** | 服务提供者 | 提供未加密的 Web 内容 | | 📞 **Telnet 服务器** | 服务提供者 | 提供明文身份验证 | ## 🏗️ 架构 ### 系统架构图 ``` ┌─────────────────────────────────────────────────────────────┐ │ Docker Network (Bridged) │ │ │ │ ┌───────────────┐ ┌──────────────┐ │ │ │ 🔴 Attacker │ │ 💻 Victim │ │ │ │ (Sniffer) │◄────────▶│ (Traffic │ │ │ │ │ │ Generator) │ │ │ └───────────────┘ └──────────────┘ │ │ ▲ │ │ │ │ │ │ │ │ (Captures packets) │ (Sends requests) │ │ │ ▼ │ │ │ ┌──────────────┐ │ │ │ │ 🌐 HTTP │ │ │ └────────────────────│ Server │ │ │ │ │ │ │ │ │ └──────────────┘ │ │ │ │ │ │ │ ┌──────────────┐ │ │ │ │ 📞 Telnet │ │ │ └────────────────────│ Server │ │ │ │ │ │ │ └──────────────┘ │ │ │ └─────────────────────────────────────────────────────────────┘ ``` ### 容器交互流程 ``` graph LR A["🔴 Attacker
(Python + Scapy)"] -->|Listens on eth0| B["Network Interface"] C["💻 Victim
(Traffic Gen)"] -->|HTTP Request
Telnet Auth| D["Servers"] D -->|Response| C B -->|Captures Packets| A A -->|Displays
Real-time Data| E["Console Output"] style A fill:#ff6b6b,stroke:#c92a2a,color:#fff style C fill:#4ecdc4,stroke:#2a9d8f,color:#fff style D fill:#ffe66d,stroke:#flacc0,color:#333 style E fill:#a8e6cf,stroke:#56c596,color:#333 ``` ## 📋 前置条件 在运行此实验之前,请确保已安装以下软件: - 🐳 **[Docker](https://docs.docker.com/get-docker/)** (v20.10+) - 🐳 **[Docker Compose](https://docs.docker.com/compose/install/)** (v1.29+) - 💻 **Linux/Mac/Windows**(对于 Windows/Mac 需带有 Docker Desktop) ### 版本检查 ``` docker --version docker-compose --version ``` ## 🚀 快速开始 只需 **3 个简单步骤** 即可运行本实验: ### 1️⃣ 构建环境 ``` # 导航到项目目录 cd /home/afzal/Academic/Computer-Security/Packet-Sniffer # 在后台构建并启动所有容器 docker-compose up --build -d ``` ### 2️⃣ 验证容器 ``` # 检查所有容器是否正在运行 docker-compose ps ``` 预期输出: ``` CONTAINER ID IMAGE COMMAND STATUS abc123def456 ...attacker "python3 -u ..." Up 2 minutes xyz789uvw123 ...victim "python3 -u ..." Up 2 minutes def456ghi789 ...http "python3 http_server" Up 2 minutes ghi789jkl012 ...telnet "/bin/bash" Up 2 minutes ``` ### 3️⃣ 开始嗅探! ``` # 终端 1:在 attacker 容器中运行嗅探器 docker exec -it packet-sniffer-attacker-1 python3 sniffer.py # 终端 2:从 victim 容器生成流量 docker exec -it packet-sniffer-victim-1 python3 generate_traffic.py ``` ## 🛠️ 分步指南 ### 详细安装说明 #### 步骤 1:准备环境 ``` # 克隆或导航到仓库 cd /path/to/Packet-Sniffer # 验证所有 Docker 文件是否存在 ls -la Dockerfile.* docker-compose.yml ``` #### 步骤 2:构建并启动容器 ``` # 构建镜像并启动容器 docker-compose up --build -d # 可选:查看实时日志 docker-compose logs -f ``` #### 步骤 3:访问攻击者容器 ``` # 进入 attacker 容器 docker exec -it /bin/bash # 验证 Scapy 是否可用 python3 -c "import scapy; print(scapy.__version__)" ``` #### 步骤 4:运行嗅探器 ``` # 开始数据包嗅探 python3 sniffer.py # 输出将实时显示捕获的数据包: # [*] 正在网络上嗅探... # [+] 捕获到数据包:... ``` #### 步骤 5:生成网络流量 在另一个终端中: ``` # 访问 victim 容器 docker exec -it /bin/bash # 触发流量生成 python3 generate_traffic.py ``` #### 步骤 6:观察结果 切换回攻击者终端以查看实时数据包捕获,包括: - 🌐 HTTP 标头和 Payload - 👤 Telnet 凭据 - 🔗 连接详细信息(IP、端口、协议) ## 📂 项目结构 ``` Packet-Sniffer/ ├── 📋 README.md # This comprehensive guide ├── 🐳 docker-compose.yml # Container orchestration │ ├── 🐋 Dockerfile.attacker # Attacker node (Python + Scapy) ├── 🐋 Dockerfile.victim # Victim node (Traffic generator) ├── 🐋 Dockerfile.http # HTTP server container ├── 🐋 Dockerfile.telnet # Telnet server container │ ├── 🐍 sniffer.py # Main sniffing script (Attacker) ├── 🐍 generate_traffic.py # Traffic generation script (Victim) ├── 🐍 http_server.py # Simple HTTP server └── 🖼️ [Diagrams & Documentation] ``` ### 文件说明 | 文件 | 目的 | 主要特性 | |------|---------|--------------| | `docker-compose.yml` | 定义所有容器和网络 | 卷映射、端口绑定、网络配置 | | `Dockerfile.attacker` | 攻击者环境设置 | Scapy、数据包工具、Python3 | | `Dockerfile.victim` | 受害者环境设置 | HTTP 客户端、Telnet 客户端、requests 库 | | `sniffer.py` | 数据包捕获脚本 | 实时过滤、Payload 提取 | | `generate_traffic.py` | 流量生成脚本 | 协议模拟、自动化请求 | | `http_server.py` | 基础 HTTP 服务器 | 未加密的响应、静态内容 | ## 🔄 工作流程 ### 完整攻击模拟流程 ``` sequenceDiagram participant V as 💻 Victim participant N as 🌐 Network participant A as 🔴 Attacker participant S as 🌐 Server A->>N: ⚠️ Start Sniffing (Listen Mode) Note over A: sniffer.py running
Capturing packets V->>S: 📤 Send HTTP Request Note over V: generate_traffic.py S->>N: 📨 Transmit Response Note over N: Unencrypted Data N->>A: 📥 Captured Packet A->>A: 🔍 Inspect Headers A->>A: 🔍 Extract Payload A->>A: 📊 Display Results V->>S: 🔐 Send Telnet Auth (plain-text) S->>V: ✅ Authentication Response N->>A: 📥 Capture Credentials A->>A: ⚠️ Log Sensitive Data ``` ### 真实时间线 1. **设置阶段**(1-2 分钟) - 启动 Docker 环境 - 容器初始化并连接到网络 2. **嗅探阶段**(持续进行) - 攻击者开始监听网络接口 - 准备捕获所有流量 3. **流量生成阶段**(30 秒 - 5 分钟) - 受害者发起连接 - 服务器响应数据 - 攻击者捕获数据包 4. **分析阶段**(实时) - 在攻击者终端中显示 - 可见凭据、标头、Payload ## 💡 关键概念 ### 什么是数据包嗅探? 数据包嗅探是拦截和捕获通过网络传输的数据的过程。在未加密的协议中,敏感信息会变得可见: **易受攻击的协议:** - 🌐 **HTTP**:以明文形式传输标头、用户名、密码 - 📞 **Telnet**:无加密;所有通信均可读 - 📧 **FTP**:凭据在传输过程中不受保护 **受保护的协议:** - 🔒 **HTTPS**:加密的通信层(SSL/TLS) - 🔐 **SSH**:加密的远程访问 ### 为什么这很重要 了解数据包嗅探对于以下几个方面至关重要: - 🛡️ **防御安全**:识别漏洞 - 📚 **教育目的**:学习网络基础知识 - 🔐 **协议设计**:体会加密的重要性 ## 🐛 故障排除 ### 常见问题及解决方案 #### ❌ “docker-compose: command not found” ``` # 解决方案:更新安装路径 # 在 Mac/Windows 上:确保已安装并运行 Docker Desktop # 在 Linux 上:安装 Docker Compose sudo apt-get install docker-compose ``` #### ❌ “端口被占用” ``` # 查找并停止冲突的容器 docker ps -a docker stop # 或者修改 docker-compose.yml 中的端口 ``` #### ❌ “容器之间无法通信” ``` # 检查网络状态 docker network ls docker network inspect # 重启容器 docker-compose restart ``` #### ❌ “Scapy 导入错误” ``` # 验证安装 docker exec -it pip list | grep scapy # 如有需要则重新安装 docker exec -it pip install scapy ``` #### ❌ “未捕获到数据包” ``` # 在 sniffer.py 中检查 interface 名称 docker exec -it ip addr # 验证网络 interface 是否正确(通常是 'eth0') ``` ### 调试命令 ``` # 查看容器日志 docker-compose logs -f # 访问容器 shell docker exec -it /bin/bash # 检查网络连通性 docker exec -it ping # 列出开放端口 docker exec -it netstat -tlnp ``` ## ⚠️ 免责声明 **⚠️ 仅用于教育目的** 本项目严格设计用于: - 📚 学术学习与研究 - 🏫 计算机安全教育 - 🔬 了解网络协议 - 🛡️ 防御性安全培训 **禁止的用途:** - ❌ 未经授权访问网络/系统 - ❌ 未经许可拦截数据 - ❌ 用于恶意目的或非法活动 **法律声明:** 未经授权访问计算机系统是违法行为。请仅在你拥有或获得明确书面许可的系统上使用此实验。用户有责任遵守其所在司法管辖区的所有适用法律和法规。 ## 📞 支持与贡献 如有问题、建议或改进: - 🐛 通过 GitHub Issues 报告 Bug - 💡 提供详细说明以提出新功能建议 - 📝 通过 Pull Requests 贡献改进
**为计算机安全教育而创建** 🔐 *最后更新:2026 年 5 月* [↑ 返回顶部](#-network-security-traffic-sniffing--analysis-lab)
标签:Docker, 协议分析, 安全教育, 安全防御评估, 权限提升, 版权保护, 网络安全, 请求拦截, 逆向工具, 防御绕过, 隐私保护, 靶场环境