当前位置:新闻中心 > 技术干货

干货:tcpdump工具介绍

来源:天融信教育

作为信安技术人员,经常会对网络中的数据包进行抓取、分析,而例如wireshark、ethereal、sniffer等抓包工具,相信大家都不陌生,不过这些都是一些图形界面工具,今天我们介绍一款字符界面的抓包工具——tcpdump。这款工具在很多的Linux发行版中都已默认安装,Ubuntu、Redhat、CentOS、Kali Linux等,都有这款工具,如果大家没有特殊要求,选择tcpdump来进行抓包分析,也很方便快捷。

下面我们就来介绍一下tcpdump工具。

1.获取tcpdump工具帮助

# tcpdump –help 或者 # man tcpdump

2.主要工具选项介绍

-i 指定要监听的网络接口(只有存在多块网卡的情况下,才会使用该选项)

-c 指定要监听的数据包数量

-C 指定要保存监听数据包的文件大小(默认为MB)

-w 指定将监听的数据包写入文件中

-F 从指定的文件中读取tcpdump需要匹配的表达式

-e 输出数据链路层的头部信息。

-L 列出网络接口上的已知数据链路类型。

-n 不将网络地址转换成主机名,即:不做DNS反向解析。

-nn 不将协议和端口号转换为名称。

-N 不输出主机名中的域名后缀。

-t 在输出的每一行不打印时间戳。

-p 不将网络接口设置成混杂模式。

-q 快速输出。只输出较少的协议信息。

-r 从指定的文件中读取包进行分析(由-w选项产生的文件名)。

-t 不在每一行中输出时间戳。

-v 输出稍微多一些的详细信息,例如,生存时间、身份、总长度和IP包中的选项等。

-vv 更详细的输出。例如,从NFS应答数据包和SMB数据包完全解码。

-vvv 更详细的输出。例如,telnet sb…SE选项

3.工具中的关键字介绍

1)类型关键字:host,net,port

未指定类型,默认为:host

示例:

# tcpdump -i eth1 host 192.168.10.1 -c 3 -w test1 //从网卡eth1接口,抓取主机192.168.10.1的前3个数据包,保存到test1文件中

# tcpdump net 192.168.10.0 //抓取192.168.10.0网段的数据包

# tcpdump port 23 //抓取端口号为23的数据包

# tcpdump host websrv and \( fssrv or ftpsrv \) //抓取主机websrv和fssrv或ftpsrv的数据包

2)方向关键字:src , dst ,dst or src, dst and src

未指明方向关键字,默认为:src or dst

示例:

# tcpdump src 192.168.10.1 //抓取源IP为192.168.10.1的数据包

# tcpdump dst 192.168.10.1 //抓取目的IP为192.168.10.1的数据包

# tcpdump src or dst 192.168.10.1 //抓取源或目的IP为192.168.10.1的数据包

# tcpdump src and dst 192.168.10.1 //抓取源和目的IP为192.168.10.1的数据包

# tcpdump src net 192.168.10.0 //抓取源网络为192.168.10.0的数据包

# tcpdump dst net 192.168.10.0 //抓取目的网络为192.168.10.0的数据包

# tcpdump src or dst net 192.168.10.0 //抓取源或目的网络为192.168.10.0的数据包

# tcpdump src and dst net 192.168.10.0 //抓取源和目的网络为192.168.10.0的数据包

3)协议关键字:ether、ip、arp、rarp、tcp、udp

未指明协议,默认为所有协议

示例:

# tcpdump ether src 00:0C:29:f6:b5:4f //抓取以太网包,包的源地址为00:0C:29:f6:b5:4f

# tcpdump ip src 192.168.10.1 //抓取IP包,包的源地址为192.168.10.1

# tcpdump arp src 192.168.10.1 //抓取ARP包,包的源地址为192.168.10.1

# tcpdump tcp port 23 //抓取TCP包,包的端口为23# tcpdump tcp src port 23 //抓取TCP包,包的源端口为23

4)其它关键字:gateway、 broadcast、less、greater

示例:

# tcpdump gateway gw1 //抓取网关gw1的数据包

# tcpdump broadcast //抓取广播数据包

# tcpdump less 3 //抓取少于3个的数据包

# tcpdump greater //抓取多余3个的数据包

4.运算符的使用

常见运算符:

取非(反)运算: 'not ' '! '

与运算:'and','&&'

或运算:'or' ,'||';

具体用法,根据实际情况组合使用

示例:

# tcpdump host 192.168.10.1 or !192.168.10.2 //抓取主机192.168.10.1或除过192.168.10.2的数据包

# tcpdump host 192.168.10.1 and tcp src port 23 //抓取主机192.168.10.1,并且tcp源端口为23的数据包

# tcpdump host 192.168.10.1 and \(192.168.10.2 or 192.168.10.3\) //抓取主机192.168.10.1和192.168.10.2,或192.168.10.3的数据包

# tcpdump -i eth0 host host1 and port 25 //从eth0接口抓取主机为host1,并且端口为25的数据包

5.其它用法举例

# tcpdump -s0 //抓取完整数据包,防止包截断

# tcpdump 'tcp[tcpflags] = tcp-syn' //抓取TCP标志位是tcp-syn的数据包(即TCP SYN包)

# tcpdump 'tcp[tcpflags] & tcp-syn != 0 and tcp[tcpflags] & tcp-ack != 0' //抓取TCP的SYN包和ACK包

# tcpdump -i eth1 'icmp[icmptype] = icmp-echo' //抓取ICMP请求包

# tcpdump -i eth1 'icmp[icmptype] = icmp-echoreply' //抓取ICMP应答包

# tcpdump -i eth1 'ip[6] = 32' //抓取IP分片包


声明:该文章仅用于学术交流


感兴趣的小伙伴

扫描下方二维码