找回密码
 会员注册
查看: 34|回复: 0

抓包工具wireshark的使用

[复制链接]

7

主题

0

回帖

22

积分

新手上路

积分
22
发表于 2024-9-20 01:08:53 | 显示全部楼层 |阅读模式
作者|刘宝成一前言在我们日常的测试工作中,无论是做客户端还是服务端测试,都会经常用到抓包工具,以验证客户端和服务器之间发送的数据包是否正确等。Fiddler由于其入门简单,功能强大,已经成为了目前最主流的Web调试工具。但Fiddler采用的是web代理的方式捕获数据包,并且只支持Windows平台,导致其使用场景受到一定的限制。而Wireshark是一款开源和跨平台的抓包工具。它通过调用操作系统底层的API,直接捕获网卡上的数据包,因此捕获的数据包更加详细,功能更加强大,但操作也相对繁琐一些。可以作为对Fiddler的一个较好的补充。二Wireshak的安装和基本使用安装:直接通过官方下载对应的安装包即可https://www.wireshark.org/download.html使用:左上角为几个最常用的按钮:开始捕获、停止捕获、重新捕获、捕获选项中间为捕获过滤器,用于过滤需要捕获的数据包捕获过滤器下面可以选择需要捕获的网络连接下图是用Wireshark捕获的数据包。可以看到,数据包结构是与OSI的七层模型相对应的,会详细显示每层的信息。三过滤器由于Wireshark直接捕获底层网络数据包,导致其捕获的数据包数量通常较大。为了便于筛选数据包,Wireshark提供了两种过滤器。1、捕获过滤器:用于设置什么样的数据包保存在捕获结果中,避免产生过大的日志文件。需要在开始捕获之前设置,相对简单捕获过滤器语法如上,一般用于过滤协议、IP、端口等基本信息。例如: 显示目的TCP端口为8080的包tcpdstport8080显示来源IP地址为192.168.171.201的封包ipsrchost192.168.171.2012、显示过滤器:用于在捕获日志中查找数据包,可以在捕获过程中或者捕获后随时更改。功能更加强大和复杂显示过滤器语法如上,比捕获过滤器更为强大,可以针对不同协议,过滤不同的字段。例如:源地址是192.168.171.0网段的数据包ip.src==192.168.171.0/24    所有的HTTPPOST请求http.request.method=="POST"显示包含TCPSYN标志的包tcp.flags.syn==0×02URL中包含baidu的http请求http.request.uricontains"baidu"四利用Wireshark分析HTTPS协议1、什么是HTTPS      SSL/TLS:SSL(SecureSocketsLayer),最初由Netscape公司设计,后来逐渐演变为TLS(TransportLayerSecurityProtocol),即“传输层安全协议”。该协议工作在TCP层之上,应用层之下。在TCP连接完成后,进行通信双方的身份认证,并协商一些跟加密相关的工作。完成协商之后,就可以对双方发送的信息进行加密/解密了。        HTTPS:可以理解为HTTPoverSSL/TLS。即在SSL/TLS协议之上运行HTTP协议,以保证通信的安全性。2、SSL/TLS握手过程SSL/TLS的握手过程主要需要解决两个问题:证明通信双方身份的真实性;协商后续通信过程中使用的密钥;下图左侧是一个简单的握手流程,右侧为对应的抓包结果,我们可以对比分析一下SSL/TLS的握手过程。(1)C:ClientHello客户端发送协议版本号、sessionid、随机数、加密算法列表、扩展字段等信息;(2)S:ServerHello与客户端类似,不同之处在于确定了所使用的加密算法等。(3)S:Certificate服务端向客户端发送自己的CA证书。客户端通过证书信任链查看该证书的真实性,以验证服务端的身份。其实SSL/TLS协议还支持客户端的CA证书验证,不过在实际中使用较少。(4)S:ServerKeyExchange服务端根据之前选择的加密算法,传输密钥协商需要的参数。从之前的报文可以看到,这里选择的是EC-DH算法。(5)S:ServerHelloDone该报文表示服务端发送完成。(6)C:ClientKeyExchange同理,客户端也要根据之前选择的加密算法,传输相应的参数。(7)C:ChangeCipherSpec经过上述步骤,客户端和服务器双方已经完成了身份认证,并且交换了生成密钥的全部参数。双方会根据对应的算法,各自生成加密密钥,然后就可以进行加密通信了。这个报文表示切换到密文模式,后续消息都通过加密传输。(8)C:Finished客户端表示握手完成。这里会发送一段VerifyData,是使用新生成的密钥加密后的一段信息。双方通过该信息验证加密算法、密钥是否有效。(9)S:ChangeCipherSpec(10)S:Finished服务段也会发送对应的两条消息作为回应,不再赘述。3、解密HTTPS报文握手完成之后,就可以查看客户端发出的HTTP请求了。但我们看到的只是一段加密后的字符串?那么如何对HTTPS报文进行解密呢?要想解密HTTPS报文,就必须要获取到加密密钥。Chrome、Firefox等浏览器支持将访问网站时使用的密钥输出到文件中。仅需要配置环境变量SSLKEYLOGFILE即可。如下:然后需要将该密钥文件导入到Wireshark中。打开编辑-首选项,选择Protocol-SSL,填写刚才设置的文件路径。现在,就可以通过Wireshark查看HTTPS请求中的具体信息了!   ▼更多精彩推荐,请关注我们▼
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 会员注册

本版积分规则

QQ|手机版|心飞设计-版权所有:微度网络信息技术服务中心 ( 鲁ICP备17032091号-12 )|网站地图

GMT+8, 2024-12-25 13:09 , Processed in 0.816557 second(s), 25 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表