侧边栏壁纸
博主头像
qiuker

常态咸鱼,偶尔动弹

  • 累计撰写 7 篇文章
  • 累计创建 11 个标签
  • 累计收到 0 条评论

Wireshark

qiuker
2022-03-17 / 0 评论 / 0 点赞 / 72 阅读 / 3,046 字

一.概述

1.Wireshark介绍

Wireshark是全球使用最广泛的开源抓包软件。

下载地址:Wireshark

2.抓包原理

网络原理:

Wireshark既可以直接抓取本机网卡进出的数据包,也可以监听/抓取局域网中别的计算机间的通信数据包。

Wireshark抓取局域网中的其它数据有三种实现方式:

  • 端口镜像:假设本机为P1,P2和P3在通过交换机的端口1通信。P1可以请求交换机将端口1的流量复制一份,传输给自己,当然这种方式实现的前提是交换机同意
  • ARP欺骗:在P2发出ARP请求时,让P1假冒自己是P3,从而欺骗了交换机,让其以为自己是P3。
  • MAC泛洪:发送大量的垃圾信息给交换机,让交换机的MAC表都充斥为垃圾信息,而把P2、P3的MAC地址给挤出了MAC表。那么P2和P3在通信时交换机就无法再知道如何转发,就会向外泛洪,此时P1就得到了P2和P3的通信信息。

底层原理:

image.png

Wireshark的大致组件如上,其中:

  • Win - libpcap:抓包时所依赖的库文件
  • Capture:抓包引擎
  • Wiretap:抓包所得到的其实就是0和1组成的比特流,该组件可以将比特流按某种格式进行解读
  • Core:将其它组件调度连接在一起
  • GTK:提供图形界面

二.配置

语言设置: 菜单栏Edit -> Preferences (快捷键ctrl + shift + p)-> Appearance -> Language

其它待更新

三.操作

1.抓包

首先选择要抓取数据的网卡

菜单栏Capture -> Option(快捷键ctrl + K)-> 勾选要抓取数据的网卡

image.png

按下Start就开始抓包了

2.过滤

数据包是非常多的,大部分并不是自己想要的内容,需要过滤

过滤分为两种:

  • 捕获过滤器:在抓包前进行设置

    菜单栏Capture -> Capture Filters

    image.png

    这里也有一些设置好的过滤条件,比如IPV4 表示只要采取IPV4协议的数据包

    最后在Capture -> Option 的页面,点击书签图标就可以选择了

    image.png

  • 显示过滤器:在抓包后过滤掉不要的数据包

    显示过滤器的书写位置在菜单栏下方

    image.png

显示过滤器表达式书写:

一条基本的表达式由过滤项、过滤关系、过滤值三项组成。
例:ip.addr == 192.168.1.1,这条表达式中ip.addr是过滤项、==是过滤关系,192.168.1.1是过滤值

整条表达示的意思是找出源或目标ip等于192.168.1.1的数据包

  1. 过滤项: 过滤项的格式为协议.协议字段,如ip.addrtcp.port
  2. 过滤关系: ><!===等等
  3. 过滤值: 过滤项的期望值

复合过滤表达式:使用逻辑运算符&&||!来连接多个过滤表达式

常用字段:addrsrc(源地址)、dst(目标地址)、port(端口)、srcportdstport

四. 案例

1.ICMP报文

使用ping命令发送的就是遵循ICMP协议的报文

  1. 在cmd中输入ping qiuker.top

  2. 在wireshark中写上过滤器条件ip.addr == 47.95.118.125

  3. 点击任意一个数据包,可在下方显示结果(双击是新打开一个窗口显示结果)image.png

    Frame:物理层帧的情况

    Ethernet:数据链路层以太网帧的情况

    Internet Protocol Version 4:网络层IP数据报的情况

    Internet Control Message Protocol:ICMP报文

    从ICMP报文中的TYPE和CODE字段能大致判断双方的通信情况:

    • TYPE = 0:主动应答
    • TYPE = 8:主动请求(ping 命令)
    • TYPE = 3:终点不可达
    • TYPE =11:传输超时
    • TYPE =5:重定向

    具体如下:

    TYPECODEDescriptionQueryError
    00Echo Reply——回显应答(Ping应答)x
    30Network Unreachable——网络不可达 x
    31Host Unreachable——主机不可达 x
    32Protocol Unreachable——协议不可达 x
    33Port Unreachable——端口不可达 x
    34Fragmentation needed but no frag. bit set——需要进行分片但设置不分片比特 x
    35Source routing failed——源站选路失败 x
    36Destination network unknown——目的网络未知 x
    37Destination host unknown——目的主机未知 x
    38Source host isolated (obsolete)——源主机被隔离(作废不用) x
    39Destination network administratively prohibited——目的网络被强制禁止 x
    310Destination host administratively prohibited——目的主机被强制禁止 x
    311Network unreachable for TOS——由于服务类型TOS,网络不可达 x
    312Host unreachable for TOS——由于服务类型TOS,主机不可达 x
    313Communication administratively prohibited by filtering——由于过滤,通信被强制禁止 x
    314Host precedence violation——主机越权 x
    315Precedence cutoff in effect——优先中止生效 x
    40Source quench——源端被关闭(基本流控制)
    50Redirect for network——对网络重定向
    51Redirect for host——对主机重定向
    52Redirect for TOS and network——对服务类型和网络重定向
    53Redirect for TOS and host——对服务类型和主机重定向
    80Echo request——回显请求(Ping请求)x
    90Router advertisement——路由器通告
    100Route solicitation——路由器请求
    110TTL equals 0 during transit——传输期间生存时间为0 x
    111TTL equals 0 during reassembly——在数据报组装期间生存时间为0 x
    120IP header bad (catchall error)——坏的IP首部(包括各种差错) x
    121Required options missing——缺少必需的选项 x
    170Address mask request——地址掩码请求x
    180Address mask reply——地址掩码应答

2.TCP连接

使用浏览器,在地址栏中输入qiuker.top

随后在wireshark的过滤栏中输入ip.addr == 47.95.118.125 && tcp

  1. 第一个报文:image.png

    Source Port为61263,表示本地计算机给和qiuker.top进行通信的进程分配了一个临时端口

    Destination Port为80,这是HTTP协议的默认端口

    Flags即标识位,具体如下:

    image.png

    其中只有第二位的Syn为1,所以Flags的值为2,这是TCP连接的第一次握手

  2. 第二个报文:

    服务器端返回的报文中,标识位SYN和ACK都为1,这是第二次握手

    image.png

  3. 第三个报文:

    第三次握手SYN位为0,ACK为1

    image.png

  4. TCP连接建立成功,然后才开始有HTTP报文

四次挥手也同样可以看到,第一次挥手发送了ack和fin位为1的报文,第二次挥手是对方的确认报文,ack=1;第三次和第四次挥手则是双方交换了身份。

0

评论区