20253921 2025-2026-2 《网络攻防实践》第三周作业
20253921 2025-2026-2 《网络攻防实践》第三周作业
1.知识点梳理与总结
(1) 抓包与过滤
本次实验中主要使用了 tcpdump 和 Wireshark 两种抓包工具。tcpdump 更适合在命令行环境下快速抓取指定条件的数据包,例如通过源地址、协议类型、端口号等条件进行过滤;Wireshark 则更适合对抓到的数据进行可视化分析,能够直观查看协议分层结构、会话过程以及具体字段内容。
(2) TELNET 明文传输
通过对 TELNET 登录过程的抓包分析可以发现,TELNET 在传输用户名和口令时并不会加密,而是以明文、逐字符的方式通过 TCP 连接发送给服务器。即使用户在终端中看到密码不回显,网络中传输的仍然是可被还原的真实内容。这说明 TELNET 协议在身份认证场景下存在明显安全风险,也进一步体现了使用加密协议替代明文协议的重要性。
(3) TCP 流追踪
在 Wireshark 中,通过“Follow TCP Stream”功能,可以把分散在多个数据包中的应用层数据重新组合为完整会话内容,从而更高效地分析登录过程、命令交互过程以及敏感信息传输过程。这一方法不仅适用于 TELNET,也适用于 HTTP、FTP 等多种基于 TCP 的协议分析,是取证分析中非常实用的重要技能。
(4) 端口扫描识别
在对 listen.cap 的分析中,可以通过观察 SYN、SYN, ACK、RST、ICMP、UDP 探测等报文特征,识别攻击主机与目标主机,并进一步判断扫描工具和扫描方法。例如,攻击者向多个端口发送 SYN 报文、目标开放端口返回 SYN, ACK、攻击者随后发送 RST 而不完成握手,这正是典型的 TCP SYN 半开放扫描 特征。
2.实验过程
(1)动手实践tcpdump
在 Kali Linux 虚拟机中打开终端,先使用 ping baidu.com 命令测试当前主机的网络连通性。终端能够正常收到目标主机返回的 ICMP 应答报文,说明本机网络连接正常,可以进行后续的网站访问与抓包实验。
打开 Firefox 浏览器,在地址栏中输入目标网址进行访问。根据本次实验实际操作内容,访问的网站。
在终端中使用 tcpdump 工具对本机访问网页时产生的 HTTP 流量进行抓包监听。本次实验中使用的命令为:sudo tcpdump -n src 192.168.200.65 and tcp port 80
根据抓包输出结果,可以看到本机在访问网易首页过程中,并不是只与单一服务器通信,而是先后与多个不同的目标地址建立连接。抓包记录中出现的目标 Web 服务器 IP 地址包括:
198.18.7.55198.18.7.61198.18.7.62198.18.7.71198.18.0.238
(2)动手实践Wireshark
1)你所登录的 BBS 服务器的 IP 地址与端口各是什么?
在 Wireshark 中选择 VMware Network Adapter VMnet8 作为抓包网卡,对本机与远程 BBS 服务器之间的通信过程进行抓包。
在 Kali Linux 终端中输入如下命令,通过 TELNET 方式连接 BBS 服务器:telnet bbs.mysmth.net 23
在 Wireshark 显示过滤器中输入:telnet
过滤后可以看到,本机地址为 192.168.200.65,远程服务器地址为 198.18.11.36。在数据包详细信息区域中,能够看到服务器端口为 23,客户端使用的是临时端口 47070。因此可以确定,本次登录的 BBS 服务器信息如下:
- 服务器 IP 地址:
198.18.11.36 - 服务器端口:
23
2)TELNET 协议是如何向服务器传送你输入的用户名及登录口令?
在执行 telnet bbs.mysmth.net 23 后,终端进入 BBS 登录界面,随后输入用户名 guest,再继续输入登录口令。
结合 Wireshark 抓包结果可以看到,在正式传输登录信息之前,客户端与服务器之间先进行了 TELNET 参数协商,抓包中显示的协商内容包括:
Do Terminal TypeWill Terminal TypeWill EchoWill Suppress Go AheadWill Binary TransmissionDo Negotiate About Window Size
这些报文表明,TELNET 协议在建立会话后,会先协商终端类型、回显方式、是否抑制继续信号以及窗口大小等参数。协商完成后,用户在键盘中输入的内容就通过当前 TCP 连接发送到服务器。
从抓包结果中还可以看到,大量由客户端发出的 1 byte data 报文,这说明 TELNET 在传输用户名和口令时,通常是按字符逐个发送的,而不是加密后整体发送。也就是说,虽然在终端界面中口令位置可能显示为星号或者不回显,但在网络传输过程中,用户名和口令实际上是以明文形式逐字节发送给服务器的。
因此,TELNET 协议传送用户名及登录口令的方式是:先完成参数协商,再通过 TCP 连接以明文、逐字符的方式发送用户输入内容。
3)如何利用 Wireshark 分析嗅探的数据包,并从中获取你的用户名及登录口令?
在 Wireshark 中完成抓包后,首先通过显示过滤器 telnet 筛选出 TELNET 协议相关的数据包。筛选后可以看到,本机 192.168.200.65 与服务器 198.18.11.36:23 之间存在完整的 TELNET 会话数据。
接下来,在抓包列表中任选一条属于该会话的 TELNET 数据包,右键选择 “追踪 TCP 流(Follow TCP Stream)”。
在弹出的 TCP 流窗口中,可以看到该 TCP 连接中的完整应用层交互内容,包括:
服务器返回的欢迎信息;
BBS 登录提示信息;
客户端输入的用户名;
客户端输入的口令内容。
可以直接从会话内容中识别出客户端输入的用户名为:
用户名: guest
同时,在 TCP 流窗口底部还可以看到客户端输入内容逐字符显示,结合会话内容可以还原出本次实验输入的登录口令为:
登录口令: 123123
(3)取证分析实践,解码网络扫描器(listen.cap)
先使用sudo apt update和sudo apt install wireshark来在kali下载wireshark,发现kali中已经有wireshark该软件。
1)攻击主机的 IP 地址是什么?
把对应的pcap文件拖动到wireshark中,打开抓包数据。
通过在Wireshark的过滤器输入以下内容:ip.src == 172.31.4.178 && tcp.flags.syn == 1 && tcp.flags.ack == 0
可以看到 172.31.4.178 持续向 172.31.4.188 的多个不同端口发送 TCP SYN 报文,例如 23、80、22 等端口。说明该主机在主动发起探测,而不是被动响应,因此可判断其为扫描发起方,也就是攻击主机。所以攻击主机的IP地址应该是 172.31.4.178。
2)网络扫描的目标 IP 地址是什么?
通过在Wireshark的过滤器输入以下内容:tcp.flags.syn == 1 && tcp.flags.ack == 1 && ip.src == 172.31.4.188
可以看到 172.31.4.188 向 172.31.4.178 返回大量 SYN, ACK 报文,这表明它是在响应对方的端口探测。所以172.31.4.188 应该是被扫描的一方,也就是扫描目标。
3)本次案例中是使用了哪个扫描工具发起这些端口扫描?你是如何确定的?
先使用以下过滤器查看 TCP 扫描行为:ip.src == 172.31.4.178 && tcp.flags.syn == 1 && tcp.flags.ack == 0
可以看到攻击机向目标主机多个端口连续发送 SYN 报文。
然后输入:icmp
可以看到攻击机发送 Echo (ping) request,目标返回 Echo reply。
再输入:udp
可以看到攻击机向目标高位端口发送 UDP 探测,并收到 Destination unreachable (Port unreachable) 的响应。
综合抓包行为可见,本次流量中同时出现了:
- TCP SYN 扫描
- ICMP 探测
- UDP 高位端口探测
- 特殊 TCP 探测行为
这些特征与 Nmap 的端口扫描和 OS 探测方式高度一致,因此可以判断本次案例中使用的扫描工具应该为 Nmap。
4)你所分析的日志文件中,攻击者使用了哪种扫描方法,扫描的目标端口是什么,并描述其工作原理。
通过在Wireshark的过滤器输入以下内容:text ip.src == 172.31.4.178 && tcp.flags.syn == 1 && tcp.flags.ack == 0
可以看到攻击主机持续向目标主机多个端口发送 SYN 报文,目的端口包括:3306、139、995等。
再输入:tcp.flags.syn == 1 && tcp.flags.ack == 1 && ip.src == 172.31.4.188
可以看到目标主机对开放端口返回 SYN, ACK。
随后在包列表中还能看到攻击机再发送 RST,并没有完成三次握手,因此可以确定其使用的是 TCP SYN 半开放扫描。
其工作原理如下:
- 扫描方向目标端口发送 SYN 报文
- 如果端口开放,目标主机返回
SYN, ACK - 如果端口关闭,目标主机返回
RST或RST, ACK - 扫描方在收到
SYN, ACK后立即发送RST,而不完成完整 TCP 连接 - 通过这种方式判断端口状态,同时减少完整连接日志痕迹
从抓包结果来看,攻击者扫描的是目标主机上的多个 TCP 端口,而不是单一端口。
5)在蜜罐主机上哪些端口被发现是开放的?
在 Wireshark 中输入以下过滤器:tcp.flags.syn == 1 && tcp.flags.ack == 1 && ip.src == 172.31.4.188
该过滤器可以筛选出目标主机返回的 SYN, ACK 报文。根据 TCP 协议,只有当端口开放时,目标主机才会对探测 SYN 返回 SYN, ACK。因此查看这些报文中的源端口,就可以判断哪些端口是开放的。
从抓包结果中可识别出的开放端口有: 21、22、23、25、53、80、139、445、3306、3632、5432、8009、8180。
6)攻击主机的操作系统是什么?
先在kali里执行sudo apt install p0f这个命令,下载工具,但是报错了。
然后执行sudo wget https://archive.kali.org/archive-keyring.gpg -O /usr/share/keyrings/kali-archive-keyring.gpg命令修复。
修复完后再执行sudo apt install p0f这个命令进行安装。
最后执行p0f -r listen.pcap命令,可以看到显示攻击机的 OS 为 linux 2.6.x
3.学习中遇到的问题及解决
-
问题1:做第一题的时候网易网站的截图一直上传不了,尝试过多种方法都上传不了。
-
问题1解决方案:后来我猜测可能是内容含有敏感词汇,我尝试翻到体育界面,结果一下就上传成功,总结出应该就是初始网页界面上有国家政策,触发审核机制了。
-
问题2:在kali安装p0f工具的时候,发现报错Kali仓库签名key缺失。
-
问题2解决方案:官方有解释使用
sudo wget https://archive.kali.org/archive-keyring.gpg -O /usr/share/keyrings/kali-archive-keyring.gpg
sudo apt update命令进行修复,然后再安装工具就行。
4.学习感悟、思考
通过这次实验,我对网络中的数据到底是怎样传输的有了更直观的认识。以前对协议安全性的理解更多停留在概念层面,而这次通过抓包亲眼看到 TELNET 用户名和密码能够被直接还原,才真正意识到明文协议的风险。另一方面,在分析扫描流量时,我也体会到抓包工具不仅能看数据,更重要的是要学会结合协议行为去判断主机角色、攻击方式和目标特征。整体来看,这次实验让我对网络攻防中的流量分析和协议安全有了更具体的理解。

浙公网安备 33010602011771号