干货: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分片包
声明:该文章仅用于学术交流
感兴趣的小伙伴
扫描下方二维码