• wireshark:Beyond Compare是一个网络封包分析软件。网络封包分析软件的功能是撷取网络封包,并尽可能显示出最为详细的网络封包资料。Wireshark使用WinPCAP作为接口,直接与网卡进行数据报文交换,是目前全世界最广泛的网络封包分析软件
    • 标题栏:用于显示所分析的抓包文件的名称、捕获的设备名称以及Wireshark的 版本号。
    • 菜单栏:Wireshark的标准菜单栏。
    • 工具栏:常用功能的快捷图标按钮。
    • 筛选区域:我们在实际的数据包分析中,可能在很短的时间内就能够捕获到成 千上万的数据包信息。这个时候就需要使用这里的筛选器,加上一定的条件,筛 选掉我们并不关心的数据包,从而更好地进行分析。我们在接下来的实际分析课程 中,会多次使用筛选功能。
    • Packet List面板:显示每个数据帧的摘要。需要强调的是,其实这里所捕获 的其实就是数据帧,但是出于表达的习惯,本系列的课程中的大部分时候,我会 以“数据包”的叫法来代替“数据帧”以及“分段”。这里采用表格的形式列出了 当前捕获文件中的所有数据包,其中包括了数据包序号、数据包捕获的相对时 间、数据包的源地址目标地址、数据包的协议以及在数据包中找到的概 况信息等。
    • Packet Details面板:分析数据包的详细信息。这个面板分层次地显示了一个 数据包中的内容,并且可以通过展开或是收缩来显示这个数据包中所捕获的全部内 容。在我们的课程中,Packet List面板以及Packet Details面板是我们重点 关注的对象。
    • Packet Bytes面板:以十六进制和ASCII码的形式显示数据包的内容。这里显 示了一个数据包未经处理的原始样子,也就是在链路上传播时的样子。
    • 状态栏:包含有专家信息、注释、包的数量和Profile。

一旦我们开始利用Wireshark进行数据包的捕获,那么所获得的二进制数据就会 依照不同的协议的结构进行规范,并且显示在Packet Details面板中。这里我 给大家简单介绍一下识别数据包的方法。

在Wireshark中,关于数据包的叫法主要有3个术语,也就是帧、包、段。数据帧 的起始点和目的点都是数据链路层;数据包的起始和目的地是网络层;段通常是 指起始点和目的地都是传输层的信息单元。这里我们通过以下捕获的数据包来分析 一下这三种术语(以下展示的是通过筛选器显示HTTP协议,并查看3934号数据 包的情况):

这里面主要展示了以下五种协议的信息:

  • Frame:物理层数据帧的情况。
  • Ethernet II:数据链路层以太网帧头部的信息。
  • Internet Protocol Version 4:网络层IP包的头部信息。
  • Transmission Control Protocol:传输层的数据段头部信息,这里显示的是

TCP协议。

  • Hypertext Transfer Protocol:应用层信息,这里显示的是HTTP协议。 下面依据上述所捕获到的数据包的具体情况,对上述前四层的内容进行分析(HTTP 协议在以后的课程中会专门用一次课来讲解):
物理层数据帧的情况
Frame 3934: 310 bytes on wire (2480 bits), 310 bytes captured (2480 

bits) on interface 0
# 3934号帧,线路上有310个字节,实际捕获310个字节
Interface id: 0 (\Device\NPF_{EF10E4D3-713B-4239-8786-300C825A9D3F})
# 接口id
Encapsulation type: Ethernet (1)
# 封装类型
Arrival Time: Nov 26, 2015 11:54:10.987177000 中国标准时间
# 捕获日期和时间
[Time shift for this packet: 0.000000000 seconds]
Epoch Time: 1448510050.987177000 seconds
[Time delta from previous captured frame: 0.014178000 seconds]
# 当前数据包与前一个数据包的时间间隔
[Time delta from previous displayed frame: 0.311034000 seconds]
[Time since reference or first frame: 10.449670000 seconds]
# 当前数据包与第一个数据包的时间间隔
Frame Number: 3934
# 帧序号
Frame Length: 310 bytes (2480 bits)
# 帧长度
Capture Length: 310 bytes (2480 bits)
# 捕获长度
[Frame is marked: False]
# 此帧是否做了标记:否
[Frame is ignored: False]
# 此帧是否被忽略:否
[Protocols in frame: eth:ethertype:ip:tcp:http:image-gif]
# 帧内封装的协议层次结构
[Number of per-protocol-data: 1]
[Hypertext Transfer Protocol, key 0]
[Coloring Rule Name: HTTP]
# 着色标记的协议名称
[Coloring Rule String: http || tcp.port == 80 || http2]
着色规则显示的字符串
数据链路层以太网帧头部的信息
Ethernet II, Src: Qihoo360_61:0b:0c (d0:fa:1d:61:0b:0c), Dst: Giga-

Byt_d4:be:c9 (94:de:80:d4:be:c9)
Destination: Giga-Byt_d4:be:c9 (94:de:80:d4:be:c9)
# 目标MAC地址
Source: Qihoo360_61:0b:0c (d0:fa:1d:61:0b:0c)
# 源MAC地址
Type: IP (0x0800)
# 需要说明的是,为什么上述的源MAC地址以及目标MAC地址的开头明明

是“d0:fa:1d”以及“94:de:80”,# 但是Wireshark上显示出来的却

是“Qihoo360”以及“Giga-Byt”# 呢?这是因为MAC地址的前3
# 个字节表示厂商。而“d0:fa:1d”以及“94:de:80”被分# 配给了奇虎以及技

嘉公司。这是全球统一标# 准,所以Wireshark干脆显示出厂商名称了
网络层IP包的头部信息
Internet Protocol Version 4, Src: 220.181.7.190 (220.181.7.190), Dst: 

192.168.0.14 (192.168.0.14)
Version: 4
# 互联网协议IPv4
Header Length: 20 bytes
# IP包头部的长度
Differentiated Services Field: 0x00 (DSCP 0x00: Default; ECN: 0x00: 

Not-ECT (Not ECN-Capable Transport))
# 差分服务字段
Total Length: 296
# IP包的总长度
Identification: 0x2863 (10339)
# 标志字段
Flags: 0x02 (Don't Fragment)
# 标记字段
Fragment offset: 0
# 分片偏移
Time to live: 49
# 生存期
Protocol: TCP (6)
# 当前数据包所封装的上层协议为TCP协议
Header checksum: 0x7b43 [validation disabled]
# 头部数据的校验和
Source: 220.181.7.190 (220.181.7.190)
# 源IP地址
Destination: 192.168.0.14 (192.168.0.14)
# 目标IP地址
传输层TCP数据段的头部信息
Transmission Control Protocol, Src Port: 80 (80), Dst Port: 2488 

(2488), Seq: 422, Ack: 3024, Len: 256
Source Port: 80 (80)
# 源端口号
Destination Port: 2488 (2488)
# 目标端口号
[Stream index: 16]
[TCP Segment Len: 256]
Sequence number: 422    (relative sequence number)
# 序列号(相对序列号)
[Next sequence number: 678    (relative sequence number)]
# 下一个序列号(相对序列号)
Acknowledgment number: 3024    (relative ack number)
# 确认序列号
Header Length: 20 bytes
# 头部长度
.... 0000 0001 1000 = Flags: 0x018 (PSH, ACK)
# TCP标记字段
Window size value: 162
# 流量控制的窗口大小
Checksum: 0x6fc4 [validation disabled]
# TCP数据段的校验和

筛选器的简单用法

Wireshark的筛选器可以让我们找出我们所希望进行分析的数据包。简单来说, 一个筛选器就是定义了一定的条件,用来包含或者排除数据包的表达式。如果在实 际的分析中,不希望看到某一些数据包,那么就可以通过筛选器来屏蔽掉它们, 从而只显示我们感兴趣的内容。但是这里需要注意的是,有些时候,我们在进行网 络分析时,可能会因为设置了不恰当的筛选器而漏掉了一些关于这个网络情况的关 键数据,所以筛选器有时候也是一把双刃剑

筛选器主要是在处理大量的数据时使用,比如我们刚才就使用了筛选器来专门显 示HTTP协议的数据包。这是关于筛选器的最简单的一种用法。筛选器也支持与 (and)、或(or)、非(not)等逻辑运算符,可以加强筛选的效率。比如我 们可以通过如下语句来显示出所有IP地址为180.97.34.134,端口号为80的数据包 :

ip.addr==180.97.34.134 and tcp.port==80

或者也可以查看所有非TCP协议的协议:

!tcp

除了逻辑操作符,在筛选器中还可以使用比较操作符,比如等于(==)、不等于 (!=)、大于(>)、小于(<)、大于等于(>=)以及小于等于(<=)等。比如我 们现在只想查看长度小于等于150字节的数据包,则可以使用如下命令:

frame.len<=150

最后再讲一下Wireshark的协议域筛选器。这个功能可以帮助我们通过检查协议 头中的某一个字节来创建筛选条件,或者也可以匹配一个数据包中从某一特定位置 开始一定数量的字节。举例来说,比如我们想捕获带有(PSH,ACK)标志的TCP数据 包。那么就可以检测TCP协议中偏移为13的标志位的情况。尽管这个标志位只有1 个字节,但是这个字节中的每一个比特位都是一个标志。

我们可以用如下命令进行查看:

tcp[13]==0x18

如果我们在实际的分析过程中发现某一个筛选条件使用的比较频繁,那么可以考 虑将这个筛选条件保存下来,避免每次分析中的重复输入。我们可以在菜单栏中选 择“Analyze”->“Display Filter”,打开Display Filter对话框。

单击左边的New按钮,创建一个新的筛选器。并且在“Filter Name”中给 筛选器起一个名字,在“Filter String”中输入筛选表达式,之后单 击“OK”进行保存即可: 

灵活使用筛选器会起到事半功倍的效果,在之后的分析中也会多次用到。

从零开始学安全(四十一)●初识Wireshark的更多相关文章

  1. 从零开始学安全(四十二)●利用Wireshark分析ARP协议数据包

    wireshark:是一个网络封包分析软件.网络封包分析软件的功能是撷取网络封包,并尽可能显示出最为详细的网络封包资料.Wireshark使用WinPCAP作为接口,直接与网卡进行数据报文交换,是目前 ...

  2. 从零开始学安全(四十三)●Wireshark分析ICMP(IP)协议

    存活时间与IP分片 这里我们首先来研究一下关于IP协议的两个非常重要的概念:存活时间与IP分片.存活时间(TTL,Time to Live)用于定义数据包的生存周期,也就是在该数据包被丢弃之前,所能够 ...

  3. 从零开始学安全(四十四)●TCP三次握手四次挥手

    wireshark:Beyond Compare是一个网络封包分析软件.网络封包分析软件的功能是撷取网络封包,并尽可能显示出最为详细的网络封包资料.Wireshark使用WinPCAP作为接口,直接与 ...

  4. 从零开始学安全(四)●Vmware CentOS 7 添加静态ip联网

    一.虚拟网络编辑器配置 1.VMnet8设置(不需要改动) 2.NAT设置(不需要改动) 3.DHCP设置(CentOS IP地址段设置,不需要改动) 二.虚拟机设置(网络适配器选择NAT模式) 三. ...

  5. Java从零开始学十四(包和访问控制)

    一.java中的包 Java文件的组织形式Windows中的文件功能类似 在开发比较大的项目时,不可能只涉及到一个java文件,可能要创建几十,甚至几百个java文件,这个时候,我们就可以使用包,把相 ...

  6. 从零开始学JavaScript四(数据类型)

    一.分类 基本数据类型:undefined.null.string.Boolean.number 复杂数据类型:object object的属性以无序的名称和值对的形式 (name : value) ...

  7. 从零开始学MySQL(四)

    上节连接:https://www.cnblogs.com/RajXie/p/10880809.html 上节说到,在创建表的同时,需要给出列的定义.列的定义可展开如下: 列名 列的数据类型 列的一些其 ...

  8. 从零开始学安全(四十六)●sqli-labs 1-4关 涉及的知识点

    Less-1 到Less-4  基础知识注入 我们可以在 http://127.0.0.1/sqllib/Less-1/?id=1 后面直接添加一个 ‘ ,来看一下效果: 从上述错误当中,我们可以看到 ...

  9. 从零开始学安全(四十五)●browser_autopwn2漏洞利用配合Ettercap工具实施DNS欺骗攻击

    系统:kali 2019  工具Ettercap,Metasploit 环境内网地址 首先 cd /etc/ettercap/ 移动在ettercap 文件下 在用vim 打开编辑 etter.dns ...

随机推荐

  1. eShopOnContainers 知多少[6]:持久化事件日志

    1. 引言 事件总线解决了微服务间如何基于集成事件进行异步通信的问题.然而只有事件总线正常运行,微服务之间基于事件的通信才得以运转. 而现实情况是,总有这样或那样的问题,导致事件总线不稳定或不可用,比 ...

  2. Xshell访问和连接Linux

    Xshell是一款强大的安全终端模拟软件,Xshell 模拟了远程主机的操作,其实质就是通过访问和连接到远程主机,在本地实现对远程主机的操作.  一.下载 官网:https://www.netsara ...

  3. 学习攻略丨如何进阶为一名Web安全高手?

    学习Web安全的小伙伴很多,但是能成为Web安全高手却很少,很多人都是从入门到放弃,是真的太难还是学习方法不对? 对于基础薄弱的人来说,一般都是从XSS.SQL注入等简单的漏洞研究入门的.除了了解各种 ...

  4. 生产环境一键创建kafka集群

    前段时间公司的一个kafka集群出现了故障,由于之前准备不足,当时处理的比较慌乱.如:由于kafka的集群里topic数量较多,并且每个topic的分区数量和副本数量都不是一样的,如果按部就班的一个一 ...

  5. Celery异步调度框架(二)与Django结合使用

    配置Celery与Django结合 需要安装的插件 # 用于在Django中执行任务 pip install django-celery-beat # 这个是把任务执行结果保存到django-orm中 ...

  6. Python爬虫使用lxml模块爬取豆瓣读书排行榜并分析

    上次使用了BeautifulSoup库爬取电影排行榜,爬取相对来说有点麻烦,爬取的速度也较慢.本次使用的lxml库,我个人是最喜欢的,爬取的语法很简单,爬取速度也快. 本次爬取的豆瓣书籍排行榜的首页地 ...

  7. 设计模式-发布订阅模式(javaScript)

    1. 前言 2. 什么是发布订阅模式 3. 发布订阅优缺点 4. 举例 4. 总结 1. 前言 发布订阅者模式是为了发布者和订阅者之间避免产生依赖关系,发布订阅者之间的订阅关系由一个中介列表来维护.发 ...

  8. .net MVC +EF+VUE做回合制游戏(一)

    刚毕业的新人,工作的时候试过用.net 框架,但是我发现写的前端代码都非常多,要写很多很多的原生,然后最近在看vue.js觉得还不错,可以减少前端很多dom操作. 至于做的东西我是想做一个游戏,一个回 ...

  9. ArcGIS对SLD样式的支持

    文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/ 1.ArcGISWMS服务对SLD的支持 在完成用geoserver的w ...

  10. 数据库艰难求生之路(基础:增删改查)part2

    一.数据库查询 由于这个点的东西实在是多的,我就和题目,知识点一起演示. 首先是创建数据库: create database ExampleInfo --创建数据库 use ExampleInfo - ...