1 实验环境

  1. 操作系统版本:Windows 11 家庭中文版23H2
  2. Wireshark版本:4.2.5
  3. Cmd版本:10.0.22631.3296

2 实验内容

2.1 Ping数据包抓取以及ICMP协议分析

Ping命令是一种网络工具,用于测试主机之间的连接性。通过发送ICMP回显请求消息到目标主机,并等待目标主机的回复,可以确定目标主机是否可达以及往返延迟(Round-Trip Time,RTT)是多少。Ping命令通常用于诊断网络连接问题,也可用于测量网络的稳定性和性能。

使用Wireshark工具抓取ping数据包,首先在Cmd状态下使用ping命令连接百度网址。

图2.1 Ping命令结果

由图2.1可知,向www.baidu.com发送了4个数据包,总共收到了4个,没有丢失。之后在Wireshark中查看抓取的数据包。

图2.2 Ping命令抓包结果

由图2.2所示,通过过滤器查看ICMP协议的数据包,可以从数据包的Info字段看到有来自发送方的请求和来自接收方的回复。

ICMP(Internet Control Message Protocol)是TCP/IP协议族中的一个协议,用于在IP网络上发送控制消息。它通常用于报告错误情况、诊断网络问题以及提供有关网络的状态信息。

从图2.1中Ping命令发送了4个数据包,接受到了4个数据包,所以一共有8个数据包,图2.2所示也是8个数据包,抓包结果正确。之后分析源地址和目的地址,发送包是从我方主机发送到对方主机,所以从第一个数据包中可以看出,我方主机的IP地址是192.168.43.108,目的主机IP是61.135.169.121。

图2.3 ICMP请求包

图2.4 ICMP回复包

点开一个ICMP请求包和一个ICMP回复包,分别如图2.3和图2.4所示,数据包中各个字段的说明如下:

表2.1 ICMP数据包字段含义说明

字段名 字段含义
Type ICMP报文类型,8为请求报文,0为回答报文
Code ICMP消息类型细分的子类型
Checksum 从ICMP头部到数据部分结束的校验和
Identifier 由主机设定,一般设置为进程号
Sequence Number 序列号,由主机设定,一般设为由0递增的序列
Data ICMP数据,回送响应消息与回送消息中data保持一致

2.2 DNS分析

DNS(Domain Name System,域名系统)是互联网中用于将域名(如example.com)映射到IP地址(如192.0.2.1)的分布式命名系统。它可以使用户可以通过易记的域名来访问网站、发送电子邮件等,而无需记住复杂的IP地址。

如图2.5所示,在CMD命令行中使用nslookup命令进行DNS解析,查询www.baidu.com对应的IP地址。

图2.5 nslookup命令查询

如图2.6所示,第一个数据包和第二个数据包是刚打开nslookup时进行的初始化查询,由于没有进行任何查询,所以可以看到回复包中的数据是“No such name PTR 1.43.168.192.in-addr.arpa”。

图2.6 DNS请求服务

之后的数据包就是对www.baidu.com进行域名查询的过程,点开其中的一个DNS请求包,如图2.7所示。

图2.7 DNS请求数据包

其中,Flag表示这是一个DNS查询数据包,其中的Queries字段体现了要查询的域名,这里要查询的域名是www.baidu.com。

图2.8 DNS回复数据包

从图2.6中可以看出,当主机将DNS查询发送给DNS服务器192.168.43.1后,DNS服务器直接将查询结果返回给了查询主机,之后主机就得到百度域名解析后的IP地址,结果为220.181.38.149和220.181.38.150。

实际中DNS的查询过程有递归查询和迭代查询两种,在递归查询中,DNS客户端向本地DNS服务器发送一个完整的查询请求,并要求DNS服务器负责解析整个查询过程,直到找到所需的域名解析结果。

在迭代查询中,DNS客户端向DNS服务器发送一个查询请求,DNS服务器只负责返回一个指向下一级DNS服务器的指针(迭代的下一步),而不负责解析整个查询过程。

2.3 Telnet数据分析

Telnet是一种基于文本的互联网标准通信协议,用于在两台计算机之间进行双向交互式通信。它最初是为远程登录而设计的,允许用户从本地计算机连接到远程主机并在其上运行命令。Telnet协议是一种明文传输,基于TCP协议进行。

图2.9 Telnet服务数据包

使用Telnet过程中抓包如图2.9所示,首先分析一下主机的IP地址,由于Telnet协议使用TCP协议,所以需要先建立TCP连接,因此图2.9中第一条发出TCP建立连接请求的源主机应为目标主机IP地址,即192.168.3.6。

在传输过程中,用户输入的每一个数据被传输了两次,在分析数据包的过程,应该将数据进行去重,传输的数据流如图2.10所示。

去掉重复字符之后可以得到Telnet登录的用户名是“msfadmin”,密码为“msfadmin”。登录成功之后,图2.10中可以看出用户输入了ipconfig命令,但是在Telnet中没有ipconfig命令,所以报错。

图2.10 Telnet协议追踪流

2.4 登录过程抓包分析密码

在用户登录网站的过程中,通常是通过Post请求来实现的,并且用户需要在表单中输入用户名和密码,所以在向服务器发出Post请求的过程中,可以抓包,来获取管理员登录的账号和密码。

如图2.11和图2.12所示,客户端向服务器发出的基于HTTP协议的Post请求,红色框中的数据包的Info字段显示是用户登录操作,打开该数据包分析data字段,可以看到用户登录的“email”和“password”,这里的密码是通过加密后的数据,所以不是那么直观,但是我们仍然可以通过抓包行为来捕获到用户的行为,并对其进行分析,来得到一些用户个人隐私。

图2.11 Post数据包分析

图2.12 追踪Post请求HTTP流分析


3 实验总结

完成本次实验后,我深入了解了网络抓包分析的过程,并掌握了使用Wireshark这一强大工具进行流量分析的技能。以下是我的心得体会:

  1. 理解网络协议和数据包结构:在抓取和分析数据包之前,学习了不同网络协议的工作原理以及数据包的结构。这包括了ICMP、DNS、Telnet等协议的基本概念,以及它们在数据包中的具体格式和字段含义。
  2. 熟悉Wireshark的使用:Wireshark是一款功能强大的网络抓包工具,通过实验,我学会了如何使用Wireshark进行数据包捕获、过滤和分析,以及如何利用其强大的统计和图形化功能进行网络故障排除和性能优化。
  3. 注意隐私和安全:在分析抓取的数据包时,我时刻牢记网络安全和隐私保护的重要性。尤其是涉及到用户敏感信息(如用户名、密码等)的数据包分析。