1、tcpdump——网络数据包捕获和分析的工具

目录

一、基础知识

二、格式说明

1、常用的选项

2、时间格式

3、过滤规则

三、常见报文过滤表达式

四、抓包

1、过滤规则包

2、筛选

3、其他报文

(1)保存到指定文件名字

(2)不进行地址到域名的转换(-n)

(3)端口为80

(4)指定源IP和某个端口

(5)UDP端口53(即DNS)

(6)在网卡eth0上抓取报文,报文的IP地址是10.0.2.15,不限制长度

五、常识


一、基础知识

1、功能:输出网络上的数据报文

2、局限性:tcpdump可视化输出功能有限,可以通过捕获报文并且保存下来,然后使用图形用户界面软件wireshark来分析。

二、格式说明

1、常用的选项

-i <interface>:指定监听的物理网卡接口

-s:截取每个报文中截取的数据长度

-w <filename>:把原始报文保存到文件中

-c:收到指定报文个数后退出,可当作软件执行结束的条件

-G <rotate_seconds>:每隔指定的时间,将捕获的报文循环保存为新文件

-D :输出tcpdump可以捕获的接口列表,包含接口编号和接口名称

-v:当解析和打印时,输出详细的信息,例如报文的生存时间TTL、ID等IP报文选项

-p:禁止本命令把接口修改为混杂模式(将抓取和本机通信的报文,注意接口有困难因其他原因而处于混杂模式)

-r:从文件中读取报文(文件是由“-w”选项抓包创建的)

2、时间格式

%d:每月中的第几天,十进制数字从01-31

%H:当前小时时间,00-23

%M:当前分钟时间,00-59

%S:当前秒时间,00-60

3、过滤规则

1、共四个类型的修饰符:host(需要获取报文的主机或IP地址)、net(需要捕获报文的子网)、port(端口)、portrange(端口范围)

2、传输方向修饰符:src和dst

3、协议修饰:特定协议:IP、ARP、RARP、ICMP、TCP、UDP

and(&&)、or(||)、not(!)

三、常见报文过滤表达式

host bjbook.net

捕获和主机 bjbook.net交互的数据包,包含到达和来源的报文

net 191.0.0.0/24

捕获指定网段191.0.0.0/24 范围内的数据包

port 20

捕获指定端口20的数据包,指定TCP或UDP协议端口匹配,端口号可以是数字也可以是一个名称,这个名称在/etc/services文件中和端口号数字相对应,例如 port http 则匹配80端口的所有流量,包括 TCP和UDP 80端口的流量

portrange 8000-8080

捕获端口范围8000~8080的数据包

dst port 80

捕获目的端口为80的报文,包含UDP和 TCP报文,dst 指明报文的方向,也可以修饰主机名和P地址

src 192.168.6.100

捕获源IP为192.168.6.100的报文,src 也可以修饰传输层端口号

ip multicast

IPv4组播报文,即目标地址为组播地址的报文

arp

只捕获ARP协议报文,不包含IP报文

ip

捕获IP协议报文,不包含ARP等协议报文

udp port 53

指定UDP协议并且端口为53,即是 DNS 协议的报文

port 5060 or port 53

指定端口为5060或端口为53的报文,这在使用IP电话时经常用到

not host bjbook.net

所有非主机 bjbook.net的报文

port 5060 and (host 192.168.6.100 or 192.168.6.102)

端口5060的报文,并且满足IP地址是192.168.6.100或192.168.6.102,使用括号来改变结合的优先级

四、抓包

1、过滤规则包

(1)抓取指定IP地址数据包: tcpdump -i eth0 (src/dst) host 192.168.1.100

(2)抓取主机与特定IP(192.168.1.200 或192.168.1.201)通信包

       tcpdump -i eth0 host 192.168.1.100 and \(192.168.1.200 or 192.168.1.201\)

 (3)抓取主机与特定IP(192.168.1.200 或192.168.1.201)通信包

        tcpdump ip host 192.168.1.100 and !192.168.1.200

 (4)抓取特定端口数据包:tcpdump -i eth0 (src/dst) port 22

 (5)抓取特定网段数的数据包:tcpdump -i eth0 (src/dst) net 192.168

 (6)抓取特定协议数据包: tcpdump -i eth0 arp/ip/tcp/udp/icmp

 (7)指定网卡:tcpdump -i eth0

 (7)条件组合过滤抓包

tcpdump  '((tcp) and (port 80) and ((dst host 192.168.1.254) or (dst host 192.168.1.1)))'

tcpdump -i eth0 '((tcp) and (port 80) and ((dst host 192.168.1.254) or (dst host 192.168.1.1)))'

tcpdump  '((icmp) and ((ether dst host 00:0A:0B:03:0C:05)))'

tcpdump  '((tcp) and ((dst net 192.168) and (not dst host 192.168.1.254))'

2、筛选

(1)不解析域名以IP地址显示第三列的内容,sort -u去重

tcpdump -n -r test.cap | awk '{print $3}'| sort -u

(2)筛选源IP为192.168.1.100的包:tcpdump -n src host 192.168.1.100 -r test.cap

(3)筛选目的IP为192.168.1.100的包:tcpdump -n dst host 192.168.1.100 -r test.cap

(4)筛选端口为50的包:tcpdump -n port 53 -r test.cap

3、其他报文

(1)保存到指定文件名字

    tcpdump -i eth0 -s 1500 -G 60 -W zhang%H%M%S.cap

(2)不进行地址到域名的转换(-n)

    tcpdump -i eth0 -n -vv -c 500(抓取eth0接口的全部报文并输出到屏幕中,不进行地址到域名的转换(-n),在抓取500个后退出)

(3)端口为80

 tcpdump -i eth0 ’dst port 80‘ -v

(4)指定源IP和某个端口

tcpdump -i eth0 ’port 5060 and src 192.168.6.100‘ -v

(5)UDP端口53(即DNS)

   tcpdump udp and port 53 -v

(6)在网卡eth0上抓取报文,报文的IP地址是10.0.2.15,不限制长度

    tcpdump -i eth0 -s0 -w zhang.pcap host 10.0.2.15

五、常识

1、路由器通常有两个接口,eth0连接互联网,eth1连接局域网,将报文的全部内容保存到某个文件中   

2、在系统启动时,ARP协议来请求目标IP地址的MAC地址,但这个IP地址并非和本地机器同网段,这在网关机器带有ARP代理情况下工作正常,但是如果下一跳路由器没有ARP代理,就会因为没有目标IP的 MAC响应而通信失败。我们在启动时就可以仅抓取ARP协议、TFTP协议、DNS协议及ICMP协议。
tcpdump -i eth0 -w aaa.pcap port 59 or port 53 or port 80 or arp or iomp该命令将抓取TFTP协议、DNS协议、HTTP协议、ARP协议和 ICMP协议的报文。


 

猜你喜欢

转载自blog.csdn.net/weixin_45981798/article/details/131712735