Sniffer,中文可以翻译为
嗅探器,也叫抓数据包软件,是一种基于被动侦听原理的
网络分析方式。使用这种技术方式,可以监视网络的状态、数据流动情况以及网络上传输的信息。
简介
Sniffer软件是NAI公司推出的一款一流的便携式网管和应用故障诊断分析软件,不管是在有线网络还是在无线网络中,它都能够给予网管管理人员实时的网络监视、数据包捕获以及故障诊断分析能力。对于在现场运行快速的网络和应用问题故障诊断,基于便携式软件的解决方案具备最高的性价比,却能够让用户获得强大的网管和应用故障诊断功能。
技术代码
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
int main(intargc,char**argv) {intsock,n;charbuffer[2048];unsignedchar*iphead,*ethhead;structifreqethreq;intno=0;//
设置原始套接字方式为接收所有的数据包if((sock=socket(PF_PACKET,SOCK_RAW,htons(ETH_P_IP)))<0){perror(“
原始套接字建立失败
”);exit(1);}//设置网卡工作方式为混杂模式,
SIOCGIFFLAGS请求表示需要获取接口标志strncpy(ethreq.ifr_name,”eth0”,IFNAMSIZ);//InterfaceNamesizeif(ioctl(sock,SIOCGIFFLAGS,ðreq)==-1){perror(“
设置混杂工作模式失败
”);close(sock);exit(1);}//开始捕获数据并进行简单分析While(1){n=recvfrom(sock,buffer,2048,0,NULL,NULL);no++;printf(“
************%dpacket%dbytes************
”,no,n);//检查包是否包含了至少完整的以太帧(14),IP(20)和TCP/UDP(8)包头if(n<42){perror(“recvfrom():”);exit(0);}ethhead=buffer;printf(“DestMACaddress:%02x:%02x:%02x:%02x:%02x:%02x
”,ethhead[0],ethhead[1],ethhead[2],ethhead[3],ethhead[4],ethhead[5]);printf(“SourceMACaddress:%02x:%02x:%02x:%02x:%02x:%02x
”,ethhead[6],ethhead[7],ethhead[8],ethhead[9],ethhead[10],ethhead[11]);iphead=buffer+14;/*跳过Ethernetheader*/if(*iphead==0x45){/*DoublecheckforIPv4*andnooptionspresent*/printf(“Sourcehost:%d.%d.%d.%d,”,iphead[12],iphead[13],iphead[14],iphead[15]);printf(“Desthost:%d.%d.%d.%d
”,iphead[16],iphead[17],iphead[18],iphead[19]);printf(“Sourceport:%d,Destport:%d”,(iphead[20]<<8)+iphead[21],(iphead[22]<<8)+iphead[23]);if(iphead[9]==6)printf(“TCP
”);elseif(iphead[9]==17)printf(“UDP
”);elseprintf(“protocolid:%d
”,iphead[9]);}}}
技术原理
在讲述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等网络。
网络安全的保障与维护
2. 对高速网络的捕获与侦听;
3. 全面分析与解码网络传输的内容;
面向网络链路运行情况的监测
1. 各种网络链路的运行情况;
2. 各种网络链路的流量及阻塞情况;
3. 网上各种协议的使用情况;
4. 网络协议自动发现;
面向网络上应用情况的监测
2. 任意服务器应用流量、流向;
4. 典型应用程序响应时间;
5. 不同网络协议所占带宽比例;
3. Sniffer协议开发包(PDK)可以让用户简单方便地增加用户自定义的协议;
网络管理、故障报警及恢复
运用强大的专家分析系统帮助维护人员在最短时间内排除
网络故障;
根据用户习惯,Sniffer可提供实时数据或图表方式显示统计结果,统计内容包括:
网络统计:如当前和平均网络利用率、总的和当前的帧数及字节数、总站数和激活的站数、协议类型、当前和总的平均帧长等。
协议统计:如协议的网络利用率、协议的数、协议的字节数以及每种协议中各种不同类型的帧的统计等。
差错统计:如错误的CRC校验数、发生的碰撞数、错误帧数等。
站统计:如接收和发送的帧数、开始时间、停止时间、消耗时间、站状态等。最多可统计1024个站。
帧长统计:如某一帧长的帧所占百分比,某一帧长的帧数等。
当某些指标超过规定的阈值时,Sniffer可以自动显示或采用有声形式的告警。
Sniffer可根据网络管理者的要求,自动将统计结果生成多种统计报告格式,并可存盘或打印输出。
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技术常常用于
网络故障诊断、
协议分析、应用
性能分析和网络安全保障等各个领域。
Sniffer被 Network General
公司注册为商标,这家公司以出品Sniffer Pro系列产品而知名。目前最新版本为Sniffer Portable 4.9,这类产品通过
网络嗅探这一技术方式,对数据协议进行捕获和解析,能够大大帮助故障诊断和网络应用性能的分析鉴别。
Network General 已经被NetScout公司收购。
扩展应用
1、专用领域的Sniffer
Sniffer被广泛应用到各种专业领域,例如FIX (
金融信息交换协议)、MultiCast(
组播协议)、3G (第三代
移动通讯技术)的分析系统。其可以解析这些专用协议数据,获得完整的解码分析。
2、长期存储的Sniffer应用
由于现代
网络数据量惊人,带宽越来越大。采用传统方式的Sniffer产品很难适应这类环境,因此诞生了伴随有大量
硬盘存储空间的长期记录设备。例如nGenius Infinistream等。
由于协议解码这类的应用曲高和寡,很少有人能够很好的理解各类协议。但捕获下来的数据却非常有价值。因此在现代意义上非常流行如何把协议数据采用最好的方式进行展示,包括产生了可以把Sniffer数据转换成Excel的BoneLight类型的应用和把Sniffer分析数据进行图形化的
开源系统PacketMap等。这类应用使用户能够更简明地理解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.如图所示,主界面上方以图形方式模拟交换机界面,其中绿色灯亮起表示此端口正在使用。下方文字列出交换机的一些基本信息。
5.将Mirror Status 选择为Enable(默认为关闭状态,开启),本例中将Port-1端口设置为监听端口:Target Port=Port-1,其余端口选择为Both,既:监听双向数据(Rx接收 Tx发送),选择完毕后,点击Apply应用设置。4.如图(3):鼠标点击左下方菜单中的advanced setup->Mirroring Configurations (高级配置—镜像配置)
此时所有的端口数据都将复制一份到Port-1。
步骤二:Sniffer Pro 安装、启动、配置接下来,我们就可以在Port-1端口,接入计算机并安装配置Sniffer Pro。
Sniffer Pro 安装过程与其它应用软件没有什么太大的区别,在安装过程中需要注意的是:
①Sniffer Pro 安装大约占用70M左右的硬盘空间。
②安装完毕Sniffer Pro后,会自动在网卡上加载Sniffer Pro 特殊的驱动程序。
③安装的最后将提示填入相关信息及序列号,正确填写完毕,安装程序需要重新启动计算机。
④对于英文不好的管理员可以下载网上的汉化补丁。
我们来启动Sniffer Pro。第一次启动Sniffer Pro时,需要选择程序从那一个
网络适配器接收数据,我们指定位于
端口镜像所在位置的网卡。
具体位于:File->Select Settings->New
名称自定义、选择所在网卡下拉菜单,点击确定即可。
步骤三:新手上路,查询
网关流量这样我们就进入了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 系统会自动保存对应关系,以备以后使用。
2.查看
网关流量。点击Monitor->Host Table,选择Host table界面左下角的MAC-IP-IPX中的MAC。(为什么选择MAC?在网络中,所有终端的对外数据,例如使用QQ、浏览网站、上传、下载等行为,都是各终端与网关在
数据链路层中进行的)
如图所示:3.找到网关的IP地址->选择single station->bar (本例中网关IP为219.*.238.65)
219.*.238.65(网关)流量TOP-10 此图为实时流量图。在此之前如果我们没有做扫描IP(Address Book)的工作,右边将会以网卡
物理地址-MAC地址的方式显示,现在转换为IP地址形式(或计算机名),现在很容易定位终端所在位置。流量以3D柱形图的方式动态显示,其中最左边绿色柱形图与
网关流量最大,其它依次减小。本图中219.*.238.93与网关流量最大,且与其它终端流量差距悬殊,如果这个时候网络出现问题,可以重点检查此IP是否有大流量相关的操作。
如果要查看219.*.238.65(网关)与内部所有流量通信图,我们可以点击左边菜单中,排列第一位的->MAP按钮
如图所示,网关与内网间的所有流量都在这里动态的显示。
绿色线条状态为:正在通讯中需要注意的是:
暗蓝色线条状态为:通信中断
线条的粗细与流量的大小成正比
如果将鼠标移动至线条处,程序显示出流量双方位置、通讯流量的大小(包括接收、发送)、并自动计算流量占当前网络的百分比。
其它主要功能:
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的通信流量图。
为了进一步的证明我们的猜测,我们去看看219.*.228.93的流量协议分布情况。我们可以从219.*.238.93的通信图中看到,与它建立IP连接的情况。图中IP连接数目非常大,这对于普通应用终端来讲,显然不是一种正常的业务连接。我们猜测,该终端可能正在进行有关P2P类的操作,比如正在使用P2P类软件进行BT下载、或者正在观看P2P类在线视频等。
4.如图所示:Protocol类型绝大部分为Othen.我们知道在Sniffer Pro中Othen表示未能识别出来协议,如果提前定义了协议类型,这里将会直接显现出来。
如图通过菜单栏下的Tools->Options->Protocols,在第19栏中定义14405(bitcomet的默认监听端口),取名为bitcom。
现在我们再次查看219.*.238.93协议分布情况.
现在,协议类型大部分都转换为bitcom,这样我们就可以断定,此终端正在用bitcomet做大量上传、下载行为。
注意:很多P2P类软件并没有固定的使用端口,且端口也可以自定义,因此使用本方法虽然不失为一种检测P2P流量的好方法,但并不能完全保证其准确性。
好了,使用Sniffer Pro监控
网关流量,就到这里结束了。实际上我们可以用同样的方法监控网络内的任何一台终端。后续,我们将继续连载使用Sniffer Pro监控网络的其它新手教程,例如:利用Sniffer pro做网络的预警机制、利用Sniffer pro分析病毒、通过包分析结合专家系统发现网络内存在的“未知问题”,以后我们将陆续做更深一步的探讨和分析。
概念解释:
把
交换机一个或多个端口(VLAN)的数据镜像到一个或多个端口的方法。
2.为什么需要端口镜像 ?
交换机的工作原理与HUB有很大的不同,HUB组建的
网络数据交换都是通过广播方式进行的,而交换机组建的网络是根据交换机内部CAM表(通常也称IP-MAC表)进行数据转发,因此需要通过配置交换机来把一个或多个端口(VLAN)的数据转发到某一个端口来实现对网络的监听。
①Port Mirroring 通常指允许把一个端口的流量复制到另外一个端口,同时这个端口不能再传输数据。
②Monitoring Port 监控端口
③panning Port 通常指允许把所有端口的流量复制到另外一个端口,同时这个端口不能再传输数据。
④PAN Port 在 Cisco 产品中,SPAN 通常指 Switch Port ANalyzer。某些
交换机的 SPAN 端口不支持传输数据。