Wireshark抓包工具

一时失言乱红尘 2023-10-06 23:36 112阅读 0赞

下载地址https://www.wireshark.org/download.html

#

1、Wireshark过滤器设置(这一步非必须的,方便第二步输入)

我们使用wireshark时,将会得到大量的冗余数据包列表,以至于很难找到自己自己抓取的数据包部分。wireshar工具中自带了两种类型的过滤器,学会使用这两种过滤器会帮助我们在大量的数据中迅速找到我们需要的信息。
抓包过滤器
捕获过滤器的菜单栏路径为Capture(捕获) —> Capture Filters(捕获过滤器)。用于在抓取数据包前设置,点加号可以添加过滤规则。
如下:配置了只过滤显示 192.168.111.201 请求

1d32ead8600c438a8726a566a86adfc9.png

2、选择网卡

选择菜单栏上Capture(捕获) -> Option(选项),勾选WLAN网卡(这里需要根据各自电脑网卡使用情况选择,简单的办法可以看使用的IP对应的网卡)。点击开始,启动抓包。

5b55012a382f48a4bff8f68b36bf6617.png

3、追踪tcp流

aa5261b2b6f845e0b01a1be640012bc8.png

由于我请求的是一个https链接,全是乱码,下一步就导入客户端证书。

5fdc0d25b70e4c1a92f49cac060b80ce.png

4、Wireshark两种TLS解密方式

官方文档:https://wiki.wireshark.org/TLS

两种可用的方法是:

  • 使用每会话机密的密钥日志文件(#Usingthe(预)主密钥)。仅支持Firefox,Chrome和curl等应用程序。
  • 使用 RSA 私钥解密。由于当前web服务基本都会使用DHE/ECDHE密码套件,并且还要服务端私钥,这种方式基本可以放弃了。

5、服务器证书私钥 解码SSL协议

在Wireshark中添加服务端的私钥

官方推荐使用,“首选项”-> RSA 密钥 -> Add new keyfile…”。原Protocols 》TLS方式已弃用。

编辑 》首选项 》 Add new keyfile

351825d95819418ca7cdfc872306c1b7.png

或者

538d829428df4196bcd314fe2c5ecc5f.png

9391e27faaa8431aac0b8c588d5ff83b.png

服务端私钥这个样子的:

  1. -----BEGIN RSA PRIVATE KEY-----
  2. MIIEogIBAAKCAQEAowfHTXJP2Mt+WeGhRDwy4/a6rjuDxI4/PNUhhl41bw+75YT9
  3. dPqQkkY8WDEBrHS6djX+zc6OjNl7KhPa3Fii6J9rvqHLaLXTRc8mwe/AFqx6KqHc
  4. 26z3JyC27lO1IZZM0DqRn6UZkidkcUq3Gkh+MUz48RJk8Q+xP/KT4n1ENPcgH4s9
  5. ...
  6. fZBBAoGAfv63q8ze/XFrZltbDxewpmlqieR4NOIir9fIN33VLxKsn8Df16B9WOYQ
  7. +KXvc4AIX3vLd0Au2ogJ0HQFMdYN7F7Q0syJ4KZHCafd6mNFWR911T4UzUdlwk2X
  8. RopMiIDGRaHsKvJjK7a2KSB8O6u358ItJ98vP54fm7ZuwiDbw8A=
  9. -----END RSA PRIVATE KEY-----

如果在SSL、TLS握手过程中发现服务器返回的Server Hello所选择的加密算法带有 “ECDHE“ 和 “DHE“ 关键字,那就说明当前SSL Session使用了Diffie-Hellman加密算法。使用了Diffie-Hellman的TLS Session Key会用一个动态产生的密钥对进行加密,而不是使用证书的公钥加密,所以Wireshark依然无法解码TLS网络包。解决方案就是:禁用客户端或服务器的Diffie-Hellman加密算法,建议禁用客户端的Diffie-Hellman加密算法仅供网络包分析。

81caf3a0ec884b62a24be1db0a18fe39.png

服务器限制加密算法方式配置:ciphers=”TLS_RSA_WITH_AES_128_CBC_SHA” 表名服务器仅仅支持TLS_RSA_WITH_AES_128_CBC_SHA的方式。

  1. <Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
  2. maxThreads="150" SSLEnabled="true" sslProtocol="TLS" clientAuth="false"
  3. ciphers="TLS_RSA_WITH_AES_128_CBC_SHA"
  4. keystoreFile="/root/ssl/server.p12" keystorePass="123456">
  5. </Connector>

谷歌客户端(浏览器)限制加密算法方式配置:

查看默认Chrome发出的Client Hello包中所包含的Cipher Suites列表。

2d1281574457406db437009c7ec1d3fb.png

可以知道客户端浏览器支持这么多的算法。

给浏览器启动参数加上:—cipher-suite-blacklist=0xfafa,0x1301,0x1302 (这个值就是截图中括号里面的值,意思是排除这些算法)

  1. --cipher-suite-blacklist=0xfafa,0x1301,0x1302,0x1303,0xc02b,0xc02f,0xc02c,0xc030,0xcca9,0xcca8,0xc013,0xc014,0x009c,0x009d

让后把这个参数加在浏览器快捷方式 目标的后面

b49b69d15d2f4fae94a42f246badf048.png

ed50e94e4bbe48a394ec68512dee90cf.png

右键追踪 HTTP 流

f8bb0140fa2f404a92e40744f7643e24.png

这种方式你得知道服务端的私钥,但是一般情况是拿不到服务端私钥的,除非你是服务器的管理人员。

6、用SSLKEYLOGFILE 解码

新建系统变量 SSLKEYLOGFILE=F:\ssl\ssl.txt

fb00f84a41bb4b6b882bcfb1b2bc2509.png

首选项 》Protocols 》TLS 》(Pre)-Master-Secret log filename

1804b437abcd4442b088d7cdc6656f62.png

重启浏览器,再浏览器中输入地址测试,发现已经解密。但是这种方式只支持只支持Chrome和Firefox。

fcba1a477c1344f095128602483706ba.png

e89bde6b16dc467fb54336b0ac6083ef.png

注意:上面不管哪种方式,都必须包含完整的握手的时候抓包才可以解密,如果没成功重启浏览器。

7、过滤条件

为避免其他无用的数据包影响分析,可以通过在过滤栏设置过滤条件进行数据包列表过滤,获取结果如下。说明:ip.addr 10.5.86.148 == and icmp 表示只显示ICPM协议且源主机IP或者目主机IP为10.5.86.148的数据包。

wireshark过滤器表达式的规则

  1. 1、抓包过滤器语法和实例
  2. 抓包过滤器类型Typehostnetport)、方向Dirsrcdst)、协议Protoetheriptcpudphttpicmpftp等)、逻辑运算符(&& 与、|| 或、!非)
  3. 1)协议过滤
  4. 比较简单,直接在抓包过滤框中直接输入协议名即可。
  5. TCP,只显示TCP协议的数据包列表
  6. HTTP,只查看HTTP协议的数据包列表
  7. ICMP,只显示ICMP协议的数据包列表
  8. 2IP过滤
  9. host 10.5.86.168
  10. src host 10.5.86.168
  11. dst host 10.5.86.168
  12. 3)端口过滤
  13. port 80
  14. src port 80
  15. dst port 80
  16. 4)逻辑运算符&& 与、|| 或、!非
  17. src host 10.5.86.168 && dst port 80 抓取主机地址为10.5.86.168、目的端口为80的数据包
  18. host 10.5.86.168 || host 10.5.86.169 抓取主机为10.5.86.168或者10.5.86.169的数据包
  19. broadcast 不抓取广播数据包
  20. 2、显示过滤器语法和实例
  21. 1)比较操作符
  22. 比较操作符有== 等于、!= 不等于、> 大于、< 小于、>= 大于等于、<=小于等于。
  23. 2)协议过滤
  24. 比较简单,直接在Filter框中直接输入协议名即可。注意:协议名称需要输入小写。
  25. tcp,只显示TCP协议的数据包列表
  26. http,只查看HTTP协议的数据包列表
  27. icmp,只显示ICMP协议的数据包列表
  28. 3 ip过滤
  29. ip.src ==10.5.86.168 显示源地址为10.5.86.168的数据包列表
  30. ip.dst==10.5.86.168, 显示目标地址为10.5.86.168的数据包列表
  31. ip.addr == 10.5.86.168 显示源IP地址或目标IP地址为10.5.86.168的数据包列表
  32. 4)端口过滤
  33. tcp.port ==80, 显示源主机或者目的主机端口为80的数据包列表。
  34. tcp.srcport == 80, 只显示TCP协议的源主机端口为80的数据包列表。
  35. tcp.dstport == 80,只显示TCP协议的目的主机端口为80的数据包列表。
  36. 5 Http模式过滤
  37. http.request.method=="GET", 只显示HTTP GET方法的。
  38. 6)逻辑运算符为 and/or/not
  39. 过滤多个条件组合时,使用and/or。比如获取IP地址为10.5.86.168ICMP数据包表达式为ip.addr == 10.5.86.168 and icmp

#

原文链接:https://blog.csdn.net/wanqianshao/article/details/121688668

发表评论

表情:
评论列表 (有 0 条评论,112人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Wireshark

    Wireshark 也可以在各个平台都可以安装使用,不过它的功能侧重点和 Charles&Fiddler 有所不同,它主要用来抓取网络中的所有协议的数据报文,对于分析网络...