博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
wireshark数据包分析学习总结
阅读量:3904 次
发布时间:2019-05-23

本文共 8173 字,大约阅读时间需要 27 分钟。

前言

用了一周多的时间看了《Wireshark数据包分析实战详解》这本书的第一篇,这前九章的内容主要是讲解wireshark的使用方法和技巧,以及capinfos、dumpcap、editcap和tshark等命令行工具的使用技巧。另外我也参考了网络上的一些文章,对本阶段学习做一个小总结,方便以后复习。

Wireshark图形化工具

在过去,网络封包分析软件是非常昂贵的,或是专门属于盈利用的软件。Wireshark的出现改变了这一切。在GNUGPL通用许可证的保障范围底下,使用者可以以免费的代价取得软件与其源代码,并拥有针对其源代码修改及客制化的权利。Wireshark是目前全世界最广泛的网络封包分析软件之一。

wireshark视图

在这里插入图片描述

定制Profile

可定制profile配置文件,右键profile,进行管理。

基础使用不在赘述。

延时检测

在这里插入图片描述

新增列,将TCP中的Timestamps中的Time since previous。。。应用为新的列。
在这里插入图片描述

捕获过滤

  • 捕捉过滤器语法
    语法:<Protocol> <Direction> <Host(s)> < Value> < Logical Operations> <Other expression>

Protocol(协议): ether,fddi, ip,arp,rarp,decnet,lat, sca,moprc,mopdl, tcp , udp 等,如果没指明协议类型,则默认为捕捉所有支持的协议。

Direction(方向):src, dst,src and dst, src or dst等,如果没指明方向,则默认使用 “src or dst” 作为关键字。

Host(s): net, port, host, portrange等,默认使用”host”关键字,”src 10.1.1.1″与”src host 10.1.1.1″等价。

Logical Operations(逻辑运算):not, and, or 等,否(“not”)具有最高的优先级。或(“or”)和与(“and”)具有相同的优先级,运算时从左至右进行。

常见使用的捕获过滤语句

  • 只(不)捕获某主机的HTTP流量

host 192.168.5.231 and port 80 and http

#只捕获主机192.168.5.231 的http流量。注意如果你的HTTP端口为8080,把80 改为8080。

port 80 and http

#捕获所有经过该接口的http流量。注意如果你的HTTP端口为8080,把80 改为8080。

host 192.168.5.231 and not port 80

#捕获主机192.168.5.231除 http 之外的其他所有流量,注意如果你的HTTP端口为8080,把80 改为8080。

not port 80

#捕获除 http 之外的其他所有流量,注意如果你的HTTP端口为8080,把80 改为8080。

not port 80 and !http

#捕获除 http 之外的其他所有流量,注意如果你的HTTP端口为8080,把80 改为8080。

  • 只捕获某主机的所有流量

host 192.168.5.231

#捕获源目主机均为192.168.5.231

dst 192.168.5.231

#捕获目的主机均为192.168.5.231

src 192.168.5.231

#捕获来源主机均为192.168.5.231

net 192.168.5.0/24

#捕获网段为d192.168.5的所有主机的所有流量

  • 只捕获某主机的DNS流量

host 192.168.5.231 and port 53

#只捕获主机192.168.5.231 的dns流量。

src 192.168.5.231 and port 53

#只捕获主机192.168.5.231 对外的dns 的流量。

dst 192.168.5.231 and port 53

#只捕获dns服务器相应主机192.168.5.231的dns流量。

port 53

#捕获接口中的所有主机的dns流量

  • 只(不)捕获APR流量

host 192.168.5.231 and arp

#只捕获主机192.168.5.231 的arp流量。

host 192.168.5.231 and !arp

#只捕获主机192.168.5.231 除arp外的所有流量。

arp

#捕获接口中的所有arp请求

!arp

#捕获接口中所有非arpq请求。

  • 只捕获特定端口的流量

tcp portrange 8000-9000 an port 80

#捕获端口8000-9000之间和80端口的流量

port 5060

#捕获sip流量,因为sip的默认端口是5060。举一反三:port 22#捕获ssh流量

  • 捕获电子邮件的流量

host 192.168.5.231 and port 25

#捕获主机192.168.5.231 的POP3协议的流量。

port 25 and portrange 110-143

#因为电子邮件的协议:SMTP、POP3、IMAP4,所以捕获端口的流量。

  • 捕获vlan 的流量

vlan

#捕获所有vlan 的流量

vlan and (host 192.168.5.0 and port 80)

#捕获vlan 中主机192.168.5.0 ,前提是有vlan,在wifi中不一定可以捕获到相应的流量,局域网(公司,学校里面的网络应该有vlan)

  • 更多的案例,可以参考
    端口常识:
    常见协议及其端口:

显示过滤器

捕获过滤器使用BPF语法,而显示过滤器使用wireshark专有格式。

并且显示显示过滤器区分大小写,大部分使用的是小写。

语法格式:Protocol String1 String2 Comparision operator Value Logical Operations Other expression

Protocol(协议):该选项用来指定协议。该选项可以使用位于OSI模型第2-7层的协议。

String1,String2(可选项):协议的子类。
Comparision operator: 指定运算比较符。

英文写法 C语言写法 含义
eq == 等于
ne != 不等于
gt > 大于
lt < 小于
ge >= 大于等于
le <= 小于等于

Logical expression: 指定逻辑运算符。

英文写法 C语言写法 含义
and && 逻辑与
or || 逻辑或
xor ^^ 逻辑异或
not ! 逻辑非
  • 协议过滤器

    arp
    #显示所有ARP流量
    ip
    #显示所有IPv4流量
    ipv6
    #显示所有IPv6流量
    tcp
    #显示所基于TCP的流量数据

  • 应用过滤器

    bootp
    #显示所有DHCP流量
    dns
    #显示所有NDS流量,包括tcp传输和udp的dns请求和响应
    tftp
    #显示所有TFPT(简单文件传输协议)流量
    http
    #显示所有HTTP命令、响应和数据传输包。但是不现实tcp握手包、tcp确认报和tcp断开包的流量数据。
    icmp
    #显示所有ICMP流量(ping命令发出的数据包)。

  • 字段存在过滤器

    bootp.option.hostname
    #显示所有DHCP流量,包含主机名(DHCP是基于BOOTP)。
    http.host
    #显示所有包含http主机名字段的数据包。通常是由一个客户端发给web服务器的请求。
    ftp.request.command
    #显示所有ftp命令数据,如USER、PASS、RETR命令。

  • 特有的过滤器

    tcp.analysis.flags
    #显示所有与tcp表示有关的包,包括丢包、重发和零窗口标志。
    tcp.analysis.zero_window
    #显示被标志的包,表示发送方的缓存空间已满

显示过滤器语法检查

  • 红色表示错误
  • 绿色标识正确可执行
  • 黄色表示语法正确,但是可能不会过滤出用户想要的过滤的数据包。

常用显示过滤器及其表达式

  • 数据链路层:
  1. 筛选mac地址为04:f9:38:ad:13:26的数据包----eth.src == 04:f9:38:ad:13:26

  2. 筛选源mac地址为04:f9:38:ad:13:26的数据包----eth.src == 04:f9:38:ad:13:26

  • 网络层:
  1. 筛选ip地址为192.168.1.1的数据包----ip.addr == 192.168.1.1

  2. 筛选192.168.1.0网段的数据---- ip contains “192.168.1”

  3. 筛选192.168.1.1和192.168.1.2之间的数据包----ip.addr == 192.168.1.1 && ip.addr == 192.168.1.2

  4. 筛选从192.168.1.1到192.168.1.2的数据包----ip.src == 192.168.1.1 && ip.dst == 192.168.1.2

  • 传输层:
  1. 筛选tcp协议的数据包----tcp

  2. 筛选除tcp协议以外的数据包----!tcp

  3. 筛选端口为80的数据包----tcp.port == 80

  4. 筛选12345端口和80端口之间的数据包----tcp.port == 12345 && tcp.port == 80

  5. 筛选从12345端口到80端口的数据包----tcp.srcport == 12345 && tcp.dstport == 80

  • 应用层:

特别说明 :http中http.request表示请求头中的第一行(如GET index.jsp HTTP/1.1),http.response表示响应头中的第一行(如HTTP/1.1 200 OK),其他头部都用http.header_name形式。

  1. 筛选url中包含.php的http数据包----http.request.uri contains “.php”

  2. 筛选内容包含username的http数据包----http contains “username”

tshark命令行工具

tshark的 - 转储和分析网络流量

概要

tshark的 [ -2 ] [ -a <捕捉自动停止条件>] … [ -b <捕捉环形缓冲区选项>] … [ -B <捕获缓冲区大小>] [ -c <捕获分组计数>] [ - ? <配置文件>] [ -d <层型> == <选择>,<译码作为协议>] [ -D ] [ -e <字段>] [ -E <现场打印选项>] [ -f <捕获筛选>] [ -F <文件格式>] [ -g ] [ -h ] [ -H <输入hosts文件>] [ -i <采集界面> | - ] [ -I ] [ -K <密钥表>] [ -l ] [ -L ] [ -n ] [ -N <名称解析标志>] [ -o <偏好设置>] … [ -O <协议>] [ -p ] [ -P ] [ -q ] [ -Q ] [ -r ] [ -R <读过滤>] [ -s <捕获的Snaplen>] [ -S <分隔符>] [ -t 一个|广告| adoy | D | DD | E | - [R | U | UD | udoy] [ -T 领域| PDML | PS | PSML |文] [ -u <秒类型>] [ -v ] [ -V ] [ -w | - ] [ -W <文件格式选项>] [ -x ] [ -X <分机选项>] [ -y <捕获链接类型>] [ -Y <显示过滤>] [ -z <统计>] [ --capture注释 <评论> ] [<捕获筛选>]

tshark -G [column-formats|currentprefs|decodes|defaultprefs|fields|ftypes|heuristic-decodes|plugins|protocols|values]

选项(概要)

如要查询更详细的选项解析可参考

-a <捕捉自动停止条件>

设置一个标准,指定当tshark的是停止写入捕捉文件。标准是的形式测试:值,其中测试是下列之一:

持续时间:值停止写入捕捉文件后价值秒钟过去了。

作品尺寸:值停止写入捕捉文件后,它达到的大小 值 KB。如果此选项与-b选项一起使用,tshark的 将停止写入当前捕捉文件,并切换到下一个,如果文件大小达到。当读取捕获文件,tshark的将停止读取文件之后读取的字节数超过此数值(完整数据包将被读取,所以比这个数目更多的字节可被读取)。注意,文件大小限制为2吉布最大值。

文件:值停止写入捕捉文件后,值被写入文件的数量。

-c <捕获的数据包数>

设置数据包捕获实时数据时,读取的最大数量。如果读一个捕获文件,设置数据包要读取的最大数量。

-D

打印接口上的列表tshark的可以捕捉,并退出。每个网络接口,一个数字和一个接口名,可能紧跟在界面的文本描述,被打印。接口名称或数量可以提供给-i选项指定要在其上捕捉的接口。

这可以在不具有命令列出它们(例如,Windows系统或UNIX系统缺乏系统是有用的ifconfig -a); 数量可在Windows 2000和更高版本的系统,其中接口名称是一个比较复杂的字符串是有用的。

需要注意的是“可以捕获”是指tshark的是能够打开设备进行实时捕捉。根据您的系统,你可能需要从具有特殊权限的帐户下运行tshark的(例如,作为root)才能够捕获网络流量。如果tshark的-D不是从这样的帐户下运行,它不会显示任何接口。

-e <现场>

添加一个字段,字段列表显示,如果-T领域被选中。这个选项可以在命令行上多次使用。如果该至少一个字段必须提供-T字段选项被选中。列名可以使用前缀“_ws.col。”

例如:-e frame.number -e ip.addr -e UDP -e _ws.col.info

给人一种协议,而不是一个单一的场将打印有关的协议作为一个单一的场数据的多个项目。字段之间用制表符分隔默认。 -E控制打印领域的格式。

-E <现场打印选项>

设置选项控制领域的印刷时-T领域被选中。

选项??有:

标题= Y | N如果Y,打印的使用给定的字段名称的列表-e 作为输出的第一行; 字段名称将使用相同的字符作为字段值中分离出来。默认为。

分离器= / T | /秒| <字符>设置分隔符使用领域。如果/吨标签将会被使用(这是默认值),如果 /秒,一个单一的空间将被使用。否则,可以通过命令行被接受为选择一部分的任何字符都可以使用。

发生= F | L |一个用于具有多个事件字段选择对哪些发生。如果F第一次出现将被使用,如果升 最后出现的将被使用,如果一个事件都将使用(这是默认值)。

聚合=,| / S | <字符>设置聚合字符用于具有多次出现的字段。如果,一个逗号将被使用(这是默认值),如果/秒,一个单一的空间将被使用。否则,可以通过命令行被接受为选择一部分的任何字符都可以使用。

报价= D | S | N,设置引号字符使用环绕领域 e 使用双引号,单引号,暂无报价(默认值)。

-f <捕获过滤器>

设置捕捉过滤器表达式。

这个选项可以出现多次。如果第一次出现之前使用-i选项,它设置默认的捕获过滤器表达式。如果使用后-i选项,它为在最后指定的接口捕获过滤表达式-i此选项之前发生的选项。如果捕获过滤器表达式没有设置具体而言,如果所提供的默认捕获筛选表达式中使用。

-F <文件格式>

设置使用写入的输出捕获文件的文件格式-w 选项。写有输出-w选项是原始数据包数据,没有文字,所以没有-F选项来要求的文本输出。选项-F 没有价值将列出可用的格式。

-i <捕捉接口> | -

设置网络接口或管道的名称,用于现场数据包捕获。

网络接口名称应与所列出的名称之一“ tshark的-D(如上所述)“; 一个数字,所报告的“ tshark的-D “,也可以使用。如果您使用的是UNIX,“ netstat的-i “或” 使用ifconfig -a “也可能工作获得的接口名,虽然不是所有的UNIX版本都支持-a选项的ifconfig。

如果不指定接口,tshark的搜索列表界面,选择第一个非回送接口,如果有任何非Loopback接口,并选择第一个loopback接口,如果没有非环回接口。如果没有接口可言, tshark的报告错误,不执行捕捉。

管道名即可以是FIFO(命名管道)的名称或`` - ''从标准输入读取数据。从管道读取的数据必须是标准的PCAP格式。

这个选项可以出现多次。当从多个接口捕获,捕获文件将被保存在PCAP-ng的格式。

注:Win32版本的tshark的不支持从管道捕捉!

-r <INFILE>

读取数据包INFILE,可以是任何支持的捕捉文件格式(包括gzip压缩文件)。也可以使用命名管道或标准输入( - )在这里,但只能使用特定的(未压缩的)捕获的文件格式(特别是:那些可无求向后读取)。

-w <OUTFILE> | -

写入原始分组数据OUTFILE或标准输出,如果 OUTFILE为“ - ”。

注:-w提供原始数据包数据,而不是文字。如果你想文本输出需要重定向标准输出(例如,使用’>’),不使用-w 选项这一点。

-W <文件格式选项>

保存在文件中的额外信息,如果该格式支持它。例如,

-F pcapng -W?

将节省主机名解析记录以及捕获的数据包。

Wireshark的未来版本可能会采集格式自动更改为 pcapng需要。

的说法是,可能包含了下面这封信的字符串:

写网络地址解析信息(仅pcapng)

-Y <显示过滤器>

原因指定的过滤器(它使用的读/显示过滤器的语法,而不是捕获过滤器)打印数据包的解码形式或写入数据包文件之前得到应用。匹配的数据包过滤器打印或写入文件; 该匹配的数据包取决于(例如,片段),不打印,但写入文件包; 包不匹配的过滤器,也不依赖于被丢弃,而不是被印刷或书写。

使用此,而不是-R使用单通分析滤波。如果这样做两遍分析(见-2)然后只包匹配的读取滤波器(如果有的话)将被针对该过滤器进行检查。

tshark实例

tshark -i 4 -f “tcp” -w tcp.pcapng

#捕获4号网络接口的tcp数据,保存为tcp.pcapng
tshark -r "tcp.pcapng" -Y "tcp.analysis.flags"
#使用-Y指定的显示过滤器显示tcp.pcapng流量包
tshark -i 4 -f “dst port 80 and host 192.168.1.3” -T fields -e frame.number -e ip.src -e ip.dst -e tcp.window_size
#导出到达192.168.1.3主机接口4上的80端口的所有数据,并且导出的字段包括帧编号,目的和源ip和tcp窗的大小。
tshark -i 4 -Y "htpp.host" -T fields -e http.host > httphosts.txt
#导出HTTP包的Host字段值。
tshark -i 4 -qz io,phs
#导出统计数据,当按下Ctrl+C停止时,会显示统计信息。
tshark -i 4 -qz hosts
#查看整个网络中活跃的主机列表。
tshark -r "http.capng" -qz expert,notes
#导出http.capng中的专家信息中的notes信息。若只要导出专家信息中的Errors&Warnings信息可以 -qz expert,warn

参考:

《Wireshar数据包分析实战解析》

转载地址:http://ynoen.baihongyu.com/

你可能感兴趣的文章
SVN的安装和使用
查看>>
APP测试点分析
查看>>
JDK安装过程中出现“javac不是内部或外部命令”问题的解决
查看>>
Git使用教程
查看>>
数据库性能优化
查看>>
APT使用指南
查看>>
adb介绍
查看>>
Android lint相关
查看>>
WebDriver介绍
查看>>
testNG介绍
查看>>
Android Monkey 压力测试
查看>>
Jmeter基础之---jmeter基础概念
查看>>
内存分析工具 MAT 的使用
查看>>
Android Studio 分析内存泄漏-内存分析工具MAT简单应用
查看>>
Android 内存剖析 之 MAT讲解
查看>>
Android测试之Monkey和MonkeyRunner
查看>>
GET,POST,PUT,DELETE的区别
查看>>
HTTP、HTTPS、FTP和TCP的区别
查看>>
使用Fiddler对移动APP应用进行抓包总结
查看>>
移动端自动化测试框架和工具
查看>>