臭豆腐真香 發表於 2023-7-24 00:00:00

Wireshark 入门详解

<h1>目录:</h1>
<p>一、 background</p>
<p>二、 how it works</p>
<p>三、包抓取方式</p>
<p>四、 filter in Wireshark</p>
<ul>
<li>  Capture filter例子</li>
<li>抓取所有本主机发送的报文,本机为2.2.2.2</li>
<li>抓取与主机1.1.1.1.的1033端口的所有通信</li>
<li>抓取所有的tcp RST报文</li>
</ul>
<p>五、 Wireshark的安装</p>
<p>六、 Wireshark的实用功能</p>
<ul>
<li>l Follow tcp stream</li>
<li>l Statistics</li>
<li>l Flow graph</li>
<li>l Tcp stream graph</li>
</ul>
<p>七、 Wireshark的扩展</p>
<ul>
<li> ip地理信息扩展</li>
</ul>
<p>八、让Wireshark支持自定义协议</p>
<ul>
<li> Wireshark中的协议解析器模块</li>
<li>l Lua编写协议解析插件</li>
</ul>
<ol>
<li> Lua为何物</li>
<li>Wireshark与lua的关系</li>
<li>使用lua编写自定义协议解析器</li>
</ol>
<p>九、附录</p>
<h3>一、background</h3>
<p>Wireshark是一款支持多平台的包抓取分析开源软件,前身是ethereal。</p>
<p>Wireshark基于libpcap on unix-like,winpcap on windows。Tcpdump同样基于libpcap实现。Libpcap来自于BPF,下图是BPF的一个结构图:</p>
<p><img src="https://zhuji.jb51.net/uploads/img/20230517/3cb434645a2fcb772e0851d3828fc5d2.jpg" width="402" height="379"></p>
<h3>二、how it works</h3>
<p><img src="https://zhuji.jb51.net/uploads/img/20230517/67b963914ca1d03725c6d6c8ee37f73c.jpg" width="461" height="659"></p>
<h3>三、How packets capture</h3>
<p>当前Wireshark支持以下三种包抓取方式:<br>
1. 网络适配器上实时抓取;<br>
2. 远程主机抓取;<br>
3. pipe方式抓取;</p>
<p>这里主要介绍下远程主机的抓取方式,此功能依赖于libpcap/winpcap提供的rpcapd.程序:</p>
<p><img src="https://zhuji.jb51.net/uploads/img/20230517/3164962f70738db3fdf0f7b238cdfffe.jpg" width="612" height="402"></p>
<p>首先服务器端建立侦听</p>
<p><img src="https://zhuji.jb51.net/uploads/img/20230517/bb5b7d2af5cd56d98183153d0e01400e.jpg" width="605" height="112"></p>
<p>然后客户端连接到服务器端</p>
<p><img src="https://zhuji.jb51.net/uploads/img/20230517/716c90156914573b11986b48bd480cae.jpg" width="300" height="187"></p>
<p><img src="https://zhuji.jb51.net/uploads/img/20230517/97171aa11e35f4aa9da83648bd0b1ca6.jpg" width="300" height="126"></p>
<p>现在能看见远程主机网卡上的流量了</p>
<p><img src="https://zhuji.jb51.net/uploads/img/20230517/2dda2573ecb6f8374f7ac619b49c45e4.jpg" width="300" height="127"></p>
<p>Packet由libpcap抓取之后通过管道传送到wireshark,由此远程抓包只是流量重定向而已。</p>
<h3>四、filter in Wireshark</h3>
<p>Wireshark中提供了两种filter:</p>
<p>1. Capture filter;</p>
<p>2. Display filter;</p>
<p>其中capture filter来自于libpcap,语法如下<em> </em></p>
<p><em> [ value] </em></p>
<p>Direction: src dst</p>
<p>Type: host net port</p>
<p>Proto: ether tcp udp arp ...</p>
<p>Capture filter在libpcap实现,只有满足过滤器的包之后才会送往应用程序。</p>
<p>l  Capture filter例子</p>
<ul>
<li>抓取所有本主机发送的报文,本机为2.2.2.2</li>
</ul>
<p><em>src host 2.2.2.2</em></p>
<ul>
<li>抓取与主机1.1.1.1.的1033端口的所有通信</li>
</ul>
<p><em>host 1.1.1.1 &amp;&amp; port 1033</em></p>
<ul>
<li>抓取所有的tcp RST报文</li>
</ul>
<p><em>tcp&amp;4==4 || tcp&amp;4==14</em>       #tcp的flag在偏移13字节的地方,占据1字节</p>
<p>Display filter来自于Wireshark,用于对捕获包的显示过滤。Wireshark利用此filter还是实现了coloring rules,statistics等功能。</p>
<h3>五、Wireshark install</h3>
<p>Wireshark依赖于libpcap/winpcap,于是在应用程序安装之前,首先安装此库。</p>
<h3>六、Wireshark utility</h3>
<ul>
<li> Follow tcp stream</li>
</ul>
<p>Wireshark将通信抽象成流的概念,按照Wireshark的解释,流是“The stream content is displayed in the same sequence as it appeared on the network”,就是一个序列号下来的通信,主要针对tcp通信</p>
<p><img src="https://zhuji.jb51.net/uploads/img/20230517/c0319a0e0f83f6bccd4c324ab3d628e9.jpg" width="300" height="153"></p>
<p>红方表示发送方,蓝方表示回送方</p>
<ul>
<li>Statistics</li>
</ul>
<p>可以按照协议,按照endpoint,按照packet length进行统计显示</p>
<p><img src="https://zhuji.jb51.net/uploads/img/20230517/a53f336bf25f18642dd6b25121bfa61b.jpg" width="300" height="192"></p>
<ul>
<li> Flow graph</li>
</ul>
<p>将网络通信以时序图的方式展现出来</p>
<p><img src="https://zhuji.jb51.net/uploads/img/20230517/fb99b2449a6e2f87c2f3c1b19172e3df.jpg" width="300" height="210"></p>
<ul>
<li> Tcp stream graph</li>
</ul>
<h3>七、Wireshark extension</h3>
<ul>
<li>  ip地理信息扩展</li>
</ul>
<p>maxmind是一个在线ip地理信息提供商GeoIP,http://www.maxmind.com,它提供了一个离线数据库文件,Wireshark加载此文件,可以在显示捕获包的同时显示该包中的IP的地理信息;</p>
<p><img src="https://zhuji.jb51.net/uploads/img/20230517/2d8804b7193f068c79c4a89ce34c630f.jpg" width="300" height="182"></p>
<p><img src="https://zhuji.jb51.net/uploads/img/20230517/47670fe14d8acbd6bb448a010ead8277.jpg" width="300" height="249"></p>
<h3>八、让Wireshark支持自定义协议</h3>
<ul>
<li> Wireshark中的协议解析器模块</li>
</ul>
<p>源码下的epan目录</p>
<ul>
<li>Lua编写协议解析插件</li>
</ul>
<p>Init.lua文件</p>
<p>Lua为何物</p>
<p><img src="https://zhuji.jb51.net/uploads/img/20230517/72c8bd88e036521b5abcd1253e4a8015.jpg" width="300" height="156"></p>
<p>Wireshark与lua的关系</p>
<ol>
<li> wireshark内置了lua解释器</li>
<li> Lua作为wireshark的扩展通道,为wireshark提供支持自定义的协议解析的能力</li>
</ol>
<p>a) 侦听时分析</p>
<p>b) 显示时分析</p>
<p>3. Wireshark通过init.lua进入其他的lua程序</p>
<p>使用lua编写自定义协议解析器</p>
<p>1. 步骤</p>
<p>a)   定义协议</p>
<p>b)  定义解析函数</p>
<p>c)   在全局解析函数table中加入解析规则</p>
<h3>九、附录</h3>
<p>最初的libpcap论文:http://www.tcpdump.org/papers/bpf-usenix93.pdf<br>
Capture filter语法:http://www.Wireshark.org/docs/wsug_html_chunked/ChCapCaptureFilterSection.html<br>
Wireshark提供了display filter功能,该语法介绍如下:http://www.Wireshark.org/docs/wsug_html_chunked/ChWorkBuildDisplayFilterSection.html<br>
Wiki上对于GeoIP的说明:http://wiki.Wireshark.org/HowToUseGeoIP<br>
GeoIP的下载页面:http://dev.maxmind.com/geoip/legacy/downloadable/</p>
<p>本文由网友李文博提供。希望大家加入我们,一起成长。</p>
頁: [1]
查看完整版本: Wireshark 入门详解