嗅探器(Sniffer)就是能够捕获网络报文的设备。Sniffer 就是嗅探器,就是窃 听器,它静悄悄地工作在网络的底层,把用户的秘密全部记录下来。嗅探器的正当用处在于分析网络的流量,以便找出所关心的网络中潜在的问题。例如,假设网络的某一段运行得不是很好,报文的发送比较慢,而我们又不知道问题出在什么地方,此时就可以用嗅探器来作出精确地问题判断。嗅探器在功能和设计方面有很多不同,有些只能分析一种协议,而另一些可能能够分析几百种协议。一般情况下,大多数的嗅探器至少能够分析下面的协议:标准以太网、TCP/IP、IPX、DECNET、FDDI Token、微波和无线网。
实际应用中的嗅探器还分软、硬两种。软件嗅探器的优点在于比较便宜,易于使用,缺点是往往无法抓取网络上所有的传输数据(比如碎片),也就可能无法真正全面了解网络的故障和运行情况。硬件嗅探器通常称为协议分析仪,它的优点恰恰是软件嗅探器所欠缺的,但是价格昂贵。目前流行的嗅探器工具大多是软件的。
FTP、POP和Telnet在本质上都是不安全的,因为它们在网络上用明文传送口令和数据,嗅探器就可以非常容易地截获这些口令和数据。而且,这些服务程序的安全验证方式也是有弱点的,就是很容易受到“中间服务器”方式的攻击。所谓“中间服务器”攻击方式,就是“中间服务器”冒充真正的服务器接收用户传给服务器的数据,然后再冒充用户把数据传给真正的服务器。服务器和用户之间的数据传送被“中间服务器”转手并做了手脚之后,就会出现很严重的问题。
嗅探器与一般的键盘捕获程序不同。键盘捕获程序捕获在终端上输入的键值,而嗅探器则捕获真实的网络报文。嗅探器通过将其置身于网络接口来达到这个目的——例如将以太网卡设置成杂收模式。数据在网络上是以很小的称为帧(Frame)的单位传输的。帧由好几部分组成,不同的部分执行不同的功能。例如以太网的前12个字节存放的是源和目的的地址,这些位告诉网络数据的来源和去处。以太网帧的其他部分存放实际的用户数据、TCP/IP的报文头或IPX报文头等等。帧通过特定的称为网络驱动程序的软件进行成型,然后通过网卡发送到网线上。它通过网线到达它们的目的机器,在目的机器的一端执行相反的过程。接收端机器的以太网卡捕获到这些帧,并告诉操作系统帧的到达,然后对其进行存储。在这个传输和接收的过程中,每一个在LAN上的工作站都有其硬件地址。这些地址唯一地表示着网络上的机器。这一点和Internet地址系统比较相似。当用户发送一个报文时,这些报文就会发送到LAN上所有可用的机器。在一般情况下,网络上所有的机器都可以“听”到通过的流量,但对不属于自己的报文则不予响应。换句话说,工作站A不会捕获属于工作站B的数据,而是简单的忽略这些数据。如果某工作站的网络接口处于杂收模式,那么它就可以捕获网络上所有的报文和帧。如果一个工作站被配置成这样的方式,它(包括其软件)就是一个嗅探器。这也是嗅探器会造成安全方面的问题的原因。
Linux环境下的嗅探器
Linux环境下的嗅探器有tcpdump、Nmap、linSniffer、LinuxSniffer、hunt、sniffit等。下面就只介绍Linux下优秀的嗅探器——tcpdump。
tcpdump在Linux下的安装十分简单,一般由两种安装方式。一种是以rpm包的形式来进行安装。另外一种是以源程序的形式安装。这里我们讲 rpm包的形式安装。这种形式的安装是最简单的安装方法。rpm包是将软件编译后打包成二进制的格式,通过rpm命令可以直接安装,不需要修改任何东西。
以超级用户登录,使用命令如下:
#rpm -ivh tcpdump-3_4a5.rpm
这样tcpdump就顺利地安装到Linux系统中。
tcpdump 是一个多用途的网络通信监测器,可捕获和显示报文及其内容。它可用来作为协议分析器,在系统及网络设备间提供一个最佳途径来探查通信和(或)连通性问题。大多数时候,网络疑难问题集中在网络配置问题以及诊断硬件相关故障。然而,用户将常常面对协议相关问题并且被迫钻研特定协议的机制来解决问题。使用tcpdump,被检查的报文将用长格式或短格式(根据使用的命令行选项)显示其信息。tcpdump 有一个非常强有力的过滤机制,可用来查找与指定字符串或规则相匹配的报文。
tcpdump 提供两种主要的捕获模式:杂凑和非杂凑。在杂凑模式下,捕获每个在网络上传递的报文,不管该报文是否发送到执行tcpdump 的系统。举例来说,该模式就是RMON探测器在监测网络通信时使用的模式。网络探测器(probe)在网络上侦听通信并收集协议信息和统计数据。因为局域网(LAN)协议(如Ethernet)是基于广播的,每个被传送的帧可被连接到LAN上的任何网络接口所获得。任何设备可读取每个传送的帧,只要该设备选择这么做并配置成该方式就可以读取。当一个设备或接口从网络读取每个帧,就说明它处于杂凑模式了。实际中,接口必须为杂凑操作进行配置,并且仅仅用于需要网络诊断的特殊场合。由于这个缘故,仅有root可以在一个接口上启用杂凑模式。这是非root用户不允许调用tcpdump 的主要原因。tcpdump工具提供了许多命令行选项来选择捕获模式、控制输出、指定过滤规则以及指定其他操作特性。这些选项根据它们的功能被分组并且包括以下种类:操作模式、显示选项、报文过滤选项。
操作模式选项用于控制tcpdump 如何捕获和如何显示网络通信的参数。 各选项的意义如下:
- c 捕获指定数量的报文;
- F 使用文件作为过滤表达式的源;
- i 使用可选网络接口捕获报文;
- p 禁止在杂凑模式下捕获;
- r 读取捕获文件而非网络接口;
- w 保存原始报文到文件中。
举例说明:
1.pdump arp将捕获并显示所有地址解析协议(ARP)报文。捕获包括请求和应答。
2.pdump host red and tcp将捕获并显示来自(发往)red 主机的所有传输控制协议报文。
3.pdump hos red1 and port 23将捕获并显示发往red1或从red1发出的所有使用23 端口的报文。用来检查网络上从其他系统到该系统的Telnet报文。端口23是对所有传入的报文来说是Telnet服务端口。
阅读(313) | 评论(0) | 转发(0) |