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 数据包的取证分析,应重点关注以下几个方面:

  1. 攻击源 IP 地址识别:通过筛选发起主动扫描行为的数据包(如 SYN 请求),确定其源 IP,即攻击主机地址。
  2. 目标主机 IP 确定:分析扫描请求的目的 IP,可识别被攻击的蜜罐主机。
  3. 扫描工具判定:依据数据包特征(如特定 TTL 值、数据包结构或包含特征字符串),可推断所使用的扫描工具,常见为 nmap。
  4. 扫描方式与目标端口分析:通过数据包交互模式判断扫描类型(如 SYN 扫描仅发送 SYN 包,而全连接扫描完成三次握手),并提取所有目的端口信息以确定扫描范围。
  5. 开放端口识别:筛选存在 SYN+ACK 响应的数据包,其对应端口可视为目标主机的开放端口。
  6. 攻击主机操作系统推断:结合数据包中的 TTL 值和 TCP 窗口大小等特征参数(例如 Windows 系统常见 TTL 为 128,而 Linux 系统为 64),可对攻击主机的操作系统类型进行推测。

综上,通过对网络流量的系统化分析,可实现对扫描行为的有效溯源与技术特征识别。

2.实验过程

2.1 动手实践tcpdump

使用tcpdump开源软件对在本机上访问www.tianya.cn网站过程进行嗅探,回答问题:你在访问www.tianya.cn网站首页时,浏览器将访问多少个Web服务器?他们的IP地址都是什么?
首先将kali设置为桥接模式
{18F312A0-782C-467C-9F70-20E233CCF730}
{C26BCE51-DBF0-4BE6-BAF5-EBEE661F31F7}
image
查看IP地址
{62EC842A-3FFB-4B4B-8C90-3D8D6172D19C}
以超级用户权限运行(抓包需要 root 权限),只捕获 SYN=1, ACK=0 的数据包 → 这是 TCP 三次握手的第一次(SYN 包)
{5C95ACE8-9C77-4072-9F4F-FA2A1EF18BF0}
嗅探结果
{800C380E-FD75-4A13-AF01-52AF8B972A45}

2.2 动手实践Wireshark

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

2.3 取证分析实践,解码网络扫描器(listen.cap)

下载listen.pcap文件(学习通),在主机上启动临时文件服务
image
利用kali上的wireshark打开listen.pcap
{652DC897-4FD9-4F4F-9485-A568ACE8131F}
筛选TCP
{93F40E72-D9C3-4158-9226-E93CEE07E9EA}

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

{95307132-07C4-4AA5-AB3C-DFEED848F09A}
检查是否安装成功
{F97289F7-FA4D-4C34-A5BF-08259DAF4694}
以详细输出模式,使用 /etc/snort/snort.lua 配置,对 listen.pcap 抓包文件进行入侵检测分析
{66BCB500-4722-4283-BB4A-FC39EB2E3639}
过滤出 TCP 三次握手中的 SYN 包(发起连接请求,且未带确认标志)
image
过滤从 172.31.4.188 发往 172.31.4.178 的 TCP SYN+ACK 包(即三次握手的第二次握手,服务端确认并同步连接)。
image
安装p0f检测攻击机系统
{7096227E-570F-4A0C-B380-7CB5F02683EA}
用 p0f 工具对 listen.pcap 抓包文件进行被动操作系统指纹识别(分析流量特征推测远端主机系统类型,无需主动扫描)
{68A6221E-350F-4A58-B381-901C925CADE8}

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构造测试包来验证工具结论。总的来说,我深刻体会到能复制粘贴跑通命令不等于真正学会,真正的检验是换个场景能否自己写出来;错误其实是最好的老师,怕的是抄对答案却不懂为什么;工具只是放大镜,解读流量需要扎实的协议知识和攻击手法认知;最后文档永远比博客可靠,自己的笔记最值得信赖。从能执行到能分析,中间隔着无数次"为什么没结果"的追问和亲手验证的耐心。

posted on 2026-04-08 17:04  2148377568  阅读(7)  评论(0)    收藏  举报