流量分析笔记

在这里记一些常用的命令

WireShark过滤器

运算符

比较符:
== 等于
!= 不等于
> 大于
< 小于
>= 大于等于
<= 小于等于

逻辑操作符:
and 与
or 或
xor 异或
not 非

抓包过滤

抓取源地址为192.168.1.1,目的端口为80的流量
src host 192.168.1.1 && dst port 80

抓取192.168.1.1和192.168.1.2的流量
host 192.168.1.1 || host 192.168.1.2

不要抓取广播包
! broadcast

过滤mac地址:
ether host 00:88:ca:86:f8:0d
ether src host 00:88:ca:86:f8:0d
ether dst host 00:88:ca:86:f8:0d

过滤IP地址:
host 192.168.1.1
src host 192.168.1.1
dst host 192.168.1.1

过滤端口:
port 80
!port 80
dst port 80
src port 80

过滤协议:
arp
icmp

结合逻辑符号综合过滤
host 192.168.1.1 && port 8080

过滤IP地址

(1) ip.addr == 192.168.1.1 //只显示源/目的IP为192.168.1.1的数据包
(2) not ip.src == 1.1.1.1 //不显示源IP为1.1.1.1的数据包
(3 ip.src == 1.1.1.1 or ip.dst == 1.1.1.2 //只显示源IP为1.1.1.1或目的IP为1.1.1.2的数据包

过滤端口
(1) tcp.port eq 80 #不管端口是来源还是目的都显示80端口
(2) tcp.port == 80
(3) tcp.port eq 2722
(4) tcp.port eq 80 or udp.port eq 80
(5) tcp.dstport == 80 #只显示tcp协议的目标端口80
(6) tcp.srcport == 80 #只显示tcp协议的来源端口80
(7) udp.port eq 15000
(8) tcp.port >= 1 and tcp.port <= 80 #过滤端口范围

过滤MAC地址
(1) eth.dst == MAC地址 #过滤目标MAC
(2) eth.src eq MAC地址 #过滤来源MAC
(3)eth.addr eq MAC地址 #过滤来源MAC和目标MAC都等于MAC地址的

http请求方式过滤
(1) http.request.method == “GET”
(2) http.request.method == “POST”
(3) http.host mathes “www.baidu.com|baidu.cn” #matches可以写多个域名
(4) http.host contains “www.baidu.com” #contain只能写一个域名
(5) http contains “GET”
例如:
http.request.method ==“GET” && http contains "Host: "
http.request.method == “GET” && http contains "User-Agent: "
http.request.method ==“POST” && http contains "Host: "
http.request.method == “POST” && http contains "User-Agent: "
http contains “HTTP/1.1 200 OK” && http contains "Content-Type: "
http contains “HTTP/1.0 200 OK” && http contains "Content-Type: "

TCPdump分析

详细参数:

抓包选项

  • -c: 指定要抓取的包数量。
  • -i interface: 指定tcpdump需要监听的接口。默认会抓取第一个网络接口
  • -n :对地址以数字方式显式,否则显式为主机名,也就是说-n选项不做主机名解析。
  • -nn: 除了-n的作用外,还把端口显示为数值,否则显示端口服务名。
  • -P: 指定要抓取的包是流入还是流出的包。可以给定的值为"in"、“out"和"inout”,默认为"inout"。
  • -s len: 设置tcpdump的数据包抓取长度为len,如果不设置默认将会是65535字节。对于要抓取的数据包较大时,长度设置不够可能会产生包截断,若出现包截断,输出行中会出现"[proto]"的标志(proto实际会显示为协议名)。但是抓取len越长,包的处理时间越长,并且会减少tcpdump可缓存的数据包的数量,从而会导致数据包的丢失,所以在能抓取我们想要的包的前提下,抓取长度越小越好。

输出选项:

  • -e: 输出的每行中都将包括数据链路层头部信息,例如源MAC和目标MAC。
  • -q: 快速打印输出。即打印很少的协议相关信息,从而输出行都比较简短。
  • -X: 输出包的头部数据,会以16进制和ASCII两种方式同时输出。
  • -XX: 输出包的头部数据,会以16进制和ASCII两种方式同时输出,更详细。
  • -v: 当分析和打印的时候,产生详细的输出。
  • -vv: 产生比-v更详细的输出。
  • -vvv: 产生比-vv更详细的输出。
  • 其他功能性选项: 作用
  • -D: 列出可用于抓包的接口。将会列出接口的数值编号和接口名,它们都可以用于"-i"后。
  • -F: 从文件中读取抓包的表达式。若使用该选项,则命令行中给定的其他表达式都将失效。
  • -w: 将抓包数据输出到文件中而不是标准输出。可以同时配合"-G
  • time 选项使得输出文件每time秒就自动切换到另一个文件。可通过"-r"选项载入这些文件以进行分析和打印。
  • -r: 从给定的数据包文件中读取数据。使用"-"表示从标准输入中读取。

端口过滤

抓取所有经过ens33,目的或源端口22的网络数据:
tcpdump -i ens33 port 22
指定源端口:tcpdump -i ens33 sec port 22
指定目的端口: tcpdump -i ens33 dst port 22

网络过滤

tcpdump -i ens33 net 192.168.1.1
tcpdump -i ens33 src net 192.168.1.1 #源端口
tcpdump -i ens33 dst net 192.168.1.1 #目的端口

协议过滤

tcpdump -i ens33 arp
tcpdump -i ens33 ip
tcpdump -i ens33 tcp
tcpdump -i ens33 udp
tcpdump -i ens33 icmp

保存

tcpdump -w 1.pcap #抓所有包保存到1.pcap中然后使用wireshark分析

发表评论

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据