linux服务器抓包?linux抓包工具

Linux下Wireshark的网络抓包使用方法

Wireshark是世界上最流行的网络分析工具。这个强大的工具可以捕捉网络中的数据,并为用户提供关于网络和上层协议的各种信息。

与很多其他网络工具一样,Wireshark也使用pcap network library来进行封包捕捉。

Wireshark的优势:

-安装方便。

-简单易用的界面。

-提供丰富的功能。

Wireshark的原名是Ethereal,新名字是2006年起用的。当时Ethereal的主要开发者决定离开他原来供职的公司,并继续开发这个软件。但由于Ethereal这个名称的使用权已经被原来那个公司注册,Wireshark这个新名字也就应运而生了。

Wireshark目前世界上最受欢迎的协议分析软件,利用它可将捕获到的各种各样协议的网络二进制数据流翻译为人们容易读懂和理解的文字和图表等形式,极大地方便了对网络活动的监测分析和教学实验。它有十分丰富和强大的统计分析功能,可在Windows,Linux和UNIX等系统上运行。此软件于1998年由美国Gerald Combs首创研发,原名Ethereal,至今世界各国已有100多位网络专家和软件人员正在共同参与此软件的升级完善和维护。它的名称于2006年5月由原Ethereal改为Wireshark。至今它的更新升级速度大约每2~3个月推出一个新的版本,2007年9月时的版本号为0.99.6。但是升级后软件的主要功能和使用方法保持不变。它是一个开源代码的免费软件,任何人都可自由下载,也可参与共同开发。

Wireshark网络协议分析软件可以十分方便直观地应用于计算机网络原理和网络安全的教学实验,网络的日常安全监测,网络性能参数测试,网络恶意代码的捕获分析,网络用户的行为监测,黑客活动的追踪等。因此它在世界范围的网络管理专家,信息安全专家,软件和硬件开发人员中,以及美国的一些知名大学的网络原理和信息安全技术的教学、科研和实验工作中得到广泛的应用。

在安装新旧版本软件包和使用中,Ethereal与Wireshark的一些细微区别如下:

(1)Ethereal软件安装包中包含的网络数据采集软件是winpcap 3.0的版本,保存捕获数据时只能用英文的文件名,文件名默认后缀为.cap

(2)Wireshark软件安装包中,目前包含的网络数据采集软件是winpcap 4.0版本,保存捕获数据时可以用中文的文件名,文件名默认后缀为.pcap。另外,Wireshark可以翻译解释更多的网络通信协议数据,对网络数据流具有更好的统计分析功能,在网络安全教学和日常网络监管工作中使用更方便,而基本使用方法仍然与Ethereal相同。

winpcap(windows packet capture)是windows平台下一个免费,公共的网络访问系统。开发winpcap这个项目的目的在于为win32应用程序提供访问网络底层的能力。

在Linux下,当我们需要抓取网络数据包分析时,通常是使用tcpdump抓取网络raw数据包存到一个文件,然后下载到本地使用wireshark界面网络分析工具进行网络包分析。

最近才发现,原来wireshark也提供有Linux命令行工具-tshark。tshark不仅有抓包的功能,还带了解析各种协议的能力。下面我们以两个实例来介绍tshark工具。

1、安装方法

CentOS:

复制代码代码如下:yum install-y wireshark

Ubuntu:

复制代码代码如下:apt-get install-y tshark

2、实时打印当前http请求的url(包括域名)

复制代码代码如下:

tshark-s 512-i eth0-n-f'tcp dst port 80'-R'http.host and http.request.uri'-T fields-e http.host-e http.request.uri-l| tr-d'\t'

下面介绍参数含义:

-s 512:只抓取前512个字节数据

-i eth0:捕获eth0网卡

-n:禁止网络对象名称解析

-f‘tcp dst port 80′:只捕捉协议为tcp,目的端口为80的数据包

-R‘http.host and http.request.uri’:过滤出http.host和http.request.uri

-T fields-e http.host-e http.request.uri:打印http.host和http.request.uri

-l:输出到标准输出

3、实时打印当前mysql查询语句

复制代码代码如下:

tshark-s 512-i eth0-n-f'tcp dst port 3306'-R'mysql.query'-T fields-e mysql.query

下面介绍参数含义:

-s 512:只抓取前512个字节数据

-i eth0:捕获eth0网卡

-n:禁止网络对象名称解析

-f‘tcp dst port 3306′:只捕捉协议为tcp,目的端口为3306的数据包

-R‘mysql.query’:过滤出mysql.query

-T fields-e mysql.query:打印mysql查询语句

tshark使用-f来指定捕捉包过滤规则,规则与tcpdump一样,可以通过命令man pcap-filter来查得。

tshark使用-R来过滤已捕捉到的包,与界面版wireshark的左上角Filter一致。

linux抓包命令tcpdump

tcpdump是一个功能强大的命令行数据包分析器,它通过监听服务器的网卡获取数据包,可用于分析所有网络访问的数据。此工具还具有过滤功能,可以获取特定网络、端口或协议的数据包。

程序员在日常问题排查中,常利用过滤功能获取特定端口的数据包,以分析服务器是否收到请求,请求数据是否完整。

tcpdump命令的参数丰富,本文仅介绍常用参数:

参数-c count表示指定数量的数据包,达到count后结束命令;若不使用此参数,程序将持续抓取数据包,直到手动停止。

参数-C file_size在抓取数据包保存到文件时,通过此命令设定文件大小。文件达到指定大小后,将创建以原文件名加序号的新文件,例如 dump.txt, dump.txt1。单位为字节(b)。

参数-D列出服务器的所有网卡,tcpdump默认监听编号最小的网卡(一般为eth0)。在执行抓包时,可通过参数-i interface指定监听的网卡,any表示监听所有网卡。

参数-n输出结果时,不将IP转换为主机名(默认显示主机名)。

参数-q快速输出,仅显示简要的数据包信息。

参数-r file从文件读取数据包,不再从网络获取数据包。

参数-t不输出时间戳。

参数-w file将抓取的数据包保存到指定文件,与参数-r结合使用时,从文件中读取数据包。

参数-W filecount指定文件数量,文件滚动到指定数量后,从第一个文件开始覆盖。

除了上述参数,还存在用于条件过滤的关键字,如:

参数-host过滤主机,例如 tcpdump host 192.168.1.110只抓取经过此IP的数据包。

参数-src用于过滤请求来源方,如 tcpdump src host 192.168.1.110只抓取从此IP过来的数据包。

参数-dst用于过滤请求接收方,例如 tcpdump dst host 192.168.1.110只抓取发送到此IP的数据包。

参数-port过滤端口,如 tcpdump port 8080只抓取经过8080端口的数据包。

参数-net过滤网络,如 tcpdump net 192.168只抓取经过此网段的数据包。

逻辑操作符如-and、not、or用于条件组合,例如 tcpdump net 192.168 and port 8080抓取特定网络和端口的数据包。

数据包分析结果如下:

时间戳:时:分:秒.微秒

IP协议名称

请求发送方IP和端口>请求接收方IP和端口。端口可能显示为协议名,如HTTP、SSH、MySQL等。

Flags [R]

标识和状态,可选状态包括 [S.] [.] [P.] [F.][R]

seq、ack、fin

表示TCP协议的握手和挥手过程。seq表示请求序列号,ack是回答序列号,fin表示完成。序列号显示为相对值,使用参数-S可显示绝对值。

win

当前窗口大小

length

报文体长度,此长度可用于简单分析是否正确接收请求。

利用以上信息可进行基本分析,通过参数-w将数据包写入文件,文件中包含更详细信息,借助分析工具如Wireshark进行进一步分析。

常用命令示例:

抓取8080端口的数据包

抓取从192.168.1.110发送到192.168.1.111的数据包

抓取192.168网段除了192.168.1.110的请求数据包

抓取8080端口的数据包并写入dump.log文件

注意事项:

1.运行tcpdump需要管理员权限,可通过sudo命令或使用root用户。

2.通过length字段只能进行简单判断,欲进行详细分析,需借助数据包分析工具,如Wireshark。

Linux服务器抓包工具

介绍:socat是 Linux系统自带的工具,常用于网络编程,具备网络中继和端口转发的功能,同时也可用于抓包。安装方法简单,只需通过包管理器命令即可,例如使用 yum install-y socat命令进行安装。

用法:使用命令 socat TCP-LISTEN:port1,fork TCP:host:port2,其中 port1为本地监听的端口,host:port2为目标主机的端口。例如,若本机运行了 Zabbix,端口为80,启动一个14001端口,将访问14001端口的请求转发到本机的80端口,命令为:socat-v TCP-LISTEN:14001,fork TCP:127.0.0.1:80。通过这种方式,访问14001端口的请求也会显示Zabbix界面。

打印请求内容:socat会打印出所有请求的内容。

介绍:mitmproxy是一个流行的中间人代理工具,可拦截、修改和查看 HTTP和 HTTPS流量,常用于网络调试、安全测试和网络流量分析。在线安装需通过 pip安装,具体命令为:yum install-y python3-pip python3-devel&& pip3 install-i pypi.tuna.tsinghua.edu.cn...

离线安装步骤:首先下载所有 rpm包,命令为 yumdownloader--resolve python3-pip python3-devel,然后将包拷贝到目标机器上执行 rpm-ivh*。接着下载所有 pip包,命令为 pip3 download-i mitmproxy-d/opt/,再将包拷贝到目标机器上安装:pip3 install./*。

用法:启动 mitmproxy监听 8080端口,代理本机的80端口,命令为 mitmproxy-p 8080--mode reverse:。访问 mitmproxy监听的端口(如输入 ),mitmproxy将代理流量到本地的 80端口,同时允许查看和修改流量。使用--mode reverse参数进行反向代理流量,-p参数指定 mitmproxy监听的端口。

查看请求:通过上下键选择请求,回车查看细节,q返回列表或退出。

阅读剩余
THE END