Arnav-Y/Wireshark-port-scan-lab

GitHub: Arnav-Y/Wireshark-port-scan-lab

一个结合 Wireshark 数据包分析与自建 Python 端口扫描器的网络安全实验项目,用于在数据包级别识别 TCP 端口扫描的流量特征。

Stars: 0 | Forks: 0

# Wireshark 数据包分析与端口扫描检测实验 一个使用 Wireshark 捕获、过滤和分析实时网络流量的网络安全动手实验——最终环节包括针对真实目标运行自行构建的端口扫描器,并识别其数据包级别的特征。 ## 涵盖内容 - 使用 Wireshark 的接口、捕获和显示层进行实时数据包捕获 - 协议过滤(DNS、TCP、HTTPS/TLS)以隔离特定流量类型 - TCP 握手与连接状态分析(SYN、SYN-ACK、ACK、FIN、RST) - 使用自定义多线程 Python 扫描器生成真实的端口扫描流量 - 识别端口扫描的数据包级别特征 - 包含带注释截图的完整实验文档 ## 实验方法 1. **基准捕获** — 在 Wi-Fi 接口上捕获实时流量,以观察正常的后台活动(MDNS 广播、DNS 解析、TLS 会话)。 2. **显示过滤器** — 分别隔离 `dns`、`tcp` 和 `https` 流量,以研究协议行为。 3. **TCP 流分析** — 跟踪完整的连接生命周期,包括正常的 HTTP 重定向和乱序的 SYN-ACK 数据包(被识别为良性的网络抖动)。 4. **端口扫描生成** — 在 Wireshark 实时捕获流量的同时,针对网络默认网关运行自行构建的多线程 TCP 端口扫描器([`port_scanner_fast.py`](./port_scanner_fast.py))。 5. **证据隔离** — 应用以下过滤器,仅提取扫描器的出站连接尝试: ``` ip.dst==172.16.1.1 and tcp.flags.syn==1 and tcp.flags.ack==0 ``` ## 关键发现 扫描产生了来自单个源 IP 到单个目标 IP 的 **1024 个 SYN 数据包**,覆盖了几乎所有端口(1–1024),在 **100 毫秒内**完成。这是入侵检测系统用于标记端口扫描活动的教科书级特征: - 一个源 → 一个目标,多个端口 - 极高的数据包速率(没有人类或正常应用流量会表现出这种行为) - 仅有 SYN 数据包,没有后续的应用程序数据 - 端口到达时略微乱序,与并发的多线程连接特征一致 ### 关于 loopback 流量的重要说明 最初尝试扫描 `127.0.0.1`(localhost)时,在 Wireshark 中产生了 **零个可见数据包**。这是正常现象——loopback 连接由 OS 网络栈内部处理,永远不会到达物理网络适配器,因此接口级别的捕获无法看到它们。扫描真实的网络主机(路由器)解决了这个问题,并在报告中进行了记录。 ## 本仓库中的文件 | 文件 | 描述 | |---|---| | `Wireshark_Port_Scan_Lab_Report.pdf` | 完整的实验报告 — 方法论、过滤器、证据和分析 | | `port_scanner_fast.py` | 用于生成扫描流量的多线程 Python 端口扫描器 | | `port_scan_evidence.pcapng` | 包含扫描流量的原始 Wireshark 捕获文件 | | `screenshots/` | 报告中引用的带注释截图 | ## 使用的工具 - **Wireshark** v4.6.6 — 数据包捕获与分析 - **Python 3** — `socket`、`threading`(端口扫描器) - **Windows** — Wi-Fi 接口捕获 ## 法律与道德声明
标签:Python, TCP协议, Wireshark, 句柄查看, 插件系统, 数据统计, 无后门, 端口扫描, 网络安全, 网络实验, 网络流量分析, 隐私保护