20252901 2025-2026-2 《网络攻防实践》实践三报告
20252901 程宇 2025-2026-2 《网络攻防实践》实践三报告
一、核心知识点梳理
1.1 tcpdump 嗅探实践核心知识点
- tcpdump 核心用法:基础命令参数、BPF 过滤规则(主机/端口/HTTP/HTTPS/DNS 协议过滤),可精准捕获访问网站的目标流量。
- Web 访问全链路原理:DNS 域名解析流程、HTTP/HTTPS 通信机制、网页多资源加载逻辑(理解多 Web 服务器 IP 的来源)。
- Web 服务会话识别:可从抓包结果中区分本机与远端 IP,基于 80/443 端口筛选 Web 服务会话,统计独立的 Web 服务器 IP。
1.2 Wireshark 与 TELNET 协议分析核心知识点
- Wireshark 核心操作:抓包网卡选择、捕获/显示过滤器配置、数据包分层解析、TCP 流追踪功能。
- TELNET 协议核心特性:基于 TCP 23 端口的通信机制、明文传输的核心特点,以及用户名/口令的传输规则。
- 明文凭证提取逻辑:通过 TCP 流追踪还原完整 TELNET 会话,从明文数据中提取用户名与登录口令。
1.3 网络扫描取证分析核心知识点
- 端口扫描基础原理:主机发现逻辑、主流端口扫描类型(TCP SYN 半连接、全连接、FIN/NULL/Xmas 扫描等)的报文特征与工作原理。
- 扫描流量定位方法:通过会话统计、报文特征筛选,从 pcap 包中定位攻击源 IP、扫描目标 IP,识别端口扫描行为。
- 扫描工具与类型判定:主流扫描工具(nmap)的流量指纹特征,可通过报文标志位、扫描行为模式匹配扫描工具与扫描方法。
二、动手实践
2.1 实验一:tcpdump 嗅探实践
实验目标
使用 tcpdump 开源软件对在本机上访问 www.163.com 网站过程进行嗅探,回答问题:你在访问 www.163.com 网站首页时,浏览器将访问多少个 Web 服务器?他们的 IP 地址都是什么?
2.1.1 虚拟机网络配置
-
打开 VMware,将 Kali 虚拟机的网络适配器设置为桥接模式,勾选「复制物理网络连接状态」,确保 Kali 和宿主机在同一局域网、可正常访问外网。
![image]()
-
启动 Kali,打开终端,执行以下命令确认本机 IP,记录 eth0 网卡的 inet 地址(示例:192.168.1.103),后续抓包需用到。
sudo ifconfig
得到 eth0 网卡的 inet 地址:192.168.123.95
- 验证网络连通性,执行
ping baidu.com,能正常收到回复即可。
![image]()
2.1.2 抓包命令与参数说明
在终端输入以下命令:
tcpdump -n src 192.168.123.95 and tcp port 80 and "tcp[13]&18=2"
然后打开 Firefox 访问 www.163.com。
命令参数说明:
-n:不解析域名,直接显示 IP,提升抓包效率-i eth0:指定抓包网卡为 eth0src 你的本机IP:仅捕获本机向外发起的流量tcp port 80:捕获 HTTP Web 服务流量"tcp[13]&18=2":仅过滤 TCP 三次握手的 SYN 包,精准识别新发起的 Web 连接
![image]()
查询114.250.66.34
![image]()
2.1.3 实验结果分析
Web 服务器数量统计:对抓包结果中 > 符号后的目标 IP 地址去重,去重后的个数即为浏览器访问的 Web 服务器数量。
本实验列出的 IP 如下(由于太多,只列举后面重复出现的三个):
- 60.29.234.35
- 60.9.5.124
- 23.215.212.239
注:出现多个 IP 的核心原因是网站 CDN 加速、静态资源分域名部署、第三方广告/统计资源加载等导致。
2.2 实验二:Wireshark TELNET BBS 登录嗅探与协议分析
实验目标
对 TELNET 方式登录 BBS 的流量进行嗅探与协议分析,回答 3 个核心问题:
- 登录的 BBS 服务器的 IP 地址与端口各是什么?
- TELNET 协议是如何向服务器传送你输入的用户名及登录口令?
- 如何利用 Wireshark 分析嗅探的数据包,并从中获取你的用户名及登录口令?
2.2.1 启动 Wireshark 抓包
终端执行以下命令,以管理员权限启动 Wireshark:
sudo wireshark

打开后,在左侧网卡列表选择 eth0,点击左上角鲨鱼鳍图标,启动流量捕获。
2.2.2 TELNET 登录 BBS
新建一个终端,执行以下命令,登录水木清华 BBS:
luit -encoding GBK telnet bbs.newsmth.net

等待 BBS 欢迎界面加载完成,按页面提示操作:
- 输入用户名(示例:guest 访客账号,无需注册),按回车
- 按提示输入登录口令(guest 账号无需密码,可测试输入自定义字符,验证明文传输效果),完成登录操作
2.2.3 停止抓包
登录完成后,回到 Wireshark,点击左上角红色方形按钮,停止流量捕获。
2.2.4 实验问题分析
问题 1:BBS 服务器的 IP 地址与端口
在 Wireshark 顶部的「显示过滤器」中输入 tcp.port == 23 || telnet,回车过滤所有 Telnet 协议流量。

查看过滤后数据包的 Destination 列,即为 BBS 服务器 IP:120.92.212.76;Dst Port 列即为端口:23(Telnet 协议默认端口)。
问题 2:TELNET 协议传输用户名/口令的机制
TELNET 协议采用明文逐字节传输的核心机制:用户输入的用户名、登录口令不做任何加密处理,直接封装在 TCP 数据包中,每输入 1 个字符就单独发送 1 个 TCP 数据包给服务器,服务器同步回显对应字符,全程无加密防护。
问题 3:Wireshark 提取用户名与登录口令的方法
在过滤后的 Telnet 数据包列表中,右键任意一个 Telnet 数据包,选择「Follow」→「TCP Stream」;在弹出的 TCP 流窗口中,将左下角的显示格式切换为 ASCII。

窗口中会完整显示整个 Telnet 会话的明文内容,直接可看到「请输入代号:」后的用户名、「请输入密码:」后的登录口令。
2.3 实验三:listen.pcap 网络扫描取证分析实践
实验目标
对 listen.pcap(listen.cap)流量包进行取证分析,回答 5 个核心问题:
- 网络扫描的目标 IP 地址是什么?
- 本次案例中是使用了哪个扫描工具发起这些端口扫描?你是如何确定的?
- 攻击者使用了哪种扫描方法,扫描的目标端口是什么,并描述其工作原理。
- 在蜜罐主机上哪些端口被发现是开放的?
- 攻击主机的操作系统是什么?
2.3.1 环境准备
需提前安装 3 个核心工具,终端执行以下命令:
# 更新软件源
sudo apt update -y
# 一键安装实验所需工具
sudo apt install -y wireshark snort p0f
踩坑解决:Kali 默认安装的 Snort 为 3.x 版本,参考文档明确说明:Snort3 默认配置文件为 snort.lua,而非旧版的 snort.conf,后续命令必须使用 snort.lua,否则会报配置文件不存在的错误。

将 listen.pcap(别名 listen.cap)流量包文件传输到 Kali 中,放到桌面上。
2.3.2 问题 1:网络扫描的目标 IP 地址
双击打开 listen.pcap,在顶部显示过滤器中输入 arp,回车过滤所有 ARP 协议流量。
查看过滤结果,可看到持续的 ARP 广播请求:Who has 172.31.4.188? Tell 172.31.4.178,该请求的目标为 172.31.4.188,是扫描目标 IP。

清空过滤器,输入 ip.src == 172.31.4.178 and tcp.flags.syn == 1 and tcp.flags.ack == 0,过滤所有主动发起的 TCP SYN 扫描包,可看到所有扫描包的目标 IP 均为 172.31.4.188。

补充验证:过滤器输入icmp,可看到 ICMP Echo(ping)主机存活探测的请求包,源 IP 同样为 172.31.4.178

2.3.3 问题 2:使用的扫描工具及判定依据
安装 Snort3 社区检测规则,解决默认规则无法精准识别扫描工具的问题:
# 下载 Snort3 社区规则包
sudo wget https://www.snort.org/downloads/community/snort3-community-rules.tar.gz -O /tmp/snort3-community-rules.tar.gz
# 创建规则目录
sudo mkdir -p /etc/snort/rules
# 解压规则包
sudo tar -xzvf /tmp/snort3-community-rules.tar.gz -C /etc/snort/rules
# 移动规则文件到配置目录
sudo mv /etc/snort/rules/snort3-community-rules/* /etc/snort/rules/
# 验证规则文件存在
ls /etc/snort/rules/snort3-community.rules

执行带规则的流量深度分析命令:
sudo snort -c /etc/snort/snort.lua -r /home/kali/Desktop/listen.pcap -R /etc/snort/rules/snort3-community.rules -A alert_fast -l /var/log/snort

查看输出结果,控制台会出现大量明确告警:Nmap XMAS attack detected、nmap OS scan、Nmap TCP SYN scan,Snort 官方规则直接匹配到 Nmap 扫描的特征指纹。
答案:本次案例使用的扫描工具是 Nmap。判定依据是 Snort3 社区规则直接识别出了 Nmap 扫描的流量特征指纹。
2.3.4 问题 3:扫描方法、目标端口及工作原理
扫描方法:Wireshark 过滤器输入 ip.src == 172.31.4.178 and tcp.flags,可看到核心扫描行为:攻击机向目标端口发送 SYN 包,收到目标 SYN+ACK 响应后,立即回复 RST 包中断连接,不完成完整 TCP 三次握手,完全符合 TCP SYN 半开放扫描(半连接扫描) 的行为特征。

目标端口:攻击者发起的 SYN 扫描包覆盖了 TCP 1-65535 全端口范围,实现全端口探测。
重点探测的常见服务端口包括:21 (ftp)、22 (ssh)、23 (telnet)、25 (smtp)、53 (dns)、80 (http)、139 (netbios)、445 (smb)、3306 (mysql)、3389 (远程桌面)、5432 (postgresql)、8009、8180 等。
TCP SYN 半开放扫描工作原理:
- 攻击机向目标主机的指定端口发送 TCP SYN 数据包(TCP 三次握手的第一次报文),请求建立连接。
- 目标端口状态判定分两种场景:
- 端口开放场景:靶机收到 SYN 包后,回复 TCP SYN+ACK 数据包(三次握手的第二次报文),表示同意建立连接;攻击机收到该响应后,立即发送 TCP RST 数据包,主动中断连接,不完成完整的三次握手。该方式不会在目标主机的系统日志中留下完整连接记录,隐蔽性远高于全连接扫描。
- 端口关闭场景:靶机收到 SYN 包后,直接回复 TCP RST+ACK 数据包,拒绝连接请求,攻击机即可判定该端口为关闭状态。
- 攻击机通过目标主机对每个 SYN 包的响应结果,精准判定目标端口的开放/关闭状态。
![image]()
2.3.5 问题 4:蜜罐主机开放的端口
在 Wireshark 的 listen.pcap 文件中,顶部显示过滤器输入精准过滤规则:
tcp.flags.syn == 1 and tcp.flags.ack == 1 and ip.src == 172.31.4.188
过滤规则说明:根据 TCP 协议规范,只有端口处于开放状态时,目标主机才会对攻击机的 SYN 扫描包回复 SYN+ACK 确认报文。

查看过滤结果中所有数据包的源端口列,对端口号去重后,得到完整的开放端口列表。
蜜罐主机开放的端口完整列表:21 (ftp)、22 (ssh)、23 (telnet)、25 (smtp)、53 (dns)、80 (http)、139 (netbios)、445 (smb)、3306 (mysql)、5432 (postgresql)、8009、8180。
2.3.6 问题 5:攻击主机的操作系统
在前序操作中我们不难发现:

答案:攻击主机的操作系统是 Linux 2.6.x。
三、实验感悟与思考
无论是 TELNET 明文传输的安全隐患、pcap 文件中攻击行为的还原溯源,都让我直观认识到网络通信的底层风险与加密传输的必要性。在实验的过程中,我掌握了端口扫描识别、攻击源定位、操作系统被动探测等实操技能。
注:不知道是不是版本不兼容,我创建虚拟机与宿主机的共享文件夹的时候问题频出。最后选择让 kali 登录学习通下载需要的文件。下一次实验我会把 vmware 更新到最新的版本。





浙公网安备 33010602011771号