20253920 2025-2026-2《网络攻防实践》第3次作业
20253920 2025-2026-2 《网络攻防实践》第3次作业
1.实验内容
(1)tcpdump 网络嗅探实践
tcpdump 是一款开源命令行网络抓包工具,可捕获网络接口的原始流量,用于网络流量分析与问题排查。
在 Kali 终端执行 tcpdump 抓包命令,同时在浏览器访问 www.tianya.cn 网站首页,完成对访问过程的流量嗅探。
通过对捕获的流量进行过滤与统计,可识别出浏览器访问网站首页时,会向多个 Web 服务器发起请求,统计出访问的 Web 服务器数量,并提取出各服务器对应的 IP 地址,完成对网页访问流量的溯源分析。
(2)Wireshark 协议分析与 Telnet 登录嗅探
Wireshark 是图形化网络协议分析工具,支持流量过滤、协议深度解析,可实现对网络数据包的可视化分析;Telnet 是一种远程终端协议,用于远程登录服务器,其传输数据以明文形式发送,存在严重安全隐患。
使用 Wireshark 捕获本地以 Telnet 方式登录 BBS 的全过程流量,完成对 Telnet 协议的嗅探与分析。
- 通过流量过滤与会话统计,可定位出所登录 BBS 服务器的 IP 地址与 Telnet 服务默认端口 23。
- Telnet 协议以明文形式向服务器传输用户名与登录口令,数据未做任何加密处理,可直接在数据包中读取。
- 在 Wireshark 中通过 Telnet 协议过滤,可直接从捕获的数据包中提取出登录的用户名与口令,验证了 Telnet 协议的明文传输安全缺陷。
(3)listen.pcap 端口扫描取证分析
端口扫描是网络攻击的前置环节,通过向目标主机端口发送探测包,根据响应判断端口状态,用于收集目标资产信息;SYN 半开放扫描是常用的隐蔽扫描方式,不建立完整 TCP 三次握手,隐蔽性强;Nmap 是主流的端口扫描工具,支持多种扫描方式。
使用 Wireshark、Snort 工具对 listen.pcap 端口扫描流量进行完整取证分析。
- 攻击主机 IP 地址为 172.31.4.178,该 IP 主动发起大量 TCP SYN 探测包,是端口扫描的发起方。
- 网络扫描的目标(蜜罐)IP 地址为 172.31.4.188,是端口扫描的探测对象。
- 本次端口扫描由 Nmap 工具发起,依据为流量中大量仅发送 SYN 包、不完成 TCP 三次握手的半开放扫描特征,同时 Snort 的 port_scan 模块检测到多次端口扫描行为,进一步验证该结论。
- 攻击者使用 TCP SYN 半开放扫描方法,对目标主机的 21、22、23、25、53、80、139、445、3306 等常见服务端口进行批量探测。其工作原理基于 TCP 三次握手:端口开放时目标回复 SYN+ACK 包,攻击者发送 RST 包断开连接;端口关闭时目标直接回复 RST+ACK 包,以此完成端口探测,该方法隐蔽性强、不易被日志记录。
- 蜜罐主机上开放的端口包括 21、22、23、25、53、80、139、445、3306,通过过滤目标主机回复的 SYN+ACK 包,去重统计后得到该开放端口列表。
- 攻击主机的操作系统为 Linux,依据为攻击机数据包的 TTL 值为 64,符合 Linux 系统默认 TTL 特征,同时 TCP 协议栈参数也匹配 Linux 系统特征。
2.实验过程
2.1实践tcpdump
首先将kali设置成桥接模式

修改kaili的虚拟机网络适配器

输入命令行sudo nano /etc/network/interfaces,进入编辑器,添加auto eth0 iface eth0 inet dhcp两行代码进行dhcp自动分配

退出编辑器后,输入命令行sudo systemctl restart networking重启网络,并输入ifconfig查看IP地址

输入命令行sudo tcpdump -n src 172.20.10.5 and tcp port 80 and "tcp[13] & 18 = 2"开始嗅探

打开Firefox浏览器,输入www.163.com进入网页

打开终端,观察嗅探结果,如下图:

根据tcpdump抓包结果,浏览器共访问量2个Web服务器,IP地址分别为:120.253.253.226;34.107.221.82
2.2实践Wireshark
2.2.1所登陆的BBS服务器的IP地址和端口
首先输入命令行sudo wireshark启动抓包软件,并双击eth0

利用命令行luit -encoding gbk telnet bbs.fudan.edu.cn访问复旦BBS,发现命令一直停留在Trying 202.120.225.9 ...也就是说复旦 BBS 服务器根本没有在这个 IP 上运行 TELNET 服务监听 23 端口

更改命令行luit -encoding gbk telnet bbs.byr.cn来访问北邮BBS

查看此时的wireshark抓包,可知BBS服务器的IP地址为:211.68.71.66;端口号为:23;如下图:

2.2.2TELNET协议是如何向服务器传送输入的用户名及登录口令
在输入代号后输入guest,以公共访客身份来访问BBS内部系统,并查看此时的wireshark抓包,如下图:


随机选取一个Telnet数据包,选择追踪流(Follow),查看其完整的明文交互记录,如下图:


由此可知,TELNET 协议在传输用户的认证信息时,采用的是逐字符的明文传输方式。 当用户在终端每敲击一个字符时,客户端就会立即生成一个 TCP 数据包,将该字符作为数据载荷不加任何加密地发送给服务器。服务器收到后,通常还会明文回显该字符。这种无加密的机制导致用户名和密码在网络中处于完全“裸奔”的状态。
2.2.3如何利用Wireshark分析嗅探的数据包,并从中获取用户名及登陆口令
(1)在发起 TELNET 连接前,启动 Wireshark 并监听当前网卡,设置显示过滤器为 telnet。
(2)在终端执行登录操作。该实验,我输入了访客账号 guest成功登录了 BBS 系统如图:

(3)停止抓包。在 Wireshark 的数据包列表中,选中任意一个 TELNET协议的包。右键点击该数据包,选择 “追踪流 (Follow)” -> “TCP 流 (TCP Stream)”。
(4)在弹出的会话重组窗口中,Wireshark 将零散的字符重组。通过寻找标识为红色的客户端发送数据,即可读取到我刚才输入的明文账号 guest 以及相关的明文交互指令。

补充说明:在追踪 TCP 流的截图中,可以清晰地看到红色的明文字符 guest,即用户名的明文传输。 由于本次测试使用的是该 BBS 系统的公共访客账号 guest,该账号默认配置为免密码登录。因此在交互过程中,服务器未请求密码,客户端也未发送密码数据,故抓包流中仅包含用户名。根据 TELNET 协议的工作机制,如果使用普通注册账号登录,其输入的密码字符也会如同 guest 一样,以红色的明文字符形态在 TCP 数据流中。
2.3取证分析实践,解码网络扫描器
首先从学习通下载listen.pacp文件,并在主机打开powershell窗口,输入命令行 python -m http.server 8000启动临时文件服务

cmd并输入ipconfig查找Windows WLAN的IP地址

在kali终端输入命令行wget http://172.20.10.3:8000/listen.pcap
问题1:出现连接失败的问题

经过排查,具体原因主要有两个:
①我的虚拟机版本为VM ware12.5 较老,且kali网络适配器的网络连接设置为VMnet0,自定义桥接模式容易出现兼容性问题,故我将kali的网络适配器修改成桥接模式(B),如下图:

②我的防火墙没有关闭,关闭后重新打开powershell窗口,输入命令

打开一个新的powershell窗口,并输入命令行netstat -ano | findstr :8000来进行验证窗口监听,出现第一行结果才正确

打开kali终端再次输入命令行wget http://172.20.10.3:8000/listen.pcap,成功从主机下载listen.pcap包

利用wireshark打开listen.pcap包


筛选tcp包

由上图可知:
2.3.1攻击主机的IP地址是:172.31.4.178
2.3.2网络扫描的目的IP是:172.31.4.188
2.3.3本次案例中是使用了哪个扫描工具发起这些端口扫描?你是如何确定的?
1.本次案例使用Nmap扫描工具发起的端口扫描
2.如何确定:
(1)短时间内同一源 IP 向目标大量不同端口发送 SYN 包,无完整三次握手,端口扫描节奏均匀、无规律,符合 Nmap 默认扫描特征
(2)输入命令行snort -A console -q -u snort -c /etc/snort/snort.conf -r listen.pcap来进行Snort特征检验
问题2
遇到了 Kali 源配置问题导致的 Unable to locate package snort

具体原因:
Kali 中 Snort 的正确包名是 snort3,而非旧版的 snort,直接搜 snort 会找不到
软件源缓存过期,导致无法定位包
Kali 默认未预装 Snort,需要先更新源再安装

问题3
执行apt update -y 但仍找不到 snort3,具体原因为:Kali 2025.4 的源配置或软件包索引存在缓存冲突

写入kali官方源,并清掉旧缓存

安装官方源的snort包

验证安装成功

首先cd /home/kali/切到listen.pcap包所在的主目录,输入sudo snort -v -c /etc/snort/snort.lua -r listen.pcap 结果如下图所示

如port_scan 模块区域,显示 packets: 135515、trackers: 6、scans: 12,Snort 日志成功检测到端口扫描行为,验证 Nmap 扫描特征。

如Packet Statistics 模块,显示 analyzed: 135580,100% 数据包分析完成,TCP 协议占比 99.95%,确认流量为端口扫描的 TCP 核心流量

如appid区域,显示各应用协议检测模块加载正常,辅助验证流量为正常网络服务扫描。

2.3.4你所分析的日志文件中,攻击者使用了那种扫描方法,扫描的目标端口是什么,并描述其工作原理。
(1)扫描方法
攻击者使用的是 TCP SYN 半开放扫描,对应 Nmap 中的 -sS 扫描方式。
(2)扫描的目标端口
从流量中可以看出,攻击者对目标主机常见服务端口进行了批量扫描,主要包括:
- 21(FTP)
- 22(SSH)
- 23(Telnet)
- 25(SMTP)
- 53(DNS)
- 80(HTTP)
- 139、445(SMB 服务)
- 3306(MySQL)等常见网络端口。
(3)工作原理
-
攻击者向目标主机的不同端口发送 TCP SYN 包,尝试发起 TCP 连接。
-
若目标端口开放,目标主机会回复 SYN+ACK 包,表示可以建立连接。
-
攻击者收到 SYN+ACK 后,不会发送 ACK 完成三次握手,而是直接发送 RST 包断开连接。
-
若目标端口关闭,目标主机会直接回复 RST+ACK 包,表示端口不可用。
-
攻击者通过响应包类型判断端口是否开放。由于不建立完整 TCP 连接,这种扫描方式隐蔽性强、速度快,不易被普通日志记录,是 Nmap 最常用的扫描方式。
打开wireshark输入过滤
tcp.flags.syn == 1 and tcp.flags.ack == 0如下图

上图为 Wireshark 过滤后的 SYN 扫描包。攻击者仅发送 SYN 包,不完成三次握手,是典型的 TCP SYN 半开放扫描
2.3.5在蜜罐主机上哪些端口被发现是开放的?
利用命令ip.src == 172.31.4.188 && ip.dst == 172.31.4.178 &&tcp.flags.syn == 1 && tcp.flags.ack == 1进行过滤


上图为 Wireshark 去重后的TCP 会话统计结果,仅展示蜜罐主机(172.31.4.188)回复的 SYN+ACK 包。其中Address为 172.31.4.188 的Port列,即为蜜罐主机的开放端口,包括 21、22、23、25、53、80、139、445、3306 等常见服务端口,验证了端口的开放状态
2.3.6攻击主机的操作系统是什么
在 Kali 上利用sudo apt install p0f安装p0f工具,并利用该工具进行判断

查看版本号

利用命令行p0f -r listen.pcap来查看攻击流量包


3.学习中遇到的问题及解决
- Snort 3.x 版本参数不兼容、规则变量缺失问题:通过改用 Snort 3.x 官方标准命令、加载官方配置文件,自动预定义规则变量,解决参数与变量报错,成功加载端口扫描规则。
- 遇到了 Kali 源配置问题导致的
Unable to locate package snort,具体原因主要是VM版本太老,出现不兼容问题,将kali网络适配器的网络连接更改为桥接模式(B)
4.学习感悟
本次实验围绕网络嗅探、协议分析、端口扫描取证三大核心模块展开,系统掌握了 tcpdump、Wireshark、Snort 等网络安全工具的使用方法,深入理解了 TCP 协议、端口扫描原理、Telnet 明文传输缺陷等核心知识点。
实验过程中,从 tcpdump 抓包、Wireshark 协议分析,到 listen.pcap 端口扫描取证,完整复现了网络安全取证的全流程,不仅提升了工具操作能力,更建立了 “流量特征 - 工具行为 - 安全风险” 的关联分析思维。同时,通过解决各类工具兼容、流量分析问题,深入理解了网络安全工具的底层原理,认识到端口扫描、明文传输等行为的安全隐患,为后续网络攻防、安全运维工作打下了坚实基础。
此外,实验也让我深刻认识到网络安全取证的实战价值,通过对网络流量的分析,可有效识别攻击行为、定位攻击源、梳理资产风险,为网络安全防护、应急响应提供关键依据,进一步强化了网络安全防护意识。

浙公网安备 33010602011771号