标题：sniffer
简介
当信息以明文的形式在网络上传输时，便可以使用网络监听的方式来进行攻击。将网络接口设置在监听模式，便可以将网上传输的源源不断的信息截获。Sniffer技术常常被黑客们用来截获用户的口令。但实际上Sniffer技术被广泛地应用于网络故障诊断、协议分析、应用性能分析和网络安全保障等各个领域。
原理
下文将详细介绍Sniffer的原理和应用。 
Sniffer 原理简介在讲述Sniffer的概念之前，首先需要讲述局域网设备的一些基本概念。 
数据在网络上是以很小的称为帧（Frame）的单位传输的，帧由几部分组成，不同的部分执行不同的功能。帧通过特定的称为网络驱动程序的软件进行成型，然后通过网卡发送到网线上，通过网线到达它们的目的机器，在目的机器的一端执行相反的过程。接收端机器的以太网卡捕获到这些帧，并告诉操作系统帧已到达，然后对其进行存储。就是在这个传输和接收的过程中，嗅探器会带来安全方面的问题。 
每一个在局域网（LAN）上的工作站都有其硬件地址(MAC地址)，这些地址惟一地表示了网络上的机器（这一点与Internet地址系统比较相似）。当用户发送一个数据包时，这些数据包就会发送到LAN上所有可用的机器。 
如果使用Hub/即基于共享网络的情况下，网络上所有的机器都可以“听”到通过的流量，但对不属于自己的数据包则不予响应（换句话说，工作站A不会捕获属于工作站B的数据，而是简单地忽略这些数据）。如果某个工作站的网络接口处于混杂模式（关于混杂模式的概念会在后面解释），那么它就可以捕获网络上所有的数据包和帧。 
但是现代网络常常采用交换机作为网络连接设备枢纽，在通常情况下，交换机不会让网络中每一台主机侦听到其他主机的通讯，因此Sniffer技术在这时必须结合网络端口镜像技术进行配合。而衍生的安全技术则通过ARP欺骗来变相达到交换网络中的侦听。网络监听原理Sniffer程序是一种利用以太网的特性把网络适配卡（NIC，一般为以太网卡）置为杂乱（promiscuous）模式状态的工具，一旦网卡设置为这种模式，它就能接收传输在网络上的每一个信息包。 
普通的情况下，网卡只接收和自己的地址有关的信息包，即传输到本地主机的信息包。要使Sniffer能接收并处理这种方式的信息，系统需要支持BPF，Linux下需要支持SOCKET一PACKET。但一般情况下，网络硬件和TCP/IP堆栈不支持接收或者发送与本地计算机无关的数据包，所以，为了绕过标准的TCP/IP堆栈，网卡就必须设置为我们刚开始讲的混杂模式。一般情况下，要激活这种方式，内核必须支持这种伪设备Bpfilter，而且需要root权限来运行这种程序，所以sniffer需要root身份安装，如果只是以本地用户的身份进入了系统，那么不可能嗅探到root的密码，因此不能运行Sniffer。 
也有基于无线网络、广域网络(DDN, FR)甚至光网络(POS、Fiber Channel)的监听技术，这时候略微不同于以太网络上的捕获概念，其中通常会引入TAP (测试介入点)这类的硬件设备来进行数据采集。
分类
Sniffer分为软件和硬件两种，软件的Sniffer有 Sniffer Pro、Network Monitor、PacketBone等，其优点是易于安装部署，易于学习使用，同时也易于交流；缺点是无法抓取网络上所有的传输，某些情况下也就无法真正了解网络的故障和运行情况。硬件的Sniffer通常称为协议分析仪，一般都是商业性的，价格也比较昂贵，但会具备支持各类扩展的链路捕获能力以及高性能的数据实时捕获分析的功能。 
基于以太网络嗅探的Sniffer只能抓取一个物理网段内的包，就是说，你和监听的目标中间不能有路由或其他屏蔽广播包的设备，这一点很重要。所以，对一般拨号上网的用户来说，是不可能利用Sniffer来窃听到其他人的通信内容的。
监听目的
当一个黑客成功地攻陷了一台主机，并拿到了root权限，而且还想利用这台主机去攻击同一（物理）网段上的其他主机时，他就会在这台主机上安装Sniffer软件，对以太网设备上传送的数据包进行侦听，从而发现感兴趣的包。如果发现符合条件的包，就把它存到一个Log文件中去。通常设置的这些条件是包含字“username”或“password”的包，这样的包里面通常有黑客感兴趣的密码之类的东西。一旦黑客截获得了某台主机的密码，他就会立刻进入这台主机。
如果Sniffer运行在路由器上或有路由功能的主机上，就能对大量的数据进行监控，因为所有进出网络的数据包都要经过路由器。 
Sniffer属于第M层次的攻击。就是说，只有在攻击者已经进入了目标系统的情况下，才能使用Sniffer这种攻击手段，以便得到更多的信息。 
Sniffer除了能得到口令或用户名外，还能得到更多的其他信息，比如一个重要的信息、在网上传送的金融信息等等。Sniffer几乎能得到任何在以太网上传送的数据包。
产品介绍
网络的安全性和高可用性是建立在有效的网络管理基础之上的,网络管理包括配置管理、故障管理、性能管理、安全管理和计费管理五大部分。对于企业计算机网络来说，网络故障管理主要侧重于实时的监控，而网络性能管理更看中历史分析。
Sniffer网络分析仪是一个网络故障、性能和安全管理的有力工具，它能够自动地帮助网络专业人员维护网络，查找故障，极大地简化了发现和解决网络问题的过程，广泛适用于Ethernet、Fast Ethernet、Token Ring、Switched LANs、FDDI、X.25、DDN、Frame Relay、ISDN、ATM和Gigabits等网络。
网络安全
· 网络安全的保障与维护
1. 对异常的网络攻击的实时发现与告警；
2. 对高速网络的捕获与侦听；
3. 全面分析与解码网络传输的内容；
· 面向网络链路运行情况的监测
1. 各种网络链路的运行情况；
2. 各种网络链路的流量及阻塞情况；
3. 网上各种协议的使用情况；
4. 网络协议自动发现；
5. 网络故障监测；
· 面向网络上应用情况的监测
1. 任意网段应用流量、流向；
2. 任意服务器应用流量、流向；
3. 任意工作站应用流量、流向；
4. 典型应用程序响应时间；
5. 不同网络协议所占带宽比例；
6. 不同应用流量、流向的分布情况及拓扑结构；
· 强大的协议解码能力，用于对网络流量的深入解析
1. 对各种现有网络协议进行解码；
2. 对各种应用层协议进行解码；
3. Sniffer协议开发包（PDK）可以让用户简单方便地增加用户自定义的协议；
· 网络管理、故障报警及恢复
运用强大的专家分析系统帮助维护人员在最短时间内排除网络故障；
根据用户习惯，Sniffer可提供实时数据或图表方式显示统计结果，统计内容包括：
 网络统计：如当前和平均网络利用率、总的和当前的帧数及字节数、总站数和激活的站数、协议类型、当前和总的平均帧长等。
 协议统计：如协议的网络利用率、协议的数、协议的字节数以及每种协议中各种不同类型的帧的统计等。
 差错统计：如错误的CRC校验数、发生的碰撞数、错误帧数等。
 站统计：如接收和发送的帧数、开始时间、停止时间、消耗时间、站状态等。最多可统计1024个站。
 帧长统计：如某一帧长的帧所占百分比，某一帧长的帧数等。
当某些指标超过规定的阈值时，Sniffer可以自动显示或采用有声形式的告警。
Sniffer可根据网络管理者的要求，自动将统计结果生成多种统计报告格式，并可存盘或打印输出。
1.3 Sniffer实时专家分析系统
高度复杂的网络协议分析工具能够监视并捕获所有网络上的信息数据包，并同时建立一个特有网络环境下的目标知识库。智能的专家技术扫描这些信息以检测网络异常现象，并自动对每种异常现象进行归类。所有异常现象被归为两类：一类是symptom（故障征兆提示，非关键事件例如单一文件的再传送），另一类是diagnosis（已发现故障的诊断，重复出现的事件或要求立刻采取行动的致命错误）。经过问题分离、分析且归类后，Sniffer将实时地，自动发出一份警告、对问题进行解释并提出相应的建议解决方案。
Sniffer与其他网络协议分析仪最大的差别在于它的人工智能专家系统(Expert System)。简单地说，Sniffer能自动实时监视网络，捕捉数据，识别网络配置，自动发现网络故障并进行告警，它能指出：
 网络故障发生的位置，以及出现在OSI第几层。
 网络故障的性质，产生故障的可能的原因以及为解决故障建议采取的行动。
 Sniffer 还提供了专家配制功能，用户可以自已设定专家系统判断故障发生的触发条件。
 有了专家系统，您无需知道那些数据包构成网络问题，也不必熟悉网络协议，更不用去了解这些数据包的内容，便能轻松解决问题。
解码
Sniffer的软件非常丰富，可以对在各种网络上运行的400多种协议进行解码，如TCP/IP、Novell Netware、DECnet、SunNFS、X-Windows、HTTP、TNS SLQ*Net v2(Oracle)、Banyan v5.0和v6.0、TDS/SQL(Sybase)、X.25、Frame Realy、PPP、Rip/Rip v2、EIGRP、APPN、SMTP等。还广泛支持专用的网络互联桥/路由器的帧格式。
Sniffer可以在全部七层OSI协议上进行解码，目前没有任何一个系统可以做到对协议有如此透彻的分析；它采用分层方式，从最低层开始，一直到第七层，甚至对Oracle数据库、SYBASE数据库都可以进行协议分析；每一层用不同的颜色加以区别。
Sniffer对每一层都提供了Summary(解码主要规程要素)、Detail(解码全部规程要素)、Hex(十六进制码)等几种解码窗口。在同一时间，最多可以打开六个观察窗口。
Sniffer还可以进行强制解码功能(Protocl Forcing)，如果网络上运行的是非标准协议，可以使用一个现有标准协议样板去尝试解释捕获的数据。
Sniffer提供了在线实时解码分析和在线捕捉，将捕捉的数据存盘后进行解码分析二种功能。
商业应用
Sniffer被 Network General公司注册为商标，这家公司以出品Sniffer Pro系列产品而知名。目前最新版本为Sniffer Portable 4.9，这类产品通过网络嗅探这一技术方式，对数据协议进行捕获和解析，能够大大帮助故障诊断和网络应用性能的分析鉴别。
Network General 已经被NetScout公司收购。
扩展应用
1、专用领域的Sniffer
Sniffer被广泛应用到各种专业领域，例如FIX (金融信息交换协议)、MultiCast(组播协议)、3G (第三代移动通讯技术)的分析系统。其可以解析这些专用协议数据，获得完整的解码分析。
2、长期存储的Sniffer应用
由于现代网络数据量惊人，带宽越来越大。采用传统方式的Sniffer产品很难适应这类环境，因此诞生了伴随有大量硬盘存储空间的长期记录设备。例如nGenius Infinistream等。
3、易于使用的Sniffer辅助系统
由于协议解码这类的应用曲高和寡，很少有人能够很好的理解各类协议。但捕获下来的数据却非常有价值。因此在现代意义上非常流行如何把协议数据采用最好的方式进行展示，包括产生了可以把Sniffer数据转换成Excel的BoneLight类型的应用和把Sniffer分析数据进行图形化的开源系统PacketMap等。这类应用使用户能够更简明地理解Sniffer数据。
4、无线网络的Sniffer
传统Sniffer是针对有线网络中的局域网而言，所有的捕获原理也是基于CSMA/CD的技术实现。随着WLAN的广泛使用，Sniffer进一步扩展到802.11A/B/G/N的无线网络分析能力。无线网络相比传统网络无论从捕获的原理和接入的方式都发生了较大改变。这也是Sniffer技术发展趋势中非常重要的部分.
监控流量
随着互联网多层次性、多样性的发展，网吧已由过去即时通信、浏览网页、电子邮件等简单的应用，扩展成为运行大量在线游戏、在线视频音频、互动教学、P2P等技术应用。应用特点也呈现出多样性和复杂性，因此，这些应用对我们的网络服务质量要求更为严格和苛刻。 
目前，大多数网吧的网络设备不具备高端网络设备的智能性、交互性等扩展性能，当网吧出现掉线、网络卡、遭受内部病毒攻击、流量超限等情况时，很多网络管理员显得心有余而力不足。毕竟，靠网络管理员的经验和一些简单传统的排查方法：无论从时间上面还是准确性上面都存在很大的误差，同时也影响了工作效率和正常业务的运行。 
Sniffer Pro 著名网络协议分析软件。本文利用其强大的流量图文系统Host Table来实时监控网络流量。在监控软件上，我们选择了较为常用的NAI公司的sniffer pro，事实上，很多网吧管理员都有过相关监控网络经验：在网络出现问题、或者探查网络情况时，使用P2P终结者、网络执法官等网络监控软件。这样的软件有一个很大优点：不要配置端口镜像就可以进行流量查询（其实sniffer pro也可以变通的工作在这样的环境下）。这种看起来很快捷的方法，仍然存在很多弊端：由于其工作原理利用ARP地址表，对地址表进行欺骗，因此可能会衍生出很多节外生枝的问题，如掉线、网络变慢、ARP广播巨增等。这对于要求正常的网络来说，是不可思议的。 
在这里，我们将通过软件解决方案来完成以往只有通过更换高级设备才能解决的网络解决方案，这对于很多管理员来说，将是个梦寐以求的时刻。 
硬件环境（网吧）： 
100M网络环境下，92台终端数量，主交换采用D-LINK（友讯）DES-3226S二层交换机(支持端口镜像功能)，级联普通傻瓜型交换机。光纤10M接入，华为2620做为接入网关。 
软件环境： 
操作系统Windows2003 Server企业标准版（Sniffer Pro4.6及以上版本均支持Windows2000 Windows-xp Windows2003）、NAI协议分析软件-Sniffer Portable 4.75（本文选用网络上较容易下载到的版本做为测试） 
环境要求： 
1、如果需要监控全网流量，安装有Sniffer Portable 4.7.5(以下简称Sniffer Pro)的终端计算机，网卡接入端需要位于主交换镜像端口位置。（监控所有流经此网卡的数据） 
2、Snffier pro 475仅支持10M、100M、10/100M网卡，对于千M网卡，请安装SP5补丁，或4.8及更高的版本 
监控目的：通过Sniffer Pro实时监控，及时发现网络环境中的故障（例如病毒、攻击、流量超限等非正常行为）。对于很多企业、网吧网络环境中，网关（路由、代理等）自身不具备流量监控、查询功能，本文将是一个很好的解决方案。Sniffer Pro强大的实用功能还包括：网内任意终端流量实时查询、网内终端与终端之间流量实时查询、终端流量TOP排行、异常告警等。同时，我们将数据包捕获后，通过Sniffer Pro的专家分析系统帮助我们更进一步分析数据包，以助更好的分析、解决网络异常问题。 
步骤一：配置交换机端口镜像（Mirroring Configurations） 
以DES-3226S二层交换机为例，我们来通过WEB方式配置端口镜像（也可用CLI命令行模式配置）。如果您的设备不支持WEB方式配置，请参考相关用户手册。 
1.DES-3226S默认登陆IP为：10.90.90.90 因此，需要您配置本机IP为相同网段才可通过浏览器访问WEB界面。 
2.使用鼠标点击上方红色字体：“Login”,如果您是第一次配置，输入默认用户名称、密码:admin 自动登陆管理主界面。 
3.如图（2）所示，主界面上方以图形方式模拟交换机界面，其中绿色灯亮起表示此端口正在使用。下方文字列出交换机的一些基本信息。 
  图1
  图2
4.如图（3）：鼠标点击左下方菜单中的advanced setup->Mirroring Configurations （高级配置—镜像配置） 
5.将Mirror Status 选择为Enable（默认为关闭状态，开启），本例中将Port-1端口设置为监听端口:Target Port=Port-1，其余端口选择为Both，既：监听双向数据（Rx接收 Tx发送），选择完毕后，点击Apply应用设置。 
此时所有的端口数据都将复制一份到Port-1。（如图4） 
  　图3
  图4
接下来，我们就可以在Port-1端口，接入计算机并安装配置Sniffer Pro。 
步骤二：Sniffer Pro 安装、启动、配置 
Sniffer Pro 安装过程与其它应用软件没有什么太大的区别，在安装过程中需要注意的是： 
①Sniffer Pro 安装大约占用70M左右的硬盘空间。 
②安装完毕Sniffer Pro后，会自动在网卡上加载Sniffer Pro 特殊的驱动程序（如图5）。 
③安装的最后将提示填入相关信息及序列号，正确填写完毕，安装程序需要重新启动计算机。 
④对于英文不好的管理员可以下载网上的汉化补丁。 
我们来启动Sniffer Pro。第一次启动Sniffer Pro时,需要选择程序从那一个网络适配器接收数据，我们指定位于端口镜像所在位置的网卡。 
具体位于：File->Select Settings->New 
名称自定义、选择所在网卡下拉菜单，点击确定即可。(如图6) 
  图5
  图6
这样我们就进入了Sniffer Pro的主界面。 
步骤三：新手上路，查询网关流量 
下面以图文的方式介绍，如何查询网关（路由、代理：219.*.238.65）流量，这也是最为常用、重要的查询之一。 
1． 扫描IP-MAC对应关系。这样做是为了在查询流量时，方便判断具体流量终端的位置，MAC地址不如IP地址方便。 
选择菜单栏中Tools->Address Book 点击左边的放大镜（autodiscovery 扫描）在弹出的窗口中输入您所要扫描的IP地址段，本例输入：219.*.238.64-219.*.238.159点击OK，系统会自动扫描IP-MAC对应关系。扫描完毕后，点击DataBase->Save Address Book 系统会自动保存对应关系，以备以后使用。(如图7) 
2.查看网关流量。点击Monitor->Host Table，选择Host table界面左下角的MAC-IP-IPX中的MAC。（为什么选择MAC？在网络中，所有终端的对外数据，例如使用QQ、浏览网站、上传、下载等行为，都是各终端与网关在数据链路层中进行的）(如图8) 
  图7
  图8
3.找到网关的IP地址->选择single station->bar (本例中网关IP为219.*.238.65) 
如图(9)所示： 
219.*.238.65（网关）流量TOP-10 此图为实时流量图。在此之前如果我们没有做扫描IP（Address Book）的工作，右边将会以网卡物理地址-MAC地址的方式显示，现在转换为IP地址形式（或计算机名），现在很容易定位终端所在位置。流量以3D柱形图的方式动态显示，其中最左边绿色柱形图与网关流量最大，其它依次减小。本图中219.*.238.93与网关流量最大，且与其它终端流量差距悬殊，如果这个时候网络出现问题，可以重点检查此IP是否有大流量相关的操作。 
如果要查看219.*.238.65（网关）与内部所有流量通信图，我们可以点击左边菜单中，排列第一位的->MAP按钮 
如图(10)所示,网关与内网间的所有流量都在这里动态的显示。 
  图9
  图10
需要注意的是： 
绿色线条状态为：正在通讯中 
暗蓝色线条状态为：通信中断 
线条的粗细与流量的大小成正比 
如果将鼠标移动至线条处,程序显示出流量双方位置、通讯流量的大小（包括接收、发送）、并自动计算流量占当前网络的百分比。 
其它主要功能： 
PIE：饼图的方式显示TOP 10的流量占用百分比。 
Detail：将Protocol(协议类型)、From Host（原主机）、in/out packets/bytes(接收、发送字节数、包数)等字段信息以二维表格的方式显示。 
第四步：基于IP层流量 
1.为了进一步分析219.*.238.93的异常情况，我们切换至基于IP层的流量统计图中看看。 
点击菜单栏中的Monitor->Host Table，选择Host Table界面左下角的MAC-IP-IPX中的IP。 
2.找到IP：219.*.238.93地址（可以用鼠标点击IP Addr排序，以方便查找）->选择single station->bar （如图11所示） 
3.我们切换至Traffic Map来看看它与所有IP的通信流量图。（图12） 
  图11
  图12
我们可以从219.*.238.93的通信图中看到，与它建立IP连接的情况。图中IP连接数目非常大，这对于普通应用终端来讲，显然不是一种正常的业务连接。我们猜测，该终端可能正在进行有关P2P类的操作，比如正在使用P2P类软件进行BT下载、或者正在观看P2P类在线视频等。 
为了进一步的证明我们的猜测，我们去看看219.*.228.93的流量协议分布情况。 
4.如图（13）所示：Protocol类型绝大部分为Othen.我们知道在Sniffer Pro中Othen表示未能识别出来协议，如果提前定义了协议类型，这里将会直接显现出来。 
如图（14）通过菜单栏下的Tools->Options->Protocols,在第19栏中定义14405（bitcomet的默认监听端口），取名为bitcom。 
  图13
  图14
现在我们再次查看219.*.238.93协议分布情况.（如图15） 
  图15现在，协议类型大部分都转换为bitcom，这样我们就可以断定，此终端正在用bitcomet做大量上传、下载行为。 
注意：很多P2P类软件并没有固定的使用端口，且端口也可以自定义，因此使用本方法虽然不失为一种检测P2P流量的好方法，但并不能完全保证其准确性。 
好了，使用Sniffer Pro监控网关流量，就到这里结束了。实际上我们可以用同样的方法监控网络内的任何一台终端。后续，我们将继续连载使用Sniffer Pro监控网络的其它新手教程，例如：利用Sniffer pro做网络的预警机制、利用Sniffer pro分析病毒、通过包分析结合专家系统发现网络内存在的“未知问题”，以后我们将陆续做更深一步的探讨和分析。 
概念解释： 
1.什么是端口镜像? 
把交换机一个或多个端口（VLAN）的数据镜像到一个或多个端口的方法。 
2.为什么需要端口镜像 ? 
交换机的工作原理与HUB有很大的不同，HUB组建的网络数据交换都是通过广播方式进行的，而交换机组建的网络是根据交换机内部CAM表（通常也称IP-MAC表）进行数据转发，因此需要通过配置交换机来把一个或多个端口（VLAN）的数据转发到某一个端口来实现对网络的监听。 
3.端口镜像通常有以下几种别名： 
①Port Mirroring 通常指允许把一个端口的流量复制到另外一个端口，同时这个端口不能再传输数据。 
②Monitoring Port 监控端口 
③panning Port 通常指允许把所有端口的流量复制到另外一个端口，同时这个端口不能再传输数据。 
④PAN Port 在 Cisco 产品中，SPAN 通常指 Switch Port ANalyzer。某些交换机的 SPAN 端口不支持传输数据。