WINDUMP参数

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

WINDUMP参数
转WINDUMP参数
[ 2006-04-25 11:07:40 am | 作者: 残月]
字体大小: 大| 中| 小
TCP数据报头六个标志位
U (URG)Urgent pointer field significant 紧急指针,用到的时候值为,用来处理避免TCP数据流中断
A (ACK)Acknowledgment field significant 置1时表示确认号(Acknowledgment Number)为合法,为0的时候表示数据段不包含确认信息,确认号被忽略
P (PSH)Push function. PUSH标志的数据,置1时请求的数据段在接收方得到后就可直接送到应用程序,而不必等到缓冲区满时才传送
R (RST)Reset the connection 用于复位因某种原因引起出现的错误连接,也用来拒绝非法数据和请求。

如果接收到RST位时候,通常发生了某些错误。

S (SYN)Synchronize sequence numbers 用来建立连接,在连接请求中,SYN=1,ACK=0,连接响应时,SYN=1,ACK=1。

即,SYN和ACK来区分Connection Request和Connection Accepted F (FIN)No more data from sender. 用来释放连接,表明发送方已经没有数据发送了
TCP的三次握手过程:
首先客户端(请求方)在连接请求中,发送SYN=1,ACK=0的TCP数据包给服务器端(接收请求端),表示要求同服务器端建立一个连接;然后如果服务器端响应这个连接,就返回一个SYN=1,ACK=1的数据报给客户端,表示服务器端同意这个连接,并要求客户端确认;最后客户端就再发送SYN=0,ACK=1的数据包给服务器端,表示确认建立连接。

后面的范例种我们就利用这些标志位和TCP协议连接的三次握手
特性来进行扫描探测的.基本的介绍就这么多了,对TCP/IP不太熟的,建议去看看W.Richard Stevens的鼎鼎大作《TCP/IP详解》, 第1章Windump软件简介
1.1 概述
Windump是Windows环境下基于命令行的网络数据包分析和嗅探工具,其Unix版本名称为T cpdump。

它可以捕捉网络上两台电脑之间所有的数据包,供网络管理员/入侵分析员做进一步流量分析和入侵检测。

在这种监视状态下,任何两台电脑之间都没有秘密可言,所有的流量、所有的数据都逃不过你的眼睛(当然加密的数据不在讨论范畴之内,而且,对数据包分析的结果依赖于你的TCP/IP知识和经验,不同水平的人得出的结果可能会大相径庭)。

如果你做过DEBUG或者反汇编,你会发现二者是那么惊人的相似。

Windump是免费软件,命令行下面使用,需要WinPcap驱动.
1.2 功能简介
1.2.1 运行
我们打开一个命令提示符,运行windump后出现:
D:\>windump
windump:listening
on\Device\Packet_{9D9A4413-7F41-463A-BA3C-
B17145F4A626}
/*
如果你看见屏幕上显示出这个信息,这表示windump正在监听我的网卡,网卡的设备名称是:
\ Device\Packet_{9D9A4413-7F41-463A-BA3C-B17145F4A626},说明你的winpcap驱动已经正常安装,否则请下载并安装正确的驱动。

*/
1.2.2 Windump参数简介
windump支持相当多的不同参数,如使用-i参数指定Windump 监听的网络界面,这在计算机具有多个网络界面时非常有用,使用-c
参数指定要监听的数据包数量,使用-w参数指定将监听到的数据包写入文件中保存,等等。

Windump的参数很多,运行windump -h可以看到:
D:\>windump -h
windump version /doc/ce15593589.html,, based on Windump version current-cvs.tc /doc/ce15593589.html,
WinPcap version 3.0 alpha, based on libpcap version /doc/ce15593589.html,
Usage: windump [-aAdDeflnNOpqRStuvxX] [-B size] [-c count] [ -C file_size ]
[ -F file ] [ -i interface ] [ -r file ] [ -s snaplen ]
[ -T type ] [ -w file ] [ -E algo:secret ] [ expression ]
Windump的参数选项介绍
-a 将网络地址和广播地址转变成名字;
-d 将匹配信息包的代码以人们能够理解的汇编格式给出;
-dd 将匹配信息包的代码以c语言程序段的格式给出;
-ddd 将匹配信息包的代码以十进制的形式给出;
-e 在输出行打印出数据链路层的头部信息;
-f 将外部的Internet地址以数字的形式打印出来;
-l 使标准输出变为缓冲行形式;如Windump -l>tcpcap.txt
-n 不把网络地址转换成名字;
-N 不打印出默认的域名。

-nn 不进行端口名称的转换。

-O 不进行匹配代码的优化
-t 在输出的每一行不打印时间戳;
-tt 打印原始的、未格式化过的时间。

-v 输出一个稍微详细的信息,例如在ip包中可以包括ttl和服务类型的信息;
-vv 输出详细的报文信息;
-c 在收到指定的包的数目后,Windump就会停止;
-F 从指定的文件中读取表达式,忽略其它的表达式;
-i 指定监听的网络接口;
-r 从指定的文件中读取包(这些包一般通过-w选项产生);
-w 直接将包写入文件中,并不分析和打印出来;
-T 将监听到的包直接解释为指定的类型的报文,常见的类型有rpc (远程过程调用)和snmp(简单网络管理协议;)
直接启动windump将监视第一个网络界面上所有流过的数据包,然而更复杂的windump参数是用于过滤目的,这是因为网络中流量很大,如果不加分辨将所有的数据包都截留下来,数据量太大,反而不容易发现需要的数据包。

使用这些参数定义的过滤规则可以截留特定的数据包,以缩小目标,才能更好的分析网络中存在的问题。

windump使用参数指定要监视数据包的类型、地址、端口等,根据具体的网络问题,充分利用这些过滤规则就能达到迅速定位故障的目的。

1.2.3 Windump表达式介绍
表达式是一个正则表达式,Windump利用它作为过滤报文的条件,如果一个报文满足表达式的条件,则这个报文将会被捕获。

如果没有给出任何条件,则网络上所有的信息包将会被截获。

在表达式中一般如下几种类型的关键字。

ü第一种是关于类型的关键字,主要包括host,net,port, 例如host 192.168.0.111,指明
192.168.0.111是一台主机,net 192.168.0.0 指明192.168.0.0是一个网络地址,port 23 指明端口号是23。

如果没有指定类型,缺省的类型是host.
ü第二种是确定传输方向的关键字,主要包括src , dst ,dst or src, dst and src ,这些关键字指明了传输的方向。

举例说明,src192.168.0.94 ,指明ip包中源地址是192.168.0.94 , dst net 192.168.0.0 指明目的网络地址是192.168.0.0。

如果没有指明方向关键字,则缺省是src or dst关键字。

ü第三种是协议的关键字,主要包括fddi,ip,arp,rarp,tcp,udp等类型。

Fddi指明是在FDDI(分布式光纤数据接口网络)上的特定的网络协议,实际上它是"ether"的别名,fddi和ether具有类似的源地址和目的地址,所以可以将fddi协议包当作ether的包进行处理和分析。

其他的几个关键字就是指明了监听的包的协议内容。

如果没有指定任何协议,则Windump将会监听所有协议的信息包。

除了这三种类型的关键字之外,其他重要的关键字如下:gateway, broadcast,less,greater,还有三种逻辑运算,取非运算是'not ' '! ', 与运算是'and','&&';或运算是'or' ,'││';这些关键字可以组合起来构成强大的组合条件来满足人们的需要,下面举几个例子来说明。

A想要截获所有192.168.0.94 的主机收到的和发出的所有的数据包:
#Windump host 192.168.0.94
B想要截获主机192.168.0.94 和主机192.168.0.168 或192.168.0.111的通信,使用命令:(在命令行中适用括号时,一定要#Windump host 192.168.0.94 and (192.168.0.168 or 192.168.0.111)
C如果想要获取主机192.168.0.94除了和主机192.168.0.111之外所有主机通信的ip包,使用命令:#Windump ip host 192.168.0.94 and ! 192.168.0.111
D如果想要获取主机192.168.0.94接收或发出的telnet包,使用如下命令:
#Windump tcp port 23 host 192.168.0.94
1.2.4 Windump的输出结果介绍
下面我们介绍几种典型的Windump命令的输出信息
ü A,数据链路层头信息
使用命令
#Windump --e host test100
16:20:51.602645 arp who-has TEST100 tell wh
16:20:51.602931 arp reply TEST100 is-at 0:1:2:9a:d:24
16:20:51.602979 wh.137 > TEST100.137:
16:29:26.397806 TEST100.139 > wh.1226: . 4218060367:4218060368(1) ack 4122708076 win 17223 分析:16:20:51是显示的时间,602645是ID号,首先主机wh 发出arp请求test100的MAC地址,接着test100返回了它的MAC地址,wh的137与test100的137端口发送.test100的139端口向wh 的1226端口发送数据, ack 4122708076 表明对序列号是4122708076的包进行响应. win 17223表明发送窗口的大小是17223 ü B,ARP包的WINDUMP输出信息
使用命令
#Windump arp
得到的输出结果是:
22:32:42.802509 arp who-has 192.168.0.168 tell 192.168.0.94 22:32:42.802902 arp reply 192.168.0.168 is-at 0:1:2:9a:d:24 分析: 22:32:42是时间戳, 802509是ID号, arp表明是ARP请求包, who-has 192.168.0.168 tell 192.168.0.94 表示主机192.168.0.94请求主机192.168.0.168的MAC地址.接着arp reply 192.168.0.168 is-at 0:1:2:9a:d:24表示主机192.168.0.168收到请求并返回自己的MAC地址.
Unix下的T cpdump格式略有不同,如下
22:32:42.802509 eth0 > arp who-has route tell ice (0:90:27:58:af:1a)
22:32:42.802902 eth0 < arp reply route is-at 0:90:27:12:10:66 (0:90:27:58:af:1a)
eth0 <表示从网络接口eth0 接受该数据包,eth0 >表示从网络接口设备发送数据包, 其他与windump 一样.
ü C,TCP包的输出信息
用WINDUMP捕获的TCP包的一般输出信息是:
时间戳&ID号src.port1>dst.port2 : flags data-seqno ack
window urgent options
02:53:03是时间戳, 541838是ID号,src > dst:表明从源地址到目的地址, port1,port2代表端口号,flags是TCP包中的标志信息,S 是SYN标志, F (FIN), P (PUSH) , R (RST) "." (没有标记);
data-seqno是数据包中的数据的顺序号, ack是下次期望的顺序号, window是接收缓存的窗口大小, urgent表明数据包中是否有紧急指针. Options是选项.
ü D,UDP包的输出信息
用WINDUMP捕获的UDP包的一般输出信息是:
时间戳&ID号src.port1>dst.port2: udp length
UDP十分简单,上面的输出行表明从主机src的port1端口发出的一个UDP数据包到主机dst的port2端口,类型是UDP,包的长度是length
1.2.5 Windump网络数据的过滤
不带任何参数的Windump将搜索系统中所有的网络接口,并显示它截获的所有数据,这些数据对我们不一定全都需要,而且数据太多不利于分析。

所以,我们应当先想好需要哪些数据,Windump提供以下参数供我们选择数据:
Windump后直接跟数据-链路层上选择协议,包括ip、arp、rarp、ipx都是这一层的。

例如:
D:\>Windump arp //将只显示网络中的arp即地址转换协议信息。

-i选择过滤的网络接口,如果是作为路由器至少有两个网络接口,通过这个选项,就可以只过滤指定的接口上通过的数据。

例如:src、dst、port、host、net、ether、gateway这几个选项又分别包含src、dst、port、host、net、ehost等附加选项。

他们用来分辨数据包的来源和去向,src host 192.168.0.1指定源主机IP地址是192.168.0.1,dst net 192.168.0.0/24指定目标是网络192.168.0.0。

以此类推,host是与其指定主机相关无论它是源还是目的,net是与其指定网络相关的,ether后面跟的不是IP地址而是物理地址,而
gateway则用于网关主机。

可能有点复杂,看下面例子就知道了:D:\>Windump src host 192.168.0.1 and dst net 192.168.0.0/24
过滤的是源主机为192.168.0.1与目的网络为192.168.0.0的报头。

D:\>Windump ether src 00:50:04:BA:9B and dst……
过滤源主机物理地址为XXX的报头(为什么ether src后面没有host或者net?物理地址当然不可能有网络喽)。

D:\>Windump src host 192.168.0.1 and dst port not telnet
过滤源主机192.168.0.1和目的端口不是telnet的报头。

ip icmp arp rarp和tcp、udp、icmp这些选项等都要放到第一个参数的位置,用来过滤数据报的类型。

例如:
D:\>Windump ip src……
只过滤数据-链路层上的IP报头。

D:\>Windump udp and src host 192.168.0.1
只过滤源主机192.168.0.1的所有udp报头
-n不进行IP地址到主机名的转换。

1.2.6 Windump实战解析
我经常用的命令是windump –n –S,或者windump –n –S –v 或者windump –n-S-vv.-n表示源地址和目的地址不采用主机名的形式显示而采用IP地址的形式;-S是显示TCP/IP的实际进程数,如果不选择这个选项,可能出现的就是近似值,比如:如果现在的进程数是87334271,下一秒变成了多了一个,就会显示出来是87334272.-v和-vv是让机器显示更加全面的信息,显示诸如存活时间/IP的ID等信息.,上一节
1.2.2中已经对各参数的详细功能做了介绍.
接着我们对TCP握手过程进行嗅探分析,在windows命令行界面下,运行windump,如下:
D:\>windump –n
windump: listening on\Device\Packet_{9D9A4413-7F41-463A-BA3C-B17145F4A626}
02:53:03.541838 192.168.0.194.4423 > 192.168.0.168.80: S
4057648491:4057648491(0) win 16384 (DF)
/*
这此TCP第一次握手过程,所表示的含义是IP地址为192.168.0.194的电脑向IP地址为
192.168.0.168的电脑发起一个TCP的连接请求。

其中02:53:03.541838表示时间戳与ID号;192.168.0.194为源IP地址,端口4423;192.168.0.168是目的地址,端口80,我们可以判断这是连接在远程主机的WEB服务上;S
4057648491:4057648491(0)表示IP194主机主动发起了一个SYN请求,这是第一步握手,4057648491是请求端的初始序列号;win 16384 表示发端通告的窗口大小;mss 1460表示由发端指明的最大报文段长度。

*/
02:53:03.542005 192.168.0.168.1234 > 192.168.0.194.4423: S 1391008532:1391008532(0) ack 4057648492 win 17520 (DF) /*
同上一样,时间戳&ID号为02:53:03.542005;源IP地址为192.168.0.168端口80,而目的IP地址变为192.168.0.194端4423;接着是S 1391008532:1391008532(0) ack 4057648492,这是第二步握手,1391008532是服务器端所给的初始序列号,ack 4057648492是确认序号,是对第一次握手中客户端发起请求的初始序列号加1。

该行表示服务器端接受客户端发起的TCP连接请求,并发出自己的初始序列号。

*/
02:53:03.542167 192.168.0.194.4423 > 192.168.0.168.1234: . ack 1 win 17520 (DF)
/*
这是三步握手的最后一步,客户端发送ack 1,表示三步握手已经正常结束,下面就可以传送数据了。

*/
当TCP三次握手不成功又是怎么样的呢?接着telnet到一台没有开telnet服务的计算机上面,插看windump抓获的数据包C:\Documents and Settings\wh>telnet 192.168.0.194
Connecting To 192.168.0.194...Could not open a connection to host on port 23 : Connect failed
/*
上面说明从192.168.0.168 telnet192.168.0.194 失败.
*/
D:\>windump –n
windump: listening on\Device\Packet_{9D9A4413-7F41-463A-BA3C-B17145F4A626}
18:19:45.278916 arp who-has 192.168.0.194 tell 192.168.0.168
/*
上面的信息说明192.168.0.168因为不知道192.168.0.194的MAC地址,所以首先向网络种发送ARP 广播包
*/
18:19:45.279090 arp reply 192.168.0.194 is-at 0:d0:f8:38:de:ab
/*
接着192.168.0.194回应192.168.0.168的请求,告诉192.168.0.168它的MAC地址是
0:d0:f8:38:de:ab
*/
18:19:45.279108 192.168.0.168.1148 > 192.168.0.194.23: S 2869223552:2869223552(0) win 16384 (DF)
/*
然后192.168.0.168向192.168.0.194发起SYN请求
*/
18:19:45.279269 192.168.0.194.23 > 192.168.0.168.1148: R
0:0(0) ack 2869223553 win 0
/*
上面这行信息表示目标主机拒绝了这一请求,故发送R 0:0(0)的响应,表示不接受192.168.0.168的请求。

在接下面的几行中我们看见192.168.0.168连续向192.168.0.194发送SYN请求,一共三次请求,但都被目标主机拒绝
*/
18:19:45.769542 192.168.0.168.1148 > 192.168.0.194.23: S 2869223552:2869223552(0) win 16384 (DF)
18:19:45.769757 192.168.0.194.23 > 192.168.0.168.1148: R 0:0(0) ack 1 win 0
18:19:46.316397 192.168.0.168.1148 > 192.168.0.194.23: S 2869223552:2869223552(0) win 16384 (DF)
18:19:46.316636 192.168.0.194.23 > 192.168.0.168.1148: R 0:0(0) ack 1 win 0
以上是利用Windump对TCP的三次握手过程进行分析,Windump的参数很多,功能也非常强大,实际运用中根据实际的需求,来设置参数,获得你所需要的信息.相信每次使用都会有不同的收获.WinDump手册
名称
windump –获取网络流量
命令格式
windump [ -aBdDeflnNOpqRStvxX ] [ -c count ] [ -F file ]
[ -i interface ] [ -m module ] [ -r file ]
[ -s snaplen ] [ -T type ] [ -w file ]
[ -E algo:secret ] [ expression ]
描述
Tcpdump 输出网卡数据包中匹配布尔表达式的数据包头。

SunOS 系统下使用nit或bpf:要运行tcpdump,你必须有对dev/nit或/dev/bpf*的权利。

Solaris
系统下使用dlpi:你必须有对网络假设置的权利。

HP-UX系统下使用dlpi:你应该以超级用户ROOT或安装SETUID到ROOT下。

IRIX下使用SNOOP:你应该以超级用户ROOT或安装SETUID到ROOT下。

LINUX下:你应该以超级用户ROOT或安装SETUID到ROOT下。

在系统Ultrix和Digital UNIX:
命令参数
-a
将网络和广播地址转化为名称
-c
接收指定数据包后退出
-d
接收人可读的包匹配编译代码到标准输出,然后停止
-dd
以C程序分段方式捕获包匹配代码
-ddd
以十进制数据形式捕获包匹配代码
-e
在每个捕获行打印链路层头标
-E
algo:secret为解密IPSE ESP包使用算法。

算法可以是des-cbc, 3des-cbc, blowfish-cbc, rc3-cbc, cast128-cbc, 或none。

默认值是desc-cbc。

只有当TCPDUMP编译时使用激活加密选项时,才可以解密数据包。

Secret是ESP密匙是ASCII码。

当前还不能认为一定是二进制值。

该选项是以RFC2406ESP为假设,而不是RFC1827 ESP。

只用于调试,不鼓励用真正的密码作为选项。

当你在PS或其他场合,把IPSEC密码写在命令行上时,会被他人看到。

-f
不用符号而用数字方式输出外部英特网地址
-F
使用文件作为过滤表达式的输入。

命令行的其他部分会被忽略。

-i
在接口上监听。

如果没有指定,TCPDUMP将搜索系统接口列表中最小,被配置激活的接口(LOOPBACK接口除外)。

可用最先匹配替换这种关系。

在WINDOWS中接口可以是网卡的名称,或是网卡的号码(-D参数可显示该号码)。

内核为2。

2或其后的LINUX系统,参数“ANY”可以获取所有接口的数据。

应注意的是在混乱模式下不能使用“ANY”参数。

标准输出行缓存。

如果你想在捕获数据时查看的话,这个参数很有用。

例如:“tcpdump -l │ tee dat or ``tcpdump -l > dat & tail -f dat.”
n
不要将地址(如主机地址,端口号)转换为名称
-N
不要打印主机名称的域名限定。

如:如果你使用该参数,TCPDUMP会输出“NIC”而不是“NIC。

DDN。

MIL”。

-m
从文件模块中载入SMI MIB 模块定义。

这个选项可以为TCPDUMP载入多个MIB模块
-O
不要运行包匹配代码优化器。

只有在你怀疑优化器有问题时可以使用这个参数。

-p
不要让接口处于“混乱”模式。

注意接口可能由于其他原因处于“混乱”模式;因此“-p”不能用作以太网络主机或广播的缩写。

-q
快速(安静?)输出。

打印较少的协议信息,因此输出行更短。

-r
从文件中读取包(与参数据-W一起使用)。

如果文件是“-”就使用标准输入。

-s
不使用默认的68个字节,更改从每个包中获取数据的字节数量(SunOS系统实际最小为96)。

对于IP,ICMP,TCP和UDP包68个字节已足够,但是对命名服务和NFS包,他们的协议会被截断(见下面)。

包被截断是因为在使用参数``[│proto]输出时指定受限制的快照,proto是被截断协议层的名称。

注意如果使用大的快照会增加处理包的时间,并且明显地减少包的缓存数量。

也许会导致包的丢失。

你应该将snaplen 设置成你感兴趣协议的最小数。

当snaplen 为0时接收整个包。

-T
根据表达式将选中的数据包表达成指定的类型。

当前已有的类型有CNFP(Cisco的网络流量协议),rpc(远端程序调用),rtp(实时程序协议),rtcp(实时程序控制协议),snmp(简单网络管理协议),vat(可视单频工具),和wb(分布式白板)。

-R
假设ESP/AH包遵守旧的说明(RFC1825到RFC1829)。

如果该参数被指定,TCPDUMP不打输出域。

因为在ESP/AH说明中没有协议版本,TCPDUMP就无法推断出其版本号。

-S
输出绝对TCP序列号,而不是相对号。

每个捕获行不要显示时间戳。

-tt
每个捕获行显示非格式化的时间时间戳。

-v
详细输出。

例如,显示生存时间TTL,标识符,总长度和IP数据包的选项。

也进行额外的包完整性较验,如验证IP和ICMP的头标较验值。

-vv
更为详细的输出。

例如,显示NFS中继包中的其他域。

-vvv
很详细的输出。

如,完全输出TELNET SB… SE选项。

带-X参数
的TELNET,打印并以十六进制输出。

-w
不对原始数据包解析打印而是转到文件中去。

以后可用-r选项打印。

当文件名为“-”表示标准输出。

-x
以十六进制(去除链路层头标)输出每个数据包。

输出整个包的小部分或snaplen 个字节。

-X
输出十六进制同时,输出ASCII码。

如果-x也被设置,数据包会以十六制/ASCII码显示。

这对于分析新协议非常方便。

如果-x也没有设置,一些数据包的部分会以十六制/ASCII码显示。

Win32特殊扩展-B
以千字节为单位设置驱动缓存。

默认缓存为1M(即1000)。

如果在获取数据包时有数据丢失,建议使用该参数增大核心缓存大小,因为驱动缓存大小对数据捕获性能有很大影响。

-D
显示系统上可用的网卡列表。

该参数将返回每块网卡的号码,名称和描述。

用户可以输入“WinDump –i 网卡名称”或“WinDump –i 网卡号码”。

如果机器有多块网卡,不带参数的WINDUMP命令会从系统的第一块可用网卡开始。

表达式
选择哪些包被捕获。

如果没有指定表达式,会捕获所有在网络中的数据包。

否则只获捕表达式为真的数据包。

表达式由一个或多个原语组成。

原语通常由一个ID(名称或号码)前面加一个或多个限定词组成。

有三种不同的限定词。

类型
限定词指出id,名称或号码属于哪种类型。

可能的类型包括:host,net和port。

如?host foo?, `net
128.3', `port 20'. 如果没有指定类型,假设为host。

方向
限定词指出特定的传输方向,是从id传来还是传到id。

可能方向是src, dst, src or dst 和src and dst。

例如`src foo', `dst net 128.3', `src or dst port ftp-data'。

如果没有方向限定词将指定src or dst。

对于…空?链路层(像SLIP这样的点到点协议),可以用inbound和outbound 限定词指明需要的方向。

协议
限定词限定匹配某类特定的协议。

可能的协议有:ether, fddi, tr, ip, ip6, arp, rarp, decnet, tcp和udp。

如`ether src foo', `arp net 128.3', `tcp port 21'。

如没指定协议,则假设匹配所有协议。

如`src foo' 指`(ip or arp or rarp) src foo' (但后面的表达式不合法法)(except the latter is not legal syntax), `net bar' 指`(ip or arp or rarp) net bar' 和`port 53' 指`(tcp or udp) port 53'。

`fddi' 实际上是?ether?的别名;解析器会认为两者都是指“指定接口中使用的数据链路层”FDDI头标包括类似以太网的源和目的地址,经常包含类似以太网的包类型,所以你可像对以太网字段一样过滤FDDI域。

FDDI头标也包括其他域,但你不能在表达式中直接使用他们。

同样?tr?也是?ether?的别名;前一段FDDI头标的情况也适用于令牌环网头标。

除了以上所讲的,还有一些特殊的原语关键字不使用这种方式:gateway, broadcast, less, greater 和算术表达式,都描述如下:通过使用and, or和not 结合原语,构成更复杂的过滤表达式。

如`host foo and not port ftp and not port ftp-data'。

为了减少输入,可以忽略相同的限定词列表。

如`tcp dst port ftp or ftp-data or domain' 实际等同于`tcp dst port ftp or tcp dst port ftp-data or tcp dst port domain'.
网络流量分析工具Windump简单介绍
2006年10月29日星期日19:51
工具名称:Windump
运行平台:Windows/Unix
软件类别:免费软件
网址:http://winpcap.polito.it/install/default.htm
Windump是Windows环境下一款经典的网络协议分析软件,其Unix版本名称为T cpdump。

它可以捕捉网络上两台电脑之间所有的数据包,供网络管理员/入侵分析员做进一步流量分析和入侵检测。

在这种监视状态下,任何两台电脑之间都没有秘密可言,(当然加密的数据不在讨论范畴之内,而且,对数据包分析的结果依赖于你的TCP/IP知识和经验)。

在W.Richard Stevens的大作《TCP/IP详解》卷一中,通篇采用T cpdump捕捉的数据包来向读者讲解TCP/IP;而当年美国最出色的电脑安全专家在追捕世界头号黑客米特尼克时,也使用了T cpdump,Tcpdump/Windump的价值由此可见一斑。

该软件是免费软件,命令行下面使用,需要WinPcap驱动,该驱动可以在
http://winpcap.polito.it/install/default.htm下载。

打开一个命令提示符,运行windump后出现:
D:\tools>windump
windump: listening on
\Device\NPF_{3B4C19BE-6A7E-4A20-9518-F7CA659886F3} 这表示windump正在监听我的网卡,网卡的设备名称是:
\Device\NPF_{3B4C19BE-6A7E-4A20-9518-F7CA659886F3} 如果你看见屏幕上显示出这个信息,说明你的winpcap驱动已经正常安装,否则请下载并安装正确的驱动。

Windump的参数很多,运行windump -h可以看到:Usage: windump [-aAdDeflnNOpqRStuvxX] [-B size] [-c count] [ -C file_size ] [ -F file ] [ -i interface ] [ -r file ] [ -s snaplen ] [ -T type ] [ -w file ] [ -E algo:secret ] [ expression ]
下面结合TCP的三步握手来介绍Windump的使用:
D:\tools>windump -n
windump: listening on
\Device\NPF_{3B4C19BE-6A7E-4A20-9518-F7CA659886F3}
09:32:30.977290 IP 192.168.0.226.3295 > 192.168.0.10.80: S 912144276:912144276(0) win 64240 (DF)//第一行
09:32:30.978165 IP 192.168.0.10.80 > 192.168.0.226.3295: S 2733950406:2733950406(0) ack 912144277 win 8760 (DF)//第二行
09:32:30.978191 IP 192.168.0.226.3295 > 192.168.0.10.80: . ack 1 win 64240 (DF)//第三行
先看第一行。

其中09:32:30.977290表示时间;192.168.0.226为源IP地址,
端口3295,其实就是我自己的那台电脑;192.168.0.10是目的地址,端口80,我们可以判断这是连接在远程主机的WEB服务上面;S 912144276:912144276(0)表示我的电脑主动发起了一个SYN请求,这是第一步握手,912144276是请求端的初始序列号;win 64240 表示发端通告的窗口大小;mss 1460表示由发端指
明的最大报文段长度。

这一行所表示的含义是IP地址为192.168.0.226的电脑向IP地址为61.133.136.34的电脑发起一个TCP 的连接请求。

接下来我们看第二行,时间不说了;源IP地址为192.168.0.10,而目的IP地
址变为192.168.0.226;后面是S 2733950406:2733950406(0) ack 912144277,这是第二步握手,2733950406是服务器端所给的初始序列号,ack 912144277
是确认序号,是对第一行中客户端发起请求的初始序列号加1。

该行表示服务器端接受客户端发起的TCP连接请求,并发出自己的初始序列号。

再看第三行,这是三步握手的最后一步,客户端发送ack 1,表示三步握手已经正常结束,下面就可以传送数据了。

在这个例子里面,我们使用了-n的参数,表示源地址和目的地址不采用主机名
的形式显示而采用IP地址的形式。

只有深入了解TCP/IP才有可能成为一个合格的网络管理员。

Windump的参数很多,功能也非常强大,以上所介绍的仅仅是它冰山的一角,希望有更多的网络管理员能关注协议分析,只有这样,我们才能在日常的网络管理和应急时期的入侵分析中立于不败之地。

WinDump使用提示
基本用法:
windump [ -aBdDeflnNOpqRStvxX ] [ -c count ] [ -F file ] [ -i interface ] [ -m module ] [ -r file ] [ -s snaplen ] [ -T type ] [ -w file ] [ -E algo:secret ] [ expression ]
主要参数有选项和表达式两类。

下面说明几个必要的选项和表达式:
-i 指定要监听的网络接口,可以使用windump -D 列出当前系统中所有的网络设备接口,不指定的话是设备列表中找得的第一个。

例如:
./WinDump.exe -D
1.\Device\NPF_GenericNdisWanAdapter (Generic NdisWan adapter)
2.\Device\NPF_{6AA36CF4-E4FD-49BF-93E5-
DC29AB8A3AA5} (SiS NIC SISNIC (Microsoft' s Packet Scheduler) ) 则
./WinDump.exe
./WinDump.exe -i 1
./WinDump.exe -i \\Device\\NPF_GenericNdisWanAdapter
都是监听第一个网络接口设备Generic NdisWan adapter。

./WinDump.exe -i 2
./WinDump.exe -i \\Device\\NPF_{6AA36CF4-E4FD-49BF-93E5-DC29AB8A3AA5} 都是监听第二个网络接口设备SiS NIC SISNIC (Microsoft' s Packet Scheduler)。

如果不指定表达式,所有通过指定接口的packet都输出,否则只把表达式expression为真的输出。

最基本的表达式是这样的:
[proto] [dir] [type] [id]
proto 协议,可以是ether, fddi, tr, ip, ip6, arp, rarp, decnet, tcp , udp 中任一个或它们的表达式组合,如果不指定,所有和后面的type 一致的都考虑在内。

dir packet传输的方向,可以是src, dst中的任一个或它们的表达式组合。

不指定的话,相当于src or dst 。

type 指定后面的id是网络地址、主机地址还是端口号,可以是host, net ,port 中任一个,如果不指定,默认为host。

id 就是希望监听的网络或主机或端口地址。

一个覆盖所有元素的表达式如下:
ether src host 00:11:D8:6A:33:22
./WinDump.exe -i 2 ether src host 00:11:D8:6A:33:22
监听所有从本地网卡向外发的packet,其中00:11:D8:6A:33:22是本地网卡的mac地址。

./WinDump.exe -i 2 udp dst port 135
监听所有发给本地135 udp端口的packet。

更复杂的表达式是以上基本的表达式的逻辑组合,可用于组合的关键字有and, or, not,同时构成基本表达式的四类运算都是可选,不是必须的,比如:“host
foo and not port ftp and not port ftp-data”,其中foo代表主机名,其他都是关键字。

此外,有gateway, broadcast , multicast , mask , protochain , proto , less , greater 四个关键字和一些算术表达式、逻辑符合等。

gateway foo 其中,foo是主机名,如果某个packet以foo为gateway,表达式为真,也就是该packet的ether源或目的地址是foo,而ip源和目的地址都不是foo。

broadcast,multicast 跟在ether或者ip、ip6后面表示某个packet是广播包、多播包,比如“ether broadcast”,“ip multicast”。

相关文档
最新文档