2008年05月07日 星期三 22:01
我把总结的直接贴到了下边,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
2008年05月08日 星期四 13:52
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
Zeuux © 2024
京ICP备05028076号