20253908 2024-2025-2 《网络攻防实践》实验三
1. 实验内容
1.1 基于 tcpdump 的 Web 访问流量嗅探分析
tcpdump 作为一种开源的网络抓包工具,能够对主机网络接口上的数据流量进行实时捕获与解析,在 Web 访问行为分析中具有重要应用价值。在访问目标站点(如 www.tianya.cn)的过程中,浏览器通常不仅与源站服务器通信,还会与多个内容分发网络(CDN)节点建立连接。
通过执行抓包命令(例如 tcpdump -i any host www.tianya.cn),并对 HTTP/HTTPS 协议数据进行过滤,可以提取与目标域名通信的全部 IP 地址。这些地址即对应实际参与服务的 Web 服务器节点,通常包括源站服务器以及分布于不同区域的 CDN 节点(如阿里云、腾讯云等)。该方法能够有效揭示 Web 服务的分布式架构特征。
1.2 基于 Wireshark 的 TELNET 协议嗅探与分析
Wireshark 是一款功能强大的网络协议分析工具,可对 TELNET 协议通信过程进行精细化解析。通过设置协议过滤条件(如 telnet),可以从捕获的数据包中识别远程登录行为的关键信息。
首先,通过分析数据包的源 IP 和目的 IP,可确定目标 BBS 服务器的地址;同时,TELNET 默认使用端口 23,因此可进一步确认通信端口特征。其次,由于 TELNET 协议采用明文传输机制,用户输入的用户名及密码未经过加密处理,直接封装于数据包的 Data 字段中。
具体分析流程如下:启动 Wireshark 抓包并执行 TELNET 登录操作,停止抓包后应用 TELNET 协议过滤器,定位包含 “Username” 或 “Password” 字段的数据包,从其 Data 字段中即可提取明文形式的认证信息。该实验揭示了 TELNET 协议在安全性方面的显著缺陷。
1.3 网络扫描取证分析的关键要素
针对 listen.cap 数据包的取证分析,应重点关注以下几个方面:
- 攻击源 IP 地址识别:通过筛选发起主动扫描行为的数据包(如 SYN 请求),确定其源 IP,即攻击主机地址。
- 目标主机 IP 确定:分析扫描请求的目的 IP,可识别被攻击的蜜罐主机。
- 扫描工具判定:依据数据包特征(如特定 TTL 值、数据包结构或包含特征字符串),可推断所使用的扫描工具,常见为 nmap。
- 扫描方式与目标端口分析:通过数据包交互模式判断扫描类型(如 SYN 扫描仅发送 SYN 包,而全连接扫描完成三次握手),并提取所有目的端口信息以确定扫描范围。
- 开放端口识别:筛选存在 SYN+ACK 响应的数据包,其对应端口可视为目标主机的开放端口。
- 攻击主机操作系统推断:结合数据包中的 TTL 值和 TCP 窗口大小等特征参数(例如 Windows 系统常见 TTL 为 128,而 Linux 系统为 64),可对攻击主机的操作系统类型进行推测。
综上,通过对网络流量的系统化分析,可实现对扫描行为的有效溯源与技术特征识别。
2.实验过程
2.1 动手实践tcpdump
使用tcpdump开源软件对在本机上访问www.tianya.cn网站过程进行嗅探,回答问题:你在访问www.tianya.cn网站首页时,浏览器将访问多少个Web服务器?他们的IP地址都是什么?
首先将kali设置为桥接模式



查看IP地址

以超级用户权限运行(抓包需要 root 权限),只捕获 SYN=1, ACK=0 的数据包 → 这是 TCP 三次握手的第一次(SYN 包)

嗅探结果

2.2 动手实践Wireshark
使用Wireshark开源软件对在本机上以TELNET方式登录BBS进行嗅探与协议分析,回答如下问题并给出操作过程:
你所登录的BBS服务器的IP地址与端口各是什么?
打开kali虚拟机终端,在终端中,由于复旦大学 BBS 暂时无法使用 telnet 访问,这里换用北京邮电大学 BBS,使用命令:
luit -encoding gbk telnet bbs.byr.cn
访问北邮 BBS。与此同时打开主机wireshark抓包


查看此时wireshark抓包

TELNET协议是如何向服务器传送你输入的用户名及登录口令?在终端中输入guest,wireshark捕获结果如下所示

输入guest登录


2.3 取证分析实践,解码网络扫描器(listen.cap)
下载listen.pcap文件(学习通),在主机上启动临时文件服务

利用kali上的wireshark打开listen.pcap

筛选TCP

2.4 在 Kali 终端执行以下命令,更新软件源并安装 Snort

检查是否安装成功

以详细输出模式,使用 /etc/snort/snort.lua 配置,对 listen.pcap 抓包文件进行入侵检测分析

过滤出 TCP 三次握手中的 SYN 包(发起连接请求,且未带确认标志)

过滤从 172.31.4.188 发往 172.31.4.178 的 TCP SYN+ACK 包(即三次握手的第二次握手,服务端确认并同步连接)。

安装p0f检测攻击机系统

用 p0f 工具对 listen.pcap 抓包文件进行被动操作系统指纹识别(分析流量特征推测远端主机系统类型,无需主动扫描)

3.学习中遇到的问题及解决
| 问题 | 说明 |
|---|---|
| 位运算理解困难 | tcp[13] & 18 = 2 的二进制逻辑容易搞混 |
| 过滤语法混用 | tcpdump 的 and 与 Wireshark 的 && 分不清,直接复制粘贴导致报错 |
| SYN/ACK 状态记反 | 三次握手顺序(SYN → SYN+ACK → ACK)容易颠倒 |
| Snort 2.x 与 3.x 配置差异 | 误把 Lua 配置用在 Snort 2,或反过来 |
| 场景 | 具体问题 |
|---|---|
| 读 pcap 文件 | listen.pcap 路径不对、文件权限不足、或文件损坏 |
| p0f 无输出 | 指纹数据库过期,或流量中无足够特征(如全是加密流量) |
| Snort 规则加载失败 | 规则路径配置错误,或缺少社区规则集 |
| 输出太多看不懂 | verbose 模式信息过载,不会过滤关键字段 |
4.学习感悟
我在学习这些网络分析工具的过程中遇到了不少挑战,但也积累了一些宝贵的心得。最开始我常常卡在权限和环境配置上,比如sudo命令失败、软件没安装或者配置文件路径不对,后来我发现与其急着跑命令,不如先把环境搭稳,用Docker部署测试环境既干净又方便,执行命令前先确认文件存在和版本匹配,这样能省去很多麻烦。在理解tcpdump的位运算过滤时,我曾经对tcp[13] & 18 = 2这种语法感到困惑,后来通过手写二进制推算、把TCP头部画成8个格子来填0和1,才发现可视化学习比死记公式管用得多,同时也意识到不同工具的语法差异需要专门整理对比,比如tcpdump用and/or/not而Wireshark用&&/||/!,建立映射表能避免混用出错。对于SYN和ACK的状态顺序,我一开始总是记反,后来用nc或curl抓真实的三次握手包,在Wireshark里观察着色后的交互过程,才真正理解协议是动态交互的而非静态流程图。实际操作中我也碰到过pcap文件读不出、p0f没输出、Snort信息过载等问题,逐渐学会了分层排查——从文件格式到权限再到工具配置逐级定位,也理解了p0f对现代加密流量效果有限本身就是有价值的分析结论,面对Snort的海量输出时懂得了先跑通再细化的原则。更重要的是我意识到自己会存在"只会运行不懂判断"的思维短板,现在每次执行命令前都会先预期结果,跑完再对比实际输出是否合理,还学会了画取证流程图把tcpdump筛选、Snort检测、p0f指纹识别这些工具串联起来看,用scapy构造测试包来验证工具结论。总的来说,我深刻体会到能复制粘贴跑通命令不等于真正学会,真正的检验是换个场景能否自己写出来;错误其实是最好的老师,怕的是抄对答案却不懂为什么;工具只是放大镜,解读流量需要扎实的协议知识和攻击手法认知;最后文档永远比博客可靠,自己的笔记最值得信赖。从能执行到能分析,中间隔着无数次"为什么没结果"的追问和亲手验证的耐心。
浙公网安备 33010602011771号