wireshark基本使用

发布时间 2023-04-09 09:39:10作者: gvpn

Wireshark 是一种开源、跨平台的网络数据包分析工具,能够嗅探和调查实时流量并检查数据包捕获 (PCAP)。它通常 被用作最好的数据包分析工具之一。

数据包过滤操作

ip过滤器

IP 过滤器帮助分析人员根据来自数据包(OSI 模型的网络层)的 IP 级别信息过滤流量。这是 Wireshark 中最常用的过滤器之一。这些过滤器过滤网络级信息,如 IP 地址、版本、生存时间、服务类型、标志和校验和值。

筛选                                描述
ip                              显示所有 IP 数据包。
ip.addr == 10.10.10.111         显示所有包含 IP 地址 10.10.10.111 的数据包。
ip.addr == 10.10.10.0/24        显示所有包含来自 10.10.10.0/24 子网的 IP 地址的数据包。
ip.src == 10.10.10.111          显示所有来自 10.10.10.111 的数据包
ip.dst == 10.10.10.111          显示发送到 10.10.10.111 的所有数据包

TCP和UDP过滤器

TCP过滤器可帮助分析人员根据来自数据包(OSI 模型的传输层)的协议级信息过滤流量。这些过滤器过滤传输协议级别的信息,如源端口和目标端口、序列号、确认号、窗口大小、时间戳、标志、长度和协议错误。

筛选 描述 筛选 表达
tcp.port == 80 查看所有80端口的 TCP数据包 udp.port == 53 显示所有端口为 53 的UDP数据包
tcp.srcport == 1234 显示来自端口 1234 的所有TCP数据包 udp.srcport == 1234 显示所有来自端口 1234 的UDP数据包
tcp.dstport == 80 显示发送到端口 80 的所有TCP数据包 udp.dstport == 5353 显示发送到端口 5353 的所有UDP数据包

应用层http|dns

应用层协议过滤器帮助分析人员根据来自数据包(OSI 模型的应用层)的应用协议层信息过滤流量。这些过滤器根据协议类型过滤特定于应用程序的信息,例如有效负载和链接数据。

筛选 描述 筛选 表达
http 显示所有HTTP数据包 dns 显示所有DNS数据包
http.response.code == 200 显示所有带有HTTP响应代码“200”的数据包 dns.flags.response == 0 显示所有DNS请求
http.request.method == "GET" 显示所有HTTP GET 请求 dns.flags.response == 1 显示所有DNS响应
http.request.method == "POST" 显示所有HTTP POST 请求 dns.qry.type == 1 显示所有DNS “A”记录

分析 --> 显示过滤器菜单表达式 :查看更多过滤语法

高级过滤

contains

在数据包中搜索一个值。它区分大小写,并通过关注特定字段提供与“查找”选项类似的功能。

例子        查找所有“Apache”服务器。
流程        列出所有数据包的“服务器”字段包含“Apache”关键字的HTTP数据包。
用法        http.server contains "Apache"

matches

搜索正则表达式的模式。它不区分大小写,复杂的查询有一定的误差范围。

例子        查找所有 .php 和 .html 页面。
流程        列出所有 数据 包的“主机”字段匹配关键字“.php”或“.html”的HTTP数据包。
用法        http.host matches "\.(php|html)"

in

搜索特定范围/范围内的值或字段。

例子        查找所有使用端口 80、443 或 8080 的数据包。
流程    列出数据包的“端口”字段值为 80、443 或 8080 的所有TCP数据包。
用法        tcp.port in {80 443 8080}

upper

将字符串值转换为大写。

例子        查找所有“APACHE”服务器。
流程        将所有 HTTP 数据包的“服务器”字段转换为大写并列出包含“APACHE”关键字的数据包。
用法        upper(http.server) contains "APACHE"

lower

将字符串转化为小写

string

将非字符串值转化为字符串。

例子        找出所有奇数帧
流程        将所有“帧编号”字段转换为字符串值,并列出以奇数结尾的帧。
用法        string(frame.number) matches "[13579]$"

Wireshark:流量分析

nmap扫描

Nmap 是一种行业标准工具,用于映射网络、识别实时主机和发现服务。由于它是最 常用的网络扫描工具之一,安全分析师应该识别使用它创建的网络模式。

  • tcp连接扫描
  • syn扫描
  • udp扫描

TCP——flag

标志位说明:https://www.cnblogs.com/-Lucky-/p/17213717.html

笔记 wireshark 过滤器
全局搜索 tcp udp
只有 SYN 标志 tcp.flags == 2
SYN 标志已设置。其余位并不重要 tcp.flags.syn == 1
只有 ACK 标志 tcp.flags == 16
设置 ACK 标志。其余位并不重要 tcp.flags.ack == 1
只有 SYN、ACK 标志 tcp.flags == 18
SYN 和 ACK 已设置。其余位并不重要 (tcp.flags.syn == 1) and (tcp.flags.ack == 1)
只有 RST 标志 tcp.flags == 4
RST 标志已设置。其余位并不重要 tcp.flags.reset == 1
只有 RST、ACK 标志 tcp.flags == 20
RST 和 ACK 被设置 其余位并不重要 (tcp.flags.reset == 1) and (tcp.flags.ack == 1)
只有 FIN 标志 tcp.flags == 1
FIN 标志已设置。其余位并不重要 tcp.flags.fin == 1

TCP连接扫描,三次握手

tcp端口开放

SYN -->
<-- SYN,ACK
ACK -->

SYN -->
<-- SYN, ACK
ACK -->
RST, ACK -->

tcp端口关闭

SYN -->
<-- RST, ACK

捕获 TCP连接扫描模式

tcp.flags.syn==1 and tcp.flags.ack==0 and tcp.window_size > 1024

SYN扫描

端口开放
SYN -->
<-- SYN,ACK
RST-->
端口关闭
SYN -->
<-- RST,ACK

捕获 TCP SYN 扫描模式

tcp.flags.syn==1 and tcp.flags.ack==0 and tcp.window_size <= 1024

UDP扫描, 无连接

端口开放
UDP packet -->

关口关闭
UDP packet -->
ICMP Type 3, Code 3 message. (Destination unreachable, port unreachable)

捕获 UDP扫描模式

icmp.type==3 and icmp.code==3

示例

TCP 连接扫描的总数是多少
tcp.flags.syn==1 and tcp.flags.ack==0 and tcp.window_size > 1024

有多少“UDP close port”消息?
icmp.type==3 and icmp.code==3

ARP欺骗(中间人攻击)

ARP 协议或 地址解析协议( ARP ) 是一种允许设备在网络上识别自己的技术 。地址解析协议中毒(也称为ARP欺骗或中间人 (MITM) 攻击)是一种涉及通过向默认网关发送恶意 ARP 数据包来干扰/操纵网络的攻击。最终目的是操纵“IP转MAC地址表”,嗅探目标主机的流量。

全局搜索:arp
arp请求:arp.opcode == 1
arp响应:arp.opcode == 2
arp扫描:arp.dst.hw_mac==00:00:00:00:00:00
可能的ARP欺骗检测:arp.duplicate-address-detected or arp.duplicate-address-frame
检测到可能的ARP泛洪:((arp) && (arp.opcode == 1)) && (arp.src.hw_mac == target-mac-address)

识别主机

DHCP

DHCP 协议,或 动态主机 配置协议(DHCP), 是负责管理自动IP地址和 所需 通信参数分配的技术。

全局搜索        dhcp
DHCP Request数据包包含主机名信息    dhcp.option.dhcp == 3
DHCP ACK数据包表示已接受的请求        dhcp.option.dhcp == 5
DHCP NAK数据包代表被拒绝的请求        dhcp.option.dhcp == 6

DHCP Request 选项

主机名,客户端mac地址

dhcp.option.hostname contains 'keyword'

DHCP ACK 选项

域名

dhcp.option.domain_name contains "keyword"

隧道流量

ICMP

Internet 控制消息协议 (ICMP) 旨在诊断和报告网络通信问题。它在错误报告和测试中被广泛使用。由于它是一种受信任的网络层协议,有时它被用于拒绝服务(DoS)攻击;此外,攻击者还会将其用于数据泄露和 C2 隧道活动。

全局搜索:icmp

数据包长度,目标地址,封装协议

data.len > 64 and icmp

DNS

域名系统 ( DNS ) 旨在将 IP 域地址转换/转换为 IP 地址。它也被称为互联网电话簿。由于它是 Web 服务的重要组成部分,因此被普遍使用和信任,因此经常被忽略。因此,对手将其用于数据泄露和 C2 活动。

全局搜索:dns


dns contains "dnscat"
dns.qry.name.len > 15 and !mdns

明文分析协议ftp

文件传输协议 ( FTP ) 旨在轻松传输文件,因此它侧重于简单性而非安全性。

全局搜索    ftp

x1x:信息请求响应
x2x:连接消息
x3x:身份验证消息

200标识命令成功

x1x
211:系统状态
212:目录状态
213:文件状态

ftp.response.code == 211

x2x
220:服务就绪
227:进入被动模式
228:长被动模式
229:扩展被动模式

ftp.response.code == 227

x3x
230:用户登录
231:用户注销
331:有效用户名
430:无效用户名或密码
530:没有登陆,密码无效

ftp.response.code == 230

ftp.request.command == "USER"
ftp.request.command == "PASS"   判断 FTP 请求的命令是否为 "PASS"
ftp.request.arg == "password"   判断 FTP 请求中的参数是否为 "password"

列出失败的登录尝试
ftp.response.code == 530
列出目标用户名
(ftp.response.code == 530) and (ftp.response.arg contains "username")
列出静态密码的目标
(ftp.request.command == "PASS" ) and (ftp.request.arg == "password")

明文协议分析 HTTP

超文本传输​​协议 ( HTTP ) 是一种基于明文的请求-响应和客户端-服务器协议。请求/提供网页是标准的网络活动类型,默认情况下,它不会被任何网络边界阻止。由于未加密和网络流量的骨干,HTTP 是流量分析中必须知道的协议之一

全局 http,http2

GET请求         http.request.method == GET
POST请求        http.request.mothod == POST
所有请求        http.request

http响应状态码
http.response.code == xxx

用户代理
http.user_agent contains "xxxx"

指向从服务器请求的资源
http.request.url contains "xxxx"

服务器      http.server contains "apache"
主机名      http.host contains "keyword"

还有一些参考:https://tryhackme.com/module/wireshark