一、 Ethereal简介
Ethereal是一个有名的网络端口探测器,是可以在Linux、Solaris、SGI等各种平台运行的网络监听软件,它主要是针对TCP/IP协议 的不安全性对运行该协议的机器进行监听。其功能相当于Windows下的Sniffer,都是在一个共享的网络环境下对数据包进行捕捉和分析,而且还能够 自由地为其增加某些插件以实现额外功能。Ethernet网络监测工具可在实时模式或离线模式中用来捕获和分析网络通信。
下面是使用Ethereal 可以完成的几个工作:
l 网络管理员使用它去帮助解决网络问题
l 网络安全工程师用它去测试安全问题
l 开发人员用它是调试协议的实现过程
l 用它还可以帮助人员深入的学习网络协议
下面是Ethereal 提供的一些特性:
l 支持UNIX 平台和Windows 平台。
l 从网络接口上捕获实时数据包
l 以非常详细的协议方式显示数据包
l 可以打开或者存贮捕获的数据包
l 导入/导出数据包,从/到其它的捕获程序
l 按多种方式过滤数据包
l 按多种方式查找数据包
l 根据过滤条件,以不同的颜色显示数据包
l 可以建立多种统计数据
其最常用的功能是被攻击者用来检测被攻击电脑通过23(telnet)和110(pop3)端口进行的一些明文传输数据,以轻松得到用户的登录口令和邮件 账号密码。对于网络管理员来说,也可以通过捕包分析,来确定一些异常的流量和局域网内部的非正常用户与外界的通信,比如说对于现在比较占用网络带宽的诸如 Bit Torrent 等P2P应用软件流量,通过使用该软件确定这些流量,网络管理员就可以使用流量控制(TC)的方法来规范、合理的分配带宽资源,提高网络的利用率。 Ethereal可以在http://www.ethereal.org/download/ 上下载,该软件有极其方便和友好的图形用户界面,并且能够使得用户通过图形界面的配置和选择,针对多块网卡、多个协议进行显示,效果非常好。目前最新版本 为:Ethereal 0.99。
Ethereal主窗口有很多的GUI程序组成。
(1) File(文件):这个菜单包含:打开文件、合并文件、保存/打印/导出整个或部分捕获文件、退出。
(2) Edit(编辑)这个菜单包括:查找包、时间参照、标记一个或多个包、设置参数、(剪切、复制、粘贴)。
(3) View(查看):这个菜单控制捕获数据的显示,包括:给定特定的一类包标以不同的颜色、字体缩放、在一个新窗口中显示一个包、展开&折叠详细信 息面板的树状结构。
(4) Go:这个菜单实现转到一个特定包。.
(5) Capture(捕获):这个菜单实现开始、停止捕获,编辑捕获过滤条件的功能。
(6) Analyze(分析):这个菜单包含编辑显示过滤、enable(开)或disable(关)协议解码器、配置用户指定的解码方法、追踪一个TCP 流。
(7) Statistics(统计):该菜单完成统计功能。包括捕获的包的一个摘要、基于协议的包的数量等树状统计图等许多功
(8) Help(帮助)这个菜单包含了一些对用户有用的信息。比如基本帮助、支持的协议列表、手册页、在线访问到网站等等。
二、 下载安装Ethereal
1.安装libpcap
在编译Ethereal之前应先确定已经安装pcap库(libpcap),这是安装Ethereal 时所必需的。
(1)什么是Libpcap
Libpcap是一个基于Unix平台的,用于捕获网络数据包并进行分析的开源库.大多数网络应用程序通过被广泛使用的操作系统元件来访问网络,比如 sockets。 这是一种简单的实现方式,因为操作系统已经妥善处理了底层具体实现细节(比如协议处理,封装数据包等等),并且提供了一个与读写文件类似的,令人熟悉的接 口。然而,有些时候,这种“简单的方式”并不能满足任务的需求,因为有些应用程序需要直接访问网络中的数据包。也就是说,那些应用程序需要访问原始数据 包,即没有被操作系统利用网络协议处理过的数据包。Libpcap产生的目的,就是为Win32应用程序提供这种访问方式; Libpcap提供了以下功能 :
捕获原始数据包,无论它是发往某台机器的,还是在其他设备(共享媒介)上进行交换的
在数据包发送给某应用程序前,根据用户指定的规则过滤数据包
将原始数据包通过网络发送出去
收集并统计网络流量信息
所有这些功能都能通过一个强大的编程接口来表现出来,易于开发,并能在不同的操作系统上使用。这本手册的主要目标是在一些程序范例的帮助下,叙述这些编程 接口的使用。 Libpcap可以被用来制作许多类型的网络工具,比如具有分析,解决纷争,安全和监视功能的工具。特别地,一些基于Libpcap的典型应用有:
网络与协议分析器 (network and protocol analyzers)
网络监视器 (network monitors)
网络流量记录器 (traffic loggers)
网络流量发生器 (traffic generators)
用户级网桥及路由 (user-level bridges and routers)
网络入侵检测系统 (network intrusion detection systems (NIDS))
网络扫描器 (network scanners)
安全工具 (security tools)
Libpcap能 独立地 通过主机协议发送和接受数据,如同TCP-IP。这就意味着Libpcap不能阻止、过滤或操纵同一机器上的其他应用程序的通讯:它仅仅能简单地"监视" 在网络上传输的数据包。所以,它不能提供类似网络流量控制、服务质量调度和个人防火墙之类的支持。
#wget http://mirrors.easynews.com/sunfreeware/i386/10/libpcap-0.8.3-sol10-intel-local.gz
#pkgadd -d libpcap-0.8.3-sol10-intel-local.pkg
2 安装gtk+
GTK+ 是一种图形用户界面(GUI)工具包。也就是说,它是一个库(或者,实际上是若干个密切相关的库的集合),它支持创建基于 GUI 的应用程序。可以把 GTK+ 想像成一个工具包,从这个工具包中可以找到用来创建 GUI 的许多已经准备好的构造块。最初,GTK+ 是作为另一个著名的开放源码项目 —— GNU Image Manipulation Program (GIMP) —— 的副产品而创建的。在开发早期的 GIMP 版本时,Peter Mattis 和 Spencer Kimball 创建了 GTK(它代表 GIMP Toolkit),作为 Motif 工具包的替代,后者在那个时候不是免费的。(当这个工具包获得了面向对象特性和可扩展性之后,才在名称后面加上了一个加号。)这差不多已经 10 年过去了。今天,在 GTK+ 的最新版本 —— 2.8 版上,仍然在进行许多活动,同时,GIMP 无疑仍然是使用 GTK+ 的最著名的程序之一,不过现在它已经不是惟一的使用 GTK+ 的程序了。已经为 GTK+ 编写了成百上千的应用程序,而且至少有两个主要的桌面环境(Xfce 和 GNOME)用 GTK+ 为用户提供完整的工作环境。
#wget http://mirrors.easynews.com/sunfreeware/i386/10/gtk+-1.2.10-sol10-intel-local.gz
#pkgadd -d gtk+-1.2.10-sol10-intel-local.pkg
3 安装snmp
简单网络管理协议(SNMP)是目前TCP/IP网络中应用最为广泛的网络管理协议。1990年5月,RFC 1157定义了SNMP(simple network management protocol)的第一个版本SNMPv1。RFC 1157和另一个关于管理信息的文件RFC 1155一起,提供了一种监控和管理计算机网络的系统方法。因此,SNMP得到了广泛应用,并成为网络管理的事实上的标准。大多数网络管理系统和平台都是 基于SNMP的。
#wget http://mirrors.easynews.com/sunfreeware/i386/10/netsnmp-5.1.4-sol10-x86-local.gz
#pkgadd -d netsnmp-5.1.4-sol10-x86-local.pkg
4 安装openssl
#wget http://mirrors.easynews.com/sunfreeware/i386/10/openssl-0.9.7g-sol10-intel-local.gz
#pkgadd -d openssl-0.9.7g-sol10-intel-local.pkg
5 安装ethereal
如果以上的库已经安装,就可以执行下面的命令来编译并安装Ethereal:
#wegt http://mirrors.easynews.com/sunfreeware/i386/10/ethereal-0.10.7-sol10-intel-local.gz
#pkgadd -d ethereal-0.10.7-sol10-intel-local.pkg
三 使用Ethereal
当编译并安装好Ethereal后,就可以执行“Ethereal”命令来启动Ethereal。在用Ethereal截获数据包之前,应该为其设置相应 的过滤规则,可以只捕获感兴趣的数据包。Ethereal使用与Tcpdump相似的过滤规则,并且可以很方便地存储已经设置好的过滤规则。
l Ethereal界面结构
该工具提供一个强健的GUI界面,用来整理网络数据的捕获以及随后的网络通信浏览。主窗口包括一组菜单项,界面结构如图1。许多菜单从名字上看一目了然, 这里不再阐述。第一个面板包含所有捕获报文的摘要。该面板包含报文号、时间戳、源、目的、协议以及信息域。这些域是可定制的,并且用户可删掉或加入其他的 报文字段信息。
图1 Ethereal界面结构
1. 控制面板和主菜单;
2. 报文摘要窗口;
3. 报文细节窗口;
4. 过滤器。
1. 设置Ethereal的过滤规则
在用Ethereal截获数据包之前,应该为其设置相应的过滤规则,可以只捕获感兴趣的数据包。Ethereal使用与Tcpdump相似的过滤规则,并 且可以很方便地存储已经设置好的过滤规则。要为Ethereal配置过滤规则,首先单击“Capture”选单,然后选择“Capture Filters...”菜单项,打开“Ethereal :Capture Filter”对话框。因为此时还没有添加任何过滤规则,因而该对话框右侧的列表框是空的(如图2所示)。在Ethereal中添加过滤器时,需要为该过 滤器指定名字及规则。例如,要在主机192.168.0.3和192.168.0.11间创建过滤器,可以在“Filter name”编辑框内输入过滤器名字“cao”,在“Filter string”编辑框内输入过滤规则“host 192.168.0.3 and 192.168.0.11”,然后单击“新建”按钮即可。
在Ethereal中使用的过滤规则和Tcpdump几乎完全一致,这是因为两者都基于pcap库的缘故。Ethereal能够同时维护很多个过滤器。网 络管理员可以根据实际需要选用不同的过滤器,这在很多情况下是非常有用的。例如,一个过滤器可能用于截获两个主机间的数据包,而另一个则可能用于截获 ICMP包来诊断网络故障。单击“保存”按钮,会到对话框。单击“关闭”按钮完成设置。
2. 指定过滤器
要将过滤器应用于嗅探过程,需要在截获数据包之前或之后指定过滤器。要为嗅探过程指定过滤器,并开始截获数据包,可以单击“Capture”选单,选择 “Start...”选单项,打开“Capture Options”对话框,单击该对话框中的“Filter:”按钮,然后选择要使用的过滤器,如图2所示。
图2为Ethereal指定过滤器
注意在“Capture Options”对话框中,“Update list of packets in real time”复选框被选中了。这样可以使每个数据包在被截获时就实时显示出来,而不是在嗅探过程结束之后才显示所有截获的数据包。 在选择了所需要的过滤器后,单击“确定”按钮,整个嗅探过程就开始了。Ethereal可以实时显示截获的数据包,因此能够帮助网络管理员及时了解网络的 运行状况,从而使其对网络性能和流量能有一个比较准确的把握。Capture Options其他选项:
l Interface(接口)
这个字段指定在哪个接口进行捕获。这是一个下拉字段,只能从中选择Ethereal 识别出来的接口,默认是第一块支持捕获的非loopback 接口卡。如果没有接口卡,那么第一个默认就是第一块loopback 接口卡。在某些系统中,loopback 接口卡不能用来捕获(loopback 接口卡在Windows平台是不可用的)。
l IP address(IP 地址)
所选接口卡的IP 地址。如果不能解析出IP 地址,则显示"unknown"
l Link-layer header type(链路层头类型)
除非你在极个别的情况下可能用到这个字段,大多数情况下保持默认值。具体的描述,见”
l Buffer size: n megabyte(s) (缓冲区大小:n 兆)
输入捕获时使用的buffer 的大小。这是核心buffer 的大小,捕获的数据首先保存在这里,直到写入磁盘。如果遇到包丢失的情况,增加这个值可能解决问题。
l Capture packets in promiscuous mode (在混杂模式捕获包)
这个选项允许设置是否将网卡设置在混杂模式。如果不指定,Ethereal 仅仅捕获那些进入你的计算机的或送出你的计算机的包。(而不是LAN 网段上的所有包).
l Limit each packet to n bytes (限制每一个包为n 字节)
这个字段设置每一个数据包的最大捕获的数据量。有时称作snaplen 。如果disable 这个选项默认是65535, 对于大多数协议来讲中够了。
l Capture Filter(捕获过滤)
这个字段指定一个捕获过滤。 “在捕获时进行过滤”部分进行讨论。默认是空的,即没过过滤。也可以点击标为Capture Filter 的按钮, Ethereal 将弹出Capture Filters(捕获过滤)对话框,来建立或者选择一个过滤。
四、用Ethereal分析互联网数据包实例
下面看看Ethereal对于互联网数据的分析。Ethereal和其它的图形化嗅探器使用基本类似的界面,整个窗口被分成三个部分:最上面为数据包列 表,用来显示截获的每个数据包的总结性信息;中间为协议树,用来显示选定的数据包所属的协议信息;最下边是以十六进制形式表示的数据包内容,用来显示数据 包在物理层上传输时的最终形式。使用Ethereal可以很方便地对截获的数据包进行分析,包括该数据包的源地址、目的地址、所属协议等。图3是在 Ethereal中对一个HTTP数据包进行分析时的情形。在图最上边的数据包列表中,显示了被截获的数据包的基本信息。
图3用Ethereal分析互联网数据包内容
图5中间是协议树,通过协议树可以得到被截获的数据包的更多信息,如主机的MAC地址 (Ethernet II)、IP地址(Internet Protocol)、TCP端口号(Transmission Control Protocol),以及HTTP协议的具体内容(Hypertext Trnasfer Protocol)。通过扩展协议树中的相应节点,可以得到该数据包中携带的更详尽的信息。图18-14最下边是以十六制显示的数据包的具体内容,这是被 截获的数据包在物理媒体上传输时的最终形式,当在协议树中选中某行时,与其对应的十六进制代码同样会被选中,这样就可以很方便地对各种协议的数据包进行分 析。是点击该封包选择“Mark Pactet”。从图中可以看出,当前选中数据包的源地址是221.217.132.33,目的地址为202.106.124.50,该数据包所属的协议 是超文本传输协议(HTTP)。要获取更加详细信息可以是点击该封包选择“Follow TCP stearm ”。如图4。
图4使用Follow TCP stearm 查看详细信息
更详细的信息表明该数据包中含有一个HTTP的GET命令,访问的网站的服务器是:apache 2.2.4。
总结
Ethereal提供的图形化用户界面非常友好,管理员可以很方便地查看到每个数据包的详细信息,协议树及其对应的十六进制表示对分析每个数据包的目的很 有帮助,配合使用Ethereal和Tcpdump能够基本满足网络管理员在unix系统上的所有安全要示,另外关于Ethereal在Solaris服 务器的高级的使用技术,读者可以参考此书: