tcpdump抓包命令

tcpdump 抓包命令
我并没有写这些东西,我做的事情仅仅是将⽹上的⼀些东西整合了起来,然后删掉了⼀些不常⽤的命令,仅此⽽已.
tcpdump 抓包命令
tcpdump是⼀个⽤于截取⽹络分组,并输出分组内容的⼯具。tcpdump凭借强⼤的功能和灵活的截取策略,使其成为类UNIX系统下⽤于⽹络分析和问题排查的⾸选⼯具。
tcpdump提供了源代码,公开了接⼝,因此具备很强的可扩展性,对于⽹络维护和⼊侵者都是⾮常有⽤的⼯具。tcpdump存在于基本的Linux系统中,由于它需要将⽹络界⾯设置为混杂模式,普通⽤户不能正常执⾏,但具备root权限的⽤户可以直接执⾏它来获取⽹络上的信息。因此系统中存在⽹络分析⼯具主要不是对本机安全的威胁,⽽是对⽹络上的其他计算机的安全存在威胁。
⼀、概述
顾名思义,tcpdump可以将⽹络中传送的数据包的“头”完全截获下来提供分析。它⽀持针对⽹络层、协议、主机、⽹络或端⼝的过滤,并提供and、or、not等逻辑语句来帮助你去掉⽆⽤的信息。
不带参数的tcpdump会收集⽹络中所有的信息包头,数据量巨⼤,必须过滤。
⼆、选项介绍
tcpdump采⽤命令⾏⽅式,它的命令⼤致如下:
参数的含义如下:
含义-A
以ASCII格式打印出所有分组,通常⽤来抓取www的⽹页数据包数据。-c 在收到指定的数量的分组后,tcpdump就会停⽌。# tcpdump -vv # -vv 表⽰显⽰详细的信息tcpdump: listening on  eth0, link-type EN10MB (Ethernet), capture size 96 bytes 11:53:21.444591 IP (tos 0x10, ttl 64, id 19324, offset 0, flags [DF], proto 6, length: 92)asptest.localdomain.ssh > 192.168.228.244.1858: P 3962132600:3962132652(52) ack 2726525936 win 1266asptest.localdomain .1077 > 192.168.228.153.domain: [bad udp cksum 166e!] 325+ PTR? 244.228.168.192.in -addr.arpa. (46)11:53:21.446929 IP (tos 0x0, ttl 64, id 42911, offset 0, flags [DF], proto 17, length: 151) 192.168.228.153.domain > asptest.localdomain .1077: 32511:53:21.447408 IP (tos 0x10, ttl 64, id 19
328, offset 0, flags [DF], proto 6, length: 172) asptest.localdomain.ssh > 192.168.228.244.1858: P 168:300<==按下[ctrl]-c 之后结束347 packets captured 1474 packets received by  filter 745 packets dropped by  kernel
1
2
3
4
5
6
7
8
9
实验室分析天平10
11
12
13
14
15
16tcpdump  [ -AbdDefhHIJKlLnNOpqStuUvxX# ] [ -B buffer_size ]              [ -c count ]              [ -C file_size ] [ -G rotate_seconds ] [ -F file ]              [ -i interface ] [ -j tstamp_type ] [ -m module ] [ -M secret ]              [ --number ] [ -Q in|out|inout ]              [ -r file ] [ -V file ] [ -s snaplen ] [ -T type ] [ -w file ]              [ -W filecount ]              [ -y datalinktype ] [ -z postrotate-command ] [ -Z user ]              [ --immediate-mode ]              [ expression ]
1
2
3
4
5
6
7
8
9
10
-c
在收到指定的数量的分组后,tcpdump就会停⽌。-C 在将⼀个原始分组写⼊⽂件之前,检查⽂件当前的⼤⼩是否超过了参数file_size 中指定的⼤⼩。如果超过了指定⼤⼩,则关闭当前⽂件,然后在打开
调浆桶⼀个新的⽂件。参数 file_size 的单位是兆字节(是1,000,000字节,⽽不是1,048,576字节)。
-d 将匹配信息包的代码以⼈们能够理解的汇编格式给出。
-dd
将匹配信息包的代码以c语⾔程序段的格式给出。-
ddd
将匹配信息包的代码以⼗进制的形式给出。-D
打印出系统中所有可以⽤tcpdump截包的⽹络接⼝。-e
在输出⾏打印出数据链路层的头部信息,也就是使⽤数据链路层的MAC数据包数据来显⽰.-f
将外部的Internet地址以数字的形式打印出来。-F
从指定的⽂件中读取表达式,忽略命令⾏中给出的表达式。-i
指定监听的⽹络接⼝。-l
使标准输出变为缓冲⾏形式,可以把数据导出到⽂件。-L
列出⽹络接⼝的已知数据链路。-b
在数据-链路层上选择协议,包括ip、arp、rarp、ipx都是这⼀层的。-n
不把⽹络地址转换成名字。-nn
不进⾏端⼝名称的转换。-N
不输出主机名中的域名部分。例如,‘nic.ddn.mil‘只输出’nic‘。-t
在输出的每⼀⾏不打印时间戳。-O
不运⾏分组分组匹配(packet-matching)代码优化程序。-P
不将⽹络接⼝设置成混杂模式。-q
快速输出。只输出较少的协议信息。-r
从指定的⽂件中读取包(这些包⼀般通过-w选项产⽣)。-S
将tcp的序列号以绝对值形式输出,⽽不是相对值。-s
天一辉远
从每个分组中读取最开始的snaplen个字节,⽽不是默认的68个字节。-T
将监听到的包直接解释为指定的类型的报⽂,常见的类型有rpc远程过程调⽤)和snmp(简单⽹络管理协议)。-t
不在每⼀⾏中输出时间戳。-tt
在每⼀⾏中输出⾮格式化的时间戳-ttt
输出本⾏和前⾯⼀⾏之间的时间差。-
tttt
在每⼀⾏中输出由date处理的默认格式的时间戳。-v
输出⼀个稍微详细的信息,例如在ip包中可以包括ttl和服务类型的信息。-vv
输出详细的报⽂信息。-w
直接将分组写⼊⽂件中,⽽不是不分析并打印出来。-X 可以列出16进制以及ASCII的数据包内容,对于监听数据包内容很有⽤.
数含义推荐的⼀些写法:tcpdump -ntv -i xxx # -n 表⽰不将⽹络地址转化为名称,-t 不输出时间戳,-v 输出⼀些⽐较详细的信息(这个很好⽤)
1
无纺布折叠机2
三、tcpdump的表达式介绍
表达式对应命令参数中最后的可省略的 pdump利⽤它作为过滤报⽂的条件,如果⼀个报⽂满⾜表 达式的条件,则这个报⽂将会被捕获。如果没有给出任何条件,则⽹络上所有的信息包 将会被截获。
在表达式中⼀般如下⼏种类型的关键字:高分散白炭黑
表达式由⼀个或多个 表达元组成(nt: primitive, 表达元, 可理解为组成表达式的基本元素). ⼀个表达元通常由⼀个或多个修饰符(qualifiers)后跟⼀个名字或数字表⽰的 id组成(nt: 即, qualifiers id).
有三种不同类型的修饰符: type, dir以及 proto.
type 修饰符指定id 所代表的对象类型, id可以是名字也可以是数字. 可选的对象类型有: host, net, port 以及portrange(nt: host 表明id表⽰主机, net表明id是⽹络, port 表明 id是端⼝, ⽽ portrange表明 id是⼀个端⼝范围). 如, host foo, net 128.3, port 20, portrange 6000-6008(nt: 分别表⽰主机 foo, ⽹络 128.3, 端⼝ 20, 端⼝范围 6000-6008). 如果不指定type修饰符, id默认的修饰符为host.
dir 修饰符描述 id 所对应的传输⽅向, 即发往 id 还是从 id 接收(nt: ⽽ id到底指什么需要看其前⾯的 type修饰符).可取的⽅向为: src, dst, src or dst, src and dst.(nt:分别表⽰, id是传输源, id是传输⽬的, id是传输源或者传输⽬的, id是传输源并且是传输⽬的). 例如, src foo,dst net 128.3, src or dst port ftp-data.(nt: 分别表⽰符合条件的数据包中, 源主机是 foo, ⽬的⽹络是 128.3, 源或⽬的端⼝为 ftp-data).如果不指定 dir修饰符, id 默认的修饰符为 src or dst.
proto修饰符描述id所属的协议. 常⽤的协议有: ether, wlan, ip, ip6, arp, rarp, tcp以及 upd.(nt | rt: ether可理解为物理以太⽹传输协议; wlan, ⽆线局域⽹协议; ip, ip6 即通常的 TCP/IP协议栈中所使⽤的 ipv4以及 ipv6⽹络层协议; arp, rarp 即地址解析协议, 反向地址解析协议; tcp and udp, 即通常 TCP/IP协议栈中的两个传输层协议).
例如, ether src foo, arp net 128.3, tcp port 21, udp portrange 7000-7009分别表⽰ 从以太⽹地址foo来的数据包, 发往或来⾃128.3⽹络的arp 协议数据包, 发送或接收端⼝为21的tcp协议数据包, 发送或接收端⼝范围为7000-7009的udp协议数据包.
如果不指定 proto 修饰符, 则默认为与相应 type匹配的修饰符.
例⼦:
1. src foo 含义是 (ip or arp or rarp) src foo (nt: 即, 来⾃主机 foo的 ip/arp/rarp协议数据包, 默认 type为 host).
2. net bar 含义是 (ip or arp or rarp) net bar (nt: 即, 来⾃或发往 bar⽹络的 ip/arp/rarp协议数据包).
3. port 53 含义是 (tcp or udp) port 53(nt: 即, 发送或接收端⼝为 53的 tcp/udp协议数据包).
对于修饰符后跟id的格式,可理解为, type id是对包最基本的过滤条件: 即对包相关的主机, ⽹络, 端⼝的限制; dir 表⽰对包的传送⽅向的限制; proto表⽰对包相关的协议限制)
除以上所描述的表达元(‘primitive’), 还有其他形式的表达元, 并且与上述表达元格式不同. ⽐如: gateway, broadcast, less, greater以及算术表达式(nt: 其中每⼀个都算⼀种新的表达元). 下⾯将会对这些表达元进⾏说明.
表达元之间还可以通过关键字 and, or以及 not 进⾏连接, 从⽽可组成⽐较复杂的条件表达式. ⽐如, host foo and not port ftp and not port ftp-data(nt: 其过滤条件可理解为, 数据包的主机为 foo,并且端
⼝不是 ftp(端⼝ 21) 和 ftp-data(端⼝ 20, 常⽤端⼝和名字的对应可在 linux 系统中的 /etc/service⽂件中到)).
为了表⽰⽅便, 同样的修饰符可以被省略, 如 tcp dst port ftp or ftp-data or domain与以下的表达式含义相同 tcp dst port ftp or tcp dst port ftp-data or tcp dst port domain.(nt: 其过滤条件可理解为,包的协议为 tcp, ⽬的端⼝为 ftp 或 ftp-data 或 domain(端⼝ 53) ).
可⽤的表达元
==========================================
dst host host
如果IPv4/v6 数据包的⽬的 ip地址是 host, 那么捕获该数据包. host 可以是⼀个 ip地址, 也可以是⼀个主机名.
src host host
如果IPv4/v6 数据包的源 ip地址是 host, 则捕获该数据包. host 可以是⼀个 ip地址, 也可以是⼀个主机名.
host host
如果IPv4/v6数据包的源或⽬的 ip地址是 host, 则捕获该数据包.以上的⼏个host 表达式之前可以添加以下关键字: ip, arp, rarp, 以及 ip6.⽐如:
也可以表达为:
如果 host是⼀个拥有多个 IP的主机, 那么任何⼀个地址都会⽤于包的匹配(nt: 即发向host 的数据包的⽬的地址可以是这⼏个IP中的任何⼀个, 从host 接收的数据包的源地址也可以是这⼏个IP中的任何⼀个).
==========================================
ether dst ehost
如果数据包(nt: 指tcpdump 可抓取的数据包, 包括ip 数据包, tcp数据包)的以太⽹⽬标地址是 ehost,则捕获该数据包.
ehost 可以是 /etc/ethers ⽂件中的名字或⼀个 数字地址(nt: 可通过 man ethers 看到对 /etc/ethers ⽂件的描述, 样例中⽤的是数字地址)
ether src ehost
如果数据包的以太⽹源地址是 ehost, 则捕获该数据包.
ether host ehost
如果数据包的以太⽹源地址或⽬标地址是ehost, 则捕获该数据包..
==========================================
dst net net
如果数据包的⽬标地址(IPv4或IPv6格式)的⽹络号字段为 net, 则捕获该数据包.
net可以是从⽹络数据库⽂件 /etc/networks 中的名字, 也可以⽤数字形式的来表⽰.⼀个数字IPv4 ⽹络号可以⽤点分四元组(⽐如, 192.168.1.0), 或点分三元组(⽐如, 192.168.1), 或点分⼆元组(⽐如, 172.16), 或单⼀单元组(⽐如, 10)来表⽰.这四种情况对应的⽹络掩码分别为:四元组: 255.255.255.255(这实际上已经是是⼀个具体的⽹络地址了),三元组: 255.255.255.0, ⼆元组:255.255.0.0, ⼀元组: 255.0.0.0.
src net net
如果数据包的源地址(IPv4或IPv6格式)的⽹络号字段为 net, 则捕获该数据包.
net net
如果数据包的源或⽬的地址(IPv4或IPv6格式)的⽹络号字段为 net, 则捕获该数据包.
==========================================
net net mask netmask
如果数据包的源或⽬的 ip地址的⽹络掩码与 netmask匹配, 则捕获该数据包.
此选项之前还可以配合 src和 dst来进⼀步限定数据包的来源,⽐如.ip host host
1ether proto \ip and  host host # 这种表达⽅式在下⾯有说明, 其中ip 之前需要有\来转义,因为ip 对tcpdump 来说已经是⼀个关键字了.
1src net  net  mask 255.255.255.0
1
==========================================
net net/len
如果数据包的源或⽬的地址(IPv4或IPv6格式)的属于该⽹段( net/len表⽰的⽹段), 则捕获该数据包.
此选项之前还可以配合 src和 dst来进⼀步限定数据包的来源.
==========================================
dst port port
如果数据包(包括ip/tcp, ip/udp, ip6/tcp or ip6/udp协议)的⽬的端⼝为 port, 则捕获该数据包.
port 可以是⼀个数字也可以是⼀个名字(相应名字可以在 /etc/services 中到该名字, 也可以通过 man tcp 和 man udp来得到相关描述信息 ). 推荐使⽤数字.
src port port
如果数据包的源端⼝为 port, 则捕获该数据包.
port port
如果数据包的源或⽬的端⼝为 port, 则捕获该数据包.
==========================================
dst portrange port1-port2
监听⽬的端⼝在[port1, port2]的数据包,当然,既然存在端⼝,那么这个数据包必然属于ip/tcp, ip/udp, ip6/tcp 或者ip6/udp这⼏种中的⼀种.
src portrange port1-port2
监听源端⼝在[port1, port2]范围内的数据包.
portrange port1-port2
如果数据包的源端⼝或⽬的端⼝在[port1,port2]这个端⼝范围, 则捕获该数据包.以上关于 port 的选项都可以在其前⾯添加关键字: tcp 或者 udp对数据包加以更严格的限定.
==========================================
less length
引道结构图如果数据包的长度⽐ length ⼩或等于 length, 则捕获该数据包. 这与 len <= length的含义⼀致.
greater length 如果数据包的长度⽐length ⼤或等于length, 则捕获该数据包. 这与 len >= length 的含义⼀致.
==========================================
ip proto protocol src net  net /24 # 表⽰需要匹配源地址的⽹络编号有24位的数据包1dst port 80 # 监听⽬的端⼝为80的数据包
1tcp src port  port  # 抓取源端⼝是port 的tcp 数据包
1

本文发布于:2024-09-23 08:18:15,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/2/223934.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:数据包   协议   分组   地址   信息   输出   表达式
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议