zoukankan      html  css  js  c++  java
  • 了解使用wireshark抓包工具

    一、简介

      1、什么是wireshark

        百度:

        Wireshark(前称Ethereal)是一个网络封包分析软件。网络封包分析软件的功能是撷取网络封包,并尽可能显示出最为详细的网络封包资料。Wireshark使用WinPCAP作为接口,直接与网卡进行数据报文交换。
        在过去,网络封包分析软件是非常昂贵的,或是专门属于盈利用的软件。Ethereal的出现改变了这一切。在GNUGPL通用许可证的保障范围底下,使用者可以以免费的代价取得软件与其源代码,并拥有针对其源代码修改及客制化的权利。Ethereal是目前全世界最广泛的网络封包分析软件之一。
        开源软件,用GPL协议发行,所以可以免费在任意数量机器上使用
        

      2、主要应用

        帮助管理员解决网络问题

        帮助安全工程师用来检测安全隐患

        开发人员用来测试协议执行情况

        用来学习网络协议

        等等。

      3、特性

        跨平台支持windows/unix平台

        在接口实时抓包

        能详细显示包的详细协议信息

        可以打开/保存捕捉的包

        可以导入导出其他程序支持的包数据格式

        可以通过多种方式过滤包

        多种方式查找包

        通过过滤以多种彩色显示包

        创建多种统计分析。。。

      4、多种网络接口

        可以捕捉多种网络接口,甚至无线局域网接口

      5、哪些事情不能做?

        不能用作入侵检测系统,不会处理网络事务,仅是监视网络,不会发送网络包或做其他交互的事情,但可以做名称解析

    二、使用wireshark

      1、打开后看到的第一页面,这里就称为初始页面吧

      2、怎么样开始抓包

        通过捕获选项

        上面的初始页面,有两个入口可以点击一个是在main工具栏,一个是中间位置的captrue options

        点击captrue options图标》弹出网卡如多网卡指定抓包网卡》开始抓包

      3、wireshark窗口的介绍

        wireshark主要分为7个界面

        主菜单

          菜单页面包括file、edit、view、go、capture、analyze、statistics、help

        main工具栏

          一些快捷导航,比如capture,开始,停止等等

        过滤器

          指定需要捕获所需要的条件,比如源地址/目标地址

        封包列表

          已经捕获到的封包,有源地址/目标地址,端口;颜色的不同代表不同的

        封包详情

          显示封包中的各字段

        16禁止数据

          顾名思义

        地址栏

          地址栏及一些杂项

      4、过滤条件

        通过集中表达式规则进行过滤

        1)protocols

          比如tcp,ether,fddi,ip,arp,rarp,decnet,lat,sca,moprc,mopdl,tcp and udp

        2)direction

          src,dst,src and dst,src or dst(不指定就是双向)

        3)host(新版,老版本没有host)

          net,port,host,portrange

        4)logical openrations逻辑运算

          and,or,not(下面有官方实例)

      5、过滤关系

        1)组合表达式

        Table 6.6. Display Filter Logical Operations

    EnglishC-likeDescription and example

    and

    &&

    Logical AND. ip.src==10.0.0.5 and tcp.flags.fin

    or

    ||

    Logical OR. ip.scr==10.0.0.5 or ip.src==192.1.1.1

    xor

    ^^

    Logical XOR. tr.dst[0:3] == 0.6.29 xor tr.src[0:3] == 0.6.29

    not

    !

    Logical NOT. not llc

    […​]

     

    See “Slice Operator” below.

    in

     

    See “Membership Operator” below.

        2)运算符号

          参考官方https://www.wireshark.org/docs/wsug_html/#DispCompOps

       Table 6.5. Display Filter comparison operators

    EnglishC-likeDescription and example

    eq

    ==

    Equal. ip.src==10.0.0.5

    ne

    !=

    Not equal. ip.src!=10.0.0.5

    gt

    >

    Greater than. frame.len > 10

    lt

    <

    Less than. frame.len < 128

    ge

    >=

    Greater than or equal to. frame.len ge 0x100

    le

    <=

    Less than or equal to. frame.len ⇐ 0x20

    contains

     

    Protocol, field or slice contains a value. sip.To contains "a1762"

    matches

    ~

    Protocol or text field match Perl regualar expression. http.host matches "acme.(org|com|net)"

    bitwise_and

    &

    Compare bit field value. tcp.flags & 0x02

      6、常见过滤需求

       1)、数据链路层

        mac地址过滤

          eth.addr==00:0c:29:1c:8b:39

          eth.src==00:0c:29:1c:8b:39

          eth.dst==00:0c:29:1c:8b:39

       2)、网络层    

        ip地址过滤

          ip.addr==192.168.216.51

          ip.src==192.168.216.51

          ip.dst==192.168.216.51

       3)、传输层

          tcp/udp

          tcp.prot==80

          tcp.dstport==80

          tcp.srcport==80

       4)、应用层

          http.request.uri contains ".php"

       5)、wireshark支持筛选的还有很多协议,这里不一一列举,请查看官方文档

          udp、tcp、arp、icmp、smtp、pop、dns、ip、ssl、http、ftp、telnet、ssh、rdp、rip、ospf

       6)、协议参数过滤

          tcp.flags.syn==0x02 显示包含syn标志位的数据包

          frame.len==119  整个数据包长度,从eth开始到最后

          http.request.method=="get"  显示http请求中method值为get的包

       7)、逻辑条件组合筛选

        ||

        &&

        !

        组合条件“与”

        ip.src==192.168.216.51&&ip.dst==192.168.216.52

        组合条件“或”

        ip.src==192.168.216.51||ip.src==192.168.216.52

        组合条件“非”

        !(ip.src==192.168.216.51)

    三、新版本差异 

      新版和老版本是存在很多差异的如

      1、示例1-mac

      2、示例2-ip

      3、示例3-tcp

      4、示例4-http

     四、分析tcp三次握手

      1、三次握手简单图示

     

      2、第一次握手

        客户端请求建立连接,发送请求包,标志位SYN,序号为0

      3、第二次握手

        服务端返回确认,标志位SYN,ACK,设置初始序列号Y=0, X+1=0+1=1,这个就是acknowledgement number了(确认序号)

      4、第三次握手

        客户端收到服务器发来的确认号正确,客户端再次发送确认ACK,SYN标志位为0,ACK标志位是1,确认序号=y+1=0+1,发送序号位x+1=1,服务器收到确认序号值与ack=1连接建立成功,开始传输数据

    五、四次挥手

        四次挥手即tcp断开连接得时候会有四次挥手得过程

        为什么需要四次挥手那?

          因为tcp协议是一种面向连接的、可靠的、基于字节流的传输层通信协议,并且是全双工模式,需要两边连接全部关闭,此tcp会话才算完全关闭,四次挥手使得tcp连接能够可靠的终止,还有timed_wait也使得连接终止后网络上残余的发送给该连接的数据被丢弃而不至于被新连接接收,这种方式也更安全

      1、图示四次挥手

     

      2、抓包示例挥手协议图示

      3、第一次挥手

        属性:

          ACK+FIN:标志位

          Seq=23:序列号

          ACK=29:接收的序列号+SYN包,也就是确认的序号

        第一次挥手,客户端给服务器发送tcp包,用来关闭客户端到服务器的数据传输,发送FIN ACK报文 seq=23 ack=29

      4、第二次挥手

         第二次挥手,服务器收到FIN,发回一个ACK,Seq=29,ack=23

      5、第三次挥手

        服务端关闭和客户端连接,发送一个FIN,seq=24,ack=29

      6、第四次挥手

        第四次挥手,客户端收到服务器发送的FIN后,发回ACK确认,确认序号加1,就是30,这里就完全断开连接了。

    转载请注明出处:https://www.cnblogs.com/zhangxingeng/p/11200063.html 

  • 相关阅读:
    【mysql】关于IO/内存方面的一些优化
    【mysql】使用tpcc-mysql进行压力测试
    Linux下使用iostat 监视I/O状态
    【JUC】JUC线程池框架综述
    【目录】JUC集合框架目录
    【JUC】JDK1.8源码分析之ConcurrentSkipListSet(八)
    【JUC】JDK1.8源码分析之CopyOnWriteArraySet(七)
    【JUC】JDK1.8源码分析之CopyOnWriteArrayList(六)
    【设计模式】策略模式
    【JUC】JDK1.8源码分析之ConcurrentLinkedQueue(五)
  • 原文地址:https://www.cnblogs.com/zhangxingeng/p/11200063.html
Copyright © 2011-2022 走看看