华为网络分析协议以及监听工具Ethereal[另类其他]

来源:百度文库 编辑:神马文学网 时间:2024/04/20 06:17:09
华为网络分析协议以及监听工具Ethereal
发布时间:2006年7月30日 点击次数:1732
来源:   作者:
华为网络分析协议以及监听工具Ethereal
华为网络分析协议以及监听工具Ethereal
网络监听工具EtherealSample TextSample Text使用说明
1.1        Ethereal简介
Ethereal是一款免费的网络协议分析程序,支持Unix、Windows。借助这个程序,你既可以直接从网络上抓取数据进行分析,也可以对由其他嗅探器抓取后保存在硬盘上的数据进行分析。你能交互式地浏览抓取到的数据包,查看每一个数据包的摘要和详细信息。Ethereal有多种强大的特征,如支持几乎所有的协议、丰富的过滤语言、易于查看TCP会话经重构后的数据流等。
它的主要特点为:
·        支持Unix系统和Windows系统
·        在Unix系统上,可以从任何接口进行抓包和重放
·        可以显示通过下列软件抓取的包
·        tcpdump
·        Network Associates Sniffer and Sniffer Pro
·        NetXray
·        Shomiti
·        AIX’s iptrace
·        RADCOM & RADCOM’s WAN/LAN Analyzer
·        Lucent/Ascend access products
·        HP-UX’s nettl
·        Toshiba’s ISDN routers
·        ISDN4BSD i4btrace utility
·        Microsoft Network Monitor
·        Sun snoop
·        将所抓得包保存为以下格式:
§        libpcap (tcpdump)
§        Sun snoop
§        Microsoft Network Monitor
§        Network Associates Sniffer
·        可以根据不同的标准进行包过滤
·        通过过滤来查找所需要的包
·        根据过滤规则,用不同的颜色来显示不同的包
·        提供了多种分析和统计工具,实现对信息包的分析
图1-1 Ethereal抓包后直观图
图1是Ethereal软件抓包后的界面图,我们可以根据需要,对所抓得包进行分析。另外,由于Ethereal软件的源代码是公开的,可以随意获得,因此,人们可以很容易得将新的协议添加到Ethereal中,比如新的模块,或者直接植入源代码中。
1.2        Ethereal支持的网络协议
Ethereal能对很多协议进行解码,它支持几乎所有的协议,如AARP, AFS, AH, AIM, ARP, ASCEND, ATM, AUTO_RP, BGP, BOOTP, BOOTPARAMS, BROWSER, BXXP, CDP, CGMP, CLNP, CLTP, COPS, COTP, DATA, DDP, DDTP, DEC_STP, DIAMETER, DNS, EIGRP, ESIS, ESP, ETH, FDDI, FR, FRAME, FTP, FTP-DATA, GIOP, GRE, GVRP, H1, H261, HCLNFSD, HSRP, HTTP, ICMP, ICMPV6, ICP, ICQ, IGMP, IGRP, ILMI, IMAP, IP, IPCOMP, IPCP, IPP, IPV6, IPX, IPXMSG, IPXRIP, IPXSAP, IRC, ISAKMP, ISIS, ISIS_CSNP, ISIS_HELLO, ISIS_LSP, ISIS_PSNP, ISL, IUA, KERBEROS, L2TP, LANE, LANMAN, LAPB, LAPBETHER, LAPD, LCP, LDAP, LDP, LLC, LPD, M3UA, MAILSLOT, MALFORMED, MAPI, MIP, MOUNT, MP, MPLS, MSPROXY, NBDGM, NBIPX, NBNS, NBP, NBSS, NCP, NETBIOS, NETLOGON, NFS, NLM, NMPI, NNTP, NTP, NULL, OSPF, PIM, POP, PORTMAP, PPP, PPPOED, PPPOES, PPTP, Q2931, Q931, QUAKE, RADIUS, RIP, RIPNG, RLOGIN, RPC, RQUOTA, RSH, RSVP, RTCP, RTMP, RTP, RTSP, RX, SAP, SCTP, SDP, SHORT, SIP, SLL, SMB, SMTP, SMUX, SNA, SNMP, SOCKS, SPX, SRVLOC, SSCOP, STAT, STP, SUAL, SYSLOG, TACACS, TCP, TELNET, TEXT, TFTP, TIME, TNS, TPKT, TR, TRMAC, UDP, V120, VINES, VINES_FRP, VINES_SPP, VLAN, VRRP, VTP, WAP-WSP, WAP-WSP-WTP, WAP-WTLS, WCCP, WHO, WLAN, X.25, X11, XOT, YHOO, YPBIND, YPSERV, YPXFR, ZEBRA等。在Ethereal主菜单的Tools下有一个“Decode As”选项,可以很容易的将获得的数据包转换为相应的协议
1.3        Ethereal操作指导
1.3.1        Ethereal操作界面
Ethereal软件界面如图1所示,在这个窗口上,整个界面环境分为三个窗口,最上面的窗口是抓包列表窗口,经过Ethereal软件抓包后的数据包都会列在这个窗口中,同时你可以根据抓包序列号,抓包时间、源地址、目标地址、协议等进行包列表的排序,这样你可以很容易的找到你所需要的信息包。
中间的窗口中显示的是抓包列表上所选择的包对应的各层协议说明,其中,协议层次信息以树型的结构进行显示。
最下面的窗口是数据窗口,显示的是上层窗口选中的信息包的具体数据,同时,在中间树型窗口中所选择的某一协议数据域的内容,在数据窗口中会被突出地显示出来。
在整个界面的左下角,有一个“filter”按钮,单击这个按钮会弹出过滤设置对话框。在这个按钮的右边是一个小文本框,在这里可以填入进行过滤的字符串。同时这个过滤文本框也会显示当前进行过滤的内容,你也可以通过下拉条选择曾经进行过滤的字符串进行抓包过滤。在这个文本框右边,是一个“reset”按钮,单击这个按钮将会显示当前的过滤信息。在整个界面的最右下方,是一个状态栏,在这里将显示的状态例如,软件是否正在进行抓包操作,如果没有在进行抓包,那么它将显示当前读取的文件名,如果你在树型窗口中选择了某个协议,那么这个状态栏中将会显示当前所选择的协议域。
1.3.2        Ethereal界面菜单
Ethereal的菜单如图2所示:
图2-1   Ethereal界面菜单
菜单中主要有以下几个部分:
File:这个子菜单下的操作与Windows菜单下File下的操作类似,包括了文件的打开,保存、打印以及系统的退出等等。不过这里的文件仅仅指的是抓包文件。
Edit:这个子菜单下所包含的操作有:查找某一个特定的帧、跳到某个帧、在一个或更多的帧上打上标记、设置首选项、设置过滤、协议剖析允许/不允许等。在这个菜单下,Windows界面中的一些常用的操作,例如剪切、复制、粘贴等将不再使用。
Capture:在这个菜单下进行开始抓包和停止抓包的操作。
Display:此菜单下可以进行的操作有:修改显示选项、匹配所选择的帧、给不同的帧进行上色、对数据帧进行展开/折叠、在分离的窗口中显示数据包、配置用户定义的解码方式等。
Tools:在工具菜单下所提供的操作有:载入插件、跟踪一个TCP流、获得所抓包的概要,进行协议等级统计等等。
Help:通过help子菜单,可以获得Ethereal软件的About信息以及相应的一些帮助。
对于各个子菜单具体的菜单项,这里不作仔细的说明,在下面的操作部分中将会对其中一些重要的功能作详细的说明。
1.3.3        项关操作说明
1.3.3.1        抓包
步骤:
1.        点击软件界面上Capture->Start键,弹出如图2-3所示的“Capture Opetion”抓包选项设置对话框
图2-2 用Ethereal进行抓包
图2-3  Capture Options 选项设置对话框
2.        在弹出的选项设置对话框中进行相应的设置,界面中的按钮,当按下去的时候表示该功能处于有效的状态,凸起的时候则是无效的。
“Interface”栏中指示的是抓包进行所在接口,你只能在一个接口上进行抓包,同时,你只能在Ethereal已经发现的接口上进行抓包。它有一个下拉菜单,你可以在下拉列表中选择你想要进行抓包的接口。
在“Interface”下面是“Promiscuous”模式选择按钮,当按钮按下去的状态时,表示此时抓包是进行在promiscuous(混杂)模式下,任何流经这台主机的数据包都将被捕获,如果按钮凸起,则只能捕获从主机发送或者发向该主机的数据包。
“Filter”栏可以指定特定的规则进行抓包过滤,以获得你想要的那些包。同时你也可以单击Ethereal主界面左下角的filter按钮,在弹出的过滤对话框中设置过滤字符串。详细的操作和过滤字串说明,请参考2.3.3.4“过滤设置”一节。
“File”一栏中可以指定一个特定的文件,用以保存所抓的包。要注意的是这里不对文件名和格式进行检查,所以在进行保存文件指定的时候一定要小心,以免覆盖其他有用的文件。
“Display Options”栏用于定义抓包过程中界面显示的特性。其中,“Update list of packets in a real time”是Ethereal主界面上是否实时地显示抓包变化的选项,当选择了该项时,Ethereal主界面上将实时地更新抓包列表,若不显示该项,所有的包列表将在抓包过程停止以后一起显示。“Automatic Strolling in live capture”选项允许用户在抓包过程中能实时地察看新抓的数据包。
“Name resolution”中有三个选项,其中“Enable MAC name resolution”用于选择Ethereal是否要将MAC地址的前三个字节翻译成IETF所规定的厂商前缀。“Enable network name resolution”用于控制是否将IP地址解析为DNS域名。“Enable transport name resolution”则用于控制是否将通信端口号转换为协议名称。
此外,界面上还有一个“Capture limits”的设置项,在这里可以对抓包的数量或过程进行控制。
根据需要进行设置后,单击键,进行抓包。系统显示如下(图2-4)抓包过程界面。
图2-4   抓包过程界面
3.        在抓包过程界面上,有各种协议包的抓包数据统计,单击键停止抓包过程,所有的数据包将在Ethereal主界面中显示。
1.3.3.2        抓包查看
经过抓包后,所有的数据包就在Ethereal的主界面上列出,可以通过界面上的三个窗口查看选定的数据包的具体细节。选择其中的一个数据包,点击右键,将会弹出图2-5所示的对话框。对话框上列举了可以对此数据包进行的操作,其中:
Follow TCP Stream:允许用户跟踪一个TCP连结中的所有的TCP数据流,点击该项后,系统出现如图2-6所示的界面,数据包将按照顺序排列,同时以ASCII码的形式显示,你可以按照需要选择不同的显示格式,如EBCDIC、HEX Dump、C Arrays等。通过这个功能,你可以详细的查看一个TCP连结的详细内容。在主菜单的Tools子菜单下也有这个功能。
Decode As:此选项允许用户将数据包根据特定的协议进行解码。这个选项与主菜单Tools下的“Decode As”选项 一样。
Display Filter:此项的功能与Ethereal主界面左下角的“Filter”按钮的作用一样,单击此项,将会弹出过滤设置的对话框,如图2-7所示。关于过滤设置规则请参考2.3.3.4“过滤设置”一节。
Match:该选项下有很多子项,其中,“Match selected”用于选择所有的具有某一特性值的数据包,该数据值是在中间树形窗口中所确定的某协议对应的数值。其他的选项则根据宇、或、非的逻辑关系来过滤相应的数据包。
图2-5   抓包的查看
图2-6 Follow TCP Stream界面
图2-7   过滤设置对话框
1.3.3.3        抓包文件的保存
要将所抓的包进行保存,你只需简单的单击主菜单下的 Save as>,此时,屏幕出现如图2-8所示的文件保存对话框。在这个对话框中,你可以进行文件夹的新建、文件删除/重命名等操作,但是要注意的是Ethereal在进行文件删除/重命名操作时不对文件的内容和格式做任何检查,所以在进行文件操作时要格外小心,以免影响其他的一些重要的文件。
Ethereal可以将所抓的所有数据包进行保存,也可以只对进行了标记的数据包进行保存,这可以通过点击界面中的“Save only packets currently being displayed”或者“Save only marked packets”按钮来进行。
同时,Ethereal对所要保存的数据包提供了多种保存文件的格式,例如libpcap(tcpdump, Ethereal, etc.)、modified libpcap (tcpdump)、RedHat Linux libpcap (tcpdump)、Network Associates Sniffer (DOS based)、Sun Snoop、Microsoft Network Monitor 1.x、Network Associates Sniffer (Windows based) 1.1等。格式可以从File Type栏进行选择。
图2-8  抓包文件保存对话框
在选择好了保存目录、格式和方法后,只需在界面下方的文本框中输入文件名,单击键,就完成了文件保存的工作。
注:根据所抓包的性质,一些文件格式也许会不可用。Ethereal允许将一种文件格式转变为另一种格式,只需读取某一个文件,在将数据包转存为另一种格式即可。
1.3.3.4        过滤设置
Ethereal提供了两种过滤设置方式,一种是在抓包以前,通过此设置,整个抓包过程将只抓取用户所需要的特定的数据包;另一种方式是在抓包以后查看抓包时进行。两者在使用上略有不同。
1.3.3.4.1        在抓包前进行过滤设置
在抓包前进行过滤设置,是在图2-3抓包选项设置对话框中进行的。只需在Filter栏中填入特定的设置语句。Ethereal使用libpcap filter语言来进行抓包的过滤设置。过滤表达式由一系列简单的表达式和连词(and、or、not)组成:
[not] primitive [and or [not] primitive ...]
下面举例说明过滤表达式的用法:
1、        抓取一个特定的主机的telnet数据包的过滤设置
tcp port 23 and host 10.0.0.5
通过这个过滤表达式,可以抓取从主机10.0.0.5发出或发向该主机的所有的telnet数据包。
2、        抓取除了来自/发往某主机的telnet数据包的过滤设置
tcp port 23 and not host 10.0.0.5
在过滤设置字符串中,primitive表达式通常由以下几种形式组成:
1、[src dst] host
此表达式通过IP地址/主机名来过滤一个特定的主机,通过前缀src或dst选择源/目的主机。如果不注明src或者dst,则将抓到流向/流出该主机的所有数据包。
例如:抓取从主机172.18.66.66发出的数据包:
src host 172.18.66.66
2、ether [src dst] host
此表达式用于过滤以太网上流入/流出特定的主机的数据包,不同的是ehost是以太网地址,为主机的物理地址。
例如:抓取发往物理地址为00:04:76:42:24:80的数据包
ether dst host 00:04:76:42:24:80
3、[src dst] net [{mask } {len }]
此表达式根据网络地址来过滤来自/发往特定的网络的数据包。
例如:抓取发往/发自网络172.18.0.0的数据包
net 172.18.0.0 mask 255.255.0.0
4、[tcp udp] [src dst] port
此表达式可以设置过滤来自/发往特定的tcp/udp协议端口的数据包。
例如:抓取SNMP协议数据包
udp port 161
5、less greater
此表达式用于过滤数据包长度小于等于/大于等于特定长度的数据包。
例如:抓取数据包长度小于400byte的数据包
less 400
6、ip ether proto
此表达式用于过滤IP层/数据链路层(Ethernet层)上特定的协议数据包。
例如:抓取IP层上UDP数据报
ip proto UDP
7、ether ip broadcast multicast
此表达式用于过滤IP/Ethernet的广播包/多播包
8、 relop
此表达式用于创建复杂的过滤表达式,用于选择数据包中特定byte的数据或者某一段数据。
当过滤设置后,整个抓包过程就只会获取特定的数据包。
1.3.3.4.2        在查看数据包时进行过滤设置
Ethereal使用两种过滤语言,用在不同的场合,第一种是在进行抓包之前,第二种则是在查看数据包的时候进行,这种情况下,你可以提取所抓的数据包中你所感兴趣的那一部分。 你可以根据不同的分类方法进行过滤:1、协议;2、根据某字段的有无;3、根据相应字段的值;4、字段值之间的比较。
有三种方式可以在查看数据包时进行过滤设置。第一种方法是在主界面左下角的 filter 文本框中直接填入过滤的表达式,第二种是单击主界面左下角的filter按钮,第三种是在数据包列表窗口中右键选择“Display filters”。其中第二、第三种方法都将弹出过滤设置的对话框,如图2-7所示。
第一种方法,你只需要在filter文本框中填入相应的表达式即可,例如要查看数据包列表中所有的netbios协议的数据包,只需填入“netbios”再按回车即可,如图2-9所示:
图2-9   查看协议为netbios的数据包
又如,要查询其中包含主机地址为172.18.66.66的数据包(无论是源Addr或者目的Addr),只需在文本框中填入:ip.addr==172.18.66.66即可。下面具体介绍过滤表达式。
Ethereal提供了一种简单的过滤设置语言,但是通过这个语言,你可以构造复杂的表达式,以选择你所需要的特定的数据包。
1、        字段值的比较
英文表达式        符号表达式        举例
eq        ==        ip.addr==172.18.66.66
ne        !=        ip.addr!=172.18.66.66
gt        >        frame.pkt_len>10
lt        <        frame.pkt_len<128
ge        >=        frame.pkt_len ge 0x100
le        <=        frame.pkt_len<= 0x20
此外,各协议字段的数值是有相应的类别的,下表说明了字段中使用的值的类别:
类型        举例
无符号整型(8位、16位、24位、32位)        你可以用十进制、八进制或者十六进制表达,以下的表达式所表示的内容是一样的:                            ip.len le 1500                            ip.len le 02734                            ip.len le 0x436
有符号整型(8位、16位、24位、32位)
布尔表达式(Boolean)        只有当表达式的值为true时,该布尔表达式字段才会在相应的协议解码表达式中显示。例如,协议解码中显示tcp.flags.syn,则表示该字段的值为true,同时,SYN字段显示在TCP的字段头中。因此,过滤表达式tcp.flags.syn选择了那些标志位存在,且TCP字段头中包含SYN标志的数据包。类似的,如果要选择源路由令牌环数据包,只需要输入表达式:tr.sr
以太网地址(6字节)
IPv4地址
IPv6地址
IPX网络号
字符串(String/Text)
双精度浮点数
2、        联合表达式
Ethereal允许通过逻辑符号将表达式进行连接,以组成更复杂的表达式。使用方法见下表:
英文表达式        符号表达式        举例
and        &&        ip.addr==172.18.66.66 and tcp.flags.fin
or                 ip.addr==172.18.66.66 or ip.addr==172.18.65.178
not        !        not llc