wireshark抓包工具使用说明
wireshark窗口介绍
主界面窗口:
封包详细信息 (Packet Details Pane)这个面板是我们最重要的,用来查看协议中的每一个字段。各行信息分别为:
协议 | 说明 |
Frame | 物理层的数据帧概况 |
Ethernet II | 数据链路层以太网帧头部信息 |
Internet Protocol Version 4 | 互联网层IP包头部信息 |
Transmission Control Protocol | 传输层T的数据段头部信息,此处是TCP |
Hypertext Transfer Protocol | 应用层的信息,此处是HTTP协议 |
wireshark基本配置
按自己的习惯来配置wareshark的布局,颜色,字体等等信息
调整布局
- 点击菜单编辑栏的
编辑->首选项->Appearance-Layout
:
调整字体和颜色
- 点击菜单编辑栏的
编辑->首选项->Appearance-Font and Colors
:
调整着色规则
- 点击菜单编辑栏的
视图->着色规则
:(此处建议默认) - 这里详细介绍了每一种颜色对应的意思,当不知道某种颜色的意思时,可在这里查找
调整Wareshark时间
- 建议使用UTC时间
- 点击菜单编辑栏的
视图->时间显示格式
:
捕获时的配置
- 点击菜单编辑栏的
编辑->首选项->Capture
: - 去掉实时更新,避免卡顿
- 混杂模式:它是一种允许网卡能够查看到所有流经网络线路数据包的驱动模式。使用它能确保捕获所有的网络流量,在混杂模式下,网卡会把它看到的数据包都复制一份给主机的处理。
过滤器
使用过滤是非常重要的, 初学者使用wireshark时,将会得到大量的冗余信息,在几千甚至几万条记录中,以至于很难找到自己需要的部分。搞得晕头转向。过滤器会帮助我们在大量的数据中迅速找到我们需要的信息。
过滤器有两种:
- 一种是显示过滤器,就是主界面上那个,用来在捕获的记录中找到所需要的记录
- 一种是捕获过滤器,用来过滤捕获的封包,以免捕获太多的记录。 在
Capture -> Capture Filters
中设置
捕获过滤器
捕获过滤器可手动输入或者进行选择,在菜单栏种捕获->选项
常用的捕获过滤表达式
过滤表达式 | 说明 |
tcp[13]&32==32 | 设置URG位的TCP数据包 |
tcp[13]&16==16 | 设置ACK位的TCP数据包 |
tcp[13]&8==3 | 设置PSH位的TCP数据包 |
tcp[13]&4==4 | 设置PST位的TCP数据包 |
tcp[13]&2==2 | 设置SYN位的TCP数据包 |
tcp[13]&1==1 | 设置FIN位的TCP数据包 |
tcp[13]==18 | TCP SYN-ACK数据包 |
ether host 11:22:33:44:55:66 | 流入或流出指定MAC地址的流量 |
!ether host 11:22:33:44:55:66 | 不流入或流出指定MAC地址的流量 |
brodcast | 仅广播流量 |
icmp | 仅ICMP流量 |
icmp[0:2] | ICMP目标不可达、主机不可达 |
IP | 仅IPv4流量 |
ip6 | 仅IPv6流量 |
udp | 仅UDP流量 |
显示过滤器
显示过滤器表达式-BPF表达式:
过滤表达式 | 说明 |
!tcp.port==3389 | 排除PDP流量 |
tcp.flags.syn==1 | 具有SYN标志的TCP数据包 |
tcp.flags.rst==1 | 具有RST标志的TCP数据包 |
!arp | 排除ARP流量 |
http | 所有HTTP流量 |
tcp.port == 23 or tcp.port==21 | 文本管理流量(Telnet/FTP) |
smtp or pop or icmp | 文本邮件流量 |
统计分析功能
端点会话统计:
会话:两个端点间的通信就是会话
- 端点窗口通过字节排序可知某进行了大流量通讯
- 会话窗口通过包排序可在它大概在做啥,可通过whois网站来查它访问的IP地址运营商
协议分层:
- 按百分比找到各层协议的占比,帮助找到需要筛选的协议
协议解析:
- 如果有些时候Wareshark的解析结果与我们的经验不符时,那么它可能出错了,需要我们人为的解码为指定协议
流追踪:
将来自不同数据包的数据重组成统一易读的格式 目前能重组四种流
- TCP流:重组使用TCP协议的数据,比如HTTP和FTP
- UDP流:重组使用UDP协议的数据,比如DNS
- TLS流:重组加密的协议数据,比如TLS需要提供密钥进行解密
- HTTP流:从HTTP协议中重组和解压数据,当使用TCP流跟踪但又没有完全识别 出HTTP数据的时候
分组长度:
- 正常情况下一个以太网帧最大长度为1518字节
- 除去以太网、IP及TCP头,还剩下1460字节
- 那么就可以根据报文的最小需求进行猜测
- 这里可以随时进行修改
– 较大的数据包通常表示数据传输
– 较小的数据包通常表示协议控制
专家信息:
- 每个协议的解析器都有一些专家信息,可以提醒我们该协议的数据包中的特定状 态。
- 对话(蓝色):有关常规工作流程的信息,例如 设置了SYN标志的TCP数据包
- 注意(青色):值得注意的事物,例如: 应用程序返回“通常”错误代码,如 HTTP 404
- 警告(黄色):警告,例如 应用程序返回“异常”错误代码,如连接问题
- 错误(红色):严重问题,例如 [格式错误的数据包]
实例
TCP包的具体内容,从下图可以看到wireshark捕获到的TCP包中的每个字段
现在我们看一个TCP三次握手的实例,三次握手过程为:
打开wireshark, 打开浏览器输入 http://www.baidu.com 在wireshark中输入http过滤, 然后选中GET /tankxiao HTTP/1.1的那条记录,右键然后点击"Follow TCP Stream",
这样做的目的是为了得到与浏览器打开网站相关的数据包,将得到如下图:
图中可以看到wireshark截获到了三次握手的三个数据包。第四个包才是HTTP的, 这说明HTTP的确是使用TCP建立连接的。
第一次握手数据包:
客户端发送一个TCP,标志位为SYN,序列号为0, 代表客户端请求建立连接。 如下图
第二次握手的数据包
服务器发回确认包, 标志位为 SYN,ACK. 将确认序号(Acknowledgement Number)设置为客户的I S N加1以.即0+1=1, 如下图
第三次握手的数据包
客户端再次发送确认包(ACK) SYN标志位为0,ACK标志位为1.并且把服务器发来ACK的序号字段+1,放在确定字段中发送给对方.并且在数据段放写ISN的+1, 如下图:
就这样通过了TCP三次握手,建立了连接,两方开始传送数据,序列号从其各自随机产生的序列号+1开始.
传输完成后,四次挥手断开连接
端口
电脑端口:0-65535
- 0-1023 :标准端口组
- 1024-65535 :临时端口组
常用端口:
- TCP 21端口:FTP 文件传输服务
- TCP 23端口:TELNET 终端仿真服务
- TCP 25端口:SMTP 简单邮件传输服务
- UDP 53端口:DNS 域名解析服务
- TCP 80端口:HTTP 超文本传输服务
- TCP 110端口:POP3 “邮局协议版本3”使用的端口
- TCP 443端口:HTTPS 加密的超文本传输服务
- 56端口: DHCP 服务
- 22端口: SSH 服务