实验三 网络嗅探与协议分析

实验三 网络嗅探与协议分析


目录


一、实验内容

(1)动手实践 tcpdump

使用 tcpdump 开源软件对在本机上访问 www.163.com 网站过程进行嗅探,回答问题:

你在访问 www.163.com 网站首页时,浏览器将访问多少个 Web 服务器?它们的 IP 地址都是什么?

(2)动手实践 Wireshark

使用 Wireshark 开源软件对在本机上以 TELNET 方式登录 BBS 进行嗅探与协议分析,回答如下问题并给出操作过程:

  1. 你所登录的 BBS 服务器的 IP 地址与端口各是什么?
  2. TELNET 协议是如何向服务器传送你输入的用户名及登录口令?
  3. 如何利用 Wireshark 分析嗅探的数据包,并从中获取你的用户名及登录口令?

(3)取证分析实践:解码网络扫描器(listen.cap)

  1. 攻击主机的 IP 地址是什么?
  2. 网络扫描的目标 IP 地址是什么?
  3. 本次案例中是使用了哪个扫描工具发起这些端口扫描?你是如何确定的?
  4. 你所分析的日志文件中,攻击者使用了哪种扫描方法,扫描的目标端口是什么,并描述其工作原理。
  5. 在蜜罐主机上哪些端口被发现是开放的?
  6. 攻击主机的操作系统是什么?

二、知识点描述

1. 网络抓包的基本原理

网络抓包是指利用抓包工具对网络中传输的数据包进行捕获、筛选和分析,从而了解主机之间的通信过程。本实验主要使用了 tcpdump 和 Wireshark,对访问网站、远程登录以及扫描流量进行了捕获与观察。

2. 抓包工具的使用方法

tcpdump 适合在命令行环境下进行快速抓包和过滤,Wireshark 则适合对抓取到的数据包进行可视化分析。通过设置过滤条件,可以更准确地提取目标主机、端口和协议相关的数据,提高分析效率。

3. TELNET 协议的工作特点

TELNET 是一种基于客户端与服务器的远程登录协议,默认使用 23 端口。其主要特点是采用明文方式传输数据,因此用户输入的用户名和口令等信息在传输过程中缺乏加密保护,容易被抓包获取。

4. 明文协议的安全风险

由于 TELNET 不对登录信息进行加密,攻击者可以通过抓包和流重组的方式直接查看通信内容。本实验中通过 Follow TCP Stream 的方法可以观察到登录过程中的信息,这说明明文协议在实际网络中存在较大的安全隐患。

5. 网络扫描行为的识别

在网络取证分析中,可以通过数据包的源地址、目标地址、目标端口分布以及 TCP 标志位特征判断是否存在扫描行为。本实验通过分析 listen.pcap,识别出了攻击主机、目标主机以及扫描涉及的端口范围。

6. TCP SYN 半开放扫描原理

TCP SYN 半开放扫描是指攻击者先向目标端口发送 SYN 报文,如果端口开放,则目标主机返回 SYN+ACK;如果端口关闭,则返回 RST+ACK。攻击者根据返回结果判断端口状态,而不完成完整的三次握手,因此这种方式具有较强的隐蔽性。

7. 扫描工具与主机特征分析

在扫描分析中,可以结合安全工具和流量特征识别扫描工具,并结合 TTL、窗口大小、MSS 等指纹信息推测攻击主机的操作系统。本实验中通过 Snort 告警和被动指纹分析,对扫描工具和攻击主机系统进行了判断。


三、实验步骤

1. 配置虚拟机网络

将 Kali 虚拟机网络模式设置为桥接模式,并勾选“复制物理网络连接状态”,以保证虚拟机能够正常获取网络地址。

image

2. 查看本机 IP 地址

使用 ifconfig 命令查看本机 IP 地址,实验中获取到的地址为:172.20.10.8

image

3. 使用 tcpdump 对访问 Web 过程抓包

在确认本机网络连接正常后,输入如下命令对本机访问 Web 服务器过程进行抓包监听:

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

image

4. 访问目标网站

在浏览器中打开网易网址 www.163.com,对访问过程中的网络流量进行捕获。

image

5. 分析目标服务器地址

根据抓包结果,对访问过程中涉及的目标服务器地址进行分析,从而判断浏览器在加载网页时实际访问了哪些 Web 服务器。

image

到此,问题一实验做完。

6. 使用 TELNET 连接 BBS

首先打开新的终端,输入命令连接水木清华 BBS 服务器:

luit -encoding GBK telnet bbs.newsmth.net

image

7. 启动 Wireshark 抓包

与此同时,在本地启动 Wireshark,并开始抓包。

image

8. 过滤 TELNET 报文

抓包开始后,在 Wireshark 顶部过滤栏输入以下过滤条件,对 TELNET 相关报文进行筛选。通过过滤结果可以确定目标服务器的 IP 地址为 120.92.212.76,端口号为 23

tcp.port == 23 || telnet

image
由此,作业2第一问实验完成。

回答作业2第二问:TELNET 协议采用明文传输方式向服务器发送用户名和登录口令。也就是说,用户在客户端输入的用户名和密码不会被加密,而是直接以可读字符的形式在网络中传输,因此抓包后可以通过会话重组直接看到输入内容。文档中也说明了,TELNET 默认使用 23 端口,且其主要特点就是明文传输。

9. 重组 TCP 会话内容

任选一条相关报文,右击并选择 Follow → TCP Stream,对整个 TELNET 会话内容进行重组分析。通过该方法可以直接查看明文传输的数据内容。

image

本次实验中,由于采用游客方式登录,抓包结果中能够看到用户名 guest,但未出现手动输入密码的过程,因此未提取到口令信息。

到此,作业二实验做完。

10. 准备取证分析文件

首先,将老师提供的 listen.pcap 文件复制到实验目录下,并使用 ls 命令确认文件存在。

image

11. 安装实验工具

随后更新软件源,并安装实验所需工具:

sudo apt update -y
sudo apt install -y wireshark snort p0f

image

image

12. 初步分析 ARP 报文

接着在 Wireshark 中打开 listen.pcap 文件,在过滤器中输入 arp,对抓包文件进行初步分析。

arp

image
根据 ARP 报文可发现,大量通信由 172.31.4.178 发往 172.31.4.188,由此可初步判断攻击主机 IP 为 172.31.4.178,目标主机 IP 为 172.31.4.188
由此,作业3问题1、2完成。

13. 下载并安装 Snort3 社区规则

为了进一步识别扫描工具,下载并安装 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

image

image

image

14. 使用 Snort 查看告警信息

随后执行如下命令查看告警信息:

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

image
根据告警结果 Nmap XMAS attack detected,可以识别出扫描工具具有 Nmap 的特征。
由此,作业3问题3完成。

15. 使用 tshark 分析扫描行为

输入命令:

tshark -r ~/Desktop/listen.pcap -Y "ip.src==172.31.4.178 && tcp.flags.syn == 1 && tcp.flags.ack == 0" -T fields -e tcp.dstport | sort -n | uniq

可以提取攻击主机发起扫描的目标端口。

image

根据结果可知,攻击者对目标主机进行了 TCP SYN 半开放扫描,扫描范围覆盖 TCP 1–65535 端口。其依据是:攻击主机向目标主机各端口发送 SYN 报文,开放端口返回 SYN+ACK,关闭端口返回 RST+ACK,攻击者据此判断端口状态。
由此,作业3问题4完成。

16. 提取开放端口信息

接着输入命令:

tshark -r ~/Desktop/listen.pcap -Y "ip.dst==172.31.4.178 && tcp.flags.syn == 1 && tcp.flags.ack == 1" -T fields -e ip.src -e tcp.srcport | sort -n | uniq

用于提取目标主机返回 SYN+ACK 的端口信息。

image

据此可判断开放端口包括:

  • 21
  • 22
  • 23
  • 25
  • 53
  • 80
  • 139
  • 445
  • 3306
  • 3632
  • 5432
  • 8009
  • 8180

17. 验证关闭端口响应

随后输入命令:

tshark -r ~/Desktop/listen.pcap -Y "ip.dst==172.31.4.178 && tcp.flags.reset==1 && tcp.flags.ack==1" -T fields -e ip.src -e tcp.srcport | sort -n | uniq

对关闭端口返回的 RST+ACK 报文进行验证,从而进一步说明目标主机是通过不同响应来表明端口状态。

image
由此可进一步验证,目标主机通过返回 SYN+ACK 或 RST+ACK 的不同响应来表明端口状态。
由此,作业3问题5完成。

18. 识别攻击主机操作系统

最后,为了识别攻击主机操作系统,先通过 tshark 提取其 TCP SYN 报文中的 TTL、窗口大小和 MSS 等指纹特征:

tshark -r ~/Desktop/listen.pcap -Y "ip.src==172.31.4.178 && tcp.flags.syn==1 && tcp.flags.ack==0" -T fields -e ip.ttl -e tcp.window_size_value -e tcp.options.mss_val | head -20

image

  • TTL 接近 64:通常偏向 Linux/Unix
  • TTL 接近 128:通常偏向 Windows
  • TTL 接近 255:通常偏向 网络设备/某些 Unix

根据攻击主机发起 TCP SYN 报文时的指纹特征分析,其 TTL 值主要分布在 57、53、49、52 等范围,说明其初始 TTL 更接近 64,而不是 Windows 常见的 128。因此可推测攻击主机的操作系统为 Linux/Unix 类系统,更可能是 Linux

结合被动指纹识别:

p0f -r ~/Desktop/listen.pcap

image

攻击主机操作系统推测为 Linux 2.6.x 系列
最后,实验完成。


四、实验中遇到的问题及其解决

1. Snort 版本差异问题

实验中对 Snort 版本差异认识不够充分,初期仍按旧版配置方式进行操作,导致命令执行时报出配置文件相关错误。分析后发现,当前环境使用的是 Snort 3.x,其配置方式与旧版存在差异,因此在实验过程中需要根据具体版本调整命令和配置文件调用方式。

解决方法:

  1. 查阅 Snort 3.x 相关文档,确认默认配置文件为 snort.lua
  2. 将实验中原先调用 snort.conf 的命令修改为调用 snort.lua
  3. 重新执行命令并验证结果,确认问题解决,Snort 能正常运行。

2. 网络问题

本次实验中,浪费我最多时间的是问题 1 的虚拟机配置。按照实验视频步骤完成桥接模式设置后,使用 ifconfig 命令仍未能查看到对应的 IP 地址。对此,前期尝试了多种调整方式,但均未取得理想效果。随后重新检查虚拟机网络参数,在勾选复制物理地址相关选项后,并将原有校园网环境切换为手机热点进行测试,最终成功显示 IP 地址并恢复正常通信。

该问题说明,在虚拟机网络实验中,桥接模式的配置结果不仅取决于参数设置本身,也与实际接入的网络环境密切相关。

image


五、实验感悟与思考

通过这次实验,我对网络抓包、协议分析和扫描取证有了更直观的认识。以前对这些内容更多停留在概念层面,这次通过实际操作,才真正理解了数据包、协议行为和攻击特征之间的对应关系。尤其是在分析 TELNET 明文传输和扫描流量时,我更深刻地体会到很多安全问题并不是抽象存在的,而是可以在真实网络数据中被直接观察和验证的。

同时,这次实验也让我认识到,网络安全实验不仅考察理论知识,更考验排错能力和耐心。像环境配置、工具版本、网络连接这些问题,看起来和实验原理无关,但往往会直接影响实验结果。只有在遇到问题时不断查资料、调参数、反复验证,才能真正把实验做扎实。

对我来说,这次实验不仅加深了对相关知识点的理解,也提升了自己分析问题和解决问题的能力。


六、致谢

感谢王老师开放的这次关于网络流量分析的实验,让我对网络空间安全有了进一步理解,这次借鉴了程宇同学的实验书还有家旭同学给我的雷点指明,使我能够顺利完成本次实验内容。通过这次实验,我不仅加深了对相关知识的理解,也提高了自己的动手实践和问题分析能力。由于个人水平有限,实验报告中如有不足之处,恳请老师批评指正。


七、参考资料

  1. 课程实验指导视频。
  2. tcpdump 官方项目主页:https://github.com/the-tcpdump-group/tcpdump
  3. Wireshark User’s Guide:https://www.wireshark.org/docs/wsug_html_chunked/
  4. Snort 3 官方文档:https://docs.snort.org/start/configuration
  5. Snort 3 Getting Started:https://docs.snort.org/start/
  6. p0f README:https://github.com/p0f/p0f/blob/master/docs/README
  7. listen.pcap 实验抓包文件。
posted @ 2026-03-29 02:10  dky王铖浩  阅读(1)  评论(0)    收藏  举报