如何用wireshark分析通过ssh tunnel的https数据

有时候,因为网络隔离的原因,我们无法直接访问web站点,而需要通过如ssh tunnel的方式去访问。

例如在Linux下可以直接在终端运行

ssh -L 9043:localhost:9043 username@remotehost

在windows下则可以在putty中设置ssl tunnels,此时我们可以看到本机127.0.0.1上有端口监听。


我们可以在浏览器中直接通过 https://localhost 访问到 https://remotehost的内容。

但是这个时候如果你需要用wireshark去抓取网络数据作分析,你会发现你抓到的是22端口的SSH数据,而不是443端口的HTTPS数据,因而无法分析web站点的HTTP连接问题。


那要怎样才能抓到HTTP协议的数据呢?其实我们在浏览器访问的是localhost,所以需要抓的是loopback(127.0.0.1)这个网卡的数据,而不是系统默认网卡。在Linux下是eth0,在windows下是Local Area Connection。

这时候又碰到另一个问题了,wireshark在windows下抓不了127.0.0.1的包,怎么办?可以参考wireshark官网的这个介绍

https://wiki.wireshark.org/CaptureSetup/Loopback

这篇文章介绍了多种方法,简单起见,我选择了RawCap。详细介绍可以参考点击打开链接,下载页面在此。

RawCap使用很简单,下载后无需安装,直接用administrator运行cmd然后切换到RawCap所在目录,直接运行RawCap即可。

如下,直接运行RawCap.exe,选择Lookback接口,输入输出文件名。

如何用wireshark分析通过ssh tunnel的https数据_第1张图片

此处有个小插曲,我运行RawCap之后访问https://localhost,但是发现抓不到任何数据包,只有通过https://127.0.0.1访问时才能正常抓取数据包,具体为何我也没有深究。

在Linux下则很简单,可以直接用tcpdump抓取loopback的数据包。"-i lo"表示loopback接口。

tcpdump -i lo -w tcpdump.pcap

抓取到的数据保存到文件,然后就可以用wireshark打开分析了,如图

如何用wireshark分析通过ssh tunnel的https数据_第2张图片

你可能感兴趣的:(如何用wireshark分析通过ssh tunnel的https数据)