网站制作公司北京华网,专门做投票的网站有哪些,厦门网站建设案例,免费云电脑主机linux常用网络工具汇总 6. 抓包工具6.1 wireshark安装界面介绍使用过滤器TCP协议示例关于wireshark的缺点 6.2 tcpdump命令格式关键字使用关于tcpdump的缺点 6.3 fiddler6.4 burpsuite 6. 抓包工具
6.1 wireshark
Wireshark#xff08;前称Ethereal#xff09;是一个网络封… linux常用网络工具汇总 6. 抓包工具6.1 wireshark安装界面介绍使用过滤器TCP协议示例关于wireshark的缺点 6.2 tcpdump命令格式关键字使用关于tcpdump的缺点 6.3 fiddler6.4 burpsuite 6. 抓包工具
6.1 wireshark
Wireshark前称Ethereal是一个网络封包分析软件。网络封包分析软件的功能是截取网络封包并尽可能显示出最为详细的网络封包资料。Wireshark使用WinPCAP作为接口直接与网卡进行数据报文交换。
这款软件在windows和macOS中使用较多但也支持linux毕竟提供了源码。
安装
下载地址 官网一定要看好是官网才下载哦 注意win10以前的系统安装4.0的版本win10及以后版本安装4.2版本具体看下说明 安装期间会提示安装Npcap勾选安装即可如果已安装了可以忽略 Npcap是一组网络通信工具集提供了捕获网络数据包的功能。通过这些工具用户可以截获、分析和过滤网络上传输的数据包对于网络安全、系统开发和网络故障排查等领域有着重要的应用。 安装完成会提示选择网卡
界面介绍
wireshark和大多数软件相似WireShark 界面包含一些常用的菜单和工具栏等详细包括
菜单栏工具栏过滤器数据包列表面板数据包详细信息面板数据包字节信息面板 抓包按钮 下面我们来详细了解一下wireshark的使用方法
使用
wireshark有几种使用场景包括
直接抓取流量包分析导入流量包分析可以通过tcpdump等工具在linux导出流量包数据
这里如果抓取的流量包后缀名是.cap或.pcap在导入的时候可以看到一个小鲨鱼鳍标识的文件比较方便。 下面我们从一个ping示例开始简单介绍如何使用wireshark
使用抓取的机器ping一台机器尽量选择能ping的通的这里我们使用192.168.202.129 ping 192.168.202.128使用wireshark开始抓取流量包在过滤器添加筛选条件icmp后面会详细介绍过滤器一般就可以看到成对的流量包request和reply
打开一个request请求包查看详细信息 我们知道ICMP协议使用IP协议的服务进行传输属于网络层的协议。在IPv4中ICMP报文是在IP数据报内被封装传输的。具体来说IPv4数据报的协议字段值为1表示该报文携带了ICMP消息。这表明ICMP与IPv4之间的紧密联系其中ICMP利用IPv4的传输机制来发送和接收控制消息 在本例的IPv4Internet Protocol Version 4协议中我们看到
ProtocolICMP1
Source Address192.168.202.129
Destination Address192.168.202.128在ICMPInternet Control Message Protocol我们可以看到一些类型信息比如Type8Echopingrequest校验信息等等
在reply回复包中我们可以看到 在IPv4中我们可以看到Protocol、Source Address和Destination Address信息和预期一致 在ICMP中我们看到Type、校验信息和时间戳等等
过滤器
抓包过滤器在抓包前使用它的过滤有一个基本的语法格式BPF语法格式。
BPF(全称 Berkeley Packet Filter)中文叫伯克利封包过滤器它有四个核心元素类型、方向、协议 和 逻辑运算符。 类型Type主机(host)、网段(net)、端口(port)方向Dir源地址(src)、目标地址(dst)协议Proto各种网络协议比如tcp、udp、http逻辑运算符与( )、或( || )、非( !)四个元素可以自由组合比如
src host 192.168.31.1抓取源IP为 192.168.31.1 的数据包
tcp || udp抓取 TCP 或者 UDP 协议的数据包
显示过滤器在抓包后或者抓包的过程中使用。 显示过滤器的语法包含5个核心元素IP、端口、协议、比较运算符和逻辑运算符。 IP地址ip.addr、ip.src、ip.dst端口tcp.port、tcp.srcport、tcp.dstport协议tcp、udp、http比较运算符 !逻辑运算符and、or、not、xor(有且仅有一个条件被满足)五个核心元素可以自由组合比如 ip.addr 192.168.32.121显示IP地址为 192.168.32.121 的数据包 tcp.port 80显示端口为 80 的数据包
ip.dst192.168.202.129 and icmp目的地址是192.168.202.129并且使用icmp协议
TCP协议示例
本节将使用wireshark演示TCP协议的三次握手和四次挥手的过程
在虚拟机安装nginx开启web服务
[rootnode-252 ~]# systemctl start nginx
[rootnode-252 ~]# ss -nlput|grep -w 80
tcp LISTEN 0 128 *:80 *:* users:((nginx,pid2173,fd6),(nginx,pid2172,fd6))打开wireshark并设置过滤器
tcp and tcp.port 80网页访问服务器80端口 查看wireshark抓取信息
下面使用wireshark辅助我们详细分析TCP建立连接和断开连接的过程
我们知道TCP建立连接的过程三次握手包括 服务器和客户端建立连接之前服务器均处于LISTEN状态 一. 客户端向服务器发送连接请求SYN [第一次握手]
8 2.484246 192.168.202.1 192.168.202.128 TCP 66 51613 → 80 [SYN] Seq0 Win8192 Len0 MSS1460 WS256 SACK_PERM客户端处于状态是SYN_SENT发送SYN包seq0 服务器处于LISTEN状态 二. 服务器向客户端发送连接响应SYN, ACK [第二次握手]
9 2.484397 192.168.202.128 192.168.202.1 TCP 66 80 → 51613 [SYN, ACK] Seq0 Ack1 Win29200 Len0 MSS1460 SACK_PERM WS128服务器处于 SYN_RCVD状态服务端收到客户端的SYN包并发送服务端SYN ACK包之后等待客户端对连接请求的确认(ACK包)此时服务器向客户端发送的包seq0ackseq(客户端的seq)11 三. 客户端对连接请求的确认ACK [第三次握手]
10 2.484504 192.168.202.1 192.168.202.128 TCP 54 51613 → 80 [ACK] Seq1 Ack1 Win65536 Len0服务器接收到客户端回复的包后服务器和客户端处于连接状态 客户端向服务器回复的ACK包ACKseq服务器seq11这里一直用01如果觉得迷糊可以查看seq和ACK的原始数据(raw)seqack(服务器的seq)11 此时服务器和客户端处于连接状态ESTABLISH
然后我们看到一些HTTP协议的相关内容
11 2.485264 192.168.202.1 192.168.202.128 HTTP 529 GET / HTTP/1.1
12 2.485469 192.168.202.128 192.168.202.1 TCP 60 80 → 51613 [ACK] Seq1 Ack476 Win30336 Len0
13 2.494322 192.168.202.128 192.168.202.1 HTTP 235 HTTP/1.1 304 Not Modified
14 2.696190 192.168.202.128 192.168.202.1 TCP 235 [TCP Retransmission] 80 → 51613 [PSH, ACK] Seq1 Ack476 Win30336 Len181这里由于我们之前测试访问过这个网页浏览器在本地生成了缓存。所以显示未修改我们把nginx首页更新下内容
[rootnode-252 ~]# echo hello,this is tcp status show /usr/share/nginx/html/index.html再次抓取
3077 2117.746787 192.168.202.1 192.168.202.128 HTTP 529 GET / HTTP/1.1
3078 2117.749914 192.168.202.128 192.168.202.1 TCP 60 80 → 56888 [ACK] Seq1 Ack476 Win30336 Len0
3079 2117.750087 192.168.202.128 192.168.202.1 TCP 290 80 → 56888 [PSH, ACK] Seq1 Ack476 Win30336 Len236 [TCP segment of a reassembled PDU]
3080 2117.750222 192.168.202.128 192.168.202.1 HTTP 84 HTTP/1.1 200 OK (text/html)我们看到服务器向客户端通过TCP的数据包[PSH, ACK]发送了一些内容打开第四条记录可以看到如下内容 看到最后一行确实是我们修改的内容
TCP断开连接的过程四次挥手包括 一. 由于客户端长时间未访问服务器所以服务器主动断开连接 [第一次挥手]
3085 2122.759948 192.168.202.128 192.168.202.1 TCP 60 80 → 56888 [FIN, ACK] Seq267 Ack476 Win30336 Len0服务器向客户端发送FIN报文此时Seq267 Ack476并处于FIN_WAIT_1状态 二. 客户端收到连接释放报文段FIN报文后确认可以断开并向服务器发送ACK应答报文 [第二次挥手]
3086 2122.760042 192.168.202.1 192.168.202.128 TCP 54 56888 → 80 [ACK] Seq476 Ack268 Win65280 Len0客户端向服务器发送的回复报文包括SeqAck(服务器)476 AckSeq1268 服务器接收到客户端的回复报文后状态切换为FIN_WAIT_2 三. 确认无数据传输或数据传输完毕后客户端向服务器发送一个FINACK结束响应报文 [第三次挥手]
3087 2122.760119 192.168.202.1 192.168.202.128 TCP 54 56888 → 80 [FIN, ACK] Seq476 Ack268 Win65280 Len0在发送完成ACK报文后客户端还可以继续完成业务数据的发送待剩余数据发送完成后或者CLOSE-WAIT关闭等待截止后客户端会向服务器发送一个FIN,ACK结束响应报文表示被动断开方的数据都发送完了然后客户端进入LAST_ACK状态。 Seq476 Ack268这里的序列号和确认号和第二次挥手相同 四. 服务器发送最后的确认报文 [第四次挥手]
3088 2122.760245 192.168.202.128 192.168.202.1 TCP 60 80 → 56888 [ACK] Seq268 Ack477 Win30336 Len0主动断开方收在到FINACK断开响应报文后还需要进行最后的确认向被动断开方发送一个ACK确认报文然后自己就进入TIME_WAIT状态等待超时后最终关闭连接。处于TIME_WAIT状态的主动断开方在等待完成2*MSL的时间后如果期间没有收到其他报文则证明对方已正常关闭主动断开方的连接最终关闭。 Seq268客户端Ack Ack477客户端Seq1 关于wireshark的缺点
Wireshark的缺点主要包括
学习曲线较陡要灵活使用Wireshark需要具备一定的网络基础知识对于初学者来说这可能会构成一定的难度。HTTPS数据包分析限制由于Wireshark是在链路层获取数据包信息因此无法分析加密的HTTPS数据包内容。虽然可以对HTTPS数据包进行解密但这需要一定的操作复杂度并且可能耗费大量时间。 - 企业级环境中效率低下在现代企业级环境中使用Wireshark通过传统方式进行快速采集和分析数据包尤其是涉及业务、应用及用户性能问题的智能告警和关联分析时效率低下且某些功能无法实现。
6.2 tcpdump
tcpdump是一个网络数据采集分析工具可以将网络中传送的数据包完全截获下来提供分析。它支持针对网络层、协议、主机、网络或端口的过滤并提供and、or、not等逻辑语句来帮助你去掉无用的信息。 一般使用linux作为服务器操作系统并不会配置图形界面所以为了直观分析网络数据采集结果大都是通过wiresharktcpdump组合使用即通过tcpdump采集数据通过wireshark进行分析。 安装
apt install -y tcpdump #debian系列
yum install -y tcpdump #redhat系列命令格式
SYNOPSIStcpdump [ -AbdDefhHIJKlLnNOpqStuUvxX# ] [ -B buffer_size ][ -c count ][ -C file_size ] [ -G rotate_seconds ] [ -F file ][ -i interface ] [ -j tstamp_type ] [ -m module ] [ -M secret ][ --number ] [ -Q|-P in|out|inout ][ -r file ] [ -V file ] [ -s snaplen ] [ -T type ] [ -w file ][ -W filecount ][ -E spiipaddr algo:secret,... ][ -y datalinktype ] [ -z postrotate-command ] [ -Z user ][ --time-stamp-precisiontstamp_precision ][ --immediate-mode ] [ --version ][ expression ]tcpdump [协议类型] [源或目标] [主机名称或IP] [or/and/not/!条件组合] [源或目标] [主机名或IP] [or/and/not/!条件组合] [端口] [端口号] …… [or/and/not/!条件组合] [条件]常用参数
-a #将网络地址和广播地址转变成名字
-A #以ASCII格式打印出所有分组并将链路层的头最小化
-b #数据链路层上选择协议包括ip/arp/rarp/ipx都在这一层
-c #指定收取数据包的次数即在收到指定数量的数据包后退出tcpdump
-d #将匹配信息包的代码以人们能够理解的汇编格式输出
-dd #将匹配信息包的代码以c语言程序段的格式输出
-ddd #将匹配信息包的代码以十进制的形式输出
-D #打印系统中所有可以监控的网络接口
-e #在输出行打印出数据链路层的头部信息
-f #将外部的Internet地址以数字的形式打印出来即不显示主机名
-F #从指定的文件中读取表达式忽略其他的表达式
-i #指定监听网络接口 #常用
-l #使标准输出变为缓冲形式可以数据导出到文件
-L #列出网络接口已知的数据链路
-n #不把网络地址转换为名字
-N #不输出主机名中的域名部分例如www.baidu.com只输出www
-nn #不进行端口名称的转换
-P #不将网络接口设置为混杂模式
-q #快速输出即只输出较少的协议信息
-r #从指定的文件中读取数据一般是-w保存的文件
-w #将捕获到的信息保存到文件中且不分析和打印在屏幕 #常用
-s #从每个组中读取在开始的snaplen个字节而不是默认的68个字节
-S #将tcp的序列号以绝对值形式输出而不是相对值
-T #将监听到的包直接解析为指定的类型的报文常见的类型有rpc远程过程调用和snmp简单网络管理协议
-t #在输出的每一行不打印时间戳
-tt #在每一行中输出非格式化的时间戳
-ttt #输出本行和前面以后之间的时间差
-tttt #在每一行中输出data处理的默认格式的时间戳
-u #输出未解码的NFS句柄
-v #输出稍微详细的信息例如在ip包中可以包括ttl和服务类型的信息
-vv #输出相信的保报文信息关键字
数据类型的关键字host、port、net host 192.168.130.1表示一台主机 net 192.168.130.0表示一个网络网段 port 80 指明端口号为80 在这里如果没有指明数据类型那么默认就是host 数据传输方向的关键字src、dst、dst or src、dst and src 这些关键字指明了传输的方向比如src 192.168.130.1说明数据包源地址是192.168.130.1。dst net 192.168.130.0指明目的网络地址是192.168.130.0默认是监控主机对主机的src和dst即默认监听本机和目标主机的所有数据。 协议关键字ip、arp、rarp、udp 其他关键字 运算类型or、and、not、! 辅助功能型gateway、less、broadcast、greater
使用 注使用tcpdump需要root权限 抓取icmp协议数据包
tcpdump -i any icmp -w icmp.pcap-i any为任意网络接口即任意网卡条件为筛选icmp-w icmp.pcap保存为icmp.pcap文件 导入到wireshark呈现的数据内容 2. 添加条件抓取icmp协议数据包
[rootnode-252 ~]# tcpdump -i ens33 icmp and host 192.168.202.128 -v -w icmp.pcap
tcpdump: listening on ens33, link-type EN10MB (Ethernet), capture size 262144 bytes
Got 24指定网卡为ens33本次指定主机为192.168.202.128-v显示详细信息会提示Got 24即抓取的包数量当有多个条件时需要使用关键字and or 继续添加条件
tcpdump -s0 -vnn -i ens33 icmp and src 192.168.202.128 -w icmp.pcap-s0防止包截断-nn不进行端口名称转换src源地址为192.168.202.128类似还可以指定dst目的地址dst net目的网络src net源网络 常用的示例
### 过滤主机 ###
tcpdump -i eth0 host 192.168.1.70 #抓取所有经过 eth0目的或源地址是 192.168.1.70 的网络数据
tcpdump -i eth1 src host 192.168.1.70 #抓取所有经过 eth0源地址是 192.168.1.70 的网络数据
tcpdump -i eth1 dst host 192.168.1.70 #抓取所有经过 eth0目的地址是 192.168.1.70 的网络数据### 过滤端口 ###
tcpdump -i eth0 port 22 #抓取所有经过 eth0目的或源端口是 22 的网络数据
tcpdump -i eth1 src port 22 #抓取所有经过 eth0源端口是 22 的网络数据
tcpdump -i eth1 dst port 22 #抓取所有经过 eth0目的端口是 22 的网络数据### 过滤协议 ###
tcpdump -i eth0 tcp
tcpdump -i eth0 udp
tcpdump -i eth0 ip
tcpdump -i eth0 icmp
tcpdump -i eth0 arp当我们发现流量异常的时候我们可能不会指定太多条件因为当时可能无法判断出协议、端口和地址等信息来源所以往往使用最宽泛的条件然后通过wireshark进行过滤筛选
tcpdump -i ens33 -w any.pcap关于tcpdump的缺点
以下是一些 tcpdump 的缺点
性能影响tcpdump 在运行时会捕获所有网络流量这可能会对系统性能产生一定影响。复杂的过滤器tcpdump 的过滤器相对复杂需要一定时间学习和掌握。无用输出默认情况下tcpdump 输出的包含大量信息很难直接获取有用的数据。不易于集成tcpdump 主要是命令行工具不易于与其他系统或应用程序集成。缺乏用户界面tcpdump 没有用户友好的界面难以用于非专业人士。安全问题如果不正确配置tcpdump 可能会捕获敏感数据带来安全风险。
针对这些缺点解决方法可能包括
使用 tcpdump 的 -i 参数指定网络接口限制捕获范围。使用 tcpdump 的表达式优化过滤器精确匹配所需的数据包。使用 tcpdump 的 -w 参数将捕获的数据包保存到文件中然后使用其他工具如 Wireshark分析。使用 tcpdump 的 -C 参数设置数据包的存储上限防止磁盘空间耗尽。使用 tcpdump 的 -q 参数减少输出信息量。使用 tcpdump 的 -Z 参数将进程放到后台运行。使用 tcpdump 的 -z 参数设置捕获数据包的时间限制。
结合使用 tcpdump 和其他网络工具如 wireshark 或 tshark 进行更复杂的分析。
6.3 fiddler
fiddler是一个http协议调试代理工具它能够记录并检查所有你的电脑和互联网之间的http通讯设置断点查看所有的“进出”Fiddler的数据指cookie,html,js,css等文件。 Fiddler 要比其他的网络调试器要更加简单因为它不仅仅暴露http通讯还提供了一个用户友好的格式。 官网https://www.telerik.com/fiddler 原理图 代理工具嘛在客户端和服务器之间加了一层
下载安装
选择 FIDDLER TOOLS Fiddler Classic点击 Try For Free进入到以下页面它会问你用 Fiddler 做什么然后再填写你的邮箱选上 Country勾选上I agree以及 I accept再点击 Download For Windows
然后就会下载 FiddlerSetup.5.0.20244.10953-latest.exe当前我下载的版本
运行.exe安装完成后会有如下提示 界面介绍及使用可以参考 https://blog.csdn.net/xhmico/article/details/133852152介绍的非常详细 6.4 burpsuite
Burp Suite 是用于攻击web应用程序的集成平台包含了许多工具。Burp Suite为这些工具设计了许多接口以加快攻击应用程序的过程。所有工具都共享一个请求并能处理对应的HTTP 消息、持久性、认证、代理、日志、警报。
参考 https://blog.csdn.net/m0_68483928/article/details/140502752 介绍的比较详细