WireShark自学
WrieShark介绍
Wrieshark(前身Ethereal)是一个网络包分析工具。该工具主要是用来捕获网络数据包,并自动解析数据包,为用户纤细显示数据包的详细信息,供用户对数据包进行分析
下载链接:
Wireshark
WrieShark的应用
网络管理员使用WrieShark来检测网络问题
网络安全工程师 使用Wrieshark来检查资讯安全相关问题
开发人员 使用Wreshark来为新的通讯协议除错
普通使用者 使用Wireshark来学习网络协议的相关知识
当然,有的人也会故意的拿它去寻找一些敏感信息 侵犯别人的隐私
常见协议包的抓取
- ARP协议
- ICMP协议
- TCP协议
- UDP协议
- DNS协议
- HTTP协议
WrieShark常用手段
打开的主界面是这样的 我们如果是通过网线连接外网就用以太网抓包
如果是wifi 就用WLAN来抓包
混杂模式 和 普通模式
混杂模式
接受所有经过网卡的数据包,包括不是发给本机的包,即不验证MAC地址
打开方式
普通模式
普通模式下的网卡只接受发给本机的包(包括广播包) 传递给上层程序,其他的包一律丢弃
一般来说 混杂模式不会影响网卡的正常工作,多在网络监听工具上面使用。
过滤器
过滤器类型
捕获过滤器
捕获期间过滤的数据包
语法:
- protocol tcp
- direction src
- hosts 192.168.1.1
- value 80
- Logical operator and
- Expressions tcp dst 202.164.30.1
显示过滤器
从捕获显示中隐藏的数据包
- protocol http
- String 1 dest
- String 2 ip
- Comparison Operator ==
- value 192.168.1.1
- logical operator and
- Expressions tcp port
语法
过滤数据包
Operator | Description | Example |
---|---|---|
eq or == | Equal | ip.dest == 192.168.1.1 |
ne or != | Not Equal | ip.dest != 192.168.1.1 |
gt or > | Greater than | frame.len > 10 |
lt or < | Less than | frame.len <10 |
ge or >= | Greater than or Equal | frame.len >= 10 |
le or <= | Less than or Equal | frame.len<=10 |
逻辑符号
- and or && 逻辑与 所有条件都应该匹配
- or or || 逻辑或 所有条件或其中一个条件应匹配
- xor or ^^ 逻辑异或 互斥交替 – 两个条件只能匹配其中一个,而不是同时匹配
- not or ! NOT(否定) 不等于
- [n] […] 子串运算符 过滤特定单词或文本
捕获到的数据的列的含义
No. 从数据包捕获开始算起的帧号
Time 从第一帧算起的秒数
Source (src) 源地址,通常是 IPv4、IPv6 或以太网地址
Destination (dst) 目的地地址
Protocol 以太网帧、IP 数据包或 TCP 段中使用的协议
Length 帧的长度(以字节为单位)
常见的 Protocols - Values
ether, fddi, ip, arp, rarp, decnet, lat, sca, moprc, mopdl, tcp and udp
键盘快捷键
常用的过滤命令
用法 | 过滤语法 |
---|---|
Wireshark 按 IP 过滤 | ip.addr == 10.10.50.1 |
按目标 IP 过滤 | ip.dest == 10.10.50.1 |
按源 IP 过滤 | ip.src == 10.10.50.1 |
按 IP 范围过滤 | ip.addr >= 10.10.50.1 and ip.addr <= 10.10.50.100 |
按多个 IP 过滤 | ip.addr == 10.10.50.1 and ip.addr == 10.10.50.100 |
过滤掉/排除 IP 地址 | !(ip.addr == 10.10.50.1) |
过滤IP子网 | ip.addr == 10.10.50.1/24 |
按多个指定的 IP 子网过滤 | ip.addr == 10.10.50.1/24 and ip.addr == 10.10.51.1/24 |
按协议过滤 | dns http ftp ssh arp telnet icmp |
按端口 (TCP) 过滤 | tcp.port == 25 |
按目标端口 (TCP) 过滤 | tcp.dstport == 23 |
按 IP 地址和端口过滤 | ip.addr == 10.10.50.1 and Tcp.port == 25 |
按网址过滤 | http.host == “host name” |
按时间戳过滤 | frame.time >= “June 02, 2019 18:04:00” |
过滤SYN标志 | tcp.flags.syn == 1 tcp.flags.syn == 1 and tcp.flags.ack == 0 |
Wireshark 信标过滤器 | wlan.fc.type_subtype = 0x08 |
Wireshark 广播过滤器 | eth.dst == ff:ff:ff:ff:ff:ff |
Wireshark多播过滤器 | (eth.dst[0] & 1) |
主机名过滤器 | ip.host = hostname |
MAC地址过滤器 | eth.addr == 00:70:f4:23:18:c4 |
RST 标志过滤器 | tcp.flags.reset == 1 |
常用协议分析
ARP 协议分析
待补充
ICMP协议分析
待补充
TCP三次握手 四次挥手协议
这百年的47.99.129.169是我目前在使用的服务器 用xshell连接的时候 可以看到三次握手协议捕捉到的流程
首先是客户端向服务器发送一个同步请求 SYN
然后服务器向客户端发送一个同步和确认的答复
最后客户端回复确认 两端建立连接
这里为啥只有三次挥手?
四次挥手居然变成了三次挥手了
总结 就是当双方没有数据往来的时候 四次挥手会被优化成三次
链接
HTTP协议分析
待补充
资料
https://cdn.comparitech.com/wp-content/uploads/2019/06/Wireshark-Cheat-Sheet.pdf