原创

wireshark抓包工具使用简介

温馨提示:
本文最后更新于 2021年03月11日,已超过 636 天没有更新。若文章内的图片失效(无法正常加载),请留言反馈或直接联系我

前段时间我的服务器被黑,一个挖矿软件一直在占用网络和CPU资源。

我就是使用WireShark这个抓包工具进行分析的,Linux下使用起来需要多一步动作,windows会简单一点,下面介绍一下这款软件的使用。

1、WireShark介绍

WireShark官网:https://www.wireshark.org

2、使用

选择你需要抓包的网卡:

点击 开始 ,即可记录该网卡所有的网络请求:

WireShark 主要分为这几个界面

1、Display Filter(显示过滤器)。

用于设置过滤条件进行数据包列表过滤。菜单路径:Analyze --> Display Filters。

(1)协议过滤:

 TCP,只显示TCP协议的数据包列表
 HTTP,只查看HTTP协议的数据包列表
 ICMP,只显示ICMP协议的数据包列表

(2)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的数据包列表

(3)端口过滤

port 80
src port 80
dst port 80

(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 不抓取广播数据包
ip.addr == 192.168.1.104 && tcp  抓取主机为192.168.1.104 、tcp协议的数据包

(5) Http模式过滤

http.request.method=="GET",  只显示HTTP GET方法的。

你还可以在选中的数据包中使用你想要的过滤条件,随便选中一条数据包,右击即可:

2、TCP报文格式

3、十六进制数据包

3、Windows实践

我这里用postman发起一个请求,你也可以用 ping 命令,然后过滤你的IP,比如说我这里发起一个 ping www.baidu.com然后使用ip.addr == 125.88.254.234 进行过滤。

过滤后即可得到你网卡与该IP进行网络请求的数据包。

三次握手过程:

根据No排序,可以得到最前的三个数据包请求其实是TCP的三次握手过程。

1、第一次握手

2、第二次握手

3、第三次握手

然后再下面一条,就是开始数据发送的开始了,可以看到是一个post请求:

101    6.116534    172.16.40.45    125.88.254.234    HTTP    318    POST /lastmile/tasks HTTP/1.1

四次挥手

在 HTTP 1.1 之后 ,引入了Keep-Alive,用于保持客户端的连接状态。

最后Client发送一个FIN,用来关闭Client到Server的数据传送。

SYN表示建立连接,FIN表示关闭连接,ACK表示响应,PSH表示有DATA数据传输,RST表示连接重置。

我这里结束的是一个RST标志位,正常来说是个 FIN:Set ,表示四次挥手的第一次挥手:

四次挥手的标志位:

网络五层结构

点击黑色这条数据,这里对应的是网络五层结构:

(1)Frame: 物理层的数据帧概况

(2)Ethernet II: 数据链路层以太网帧头部信息

(3)Internet Protocol Version 4: 网络层IP包头部信息

(4)Transmission Control Protocol: 传输层T的数据段头部信息,此处是TCP

(5)Hypertext Transfer Protocol: 应用层的信息,此处是HTTP协议

这里的JavaScript Object Notation: application/json 就是接口返回的内容,记录了这个接口返回的参数。

这才是真正接收到了返回参数的数据包。

post数据:

4、Linux实践

Linux需要安装一个抓包工具:tcpdump

然后执行,抓取你需要的网卡和过滤IP:

tcpdump -i eth0 '((not port 45695) and (not host 127.0.0.1) and  (not host 183.60.83.19))'

结束后会生成一个dump.pcap 文件

把抓到的包导入到WirteShark即可:

通过WireShark可以知道哪个数据源在进行网络请求,也可以通过时间进行排序归类导出,甚至可以观察HTTP请求的耗时和链路:


参考:

https://www.cnblogs.com/mq0036/p/11187138.html

正文到此结束
关注公众号 【HelloCoder】
免费领取Java学习资料
让技术,化繁为简
本文目录