# 20251901 2024-2025-2 《网络攻防实践》实验三
目录
实验三 网络嗅探与协议分析
实验要求:
(1)动手实践tcpdump
使用tcpdump开源软件对在本机上访问www.tianya.cn网站过程进行嗅探,回答问题:你在访问www.tianya.cn网站首页时,浏览器将访问多少个Web服务器?他们的IP地址都是什么?
(2)动手实践Wireshark
使用Wireshark开源软件对在本机上以TELNET方式登录BBS进行嗅探与协议分析,回答如下问题并给出操作过程:
你所登录的BBS服务器的IP地址与端口各是什么?
TELNET协议是如何向服务器传送你输入的用户名及登录口令?
如何利用Wireshark分析嗅探的数据包,并从中获取你的用户名及登录口令?
(3)取证分析实践,解码网络扫描器(listen.cap)
攻击主机的IP地址是什么?
网络扫描的目标IP地址是什么?
本次案例中是使用了哪个扫描工具发起这些端口扫描?你是如何确定的?
你所分析的日志文件中,攻击者使用了那种扫描方法,扫描的目标端口是什么,并描述其工作原理。
在蜜罐主机上哪些端口被发现是开放的?
攻击主机的操作系统是什么?
一、实验任务
- 本次实验包含三个核心任务,围绕网络嗅探、协议分析和取证分析展开,具体总结如下:
- tcpdump实践:使用tcpdump工具对本机访问www.tianya.cn网站的过程进行嗅探,确定访问该网站首页时浏览器所访问的Web服务器数量及对应IP地址。
- Wireshark实践:使用Wireshark工具对本机以Telnet方式登录BBS服务器的过程进行嗅探与协议分析,明确BBS服务器的IP地址与端口,解析Telnet协议传输用户名和登录口令的机制,掌握利用Wireshark提取明文账号密码的方法。
- 取证分析实践:通过Wireshark打开listen.cap抓包日志,完成网络扫描取证,确定攻击主机IP、扫描目标IP、扫描工具、扫描方法及目标端口、蜜罐开放端口和攻击主机操作系统。
二、实验材料或资源
- Kali虚拟机
- Wireshark(kali虚拟机中自带)
- listen.pcap 抓包文件(老师提供)
- tcpdump
- 实验所需的其他网络攻防工具(在kali中安装)
三、知识点梳理
-
1. tcpdump相关知识点
tcpdump是一款开源的命令行网络嗅探工具,运行在Unix/Linux系统中,能够捕获网络接口上的数据包,支持按协议、IP地址、端口等条件过滤数据包,常用于网络故障排查和网络嗅探分析。
(1) 嗅探原理:tcpdump通过监听网络接口的数据流,捕获经过该接口的所有数据包(需root权限),并将数据包的详细信息(源IP、目标IP、协议类型、端口等)输出到终端或保存为文件。
(2)常用参数:-i 指定监听的网络接口(如eth0);-w 将捕获的数据包保存到指定文件;-r 读取保存的抓包文件;host 指定目标主机IP或域名;port 指定目标端口;tcp/udp 指定协议类型。
(3)过滤规则:支持按IP地址(host 192.168.1.1)、端口(port 80)、协议(tcp)、数据包方向(src/dst)等组合过滤,精准捕获目标数据包。 -
2. Wireshark相关知识点
Wireshark是一款开源的图形化网络嗅探与分析工具,支持跨平台运行,能够捕获并解析多种网络协议的数据包,直观展示数据包的结构、内容和交互过程,是网络攻防实验中最常用的数据包分析工具。
(1)抓包原理:与tcpdump一致,通过监听网络接口捕获数据包,需root权限确保正常抓包,避免权限不足导致无法捕获数据。
(2)界面组成:包含捕获接口选择区、显示过滤器、数据包列表区、数据包详情区、数据包原始数据区;其中显示过滤器可通过协议、IP、端口等规则过滤数据包,数据包详情区可展开查看数据包的各层协议结构(链路层、网络层、传输层、应用层)。
(3)协议解析:支持解析TCP、UDP、Telnet、HTTP、DNS等多种协议,能够展示各协议字段的含义,对于明文传输协议(如Telnet),可直接查看传输的文本内容。
(4)数据流追踪:右键数据包选择“追踪流”,可查看TCP/UDP完整的交互数据流,便于分析协议的完整工作过程。 -
3. Telnet协议
Telnet协议是一种基于TCP的应用层协议,用于实现远程终端登录,采用明文传输方式,即所有传输的数据(包括用户名、登录口令)均不经过加密,直接以ASCII码形式在网络中传输,存在严重的安全漏洞。
(1)工作机制:Telnet基于客户端-服务器模型,客户端通过TCP协议与服务器的23端口建立连接,连接建立后,客户端与服务器进行双向的数据交互,客户端输入的指令、账号密码均通过TCP连接明文传输至服务器。
(2)端口特性:Telnet协议默认使用23端口,属于TCP端口,服务器需开启Telnet服务(telnetd),客户端通过telnet命令发起连接。 -
4. 端口扫描相关知识点
端口扫描是网络攻击中常用的侦察手段,通过向目标主机的不同端口发送探测数据包,根据目标主机的响应情况,判断端口的开放状态(开放、关闭、过滤),为后续攻击提供信息支持。
(1)扫描工具:Nmap是最常用的开源端口扫描工具,支持多种扫描方法,能够探测目标主机的开放端口、操作系统类型、服务版本等信息,其扫描特征具有较强的辨识度。
(2)常见扫描方法:SYN半开扫描(半连接扫描),是Nmap默认的扫描方式,仅完成TCP三次握手的前两次(客户端发送SYN包,服务器回复SYN+ACK包则端口开放,回复RST包则端口关闭),不建立完整的TCP连接,速度快、隐蔽性高;全连接扫描(TCP connect扫描),完成完整的TCP三次握手,隐蔽性低,但准确性高。
(3)操作系统指纹识别:不同操作系统的TCP/IP协议栈存在差异,表现为数据包的TTL值(Linux默认64,Windows默认128)、TCP窗口大小、选项字段等特征不同,通过分析这些特征可判断目标主机的操作系统类型。
(4)蜜罐主机:用于诱捕攻击者的虚拟主机,通过模拟真实主机的网络环境,记录攻击者的扫描、攻击行为,本次实验中listen.cap日志记录的就是攻击者对蜜罐主机的扫描过程。 -
5. 取证分析实践与 listen.pcap 相关知识点
取证分析是指对网络流量、系统日志、抓包文件等数据进行提取、还原与分析,从而还原攻击行为、定位攻击源、判断攻击手段的安全分析过程。listen.pcap 是网络攻防实验中经典的离线抓包样本文件,记录了一次完整的端口扫描行为流量,包含攻击机发包、靶机响应、扫描特征、操作系统指纹等全部信息。
其主要内容包括:(1)离线流量分析:无需实时抓包,直接读取已保存的 .pcap 文件,还原历史网络通信过程。(2)攻击源定位:通过数据包源 IP 地址(Source) 识别发起扫描的攻击主机。(3)目标定位:通过数据包目的 IP 地址(Destination) 识别被扫描的蜜罐主机。(4)扫描行为识别:通过 TCP 标志位(SYN、ACK、RST)判断扫描类型,如 SYN 扫描、全连接扫描等。(5)开放端口判断:若目标主机回复 SYN+ACK,则端口开放;回复 RST 则端口关闭。(5)操作系统指纹:通过 TTL、窗口大小、MSS 等字段判断攻击主机操作系统类型。(6)工具识别:Nmap 扫描具有固定发包规律、TCP 选项特征,可在流量中直接识别。
四、实验思路
- 动手实践tcpdump
实践思路是嗅探本机访问目标网页的网络流量,明确访问的Web服务器数量及IP。先查看Kali虚拟机IP(192.168.188.10),然后访问www.tianya.cn,输入指定tcpdump命令进行抓包,最终从抓包结果中提取访问的服务器IP;执行tcpdump命令是为了捕获目标网页访问的相关流量,从而确定访问的Web服务器信息。 - 动手实践Wireshark
任务的思路是嗅探Telnet登录BBS的过程,分析Telnet协议及提取明文账号密码。打开Wireshark,然后输入指定命令登录清华BBS(产生Telnet通信流量),同时用Wireshark监听,输入guest账号登录,过滤telnet包获取BBS服务器IP(120.92.212.76)和端口(23),追踪TCP流提取明文账号密码。过滤telnet包是为了排除无关干扰,追踪TCP流是为了还原Telnet明文传输过程,从而获取账号密码并分析协议传输机制。 - 取证分析实践(listen.cap)
思路是解析抓包文件,还原网络扫描行为并完成相关取证。首先将listen.pcap导入Kali,通过分析数据包确定攻击机和靶机IP,安装并使用Snort工具辅助识别扫描工具,用Wireshark过滤不同特征数据包分析扫描方法和开放端口,安装并使用p0f工具判断攻击机操作系统。
五、实验详细过程
- 首先查看kali虚拟机的IP地址:
![image]()
即Kali 虚拟机的 IP 地址是:192.168.188.10
5.1动手实践tcpdump
- 使用tcpdump开源软件对在本机上访问www.tianya.cn网站过程进行嗅探——
在实践的过程中,www.tianya.cn网页总是打不开,因此,我们访问了其他网页:www.ahu.edu.cn - 使用tcpdump进行嗅探,在终端输入如下命令:
sudo tcpdump -n src 192.168.188.10 and tcp port 80 and “tcp[13]&18=2”
![image]()
![image]()
- 回答问题:由上图中我们就可以看访问 www.ahu.edu.cn过程中访问问了多个服务器,他们的IP地址分别为:123.6.148.38、115.172.32.209、101.76.160.55
5.2动手实践Wireshark
-
使用Wireshark开源软件对在本机上以TELNET方式登录BBS进行嗅探与协议分析——
-
首先打开Wireshark:
点击kali中的Wireshark图形化标识,但是没反应,于是使用命令行打开:
![image]()
![image]()
-
输入命令
luit -encoding gbk telnet bbs.mysmth.net
进入清华的bbs,来访问其BBS服务器
![image]()
-
同时wireshark进行监听:
![image]()
-
输入代号guest,以guest身份进行访问:
![image]()
![image]()
-
过滤出telnet包,可以得出BBS服务器的IP地址为120.92.212.76,端口为23:
![image]()
![image]()
-
然后我们筛选某个tcp流的数据包
![image]()
-
对此数据包的tcp流进行追踪:选择分析-追踪流-TCP Stream,找到明文账号密码。选择GBK显示,不会出现乱码
![image]()
可以得出我们的用户名及登录口令为guest。
由于Telnet是明文传输,我们可以直接用wireshark进行嗅探分析。 -
回答问题:
(1)你所登录的BBS服务器的IP地址与端口各是什么?
根据上述过程得:BBS服务器的IP地址为120.92.212.76,端口为23
(2)TELNET协议是如何向服务器传送你输入的用户名及登录口令?
TELNET 协议采用明文 ASCII 码逐字符传输方式,无需加密处理。其传输过程为:客户端与服务器通过 TCP 协议建立连接(默认端口 23)后,用户每输入一个字符(包括用户名、登录口令的每一个字符),客户端会立即将该字符封装成 TCP 数据包,通过已建立的 TCP 连接发送至服务器,所有传输的数据均以纯文本形式在网络中传输,无任何加密保护。
(3)如何利用Wireshark分析嗅探的数据包,并从中获取你的用户名及登录口令?
先通过 Wireshark 监听虚拟机对应网卡(如 eth0),捕获 Telnet 登录 BBS 的全过程数据包,捕获完成后停止抓包;
在 Wireshark 顶部显示过滤器中输入telnet,筛选出所有 Telnet 协议相关的数据包,排除无关流量干扰;
右键任意一个筛选出的 Telnet 数据包,选择“追踪流”→“TCP 流”;
在弹出的 TCP 流窗口中,可直接查看客户端(你)发送给服务器的明文数据,其中包含输入的用户名和登录口令(通常在“Client → Server”方向的数据流中),实现明文提取。
5.3取证分析实践,解码网络扫描器(listen.cap)
- 首先在学习通下载老师提供的listen.pcap并将此文件导入kali虚拟机中。
- 然后找到listen.pcap在虚拟机中的路径,
![image]()
- 用 Wireshark 打开 listen.pcap
![image]()
![image]()
- 可以看出,首先发起TCP连接的IP是172.31.4.178,可以判定其为攻击机,所以目标IP是172.31.4.188。
- 接下来,我们安装snort工具——
输入命令:apt-get update、apt-get install snort注意需要在root权限下完成。
![image]()
![image]()
![image]()
- 下载安装完成。我们通过查看版本号来进行验证:
snort -V
![image]()
- 接下来我们就可以进行分析了。输入命令行查看:
snort -c /etc/snort/snort.lua -r /home/kali/Desktop/listen.pcap -A alert_full
![image]()
![image]()
![image]()
![image]()
![image]()
![image]()
![image]()
![image]()
- 接下来,通过wireshark打开listen.pcap数据包,在过滤栏中筛选ARP数据包,得出172.31.4.178对172.31.4.188的ARP请求,并且攻击机没有向靶机再发送其他的数据包,推测其攻击命令是namp -SP,因为使用该命令可以快速扫描指定目标的存活主机,而无需对其进行详细的端口扫描。
![image]()
- 再以tcp作为过滤条件,观察数据包,发现攻击机发送的数据包中有大量构造的标志位,以触发不同的响应包,推测是攻击机进行远程主机的操作系统检测,其攻击命令为对目标主机进行操作系统检测的nmap -O,nmap工具在进行操作系统检测时会发送特定的探测数据包,并根据目标主机对这些数据包的响应来推断目标主机的操作系统类型。
![image]()
![image]()
发现数据包中一共有13万条数据,且大多为SYN标志,推测是攻击机进行端口扫描,其命令为nmap -sS -p 1-65535,使用 SYN 扫描方式扫描目标主机的开放端口。 - 以tcp.port==80作为筛选条件,具体进一步查找,SYN标志的半开扫描,建立连接,推测其命令为nmap -sV,因为在进行半开扫描时,扫描器发送一个TCP SYN包给目标主机的特定端口,如果收到了一个TCP RST包作为响应,表示该端口是关闭的;但如果收到一个TCP SYN/ACK包,表示该端口是打开的。通过分析目标主机对SYN包的响应,可以得知目标主机上特定端口的状态。
![image]()
- 接下来,以tcp.flags.syn ==1 and tcp.flags.ack ==1为条件进行过滤。此条件表示数据包同时携带 SYN(连接请求)和 ACK(确认)标志,是目标主机对攻击主机 SYN 扫描包的响应包。
可以看到开放的端口有3306、139、23、80、25、22、53、21、445、5432、8009、8180等。
![image]()
- 安装p0f工具,输入命令:
apt-get install p0f
![image]()
- 接下来,在listen.pcap所在文件夹进入终端,通过下面的命令查看攻击机的操作系统
p0f -r listen.pcap
![image]()
可以得到其操作系统为Linux 2.6.x
六、实验过程中遇到的问题及解决
- 1.kali虚拟机Telnet 连水木 BBS 的报错
- 报错Couldn't exec: 乱码。最终发现报错原因是Kali 系统里根本没装 telnet 客户端工具
![image]()
- 然后出现:
![image]()
阿里云源 GPG 公钥缺失:NO_PUBKEY ED65462EC8D5E4C5,系统无法验证源的安全性,直接禁用了该源;源被禁用后,系统找不到telnet软件包:E: 无法定位软件包 telnet,因为可用的软件源已经失效。 - 问题解决:输入命令
apt-key adv --keyserver keyserver.ubuntu.com --recv-keys ED65462EC8D5E4C5导入报错对应的公钥
![image]()
![image]()
- 然后更新源并安装
更新软件源
apt update
安装telnet客户端
apt install -y telnet
![image]()
![image]()
![image]()
- 2.无法将listen.pcap文件直接拖入kali虚拟机中
- 问题解决:在自己的宿主机上创建共享文件夹
![image]()
- 然后在虚拟机设置里启用共享文件夹并添加共享文件夹
![image]()
![image]()
- 之后就可以在虚拟机里看到共享文件了
![image]()
七、学习收获及感想
-
通过本次实验,首先,我掌握了网络嗅探工具的核心使用方法。在tcpdump与Wireshark的实践中,我不仅学会了如何指定网卡、配置过滤规则来捕获指定流量,还理解了抓包背后的原理。体会到 “精准过滤” 在海量流量分析中的重要性,学会了如何快速从嘈杂网络数据中定位到自己需要的通信记录。
-
其次,我深刻认识到明文传输协议所存在的风险。在Telnet登录BBS的实验中,当我亲眼看到Wireshark追踪出的明文 “guest” 账号时,直观感受到了Telnet协议不加密的严重漏洞。这让我明白,网络上任何不加密的敏感信息都可能被轻易嗅探,也理解了为什么现代网络通信优先选择SSH、HTTPS等加密协议,这为我今后树立正确的网络安全意识打下了基础。
-
我还掌握了网络取证与攻击溯源的基本思路。在分析listen.pcap的过程中,我学会了如何从离线流量中区分攻击机与靶机,如何借助Snort工具识别攻击行为,如何通过TCP标志位(SYN、ACK、RST)判断端口状态,还学会了用p0f工具进行操作系统指纹识别。整个过程让我明白,网络取证是一项严谨的技术,需要对数据包特征、工具原理有深入理解,也让我意识到网络安全防御不仅要靠防火墙,更需要掌握流量分析与攻击溯源的能力。
-
在实践的过程中,虽然虚拟机产生了各种各样的问题,但是通过查阅资料等方式将这些问题逐一解决,提升了自己的问题排查能力和问题解决能力。以上都为后续更深入的网络攻防学习积累了宝贵的实践经验。













































浙公网安备 33010602011771号