关于wireshark

举报
黄生 发表于 2022/10/06 12:28:01 2022/10/06
【摘要】 集线器,很老的,可能现在看不到了,都是交换机了。它会产生很多不必要的网络流量。交换机,有CAM(Content Addressable Memory)表,每个连接设备的2层地址都存在里面。这样一个数据包被传输时,读取包中的第2层的头部信息,使用CAM表作为参考,决定发往哪个或哪些端口,就降低了网络流量。路由器在网络间转发数据包,使用第3层地址(如IP)来标识网络上的设备。家庭里可能只需要一个...

集线器,很老的,可能现在看不到了,都是交换机了。它会产生很多不必要的网络流量。
交换机,有CAM(Content Addressable Memory)表,每个连接设备的2层地址都存在里面。这样一个数据包被传输时,读取包中的第2层的头部信息,使用CAM表作为参考,决定发往哪个或哪些端口,就降低了网络流量。
路由器在网络间转发数据包,使用第3层地址(如IP)来标识网络上的设备。家庭里可能只需要一个小的,大的企业网络可以有几个路由器分布在不同部门,再连接到汇聚路由器。

网卡驱动识别到包不是给自己的,就丢弃,不上报给CPU处理,这样可以提高性能。但如果做流量捕获,不想丢掉线路上传输的任何可能的信息,那就使用网卡的混杂模式。

交换式网络里,可以使用端口镜像,将一个或多个端口上的所有通信都镜像到另一个端口上。
或者找个集线器,专门用来输出流量(只连接对流量感兴趣的设备),算是排上用场了。当然目标设备会由全双工变成半双工。

再或者,使用ARP缓存污染技术,向客户端系统发生虚假地址的数据包,来截获网络流量,也可以用于DoS攻击。工具是Cain&Abel,安全工具,就像刀一样,用的不好就容易造成伤害。

如果是大一点的网络,在路由网络环境里,网络地图就很重要了,这样才能合理的布点。

最早是叫Ethereal,1998年以GPL发布,8年后,开发人跳槽了,公司有Ethereal的使用权,协商不一致,开发人Combs在2006年重新取名Wireshark。

看一下背景色规则:
image.png

Berkeley Packet Filter(BPF)语法很重要,它用来创建过滤器表达式
image.png

如果类型限定没有指定,默认就是host

BPF还可检测协议头中的字节来过滤。
比如最简单的,只想看echo请求(类型8),用icmp[0]==8
image.png

当然可以指示从哪个偏移开始,多长的字节,比如icmp[0:2]。奇怪的是0x0800为什么is not a valid byte string?就是多于一个字节都会报这个错。
这是因为显示过滤器不支持,而捕获过滤器是支持这样的。总之是有点奇怪,可能是4.0版本的小bug吧

在比如TCP头偏移13的字节,字节中每个位都是用于标志位,所以要这样写
tcp[13]&4==4 #代表RST标志
tcp[13]&8==8 #代表PSH标志
同样的,32URG, 16ACK, 2SYN, 1FIN.
tcp[13]==18 是tcp syn-ack数据包

显示过滤器有一个表达式功能,非常的合适新手
image.png

当然熟悉了之后,就要离开新手村,直接在窗口输入了。比如frame.len<=128看小于某字节数的数据包。

逻辑操作符 xor 有且仅有一个条件被满足
常用的比如 !tcp.port==3389 排除RDP流量

内置的显示过滤器,当然可以添加自己的方便使用
image.png

端点endpoint 是网络上能够发送或者接收数据的一台设备
2个端点之间的通信为会话

名称解析,当然有优点也有缺点。缺点之一是解析是动态的,不会保存在捕获文件里。支持定义wireshark hosts文件来手工标识。

wireshark的优势是对于上千种广泛的协议的解析的支持,而且它是开源软件,可以给开发者一个开发协议解析/解剖器(protocol dissectors)的框架。
当wireshark依据自己的标准识别错误时,可以用decode as为特殊情况选择协议。
可以查看源码dissectors/packets-protocolname.c

识别并进行流跟踪,将2个端点的流量按某种类型的流(比如TCP流)的顺序排列,这个挺好。如果要查看SSL/TLS流的明文,需要做一些配置,当然要有私钥才行。
image.png

packet length. 想一下协议头的大小,以太网报头是14(6MAC*2+2类型+含4个CRC),IP报头至少20、没有数据及选项的TCP也是20,所以典型的TCP控制数据包,大约54字节。
另外还有I/O图表,就是流量趋势变化图
还有流量图(Flow Graph),可视化连接,可不错了。

专家信息,暂时没怎么明白它用处

tshark一般随wireshark一起安装了,是命令行的版本。解析方面(第7层)比tcpdump要强,另外-z是统计选项,tcpdump是没有的。-z help可看帮助

一个设备的IP是可以改变的,所以,免费的Gratuituos ARP会发送到网络中,强制收到他的所有设备用新的IP和MAC映射去更新缓存。它和ARP请求很像,它的发送方和接受方的IP地址相同,目标MAC是广播,因为不是由其他设备请求,却收到,所以叫免费。比如当设备IP地址改变时,会生成它,一些操作系统也会在启动时进行它的发送。

IP地址和网络掩码也会被写成无类型域间选路(Classless Inter-Domain Routing CIDR)的形式,如10.10.1.22/16 16表示网络部分的位数

TTL可以避免数据包在路由器之间持续循环,随着循环增多,可用带宽减少,DoS出现。
比如ping一个IP,在这个IP抓包,TTL=114,当这个包发出时TTL应该是设置的128,tracert可以看到中间进过多少路由:
image.png

image.png

如果ip数据包大于网络接口MTU,那么这个数据包会被分片。当然,网络上被分片的包不怎么常见。
IPv6的第一个版本RFC2460与1998年发布。地址是128位,是Ipv4的4倍,一般用8组2字节来表示。

image.png

类型作为分类,代码可看做子类。比如类型3表示目标不可达,而code3可明确为端口不可达。可以用选项来增加ping的数据填充,这样可以检测强制分片。

Tcp端口就像是老式电话总机上的插口。一个总机操作员会监视着一个面板上的指示灯和插头,当指示灯亮起的时候,它就会连接这个呼叫者,问他想要和谁通话,然后插一根电缆,将他和他的目的位置连接起来。每次呼叫都需要有一个源端口(呼叫者)和一个目的端口(接收者)。

RST会在尝试通信序列的开始或者在通讯的中途来终止通讯。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。