一、wireshark基础

  • Wireshark(前称Ethereal)是一个网络封包分析软件。网络封包分析软件的功能是截取网络封包,并尽可能显示出最为详细的网络封包资料。Wireshark使用WinPCAP作为接口,直接与网卡进行数据报文交换。
  • 在过去,网络封包分析软件是非常昂贵的,或是专门属于盈利用的软件。Ethereal的出现改变了这一切。在GNUGPL通用许可证的保障范围底下,使用者可以以免费的途径取得软件与其源代码,并拥有针对其源代码修改及客制化的权利。Ethereal是全世界最广泛的网络封包分析软件之一。

wireshark和burpsuite的区别

burpsuite:抓取http/https/ws协议,可以修改包,用作中间人攻击

wireshark:抓取TCP/IP模型所有协议,不能修改包,用作流量分析

基本结构

image-20240319170419754

二、Wireshark使用

2.1、捕获过滤器

image-20240319170531326

  • 捕获过滤器的类型Type(host、net、port)
  • 方向Dir(src、dst)
  • 协议Proto(ether、ip、tcp、udp、http、icmp、ftp等)
  • 逻辑运算符(&&与、||或、!非)
2.1.1、协议过滤
  • tcp,只显示TCP协议的数据包列表
  • http,只查看HTTP协议的数据包列表
  • icmp,只显示ICMP协议的数据包列表
2.1.2、IP过滤
  • host 192.168.1.104
  • src host 192.168.1.104
  • dst host 192.168.1.104
2.1.3、端口过滤
  • port 80
  • src port 80
  • dst port 80
2.1.4、逻辑运算符
  • src host 192.168.1.104 && dst port 80 抓取主机地址为192.168.1.80、目的端口为80的数据包
  • host 192.168.1.104 || host 192.168.1.102 抓取主机为192.168.1.104或者192.168.1.102的数据包
  • !broadcast 不抓取广播数据包

2.2、显示过滤器

image-20240319171123793

2.2.1、比较操作符

比较操作符有

  • == 等于、
  • != 不等于
  • 大于 >
  • < 小于
  • 大于等于>=
  • <=小于等于
2.2.2、协议过滤
  • 比较简单,直接在显示过滤框中直接输入协议名即可。注意:协议名称需要输入小写。
  • tcp,只显示TCP协议的数据包列表
  • http,只查看HTTP协议的数据包列表
  • icmp,只显示ICMP协议的数据包列表
2.2.3、ip过滤
  • ip.src == 192.168.1.104 显示源地址为192.168.1.104的数据包列表
  • ip.dst == 192.168.1.104 显示目标地址为192.168.1.104的数据包列表
  • ip.addr == 192.168.1.104 显示源IP地址或目标IP地址为192.168.1.104的数据包列表
2.2.4、端口过滤
  • tcp.port ==80, 显示源主机或者目的主机端口为80的数据包列表。
  • tcp.srcport == 80, 只显示TCP协议的源主机端口为80的数据包列表。
  • tcp.dstport == 80,只显示TCP协议的目的主机端口为80的数据包列表。
2.2.5、Http模型过滤
  • http.request.method==”GET”
  • http.cookie == “PHPSESSID=qrq6mlhdvh4nn4j54ae77hde70”
2.2.6、逻辑运算符为 and/or/not

过滤多个条件组合时,使用and/or。比如获取IP地址为192.168.1.104的ICMP数据包表达式为ip.addr== 192.168.1.104 and icmp

2.3、包的分析

2.3.1、ICMP

简介 : 测试网络连通、主机可达 ,对应的命令就是ping
怎样获取数据包 : ping host/ip

数据包分析

image-20240319171902138

image-20240319171956392

2.3.2、HTTP

显示过滤器HTTP,右键追踪HTTP流

image-20240319172245380

可以看到请求包

image-20240319172314684

image-20240319172423634

也可以直接用来生成命令

image-20240319172448388

2.4、包的使用

在恶意流量分析过程中,经常会存在文件上传和文件下载的过程,就需要从流量里,提取并恢复原有的文件内容,进行分析研判。

2.4.1、Media type获取

如果是分段获取或分段上传,这种方法无法使用

image-20240319173021409

image-20240319173130963

下载后解压下来就可以查看所上传的东西了

2.4.1、原始数据获取

万能,但是麻烦

追踪下载或上传的HTTP流

image-20240319173356573

image-20240319173522147

这种方式保存的文件无法直接打开,因为会多出HTTP请求头,可以手动剔除或者借助binwalk提取文件

将所选的删除掉,保存后就可以打开压缩包了。

17

  • Binwalk
sudo binwalk --run-as=root --dd="zip" 1.zip

image-20240319174729307

2.4.2、导出对象

只有下载文件才能使用这种方法,且wireshark识别的可能不准

image-20240319175813421

image-20240319175822927

三、tcpdump

tcpdump是Unix 下的一个 网络数据采集分析工具,也就是我们常说的抓包工具。
与它功能类似的工具有 wireshark ,不同的是,wireshark 有图形化界面,而 tcpdump 则只有命令行。

3.1、tcpdump基础语法

tcpdump [option] [proto] [type] [direction]
  1. option 可选参数:将在后边一一解释。
  2. proto 类过滤器:根据协议进行过滤,可识别的关键词有: tcp, udp, icmp, ip, ip6, arp, rarp,ether,wlan,fddi, tr, decnet
  3. type 类过滤器:可识别的关键词有:host, net, port, portrange,这些词后边需要再接参数。
  4. direction 类过滤器:根据数据流向进行过滤,可识别的关键字有:src, dst,同时你可以使用逻辑运算符进行组合,比如 src or dst

3.2、使用案例

抓取所有经过eth1网卡的流量
tcpdump -i eth1

抓取经过eth1网卡的流量,且源地址或目的地址IP是192.168.80.128
tcpdump -i eth1 host 192.168.80.128

抓取经过eth1网卡的流量,且源地址或目的地址IP是192.168.80.128,且源端口或目的端口是10881
tcpdump -i eth1 host 192.168.80.129 and port 10881

抓取源端口或目的端口是80或8080的流量
tcpdump port 80 or 8080

抓取源端口或目的端口是1-1024的流量
tcpdump portrange 1-1024

抓取经过eth1网卡的流量,且源地址或目的地址IP是192.168.80.128,且源端口或目的端口是10881, 直接显示IP地址
tcpdump -n -i eth1 host 192.168.80.129 and port 10881

抓取一个来自192.168.80.129,发往任意主机的3389端口的包
tcpdump -n src host 192.168.80.129 anddst port 3389


抓取一个来自192.168.80.129,发往任意主机的3389端口和22端口的包
tcpdump -n 'src host 192.168.80.129 and (dst port 3389 or 22)'

抓取icmp流量
tcpdump -n icmp

导出文件,导出的pcap文件可以使用wireshark分析
tcpdump -i eth1 host 192.168.80.129 and port 10881 -w test.pcap


抓取所有的GET请求包 tcpdump -vvAls0 | grep 'GET'

-vvAls0:这些选项传递给 tcpdump 以实现特定的行为:
-vv:增加详细度级别,提供更详细的输出。
-A:以 ASCII 格式打印捕获的数据包,以便更好地阅读。
-l:使 tcpdump 缓冲区减少,并更频繁地将输出刷新到终端。
-s0:将快照长度(要捕获的字节数)设置为0,这意味着它捕获完整的数据包。\
抓取所有的POST请求包 tcpdump -vvAls0 | grep 'POST'