20251911 2024-2025-2 《网络攻防实践》实验三

1. 实验内容

实验主要围绕网络嗅探与协议分析展开。具体包括:

  • tcpdump抓包实践:使用命令行抓包工具tcpdump捕获访问 https://www.baidu.com网站首页过程中的网络流量,通过分析数据包统计浏览器实际访问的Web服务器数量及对应IP地址。

  • Wireshark协议分析:使用Wireshark工具捕获以TELNET方式登录BBS的全过程,分析TELNET协议的工作原理,定位BBS服务器的IP地址与端口,了解用户名和登录口令在明文传输中的安全隐患.

  • 网络扫描取证分析:分析给定的listen.cap数据包文件,从流量日志中还原攻击者的扫描行为,识别攻击主机与目标主机的IP地址、判断使用的扫描工具类型与扫描方法、统计目标开放端口,并通过TCP/IP协议栈指纹推断攻击主机的操作系统。

2. 实验过程

2.1 任务一:tcpdump嗅探Web访问过程

2.1.1 实验目标

使用tcpdump对本机访问 https://www.baidu.com网站首页的过程进行嗅探

2.1.2 实验原理

访问一个网站首页时,浏览器并非只访问一个Web服务器。整个过程包括:首先通过DNS解析获取域名对应的IP地址,然后向这些IP发起TCP连接加载主页面,随后解析HTML文档,自动加载页面中的图片、CSS、JavaScript、字体等资源,其中大量资源通过CDN加速分发。因此,一个域名可能对应多个Web服务器IP。

tcpdump是Linux平台下开源的命令行抓包工具,依赖root权限运行,支持按网卡、IP、端口、协议等维度过滤流量,可实时抓包或保存为pcap文件进行离线分析。

2.1.3 实验步骤

步骤一:查看本机IP地址

首先需要知道本机的IP地址,以便在抓包时过滤出本机发起的流量。

ifconfig

image

记录本机IP地址 192.168.201.64

步骤二:启动tcpdump抓包

使用如下命令过滤本机发起的TCP SYN包(即TCP连接请求包):

sudo tcpdump -n src 192.168.201.64 and tcp port 443 and "tcp[13] & 18 = 2"

!!!!!!!!!!!!!!!!!!!!!!!!!!!
image

命令参数说明:

  • -n:不进行域名解析,直接显示IP地址
  • src 192.168.200.68:只捕获源地址为本机的数据包
  • tcp port 443:只捕获目的端口为443的TCP数据包(HTTPS协议)
  • "tcp[13] & 18 = 2":过滤TCP标志位,只捕获SYN包(TCP数据包第13字节的SYN标志位为1)

步骤三:访问目标网站

保持tcpdump抓包运行,打开浏览器访问 https://www.baidu.com 首页,等待页面完全加载。
image

步骤四:停止抓包并分析结果

等待页面加载完成后,按 Ctrl+C 停止tcpdump抓包,终端将显示捕获到的数据包列表。
image

2.1.4 实验结果与分析

从捕获的TCP SYN包中,可以提取出本机尝试建立TCP连接的目标IP地址,这些IP地址即为浏览器访问的Web服务器地址。根据实验分析,访问www.baidu.com首页时,浏览器实际访问的IP地址有如下等:
110.242.74.113
110.242.70.57
101.72.203.36
123.117.132.38
101.72.203.38
...
结论:访问一个网站会连接多台服务器的原因包括:网站采用集群负载均衡、浏览器并发多连接机制、以及加载第三方CDN资源等。CDN技术将内容分发到多个地理位置的边缘节点,用户在访问时会根据网络条件被调度到最优节点,导致每次访问可能连接不同的服务器IP。

2.2 任务二:Wireshark嗅探与分析TELNET登录BBS

2.2.1 实验目标

使用Wireshark捕获以TELNET方式登录BBS的全过程,分析TELNET协议的数据传输机制,提取BBS服务器的IP地址和端口,以及传输的用户名和登录口令。

2.2.2 实验原理

TELNET协议是基于TCP的应用层协议,默认使用端口23。TELNET最大的安全缺陷在于所有交互数据均以明文形式在网络中传输,无任何加密保护。当用户在终端输入用户名和密码时,每个字符都被封装为独立的数据包发送,终端显示的密码掩码仅为本地界面伪装,数据包中仍然是原始的明文。

Wireshark作为开源的网络协议分析工具,支持实时抓包和离线分析,可以过滤特定协议的数据包将完整的会话交互内容还原显示。

2.2.3 实验步骤

步骤一:启动Wireshark抓包

  1. 打开Wireshark,选择连接互联网的网卡eth0,开始抓包。
    image

步骤二:TELNET登录BBS

打开终端,执行以下命令登录BBS,以水木清华BBS为例:

luit -encoding GBK telnet bbs.newsmth.net

其中luit -encoding GBK用于正确处理GBK编码的中文字符显示。

按提示输入用户名guest登录。
image

步骤三:停止抓包

登录完成后,返回Wireshark停止抓包。

步骤四:分析数据包

  1. 在Wireshark过滤器中输入 telnet,筛选出所有TELNET协议的数据包。
    image

  2. 任意选中一个TELNET数据包,右键选择 Follow → TCP Stream,打开TCP流追踪窗口。
    image
    image

2.2.4 实验结果与分析

(1)BBS服务器的IP地址与端口

从TCP流追踪窗口的服务器端信息中可以定位:

  • IP地址:120.92.212.76
  • 端口:23

(2)TELNET协议的用户名及口令

已捕获到用户guest,本次登录 guest 账号无需密码,因此未获取到口令。

2.3 任务三:取证分析listen.cap

2.3.1 实验目标

分析给定的listen.cap数据包文件,从流量日志中还原攻击者的扫描行为,回答攻击主机IP、目标IP、扫描工具、扫描方法、开放端口及攻击主机操作系统等问题。

2.3.2 实验原理

网络扫描是攻击者进行信息收集的常用手段。扫描行为的识别依据包括:攻击主机向目标主机批量发送端口探测包,目标主机的响应包可用于判断端口开放状态。此外,通过分析数据包的TTL值、TCP窗口大小、IP头选项等特征,可以推断主机的操作系统类型。

2.3.3 实验步骤

步骤一:导入打开数据包文件

image

步骤二:分析IP地址信息

在Wireshark的统计菜单中查看端点统计信息,识别通信双方的IP地址。可以从结果中看出攻击机为172.31.4.178,目标IP是172.31.4.188。(在 TCP 连接中,主动发起连接的一方通常是攻击主机,另一方被扫描的目标主机)

步骤三:判断扫描工具

首先安装并运行分析工具

在终端中执行以下命令,安装被动操作系统指纹识别工具 p0f

# 更新软件包列表并安装 p0f
sudo apt update && sudo apt install p0f -y

使用 p0f 分析数据包并提取关键特征

p0f 是一个强大的被动指纹识别工具,它通过分析数据包的细微特征来被动识别操作系统或应用。

# 限制输出前30行以查看关键信息
sudo p0f -r sudo p0f -r /var/run/vmblock-fuse/blockdir/VbuybD/listen.pcap | head -n 30 | head -n 30

image

可以从图中看出扫描工具为NMap

步骤四:确定扫描方法与扫描端口

通过设置显示过滤器 arp,观察攻击机与目标机之间的 ARP 协议交互。捕获到大量连续的 ARP 请求,由此推断攻击者使用了 nmap -P 命令进行主机存活探测。
image
在 Wireshark 中设置显示过滤器 tcp.flags.syn == 1 && tcp.flags.ack == 0,筛选出仅发送 SYN 但未收到 ACK 的数据包。观察发现,攻击主机向目标主机的多个端口发送了大量此类 SYN 包,且这些连接均未完成三次握手(无后续的 ACK 响应)。据此可以推断,攻击者正在执行 nmap -sS 指令进行全端口 TCP SYN 隐秘扫描。
image
使用过滤器 tcp.flags == 0x00 检测 TCP 标志位全为 0 的数据包。过滤后发现存在若干符合该特征的通信记录,表明攻击者可能同时使用了 nmap -sN 指令进行隐秘扫描。
image

输入过滤条件 tcp && tcp.len > 0,筛选出 TCP 载荷长度大于 0 的数据包,以判断攻击者是否对开放端口发送了带有数据负载的探测包。分析结果显示存在大量此类记录,说明攻击者启用了 nmap -sV 指令来进一步识别目标端口上运行的服务版本信息。
image
进一步可以查看21,3306,23,80,25,22,53等端口开放
image

步骤五:判断攻击主机操作系统

使用
sudo p0f -r /var/run/vmblock-fuse/blockdir/xbt7Zr/listen.pcap命令,分析listen.pcap文件,得出攻击机的操作系统是linux 2.6.X
image

3.问题与解决方法

使用 tcpdump 抓包时,我一开始的过滤条件设置的是 tcp port 80,但执行后长时间没有任何输出,无法捕获到访问网站首页的流量。

原因分析:现代主流网站已普遍强制使用 HTTPS 加密协议,默认采用 443 端口进行通信。当用户在浏览器地址栏输入域名时,网站服务器会通过 301 重定向将 HTTP 请求跳转至 HTTPS,因此实际的数据传输发生在 443 端口,而非传统的 80 端口。

解决方法:将 tcpdump 的过滤端口由 80 改为 443,重新抓包。

修改后成功捕获到大量 TCP SYN 包,从中提取出了访问网站时连接的所有 Web 服务器 IP 地址。

经验总结:在进行网络嗅探实验时,应首先确认目标服务所使用的协议与端口。随着 HTTPS 的普及,传统基于 80 端口的明文 HTTP 流量已越来越少,实验前使用 curl -I 或浏览器开发者工具检查网站的实际访问端口,可以有效避免此类问题。

4. 学习感悟与思考

这次实验中,最让我印象深刻的是 TELNET 协议的明文传输隐患。通过 Wireshark 追踪 TCP 流,我亲眼看到自己输入的 guest 用户名直接显示在数据包中,这让我直观理解了中间人攻击为何能轻易窃取凭证,也明白了技术的重要性。

posted @ 2026-04-13 11:56  yuzzz11111  阅读(6)  评论(0)    收藏  举报