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, 句柄查看, 插件系统, 数据统计, 无后门, 端口扫描, 网络安全, 网络实验, 网络流量分析, 隐私保护