龙空技术网

Linux系统抓包工具Tcpdump使用详解

JasonTang 976

前言:

如今朋友们对“linux 端口抓包”大致比较看重,大家都想要学习一些“linux 端口抓包”的相关文章。那么小编在网上网罗了一些对于“linux 端口抓包””的相关资讯,希望我们能喜欢,看官们快快来了解一下吧!

摘要:日常工作中,经常会查看服务器的网络流量包的情况,通常可以在服务器的本地执行相关的指令查看,比如Tpdump命令。Tcpdump是linux环境下抓包工具,可以对对应网络接口流量进行抓取或者过滤抓取,可以打印输出到屏幕,也可以保存到指定文件。指定的文件可以用wireshark软件来打开查看。可以快速查看符合网络接口符合某一条件的抓包,方便确定网络问题。

本文主要通过实例介绍Linux系统Tcpdump抓包工具的使用方法,详细内容参考下文。

一、登陆Linux系统

登陆Linux

二、Tcpdump命令格式

执行指令# man tcpdump查看其帮助说明

命令格式:tcpdump 跟踪范围 选项和对应参数 表达式

1、跟踪范围可以是某一个接口,也可以是any所有接口。选项和参数完成输出显示符合一定要求功能。表达式完成过滤一些特殊需要的包。

2、选项和对应参数

-D 是显示所有的可跟踪的接口,可以和ip addr配合使用来确定要抓取的网口数字编号或名称;

-i 端口号 是指定抓取网卡的名称或者数字编号;

-n 来关闭dns反向解析功能,-nn是关闭反向查询功能并以数字格式显示ip地址端口号,和url地址。不带这个选项回显会很慢。

-c 用于指定抓取包的包字节数;

-C 用于指定抓取保存文件的大小,单位是兆;

-e 用于显示对应的源,目的的mac地址;

-w 文件路径和文件名,用于指定保存文件的路径和名称,没有指定路径默认在系统默认路径下;

-t 是不显示时间戳,-tt显示时间戳,-ttt显示请求和响应的时间的时间差;

-v 是显示一些协议的详细资料,-vv,-vvv来显示更详细的资料;

-X 是用16进制和asc码显示ip层以上各协议包头;

-x 小写x是用16进制打印从ip层开始的帧内容;

-xx 小写的xx是用16进制打印从数据链路层开始的帧内容;

-X 大写的X是用16进制打印从ip层开始的帧内容;

-XX 大写的XX是用16进制打印从数据链路层开始的;

-G 后面跟秒数,多少秒后重写另一个文件;

-Z 后面跟用户名,表示要用该用户名来执行;

-r 后面跟抓包文件,读取抓包文件

注意:当选项后面没有参数时,可以把几个选项连接起来使用,如-nne,-envv等等。

3、表达式

过滤表达式:协议 方向 关键词 值 可以使用关系符如not非,and与,or或或协议icmp,arp,tcp,sctp,udp,ether,vlan之类;

如要抓包icmp消息,表达式可以写icmp;

过滤arp和icmp消息可以用 arp or icmp;

过滤dhcp消息,就可以用包含udp的端口是68或69的条件实现:

udp port 68 or udp port 69;

方向源src,目的dst。

三、两种抓包形式

1、根据IP抓包

执行指令# tcpdump -i ens192 host 172.*.*.*

或者使用src或者dst执行单项抓包,如下

执行指令# tcpdump -i ens192 src 172.*.*.*

执行指令# tcpdump -i ens192 dst 172.*.*.*

2、根据协议抓包

说明:过滤TCP流量,可以指定tcp,也可以指定使用协议6,这两个命令效果一样。而过滤UDP流量,可以指定udp,也可以指定使用协议17,这两个命令效果也是一样。

执行指令# tcpdump -i ens192 -c 8 tcp

执行指令# tcpdump -i ens192 -c 8 proto 6

备注:上图看出这两个命令查到的信息是一样的。

四、Tcpdump生成抓包文件

说明:通过tcpdump -w文件名称 的格式生成抓包文件

1、执行指令# tcpdump -i ens192 -s0 -w /usr/local/temp/cap1.pcap

或者

2、查看pcap抓包文件

说明:使用wireshark软件查看抓包文件cap1.pcap

五、Tcpdump抓包实例

1、抓包Cookie

说明:通过搜索 Set-Cookie(来自服务器)和 Cookie(来自客户端)来抓包 cookie。

执行指令# tcpdump -i ens192 -nn -A -s0 -l | egrep -i 'Set-Cookie|Host:|Cookie:'

2、抓包所有ICMP数据包

执行指令# tcpdump -i ens192 -n icmp

3、抓包SMTP/POP3电子邮件

执行指令# tcpdump -i ens192 -nn -l port 25 | grep -i 'MAIL FROM\|RCPT TO'

4、抓包SNMP

执行指令# tcpdump -i ens192 -n -s0 port 161 and udp

5、抓包FTP凭证和命令

执行指令# tcpdump -i ens192 -nn -v port ftp or ftp-data

6、抓包HTTP数据包

执行指令# tcpdump -i ens192 'tcp port 80 and (((ip[2:2] - ((ip[0]&0xf)<<2)) - ((tcp[12]&0xf0)>>2)) != 0)'

7、抓包DHCP数据包

执行指令# tcpdump -i ens192 -v -n port 67 or 68

8、抓包DNS请求和响应

执行指令# tcpdump -i ens192 -s0 port 53

9、抓包所有明文密码

执行指令# tcpdump -i ens192 port http or port ftp or port smtp or port imap or port pop3 or port telnet -l -A | egrep -i -B5 'pass=|pwd=|log=|login=|user=|username=|pw=|passw=|passwd=|password=|pass:|user:|username:|password:|login:|pass |user '

10、检测网络流量中的端口扫描

执行指令# tcpdump -i ens192 -nn -c 8

标签: #linux 端口抓包 #linux端口抓包命令