常用选项
1、-i any: 监听所有的介面。这样你就知道是不是有流量产生。
2、-n: 不要解决主机名,以IP数字形式显示主机。
3、-nn: 不要解析主机名或端口名字。
4、-X: 同时以十六进制和ASCII字符显示包的数据。
5、-XX: 同-X,但也会显示 Ethernet头部。
6、-v, -vv, -vvv: 详细,更详细,再详细些! 冗余输出得到的包信息。
7、-c: 抓取 x 个包后就停下。
8、-S: 打印绝对序号。
9、-e: 同时得到Ethernet头部。
10、-q: 显示少一点协议信息。
11、-E: 用提供的密钥解密 IPSEC 流量。
12、-s: 设置显示前多少个字节的包内容(snaplength)。
tcpdump 4.0的snaplength的长度从68字节改成了96字节,这样你就可以看到多些内容了。但仍然看不到所有的内容,指定 -s 1514 得到包的所有内容。
基本的应用
1、基本通讯,不用太多选项睇睇基本的
tcpdump -nS
2、基本通迅,冗余输出。可以看到好多流量,
tcpdump -nnvvS
3、深入一点查看流量。
tcpdump -nnvvXS // -X 选项必不会使tcpdump输出更多.
4、看size大一点的包.
tcpdump -nnvvXSs 1514 // -s 1514 选项设定显示所有包内容。
5、net: 使用无类别域间路由(CIDR,Classless Inter-Domain Routing)指定要抓包的网络。
tcpdump net 1.2.3.0/24
6、proto: 指定要抓取的包的协议类型,可以指定tcp,udp,或icmp。可以不用敲入proto
tcpdump icmp
7、port: 只查看从指定端口进出的流量
tcpdump port 3389
8、src, dst port: 指定的源地址和端口号,或者目的地址和端口号。只抓取匹配指定地址端口的流量。
tcpdump src port 1025
tcpdump dst port 389
9、src,dst port, protocal : 组合三种指定条件.
tcpdump src port 1025 and tcp
tcpdump udp and src port 53
10、还有一个选项可以让你指定一个端口地址的范围
Port Ranges
tcpdump portrange 21-23
11、指定包的大小
Packet Size Filter // only see packets below or above a certain size (in bytes)
tcpdump less 32
tcpdump greater 128
tcpdump equal 64
tcpdump > 32 // 也可以使用数学符号
tcpdump <= 128
12、写入文件
用 -w 选项可以指定一个文件,把抓取到的内容存入该文件内。以后还可以用 -r 指定文件,把以前存入的内容再读回来。这是一个相当不错的方法,可以先抓取包,以后再用各种工具分析。
以这种形式抓到的流量是以tcpdump的格式储存的。这种格式在网络分析的工具之间非常通用。这意味着,像 Wireshark, Snort, 等工具也可以读取它。
把出入80端口的所有流量记录到文件中
tcpdump -s 1514 port 80 -w capture_file
然后,在将来某个时候,你就能够把存在文件中的流量读回,比如:
tcpdump -r capture_file
13、创造性的使用tcpdump
表达式确实不错,但是要真正发挥tcpdump的威力来自于创造性地组合使用各种表达式。这样就可以把你想要关注的信息单独抽出来。tcpdump有三种组合方式,如果你稍微懂点计算机,这简直太容易理解了。
1.与操作
and 或者 &&
2.或操作
or 或者 ||
3.非操作
not 或者 !
14、基本通讯,不用太多选项睇睇基本的
tcpdump -nS
15、基本通迅,冗余输出。可以看到好多流量,
tcpdump -nnvvS
16、深入一点查看流量。
tcpdump -nnvvXS // -X 选项必不会使tcpdump输出更多.
17、看size大一点的包.
tcpdump -nnvvXSs 1514 // -s 1514 选项设定显示所有包内容。
18、net: 使用无类别域间路由(CIDR,Classless Inter-Domain Routing)指定要抓包的网络。
tcpdump net 1.2.3.0/24
19、proto: 指定要抓取的包的协议类型,可以指定tcp,udp,或icmp。可以不用敲入proto tcpdump icmp
20、port: 只查看从指定端口进出的流量
tcpdump port 3389
21、src, dst port: 指定的源地址和端口号,或者目的地址和端口号。只抓取匹配指定地址端口的流量。
tcpdump src port 1025
tcpdump dst port 389
22、src,dst port, protocal : 组合三种指定条件.
tcpdump src port 1025 and tcp
tcpdump udp and src port 53
23、还有一个选项可以让你指定一个端口地址的范围
Port Ranges
tcpdump portrange 21-23
24、指定包的大小
Packet Size Filter // only see packets below or above a certain size (in bytes)
tcpdump less 32
tcpdump greater 128
tcpdump equal 64
tcpdump > 32 // 也可以使用数学符号
tcpdump <= 128
25、写入文件
用 -w 选项可以指定一个文件,把抓取到的内容存入该文件内。以后还可以用 -r 指定文件,把以前存入的内容再读回来。这是一个相当不错的方法,可以先抓取包,以后再用各种工具分析。
以这种形式抓到的流量是以tcpdump的格式储存的。这种格式在网络分析的工具之间非常通用。这意味着,像 Wireshark, Snort, 等工具也可以读取它。
把出入80端口的所有流量记录到文件中
tcpdump -s 1514 port 80 -w capture_file
然后,在将来某个时候,你就能够把存在文件中的流量读回,比如:
tcpdump -r capture_file
26、创造性的使用tcpdump
表达式确实不错,但是要真正发挥tcpdump的威力来自于创造性地组合使用各种表达式。这样就可以把你想要关注的信息单独抽出来。tcpdump有三种组合方式,如果你稍微懂点计算机,这简直太容易理解了。
1.与操作
and 或者 &&
2.或操作
or 或者 ||
3.非操作
not 或者 !
27、基本通讯,不用太多选项睇睇基本的
tcpdump -nS
28、基本通迅,冗余输出。可以看到好多流量,
tcpdump -nnvvS
29、深入一点查看流量。
tcpdump -nnvvXS // -X 选项必不会使tcpdump输出更多.
30、看size大一点的包.
tcpdump -nnvvXSs 1514 // -s 1514 选项设定显示所有包内容。
31、net: 使用无类别域间路由(CIDR,Classless Inter-Domain Routing)指定要抓包的网络。
tcpdump net 1.2.3.0/24
32、proto: 指定要抓取的包的协议类型,可以指定tcp,udp,或icmp。可以不用敲入proto
tcpdump icmp
33、port: 只查看从指定端口进出的流量
tcpdump port 3389
34、src, dst port: 指定的源地址和端口号,或者目的地址和端口号。只抓取匹配指定地址端口的流量。
tcpdump src port 1025
tcpdump dst port 389
35、src,dst port, protocal : 组合三种指定条件.
tcpdump src port 1025 and tcp
tcpdump udp and src port 53
36、还有一个选项可以让你指定一个端口地址的范围
Port Ranges
tcpdump portrange 21-23
37、指定包的大小
Packet Size Filter // only see packets below or above a certain size (in bytes)
tcpdump less 32
tcpdump greater 128
tcpdump equal 64
tcpdump > 32 // 也可以使用数学符号
tcpdump <= 128
38、写入文件
用 -w 选项可以指定一个文件,把抓取到的内容存入该文件内。以后还可以用 -r 指定文件,把以前存入的内容再读回来。这是一个相当不错的方法,可以先抓取包,以后再用各种工具分析。
以这种形式抓到的流量是以tcpdump的格式储存的。这种格式在网络分析的工具之间非常通用。这意味着,像 Wireshark, Snort, 等工具也可以读取它。
把出入80端口的所有流量记录到文件中
tcpdump -s 1514 port 80 -w capture_file
然后,在将来某个时候,你就能够把存在文件中的流量读回,比如:
tcpdump -r capture_file
39、创造性的使用tcpdump
表达式确实不错,但是要真正发挥tcpdump的威力来自于创造性地组合使用各种表达式。这样就可以把你想要关注的信息单独抽出来。tcpdump有三种组合方式,如果你稍微懂点计算机,这简直太容易理解了。
1.与操作
and 或者 &&
2.或操作
or 或者 ||
3.非操作
not 或者 !
例子
1、比如检测来自10.5.2.3去到端口3389的流量
tcpdump -nnvvS tcp and src 10.5.2.3 and dst port 3389
2、检测来自网络 192.168.0.0/16 去到网络 10.0.0.0/8 或者网络 172.16.0.0/16 的流量
tcpdump -nvX src net 192.168.0.0/16 and dst net 10.0.0.0/8 or 172.16.0.0/16
3、来自网络 172.16.16.0.0/16 去到主机 1292.168.0.2的 ICMP 流量.
tcpdump -nvvXSs 1514 dst 192.168.0.2 and src net 172.16.0.0/16 and not icmp
4、从主机名为 Mars(火星) 或者 Pluto(冥王星) 发出的,目的地不是SSH端口的流量
5、tcpdump -vv src mars or pluto and not dst port 22
你还可以根据包里面的某些字段来组合各种条件指定你要关注的包。这个功能在你想要查看SYNs和RSTs非常有用。
6、Show me all URG packets:
查看所有的紧急包(URG包)
tcpdump ‘tcp[13] & 32 != 0′
7、查看所有的确认包(ACK包)
tcpdump ‘tcp[13] & 16 != 0′
8、查看所有的PSH包
tcpdump ‘tcp[13] & 8 != 0′
9、查看所有的RST包
tcpdump ‘tcp[13] & 4 != 0′
10、查看所有的SYN包
tcpdump ‘tcp[13] & 2 != 0′
11、查看所有的FIN包
tcpdump ‘tcp[13] & 1 != 0′
12、查看所有的SYN-ACK包
tcpdump ‘tcp[13] = 18′
13、注意:只有PSH, RST, SYN 和 FIN 标志显示在tcpdump的标志域输出中。URG和ACK也会被显示,但显示在其它的地方而不是在标志位中(Flags Field).
你应该明白为什么以上的命令的写法。tcp[13]表示在tcp头的偏移量13字节的位置,然后作了一个布尔判断。
在神奇的Unix世界,一件事通常可以用好几种方式做到。tcpdump也不例外。下面的例子是另一个通过指定tcp包的标志位来查看包的命令。
Capturing TCP Flags Using the tcpflags Option
用 tcpflags 选项来指定 tcp 标志位。
14、查看SYN包.
tcpdump ‘tcp[tcpflags] & tcp-syn != 0
15、特殊流量
查看所有IPv6的流量
tcpdump ip6
16、查看所有同时设置了SYN和RST位的流量(仅仅举例,实际上并不可能发生):
tcpdump ‘tcp[13] = 6′
17、查看所有的 evil 位被设置的流量
tcpdump ‘ip[6] & 128 != 0′