wireshark抓包工具使用简介
前段时间我的服务器被黑,一个挖矿软件一直在占用网络和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请求的耗时和链路:
参考: