哲思官方群认证群组  - 讨论区

标题:[zeuux-www] 学习tcpdump

2008年05月07日 星期三 22:01

Jianjun Kong kongjianjun at gmail.com
Wed May 7 22:01:58 CST 2008

我把总结的直接贴到了下边,html见附件。请指正!
如果在格式等有其他要求,请告诉我。

学习tcpdump
作者:孔建军<kongjianjun at gmail.com>

1. tcpdump介绍
tcpdump 是一款开源的网络数据截取分析工具,具有强大的功能和灵活的截取策略,用在网络维护、入侵检测等方面。它支持针对网络层、协议、主机、网络或端口的过滤,正则表达式的灵活应用能帮你准确获取有用信息。tcpdump 具备开源软件的优势,接口公开,具有较强的可扩展性。运行此命令必须有root权限,它通过将网络接口设置为混杂模式,绕过标准TCP/IP堆栈,进行工作。出于安全等问题考虑,FreeBSD里通过内核取消对伪设备bpfilter的支持,来屏蔽tcpdump之类的网络分析工具。
在linux下可采用软件包或编译源代码的方式安装。
tcpdump官方网站:http://www.tcpdump.org/

2. 运行效果:
kongove at ubuntu:~/Desktop$ sudo tcpdump -i eth0 
07:27:47.755975 arp who-has 172.17.35.153 tell 172.17.35.153

3. 基本使用:
tcpdump [ -AdDeflLnNOpqRStuUvxX ] [ -c count ] [ -C file_size ] [ -F file ]
[ -i interface ] [ -m module ] [ -M secret ][ -r file ] [ -s snaplen ]
[ -T type ] [ -w file ] [ -W filecount ][ -E spi at ipaddr algo:secret,...  ]
[ -y datalinktype ] [ -Z user ] [ expression ]
通过对 tcpdump 选项、参数、表达式的组合应用,从大流量的网络数据当中,过滤出真正有用的信息,从而缩小分析范围。

3.1 tcpdump 选项:
-A 以ASCII格式打印出所有分组,并将链路层的头最小化。
-d 将匹配信息包的代码以人们能够理解的汇编格式给出;
-D 打印出系统中所有可以用tcpdump截包的网络接口;
-ddd 将匹配信息包的代码以十进制的形式输出;
-e 在输出行打印出数据链路层的头部信息;
-f 将外部的Internet地址以数字的形式打印出来;
-l 使标准输出变为缓冲行形式;
-L 列出网络接口的已知数据链路;
-n 不把网络地址转换成名字;
-N 不输出主机名中的域名部分,如“kongove.ubuntu.cn”只输出“kongove”;
-O 不运行分组分组匹配(packet-matching)代码优化程序;
-p 不将网络接口设置成混杂模式;
-q 快速输出,只输出较少的协议信息;
-S 将tcp的序列号以绝对值形式输出,而不是相对值;
-t 在输出的每一行不打印时间戳;
-u 输出未解码的NFS句柄;
-v 输出一个稍微详细的信息,例如在ip包中可以包括ttl和服务类型的信息;
-vv 输出详细的报文信息;

-c count 指定监听数据包数量,当收到指定的包的数目后,tcpdump就会停止;
-C file_size 限定数据包写入文件大小;
-F file 从指定的文件中读取表达式,忽略其它的表达式;
-i interface 指定监听网络接口;
-m module 打开指定的SMI MIB组件;
-M secret 如果tcp报文中存在TCP-MD5选项,则需要用secret作为共享的验证码用于验证TCP-MD5选选项摘要(详见RFC 2385);
-r file 从指定的文件中读取包(这些包一般通过-w选项产生);
-s snaplen 从每个分组中读取最开始的snaplen个字节,而不是默认的68个字节;
-T type  将截取的数据包直接解释为指定类型的报文,常见类型有rpc(远程过程调用)和snmp(简单网络管理协议),还包括aodv、cnfp、rpc、rtp、rtcp、snmp、tftp、vat、wb等;
-w file 指定将监听到的数据包写入文件,直接将包写入文件中,并不分析和打印出来;
-W filecount 限定数据包写入文件数量;
-E spi at ipaddr algo:secret,...  用spi at ipaddr algo:secret解密那些以addr作为地址,并且包含了安全参数索引值spi的IPsec ESP分组;
expression 综合参数表达式。

3.2 tcpdump的表达式介绍
tcpdump利用正则表达式作为过滤报文的条件,如果数据包满足表达式的条件,则会被捕获。如果没有给出任何条件,则网络上所有的数据包将会被截获。表达式中常用关键字如下:

第一种是指定参数类型的关键字,主要包括host,net,port等,如果没有指定类型,缺省的类型是host;
如:tcpdump host 222.24.20.86	截获ip为222.24.20.86的主机收发的所有的数据包

第二种是指定数据报文传输方向的关键字,主要包括src , dst ,dst or src, dst and src,缺省为src or dst。
如:tcpdump src net 222.24.20.1	截取源网络地址为 222.24.20.1 的数据包

第三种是指定协议的关键字,主要包括fddi,ip,arp,rarp,tcp,udp等类型,默认监听所有协议的数据包;
如:tucpdump arp	截获arp协议的数据包

其他重要的关键字还有,gateway,broadcast,less,greater,三种逻辑运算(取非运算是 'not ','! '; 与运算是 'and ','&& ';或运算 是'or ','|| ')等。这些关键字的巧妙组合,能灵活构造过滤条件,从而满足用户需要。

3.3 tcpdump的输出信息
tcpdump命令四种典型的输出信息:

1) 数据链路层头信息
使用命令:tcpdump -e host host1
输出结果:
11:15:12.247009 eth0 < 88:0:0:7:2b:26 0:90:27:58:af:1a ip 60: host2.25258 > host1.telnet 0:0(0) ack 22552 win 7890 (DF)
分析:“11:15:12”是显示的时间,“247009”是ID号,“eth0 <”表示从网络接口eth0接受该数据包,“88:0:0:7:2b:26”为发送数据主机的MAC地址,“ ip”是表明该数据包是IP类型数据包,“60”是数据包的长度,“ host2.25258 > host1.telnet”表明该数据包是从主机host2的25258端口发往主机host1的TELNET(23)端口。“ack 22552”表明对序列号是22552的包进行响应。“ win 7890”表明发送窗口的大小是7890。

2) ARP包的TCPDUMP输出信息
使用命令:tcpdump arp
输出结果:
22:32:42.802509 eth0 > arp who-has route tell ice (0:90:27:58:af:1a)
分析:“eth0 >”表示从网络接口eth0发送数据包。

3) TCP包的输出信息
输出信息:
src > dst: flags data-seqno ack window urgent options
分析:“src > dst:”表明从源地址到目的地址, flags是TCP包中的标志信息(S是SYN标志,F(FIN),P(PUSH),R(RST),"."(没有标记));data-seqno是数据包中的数据的顺序号,ack是下次期望的顺序号,window是接收缓存的窗口大小,urgent表明数据包中是否有紧急指针,Options是选项。

4) UDP包的输出信息
输出信息:
host.p1 > linux.p2: udp lenth
分析:从主机host的p1端口发出的一个udp类型数据包到主机linux的p2端口,包的长度是lenth。

4. 功能扩展
tcpdump还可以结合tcpshow、管道、重定向使用,从而扩展其功能。

5. 总结

6. 参考资料
man手册
tcpdump官方网站帮助文档
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.zeuux.org/pipermail/zeuux-www/attachments/20080507/515ce689/attachment.html 

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-www]

2008年05月08日 星期四 13:52

Bill Xu bill at zeuux.org
Thu May 8 13:52:34 CST 2008

I think the document is good, thank you Jianjun.

Xia Wu, please help to commit this document to the 
learning-tcpdump.cn.html, and merge them.

If this document is good enough, I wish it could be included in the 
ZEUUX handbook, since tcpdump is a very fundamental tool for the hackers.

Thank you, Jianjun. Good work.


Jianjun Kong 写道:
> 我把总结的直接贴到了下边,html见附件。请指正!
> 如果在格式等有其他要求,请告诉我。
>
> 学习tcpdump
> 作者:孔建军<kongjianjun at gmail.com>
>
> 1. tcpdump介绍
> tcpdump 是一款开源的网络数据截取分析工具,具有强大的功能和灵活的截取策略,用在网络维护、入侵检测等方面。它支持针对网络层、协议、主机、网络或端口的过滤,正则表达式的灵活应用能帮你准确获取有用信息。tcpdump 具备开源软件的优势,接口公开,具有较强的可扩展性。运行此命令必须有root权限,它通过将网络接口设置为混杂模式,绕过标准TCP/IP堆栈,进行工作。出于安全等问题考虑,FreeBSD里通过内核取消对伪设备bpfilter的支持,来屏蔽tcpdump之类的网络分析工具。
> 在linux下可采用软件包或编译源代码的方式安装。
> tcpdump官方网站:http://www.tcpdump.org/
>
> 2. 运行效果:
> kongove at ubuntu:~/Desktop$ sudo tcpdump -i eth0 
> 07:27:47.755975 arp who-has 172.17.35.153 tell 172.17.35.153
>
> 3. 基本使用:
> tcpdump [ -AdDeflLnNOpqRStuUvxX ] [ -c count ] [ -C file_size ] [ -F file ]
> [ -i interface ] [ -m module ] [ -M secret ][ -r file ] [ -s snaplen ]
> [ -T type ] [ -w file ] [ -W filecount ][ -E spi at ipaddr algo:secret,...  ]
> [ -y datalinktype ] [ -Z user ] [ expression ]
> 通过对 tcpdump 选项、参数、表达式的组合应用,从大流量的网络数据当中,过滤出真正有用的信息,从而缩小分析范围。
>
> 3.1 tcpdump 选项:
> -A 以ASCII格式打印出所有分组,并将链路层的头最小化。
> -d 将匹配信息包的代码以人们能够理解的汇编格式给出;
> -D 打印出系统中所有可以用tcpdump截包的网络接口;
> -ddd 将匹配信息包的代码以十进制的形式输出;
> -e 在输出行打印出数据链路层的头部信息;
> -f 将外部的Internet地址以数字的形式打印出来;
> -l 使标准输出变为缓冲行形式;
> -L 列出网络接口的已知数据链路;
> -n 不把网络地址转换成名字;
> -N 不输出主机名中的域名部分,如“kongove.ubuntu.cn”只输出“kongove”;
> -O 不运行分组分组匹配(packet-matching)代码优化程序;
> -p 不将网络接口设置成混杂模式;
> -q 快速输出,只输出较少的协议信息;
> -S 将tcp的序列号以绝对值形式输出,而不是相对值;
> -t 在输出的每一行不打印时间戳;
> -u 输出未解码的NFS句柄;
> -v 输出一个稍微详细的信息,例如在ip包中可以包括ttl和服务类型的信息;
> -vv 输出详细的报文信息;
>
> -c count 指定监听数据包数量,当收到指定的包的数目后,tcpdump就会停止;
> -C file_size 限定数据包写入文件大小;
> -F file 从指定的文件中读取表达式,忽略其它的表达式;
> -i interface 指定监听网络接口;
> -m module 打开指定的SMI MIB组件;
> -M secret 如果tcp报文中存在TCP-MD5选项,则需要用secret作为共享的验证码用于验证TCP-MD5选选项摘要(详见RFC 2385);
> -r file 从指定的文件中读取包(这些包一般通过-w选项产生);
> -s snaplen 从每个分组中读取最开始的snaplen个字节,而不是默认的68个字节;
> -T type  将截取的数据包直接解释为指定类型的报文,常见类型有rpc(远程过程调用)和snmp(简单网络管理协议),还包括aodv、cnfp、rpc、rtp、rtcp、snmp、tftp、vat、wb等;
> -w file 指定将监听到的数据包写入文件,直接将包写入文件中,并不分析和打印出来;
> -W filecount 限定数据包写入文件数量;
> -E spi at ipaddr algo:secret,...  用spi at ipaddr algo:secret解密那些以addr作为地址,并且包含了安全参数索引值spi的IPsec ESP分组;
> expression 综合参数表达式。
>
> 3.2 tcpdump的表达式介绍
> tcpdump利用正则表达式作为过滤报文的条件,如果数据包满足表达式的条件,则会被捕获。如果没有给出任何条件,则网络上所有的数据包将会被截获。表达式中常用关键字如下:
>
> 第一种是指定参数类型的关键字,主要包括host,net,port等,如果没有指定类型,缺省的类型是host;
> 如:tcpdump host 222.24.20.86	截获ip为222.24.20.86的主机收发的所有的数据包
>
> 第二种是指定数据报文传输方向的关键字,主要包括src , dst ,dst or src, dst and src,缺省为src or dst。
> 如:tcpdump src net 222.24.20.1	截取源网络地址为 222.24.20.1 的数据包
>
> 第三种是指定协议的关键字,主要包括fddi,ip,arp,rarp,tcp,udp等类型,默认监听所有协议的数据包;
> 如:tucpdump arp	截获arp协议的数据包
>
> 其他重要的关键字还有,gateway,broadcast,less,greater,三种逻辑运算(取非运算是 'not ','! '; 与运算是 'and ','&& ';或运算 是'or ','|| ')等。这些关键字的巧妙组合,能灵活构造过滤条件,从而满足用户需要。
>
> 3.3 tcpdump的输出信息
> tcpdump命令四种典型的输出信息:
>
> 1) 数据链路层头信息
> 使用命令:tcpdump -e host host1
> 输出结果:
> 11:15:12.247009 eth0 < 88:0:0:7:2b:26 0:90:27:58:af:1a ip 60: host2.25258 > host1.telnet 0:0(0) ack 22552 win 7890 (DF)
> 分析:“11:15:12”是显示的时间,“247009”是ID号,“eth0 <”表示从网络接口eth0接受该数据包,“88:0:0:7:2b:26”为发送数据主机的MAC地址,“ ip”是表明该数据包是IP类型数据包,“60”是数据包的长度,“ host2.25258 > host1.telnet”表明该数据包是从主机host2的25258端口发往主机host1的TELNET(23)端口。“ack 22552”表明对序列号是22552的包进行响应。“ win 7890”表明发送窗口的大小是7890。
>
> 2) ARP包的TCPDUMP输出信息
> 使用命令:tcpdump arp
> 输出结果:
> 22:32:42.802509 eth0 > arp who-has route tell ice (0:90:27:58:af:1a)
> 分析:“eth0 >”表示从网络接口eth0发送数据包。
>
> 3) TCP包的输出信息
> 输出信息:
> src > dst: flags data-seqno ack window urgent options
> 分析:“src > dst:”表明从源地址到目的地址, flags是TCP包中的标志信息(S是SYN标志,F(FIN),P(PUSH),R(RST),"."(没有标记));data-seqno是数据包中的数据的顺序号,ack是下次期望的顺序号,window是接收缓存的窗口大小,urgent表明数据包中是否有紧急指针,Options是选项。
>
> 4) UDP包的输出信息
> 输出信息:
> host.p1 > linux.p2: udp lenth
> 分析:从主机host的p1端口发出的一个udp类型数据包到主机linux的p2端口,包的长度是lenth。
>
> 4. 功能扩展
> tcpdump还可以结合tcpshow、管道、重定向使用,从而扩展其功能。
>
> 5. 总结
>
> 6. 参考资料
> man手册
> tcpdump官方网站帮助文档
>   
>
> ------------------------------------------------------------------------
>
> 学习tcpdump
> 作者:孔建军<kongjianjun at gmail.com>
>
> 1. tcpdump介绍
> tcpdump 是一款开源的网络数据截取分析工具,具有强大的功能和灵活的截取策 
> 略,用在网络维护、入侵检测等方面。它支持针对网络层、协议、主机、网络或 
> 端口的过滤,正则表达式的灵活应用能帮你准确获取有用信息。tcpdump 具备开 
> 源软件的优势,接口公开,具有较强的可扩展性。运行此命令必须有root权限, 
> 它通过将网络接口设置为混杂模式,绕过标准TCP/IP堆栈,进行工作。出于安全 
> 等问题考虑,FreeBSD里通过内核取消对伪设备bpfilter的支持,来屏蔽tcpdump 
> 之类的网络分析工具。
> 在linux下可采用软件包或编译源代码的方式安装。
> tcpdump官方网站:http://www.tcpdump.org/
>
> 2. 运行效果:
> kongove at ubuntu:~/Desktop$ sudo tcpdump -i eth0
> 07:27:47.755975 arp who-has 172.17.35.153 tell 172.17.35.153
>
> 3. 基本使用:
> tcpdump [ -AdDeflLnNOpqRStuUvxX ] [ -c count ] [ -C file_size ] [ -F 
> file ]
> [ -i interface ] [ -m module ] [ -M secret ][ -r file ] [ -s snaplen ]
> [ -T type ] [ -w file ] [ -W filecount ][ -E spi at ipaddr algo:secret,...  ]
> [ -y datalinktype ] [ -Z user ] [ expression ]
> 通过对 tcpdump 选项、参数、表达式的组合应用,从大流量的网络数据当中, 
> 过滤出真正有用的信息,从而缩小分析范围。
>
> 3.1 tcpdump 选项:
> -A 以ASCII格式打印出所有分组,并将链路层的头最小化。
> -d 将匹配信息包的代码以人们能够理解的汇编格式给出;
> -D 打印出系统中所有可以用tcpdump截包的网络接口;
> -ddd 将匹配信息包的代码以十进制的形式输出;
> -e 在输出行打印出数据链路层的头部信息;
> -f 将外部的Internet地址以数字的形式打印出来;
> -l 使标准输出变为缓冲行形式;
> -L 列出网络接口的已知数据链路;
> -n 不把网络地址转换成名字;
> -N 不输出主机名中的域名部分,如“kongove.ubuntu.cn”只输出“kongove”;
> -O 不运行分组分组匹配(packet-matching)代码优化程序;
> -p 不将网络接口设置成混杂模式;
> -q 快速输出,只输出较少的协议信息;
> -S 将tcp的序列号以绝对值形式输出,而不是相对值;
> -t 在输出的每一行不打印时间戳;
> -u 输出未解码的NFS句柄;
> -v 输出一个稍微详细的信息,例如在ip包中可以包括ttl和服务类型的信息;
> -vv 输出详细的报文信息;
>
> -c count 指定监听数据包数量,当收到指定的包的数目后,tcpdump就会停止;
> -C file_size 限定数据包写入文件大小;
> -F file 从指定的文件中读取表达式,忽略其它的表达式;
> -i interface 指定监听网络接口;
> -m module 打开指定的SMI MIB组件;
> -M secret 如果tcp报文中存在TCP-MD5选项,则需要用secret作为共享的验证码 
> 用于验证TCP-MD5选选项摘要(详见RFC 2385);
> -r file 从指定的文件中读取包(这些包一般通过-w选项产生);
> -s snaplen 从每个分组中读取最开始的snaplen个字节,而不是默认的68个字节;
> -T type  将截取的数据包直接解释为指定类型的报文,常见类型有rpc(远程过 
> 程调用)和snmp(简单网络管理协议),还包括aodv、cnfp、 rpc、rtp、 
> rtcp、snmp、tftp、vat、wb等;
> -w file 指定将监听到的数据包写入文件,直接将包写入文件中,并不分析和打 
> 印出来;
> -W filecount 限定数据包写入文件数量;
> -E spi at ipaddr algo:secret,...  用spi at ipaddr algo:secret解密那些以addr 
> 作为地址,并且包含了安全参数索引值spi的IPsec ESP分组;
> expression 综合参数表达式。
>
> 3.2 tcpdump的表达式介绍
> tcpdump利用正则表达式作为过滤报文的条件,如果数据包满足表达式的条件, 
> 则会被捕获。如果没有给出任何条件,则网络上所有的数据包将会被截获。表达 
> 式中常用关键字如下:
>
> 第一种是指定参数类型的关键字,主要包括host,net,port等,如果没有指定 
> 类型,缺省的类型是host;
> 如:tcpdump host 222.24.20.86 截获ip为222.24.20.86的主机收发的所有的数据包
>
> 第二种是指定数据报文传输方向的关键字,主要包括src , dst ,dst or src, 
> dst and src,缺省为src or dst。
> 如:tcpdump src net 222.24.20.1       截取源网络地址为 222.24.20.1 的 
> 数据包
>
> 第三种是指定协议的关键字,主要包括fddi,ip,arp,rarp,tcp,udp等类 
> 型,默认监听所有协议的数据包;
> 如:tucpdump arp      截获arp协议的数据包
>
> 其他重要的关键字还有,gateway,broadcast,less,greater,三种逻辑运算 
> (取非运算是 'not ','! ';与运算是 'and ','&& ';或运算 是'or ','|| 
> ')等。这些关键字的巧妙组合,能灵活构造过滤条件,从而满足用户需要。
>
> 3.3 tcpdump的输出信息
> tcpdump命令四种典型的输出信息:
>
> 1) 数据链路层头信息
> 使用命令:tcpdump -e host host1
> 输出结果:
> 11:15:12.247009 eth0 < 88:0:0:7:2b:26 0:90:27:58:af:1a ip 60: 
> host2.25258 > host1.telnet 0:0(0) ack 22552 win 7890 (DF)
> 分析:“11:15:12”是显示的时间,“247009”是ID号,“eth0 <”表示从网络接口 
> eth0接受该数据包,“88:0:0:7:2b:26”为发送数据主机的MAC地址,“ ip”是表明 
> 该数据包是IP类型数据包,“60”是数据包的长度,“ host2.25258 > 
> host1.telnet”表明该数据包是从主机host2的25258端口发往主机host1的TELNET 
> (23)端口。“ack 22552”表明对序列号是22552的包进行响应。“ win 7890”表明 
> 发送窗口的大小是7890。
>
> 2) ARP包的TCPDUMP输出信息
> 使用命令:tcpdump arp
> 输出结果:
> 22:32:42.802509 eth0 > arp who-has route tell ice (0:90:27:58:af:1a)
> 分析:“eth0 >”表示从网络接口eth0发送数据包。
>
> 3) TCP包的输出信息
> 输出信息:
> src > dst: flags data-seqno ack window urgent options
> 分析:“src > dst:”表明从源地址到目的地址, flags是TCP包中的标志信息(S 
> 是SYN标志,F(FIN),P(PUSH),R(RST),"."(没有标记));data-seqno是数据 
> 包中的数据的顺序号,ack是下次期望的顺序号,window是接收缓存的窗口大 
> 小,urgent表明数据包中是否有紧急指针,Options是选项。
>
> 4) UDP包的输出信息
> 输出信息:
> host.p1 > linux.p2: udp lenth
> 分析:从主机host的p1端口发出的一个udp类型数据包到主机linux的p2端口,包 
> 的长度是lenth。
>
> 4. 功能扩展
> tcpdump还可以结合tcpshow、管道、重定向使用,从而扩展其功能。
>
> 5. 总结
>
> 6. 参考资料
> man手册
> tcpdump官方网站帮助文档
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.zeuux.org/pipermail/zeuux-www/attachments/20080508/ce4a16d6/attachment-0001.html 

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-www]

如下红色区域有误,请重新填写。

    你的回复:

    请 登录 后回复。还没有在Zeuux哲思注册吗?现在 注册 !

    Zeuux © 2024

    京ICP备05028076号