博客园丁

我是博客园的一丁,我会永不停顿,不停创新。
posts - 99, comments - 119, trackbacks - 21, articles - 22
   :: 首页 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理

全面学习与了解嗅探器的基础知识

Posted on 2006-11-15 22:23 Jason.Jiang 阅读(676) 评论(1)  编辑 收藏 所属分类: 网络安全
sniffer原理 :


  现在人们谈到黑客攻击,一般所指的都是以主动方式进行的,例如利用漏洞或者猜测系统密码的方式对系统进行攻击。但是其实还有一类危害非常大的被动攻击方式往往为大家所忽视,那就是利用Sniffer进行嗅探攻击。
   Sniffer,中文可以翻译为嗅探器,是一种威胁性极大的被动攻击工具。使用这种工具,可以监视网络的状态、数据流动情况以及网络上传输的信息。当信息以明文的形式在网络上传输时,便可以使用网络监听的方式来进行攻击。将网络接口设置在监听模式,便可以将网上传输的源源不断的信息截获。黑客们常常用它来截获用户的口令。据说某个骨干网络的路由器曾经被黑客攻人,并嗅探到大量的用户口令。本文将详细介绍Sniffer的原理和应用。
  一、Sniffer 原理
  1.网络技术与设备简介
   在讲述Sni计er的概念之前,首先需要讲述局域网设备的一些基本概念。
   数据在网络上是以很小的称为帧(Frame)的单位传输的,帧由几部分组成,不同的部分执行不同的功能。帧通过特定的称为网络驱动程序的软件进行成型,然后通过网卡发送到网线上,通过网线到达它们的目的机器,在目的机器的一端执行相反的过程。接收端机器的以太网卡捕获到这些帧,并告诉操作系统帧已到达,然后对其进行存储。就是在这个传输和接收的过程中,嗅探器会带来安全方面的问题。
   每一个在局域网(LAN)上的工作站都有其硬件地址,这些地址惟一地表示了网络上的机器(这一点与Internet地址系统比较相似)。当用户发送一个数据包时,这些数据包就会发送到LAN上所有可用的机器。
   在一般情况下,网络上所有的机器都可以“听”到通过的流量,但对不属于自己的数据包则不予响应(换句话说,工作站A不会捕获属于工作站B的数据,而是简单地忽略这些数据)。如果某个工作站的网络接口处于混杂模式(关于混杂模式的概念会在后面解释),那么它就可以捕获网络上所有的数据包和帧。
  2.网络监听原理
   Sniffor程序是一种利用以太网的特性把网络适配卡(NIC,一般为以太同卡)置为杂乱(promiscuous)模式状态的工具,一旦同卡设置为这种模式,它就能接收传输在网络上的每一个信息包。
   普通的情况下,阿卡只接收和自己的地址有关的信息包,即传输到本地主机的信息包。要使Sniffer能接收并处理这种方式的信息,系统需要支持BPF,Linux下需要支持SOCKET一PACKET。但一般情况下,网络硬件和TCP/IP堆栈不支持接收或者发送与本地计算机无关的数据包,所以,为了绕过标准的TCP/IP堆栈,网卡就必须设置为我们刚开始讲的混杂模式。一般情况下,要激活这种方式,内核必须支持这种伪设备Bpfilter,而且需要root权限来运行这种程序,所以sniffer需要root身份安装,如果只是以本地用户的身份进人了系统,那么不可能唤探到root的密码,因为不能运行Sniffer。
   基于Sniffer这样的模式,可以分析各种信息包并描述出网络的结构和使用的机器,由于它接收任何一个在同一网段上传输的数据包,所以也就存在着捕获密码、各种信息、秘密文档等一些没有加密的信息的可能性。这成为黑客们常用的扩大战果的方法,用来夺取其他主机的控制权
  3 Snifffer的分类
   Sniffer分为软件和硬件两种,软件的Sniffer有 NetXray、Packetboy、Net monitor等,其优点是物美价廉,易于学习使用,同时也易于交流;缺点是无法抓取网络上所有的传输,某些情况下也就无法真正了解网络的故障和运行情况。硬件的Sniffer通常称为协议分析仪,一般都是商业性的,价格也比较贵。
   实际上本文中所讲的Sniffer指的是软件。它把包抓取下来,然后打开并查看其中的内容,可以得到密码等。Sniffer只能抓取一个物理网段内的包,就是说,你和监听的目标中间不能有路由或其他屏蔽广播包的设备,这一点很重要。所以,对一般拨号上网的用户来说,是不可能利用Sniffer来窃听到其他人的通信内容的。
  4.网络监听的目的
   当一个黑客成功地攻陷了一台主机,并拿到了root权限,而且还想利用这台主机去攻击同一网段上的其他主机时,他就会在这台主机上安装Sniffer软件,对以太网设备上传送的数据包进行侦听,从而发现感兴趣的包。如果发现符合条件的包,就把它存到一个LOg文件中去。通常设置的这些条件是包含字“username”或“password”的包,这样的包里面通常有黑客感兴趣的密码之类的东西。一旦黑客截获得了某台主机的密码,他就会立刻进人这台主机。
   如果Sniffer运行在路由器上或有路由功能的主机上,就能对大量的数据进行监控,因为所有进出网络的数据包都要经过路由器。
   Sniffer属于第M层次的攻击。就是说,只有在攻击者已经进入了目标系统的情况下,才能使用Sniffer这种攻击手段,以便得到更多的信息。
   Sniffer除了能得到口令或用户名外,还能得到更多的其他信息,比如一个重要的信息、在网上传送的金融信息等等。Sniffer几乎能得到任何在以大网上传送的数据包。
   Sniffer是一种比较复杂的攻击手段,一般只有黑客老手才有能力使用它,而对于一个网络新手来说,即使在一台主机上成功地编译并运行了Sniffer,一般也不会得到什么有用的信息,因为通常网络上的信息流量是相当大的,如果不加选择地接收所有的包,然后从中找到所需要的信息非常困难;而且,如果长时间进行监听,还有可能把放置Snifkr的机器的硬盘撑爆。
  5.一个简单的Sniffer程序
   下面是一个非常简单的C程序,它可以完成一般的监听功能,/* */中的内容是本文的注解。
  /**//*下面是包含进行调用系统和网络函数的头文件*/
  #include〈stdio.h〉
  #include〈sys/socket.h〉
  #include〈netinet/in.h〉
  #include〈arpa/inet.h〉
  /**//*下面是IP和TCP包头结构*/
  struct IP{
   unsigned int ip_length:4;
   /**//*定义IP头的长度*/
   unsigned int ip_version:4;
   /**//*IP版本,Ipv4 */
   unsigned char ip_tos;
   /**//*服务类型*/
   unsigned short
  ip_total_length; /**//*IP数据包的总长度*/
   unsigned short ip_id;
   /**//*鉴定城*/
   unsigned short ip_flags;
   /**//*IP 标志 */
   unsigned char ip_ttl;
   /**//*IP 包的存活期*/
   unsigned char ip_protocol;
   /**//*IP 上层的协议*/
   unsigned short ip_cksum;
   /**//*IP头校验和*/
  unsigned int ip_source ;
  /**//*源IP地址*/
  unsigned int ip_source;
  /**//*目的IP地址*/
   };
  struct tcp{
  unsigned short tcp_source_port;
  /**//*定义TCP源端口*/
   unsigned short tcp_dest_port;
   /**//*TCP目的端口*/
   unsigned short tcp_seqno;
   /**//*TC P序列号*/
  unsigned int tcp_ackno;
  /**//*发送者期望的下一个序列号*/
  unsigned int tcp_res1:4;
  /**//*下面几个是TCP标志*/
  tcp_hlen:4
  tcp_fin:1,
  tcp_syn:1,
  tcp_rst:1,
  tcp_psh:1,
  tcp_ack:1,
  tcp_urg:1,
  tcp_res2:2;
  unsignd short tcp_winsize; /**//*能接收的最大字节数*/
   unsigned short tcp_cksum;
   /**//* TCP校验和*/
   unsigned short tcp_urgent;
   /**//* 紧急事件标志*/
  };
  /**//*主函数*/
  int main()
  {
  int sock,bytes_recieved,fromlen;
  char buffer[65535];
  struct sockaddr_in from;
   /**//*定义socket结构*/
  struct ip ip;
   /**//*定义IP和TCP*/
  struct tcp *tcp;
   sock=socket(AF_INET,SOCK_RAW,IPPROTO_TCP);
  /**//* 上面是建立socket连接,第一个参数是地址族类型,用INTERNET类型*/
  /**//* 第二个参数是socket类型,这里用了SOCK_RAW,它可以绕过传输层*/
  /**//* 直接访问IP层的包,为了调用SOCK_RAW,需要有root权限*/
  /**//* 第三个参数是协议,选IPPROTO_TCP指定了接收TCP层的内容*/
  while(1)
  /**//*建立一个死循环,不停的接收网络信息*/
  {
  fromlen=sizeof from;
  bytes_recieved=recvfrom(sock,buffer,sizeofbuffer,0,(struct sockaddr *)&from,&fromlen);
  /**//*上面这个函数是从建立的socket连接中接收数据*/
  /**//*因为recvfrom()需要一个sockaddr数据类型,所以我们用了一个强制类型转换*/
  print("\nBytes received ::: %5d\n",bytes_recieved);
  /**//*显示出接收的数据字节数*/
  printf("source address ::: %s\n",inet_ntoa(from.sin_addr));
  /**//*显示出源地址*/
  ip=(struct ip *)buffer;
  /**//*把接收的数据转化为我们预先定义的结构,便于查看*/
  printf("IP header length ::: %d\n",ip->ip_length);
  /**//*显示IP头的长度*/
  print("Protocol ::: %d\n",ip->ip_protocol);
  /**//*显示协议类型,6是TCP,17是UDP*/
  tcp=(struct tcp *)(buffer + (4*ip->ip_iplength));
  /**//*上面这名需要详细解释一下,因为接收的包头数据中,IP头的大小是固定的4字节*/
  /**//*所以我用IP长度乘以4,指向TCP头部分*/
  printf("Source port ::: %d\n",ntohs(tcp->tcp_source_port); /**//*显示出端口*/
  printf("Dest prot ::: %d\n",ntohs(tcp->tcp_dest_port));/**//*显示出目标端口*/
   以上这个C程序是为了说明Sniffer的接收原理而列举的一个最简单的例子,它只是完成了Sniffer的接收功能,在运行它之前,我们还需要手工把同卡设为混杂模式,在root权限下用如下命令设置:
  ifconfig eth0 promisc
   假设etho是你的以太网设备接口,然后运行编译好的程序,就可以看到接收的数据包了。
   这个程序虽然简单,但是它说明了Sniffer的基本原理,就是先把同卡设备设为混杂模式,然后直接接收IP层的数据。
   当然这个程序的功能也太简单,只能显示源地址、目标地址和源端口、目标端口等极为简单的信息,这对于黑客来说是没有什么用处的,黑客要的是密码之类的信息,这可以使用一些免费的Sniffer程序来完成。

Sniffer含义及工作原理 :




  
一.有关sniffer及sniffer的含义
   sniffers(嗅探器)几乎和internet有一样久的历史了.Sniffer是一种常用的收集有用数据方法,这些数据可以是用户的帐号和密码,可以是一些商用机密数据等等。随着Internet及电子商务的日益普及,Internet的安全也越来越受到重视。在Internet安全隐患中扮演重要角色之一的Sniffer以受到越来越大的关注,所以今天我要向大家介绍一下介绍Sniffer以及如何阻止sniffer。  
   大多数的黑客仅仅为了探测内部网上的主机并取得控制权,只有那些"雄心勃勃"的黑客,为了控制整个网络才会安装特洛伊木马和后门程序,并清除记录。他们经常使用的手法是安装sniffer。
    在内部网上,黑客要想迅速获得大量的账号(包括用户名和密码),最为有效的手段是使用 "sniffer" 程序。这种方法要求运行Sniffer 程序的主机和被监听的主机必须在同一个以太网段上,故而在外部主机上运行sniffer是没有效果的。再者,必须以root的身份使用sniffer 程序,才能够监听到以太网段上的数据流。谈到以太网sniffer,就必须谈到以太网sniffing。
  那么什么是以太网sniffer呢?  
  以太网sniffing是指对以太网设备上传送的数据包进行侦听,发现感兴趣的包。如果发现符合条件的包,就把它存到一个log文件中去。通常设置的这些条件是包含字"username"或"password"的包。
    它的目的是将网络层放到promiscuous模式,从而能干些事情。
  Promiscuous模式是指网络上的所有设备都对总线上传送的数据进行侦听,并不仅仅是它们自己的数据。根据第二章中有关对以太网的工作原理的基本介绍,可以知道:一个设备要向某一目标发送数据时,它是对以太网进行广播的。一个连到以太网总线上的设备在任何时间里都在接受数据。不过只是将属于自己的数据传给该计算机上的应用程序。
    利用这一点,可以将一台计算机的网络连接设置为接受所有以太网总线上的数据,从而实现sniffer。
    sniffer通常运行在路由器,或有路由器功能的主机上。这样就能对大量的数据进行监控。sniffer属第二层次的攻击。通常是攻击者已经进入了目标系统,然后使用sniffer这种攻击手段,以便得到更多的信息。
    sniffer除了能得到口令或用户名外,还能得到更多的其他信息,比如一个其他重要的信息,在网上传送的金融信息等等。sniffer几乎能得到任何以太网上的传送的数据包。黑客会使用各种方法,获得系统的控制权并留下再次侵入的后门,以保证sniffer能够执行。在Solaris 2.x平台上,sniffer 程序通常被安装在/usr/bin 或/dev目录下。黑客还会巧妙的修改时间,使得sniffer程序看上去是和其它系统程序同时安装的。
  大多数以太网sniffer程序在后台运行,将结果输出到某个记录文件中。黑客常常会修改ps程序,使得系统管理员很难发现运行的sniffer程序。
    以太网sniffer程序将系统的网络接口设定为混合模式。这样,它就可以监听到所有流经同一以太网网段的数据包,不管它的接受者或发送者是不是运行sniffer的主机。 程序将用户名、密码和其它黑客感兴趣的数据存入log文件。黑客会等待一段时间 ----- 比如一周后,再回到这里下载记录文件。
  讲了这么多,那么到底我们可以用什么通俗的话来介绍sniffer呢?
  计算机网络与电话电路不同,计算机网络是共享通讯通道的。共享意味着计算机能够接收到发送给其它计算机的信息。捕获在网络中传输的数据信息就称为sniffing(窃听)。
    以太网是现在应用最广泛的计算机连网方式。以太网协议是在同一回路向所有主机发送数据包信息。数据包头包含有目标主机的正确地址。一般情况下只有具有该地址的主机会接受这个数据包。如果一台主机能够接收所有数据包,而不理会数据包头内容,这种方式通常称为"混杂" 模式。
    由于在一个普通的网络环境中,帐号和口令信息以明文方式在以太网中传输, 一旦入侵者获得其中一台主机的root权限,并将其置于混杂模式以窃听网络数据,从而有可能入侵网络中的所有计算机。
  一句话,sniffer就是一个用来窃听的黑客手段和工具。
  二、sniffer的工作原理
    通常在同一个网段的所有网络接口都有访问在物理媒体上传输的所有数据的能力,而每个网络接口都还应该有一个硬件地址,该硬件地址不同于网络中存在的其他网络接口的硬件地址,同时,每个网络至少还要一个广播地址。(代表所有的接口地址),在正常情况下,一个合法的网络接口应该只响应这样的两种数据帧:
    1、帧的目标区域具有和本地网络接口相匹配的硬件地址。
    2、帧的目标区域具有"广播地址"。
    在接受到上面两种情况的数据包时,nc通过cpu产生一个硬件中断,该中断能引起操作系统注意,然后将帧中所包含的数据传送给系统进一步处理。
    而sniffer就是一种能将本地nc状态设成(promiscuous)状态的软件,当nc处于这种"混杂"方式时,该nc具备"广播地址",它对所有遭遇到的每一个帧都产生一个硬件中断以便提醒操作系统处理流经该物理媒体上的每一个报文包。(绝大多数的nc具备置成 promiscuous方式的能力)
    可见,sniffer工作在网络环境中的底层,它会拦截所有的正在网络上传送的数据,并且通过相应的软件处理,可以实时分析这些数据的内容,进而分析所处的网络状态和整体布局。值得注意的是:sniffer是极其安静的,它是一种消极的安全攻击。
    通常sniffer所要关心的内容可以分成这样几类:
    1、口令
    我想这是绝大多数非法使用sniffer的理由,sniffer可以记录到明文传送的userid和passwd.就算你在网络传送过程中使用了加密的数据,sniffer记录的数据一样有可能使入侵者在家里边吃肉串边想办法算出你的算法。
    2、金融帐号
    许多用户很放心在网上使用自己的信用卡或现金帐号,然而sniffer可以很轻松截获在网上传送的用户姓名、口令、信用卡号码、截止日期、帐号和pin.
    3、偷窥机密或敏感的信息数据
    通过拦截数据包,入侵者可以很方便记录别人之间敏感的信息传送,或者干脆拦截整个的email会话过程。
    4、窥探低级的协议信息。
    这是很可怕的事,我认为,通过对底层的信息协议记录,比如记录两台主机之间的网络接口地址、远程网络接口ip地址、ip路由信息和tcp连接的字节顺序号码等。这些信息由非法入侵的人掌握后将对网络安全构成极大的危害,通常有人用sniffer收集这些信息只有一个原因:他正在进行一次欺诈,(通常的ip地址欺诈就要求你准确插入tcp连接的字节顺序号,这将在以后整理的文章中指出)如果某人很关心这个问题,那么sniffer对他来说只是前奏,今后的问题要大得多。(对于高级的hacker而言,我想这是使用sniffer的唯一理由吧)
  二.sniffer的工作环境
  snifffer就是能够捕获网络报文的设备。嗅探器的正当用处在于分析网络的流量,以便找出所关心的网络中潜在的问题。例如,假设网络的某一段运行得不是很好,报文的发送比较慢,而我们又不知道问题出在什么地方,此时就可以用嗅探器来作出精确的问题判断。
  嗅探器在功能和设计方面有很多不同。有些只能分析一种协议,而另一些可能能够分析几百种协议。一般情况下,大多数的嗅探器至少能够分析下面的协议:
  1.标准以太网
  2.TCP/IP
  3.IPX
  4.DECNet
  嗅探器通常是软硬件的结合。专用的嗅探器价格非常昂贵。另一方面,免费的嗅探器虽然不需要花什么钱,但得不到什么支持。
  嗅探器与一般的键盘捕获程序不同。键盘捕获程序捕获在终端上输入的键值,而嗅探器则捕获真实的网络报文。嗅探器通过将其置身于网络接口来达到这个目的——例如将以太网卡设置成杂收模式。(为了理解杂收模式是怎么回事,先解释局域网是怎么工作的)。
  数据在网络上是以很小的称为帧(Ftame)的单位传输的帧由好几部分组成,不同的部分执行不同的功能。(例如,以太网的前12个字节存放的是源和目的的地址,这些位告诉网络:数据的来源和去处。以太网帧的其他部分存放实际的用户数据、TCP/IP的报文头或IPX报文头等等)。
  帧通过特定的称为网络驱动程序的软件进行成型,然后通过网卡发送到网线上。通过网线到达它们的目的机器,在目的机器的一端执行相反的过程。接收端机器的以太网卡捕获到这些帧,并告诉操作系统帧的到达,然后对其进行存储。就是在这个传输和接收的过程中,嗅探器会造成安全方面的问题。
  每一个在LAN上的工作站都有其硬件地址。这些地址唯一地表示着网络上的机器(这一点于Internet地址系统比较相似)。当用户发送一个报文时,这些报文就会发送到LAN上所有可用的机器。
  在一般情况下,网络上所有的机器都可以“听”到通过的流量,但对不属于自己的报文则不予响应(换句话说,工作站A不会捕获属于工作站B的数据,而是简单的忽略这些数据)。
  如果某在工作站的网络接口处于杂收模式,那么它就可以捕获网络上所有的报文和帧,如果一个工作站被配置成这样的方式,它(包括其软件)就是一个嗅探器。
  嗅探器可能造成的危害:
  1.嗅探器能够捕获口令
  2.能够捕获专用的或者机密的信息
  3.可以用来危害网络邻居的安全,或者用来获取更高级别的访问权限
  事实上,如果你在网络上存在非授权的嗅探器就以为着你的系统已经暴露在别人面前了。(大家可以试试天行2的嗅探功能)
  一般我们只嗅探每个报文的前200到300个字节。用户名和口令都包含在这一部分中,这是我们关心的真正部分。工人,也可以嗅探给定接口上的所有报文,如果有足够的空间进行存储,有足够的那里进行处理的话,将会发现另一些非常有趣的东西……
  简单的放置一个嗅探器宾将其放到随便什么地方将不会起到什么作用。将嗅探器放置于被攻击机器或网络附近,这样将捕获到很多口令,还有一个比较好的方法就是放在网关上。如果这样的话就能捕获网络和其他网络进行身份鉴别的过程。这样的方式将成倍地增加我们能够攻击的范围。
  三.谁会使用sniffers
  可能谁都回知道谁会使用sniffer,但是并不是每个使用它的人都是网络高手,因为现在有很多的sniffer都成了傻瓜似的了,前段时间用的最多的不外乎oicq sniffer。我想那些喜欢查好友ip的朋友都应该记得它吧。呵呵,我都使用过它,现在当然不用了啊!
  当然系统管理员使用sniffer来分析网络信息交通并且找出网络上何处发生问题。一个安全管理员可以同时用多种sniffer, 将它们放置在网络的各处,形成一个入侵警报系统。对于系统管理员来说sniffer是一个非常好的工具,但是它同样是一个经常被黑客使用的工具.骇客安装sniffer以获得用户名和账号,信用卡号码,个人信息,和其他的信息可以导致对你或是你的公司的极大危害如果向坏的方面发展。当它们得到这些信息后,骇客将使用密码来进攻其他的internet 站点甚至倒卖信用卡号码。

网络监听技术 :



  在网络中,当信息进行传播的时候,可以利用工具,将网络接口设置在监听的模式,便可将网络中正在传播的信息截获或者捕获到,从而进行攻击。网络监听在网络中的任何一个位置模式下都可实施进行。而黑客一般都是利用网络监听来截取用户口令。比如当有人占领了一台主机之后,那么他要再想将战果扩大到这个主机所在的整个局域网话,监听往往是他们选择的捷径。很多时候我在各类安全论坛上看到一些初学的爱好者,在他们认为如果占领了某主机之后那么想进入它的内部网应该是很简单的。其实非也,进入了某主机再想转入它的内部网络里的其它机器也都不是一件容易的事情。因为你除了要拿到他们的口令之外还有就是他们共享的绝
  对路径,当然了,这个路径的尽头必须是有写的权限了。在这个时候,运行已经被控制的主机上的监听程序就会有大收效。不过却是一件费神的事情,而且还需要当事者有足够的耐心和应变能力。
  
  █网络监听的原理
  
  Ethernet(以太网,它是由施乐公司发明的一种比较流行的局域网技术,它包含一条所有计算机都连接到其上的一条电缆,每台计算机需要一种叫接口板的硬件才能连接到以太网)协议的工作方式是将要发送的数据包发往连接在一起的所有主机。在包头中包括有应该接收数据包的主机的正确地址,因为只有与数据包中目标地址一致的那台主机才能接收到信息包,但是当主机工作在监听模
  式下的话不管数据包中的目标物理地址是什么,主机都将可以接收到。许多局域网内有十几台甚至上百台主机是通过一个电缆、一个集线器连接在一起的,在协议的高层或者用户来看,当同一网络中的两台主机通信的时候,源主机将写有目的的主机地址的数据包直接发向目的主机,或者当网络中的一台主机同外界的主机通信时,源主机将写有目的的主机IP地址的数据包发向网关。但这种数据包并不能在协议栈的高层直接发送出去,要发送的数据包必须从TCP/IP协议的IP层交给网络接口,也就是所说的数据链路层.网络接口不会识别IP地址的。在网络接口由IP层来的带有IP地址的数据包又增加了一部分以太祯的祯头的信息。在祯头中,有两个
  域分别为只有网络接口才能识别的源主机和目的主机的物理地址这是一个48位的地址,这个48位的地址是与IP地址相对应的,换句话说就是一个IP地址也会对应一个物理地址。对于作为网关的主机,由于它连接了多个网络,它也就同时具备有很多个IP地址,在每个网络中它都有一个。而发向网络外的祯中继携带的就是网关的物理地址。
  Ethernet中填写了物理地址的祯从网络接口中,也就是从网卡中发送出去传送到物理的线路上。如果局域网是由一条粗网或细网连接成的,那么数字信号在电缆上传输信号就能够到达线路上的每一台主机。再当使用集线器的时候,发送出去的信号到达集线器,由集线器再发向连接在集线器上的每一条线路。这样在物理线路上传输的数字信号也就能到达连接在集线器上的每个主机了。当数字信号到达一台主机的网络接口时,正常状态下网络接口对读入数据祯进行检查,如果数据祯中携带的物理地址是自己的或者物理地址是广播地址,那么就会将数据祯交给IP层软件。对于每个到达网络接口的数据祯都要进行这个过程的。但是当主机工作在监听
  模式下的话,所有的数据祯都将被交给上层协议软件处理。
  
  当连接在同一条电缆或集线器上的主机被逻辑地分为几个子网的时候,那么要是有一台主机处于监听模式,它还将可以接收到发向与自己不在同一个子网(使用了不同的掩码、IP地址和网关)的主机的数据包,在同一个物理信道上传输的所有信息都可以被接收到。
  
  在UNIX系统上,当拥有超级权限的用户要想使自己所控制的主机进入监听模式,只需要向Interface(网络接口)发送I/O控制命令,就可以使主机设置成监听模式了。而在Windows9x的系统中则不论用户是否有权限都将可以通过直接运行监听工具就可以实现了。
  
  在网络监听时,常常要保存大量的信息(也包含很多的垃圾信息),并将对收集的信息进行大量的整理,这样就会使正在监听的机器对其它用户的请求响应变的很慢。同时监听程序在运行的时候需要消耗大量的处理器时间,如果在这个时候就详细的分析包中的内容,许多包就会来不及接收而被漏走。所以监听程序很多时候就会将监听得到的包存放在文件中等待以后分析。分析监听到的数据包是很头疼的事情。因为网络中的数据包都非常之复杂。两台主机之间连续发送和接收数据包,在监听到的结果中必然会加一些别的主机交互的数据包。监听程序将同一TCP会话的包整理到一起就相当不容易了,如果你还期望将用户详细信息整理出来就需要根据协议对包进行大量的分析。Internet上那么多的协议,运行进起的话这个监听程序将会十分的大哦。
  
  现在网络中所使用的协议都是较早前设计的,许多协议的实现都是基于一种非常友好的,通信的双方充分信任的基础。在通常的网络环境之下,用户的信息包括口令都是以明文的方式在网上传输的,因此进行网络监听从而获得用户信息并不是一件难点事情,只要掌握有初步的TCP/IP协议知识就可以轻松的监听到你想要的信息的。前些时间美籍华人China-babble曾提出将望路监听从局域网延伸到广域网中,但这个想法很快就被否定了。如果真是这样的话我想网络必将天下大乱了。而事实上现在在广域网里也可以监听和截获到一些用户信息。只是还不够明显而已。在整个Internet中就更显得微不足道了。
  
  下面是一些系统中的著名的监听程序,你可以自己尝试一下的。
  
  Windows9x/NT NetXRay http://semxa.kstar.com/hacking/netxray.zip
  
  DEC Unix/Linux Tcpdump http://semxa.kstar.com/hacking/management.zip
  
  Solaris Nfswatch http://semxa.kstar.com/hacking/nfswatch.zip
  
  SunOS Etherfind http://semxa.kstar.com/hacking/etherfind012.zip
  
  █检测网络监听的方法
  
  网络监听在上述中已经说明了。它是为了系统管理员管理网络,监视网络状态和数据流动而设计的。但是由于它有着截获网络数据的功能所以也是黑客所惯用的伎俩之一。
  一般检测网络监听的方法通过以下来进行:
  ►网络监听说真的,是很难被发现的。当运行监听程序的主机在进听的过程中只是被动的接收在以太网中传输的信息,它不会跟其它的主机交换信息的,也不能修改在网络中传输的信息包。这就说明了网络监听的检测是比较麻烦的事情。
  
  一般情况下可以通过ps-ef或者ps-aux来检测。但大多实施监听程序的人都会通过修改ps的命令来防止被ps-ef的。修改ps只需要几个shell把监听程序的名称过滤掉就OK了。一能做到启动监听程序的人也绝对不是个菜的连这个都不懂的人了,除非是他懒。
  
  上边提到过。当运行监听程序的时候主机响应一般会受到影响变的会慢,所以也就有人提出来通过响应的速率来判断是否受到监听。如果真是这样判断的话我想世界真的会大乱了,说不准一个时间段内会发现无数个监听程序在运行呢。呵呵。
  
  如果说当你怀疑网内某太机器正在实施监听程序的话(怎么个怀疑?那要看你自己了),可以用正确的IP地址和错误的物理地址去ping它,这样正在运行的监听程序就会做出响应的。这是因为正常的机器一般不接收错误的物理地址的ping信息的。但正在进听的机器就可以接收,要是它的IP stack不再次反向检查的话就会响应的。不过这种方法对很多系统是没效果的,因为它依赖于系统的IP stack。
  
  另一种就是向网上发大量不存在的物理地址的包,而监听程序往往就会将这些包进行处理,这样就会导致机器性能下降,你可以用icmp echo delay来判断和比较它。还可以通过搜索网内所有主机上运行的程序,但这样做其的难度可想而知,因为这样不但是大的工作量,而且还不能完全同时检查所有主机上的进程。可是如果管理员这样做也会有很大的必要性,那就是可以确定是否有一个进程是从管理员机器上启动的。
  
  在Unix中可以通过ps –aun或ps –augx命令产生一个包括所有进程的清单:进程的属主和这些进程占用的处理器时间和内存等。
  这些以标准表的形式输出在STDOUT上。如果某一个进程正在运行,那么它将会列在这张清单之中。但很多黑客在运行监听程序的时候会毫不客气的把ps或其它运行中的程序修改成Trojan Horse程序,因为他完全可以做到这一点的。如果真是这样那么上述办法就不会有结果的。但这样做在一定程度上还是有所作为的。在Unix和Windows NT上很容易就能得到当前进程的清单了。但DOS、
  Windows9x好象很难做到哦,具体是不是我没测试过不得而知。
  
  还有一种方式,这种方式要靠足够的运气。因为往往黑客所用的监听程序大都是免费在网上得到的,他并非专业监听。所以做为管理员用来搜索监听程序也可以检测。使用Unix可以写这么一个搜索的小工具了,不然的话要累死人的。呵呵。
  
  有个叫Ifstatus的运行在Unix下的工具,它可以识别出网络接口是否正处于调试状态下或者是在进听装下。要是网络接口运行这样的模式之下,那么很有可能正在受到监听程序的攻击。Ifstatus一般情况下不会产生任何输出的,当它检测到网络的接口处于监听模式下的时候才回输出。管理员可以将系统的cron参数设置成定期运行Ifstatus,如果有好的cron进程的话可以将它产生的输出用mail发送给正在执行cron任务的人,要实现可以在crontab目录下加****/usr/local/etc/ifstatus一行参数。这样不行
  的话还可以用一个脚本程序在crontab下00****/usr/local/etc/run-ifstatus。
  
  抵御监听其实要看哪个方面了。一般情况下监听只是对用户口令信息比较敏感一点(没有无聊的黑客去监听两台机器间的聊天信息的那是个浪费时间的事情)。所以对用户信息和口令信息进行加密是完全有必要的。防止以明文传输而被监听到。现代网络中,SSH(一种在应用环境中提供保密通信的协议)通信协议一直都被沿用,SSH所使用的端口是22,它排除了在不安全信道上通信的信息,被监听的可能性使用到了RAS算法,在授权过程结束后,所有的传输都用IDEA技术加密。但SSH并不就是完全安全的。至少现在我们可以这么大胆评论了。
  
  █著名的Sniffer监听工具
  
  Sniffer之所以著名,权因它在很多方面都做的很好,它可以监听到(甚至是听、看到)网上传输的所有信息。Sniffer可以是硬件也可以是软件。主要用来接收在网络上传输的信息。网络是可以运行在各种协议之下的,包括以太网Ethernet、TCP/IP、ZPX等等,也可以是集中协议的联合体系。
  
  Sniffer是个非常之危险的东西,它可以截获口令,可以截获到本来是秘密的或者专用信道内的信息,截获到信用卡号,经济数据,E-mail等等。更加可以用来攻击与己相临的网络。
  
  Sniffer可以使用在任何一种平台之中。而现在使用Sniffer也不可能别发现,这个足够是对网络安全的最严重的挑战。
  
  在Sniffer中,还有“热心人”编写了它的Plugin,称为TOD杀手,可以将TCP的连接完全切断。总之Sniffer应该引起人们的重视,否则安全永远做不到最好。


SNIFFER(嗅探器)-简介
  
  Sniffer(嗅探器)是一种常用的收集有用数据方法,这些数据可以是用户的帐号和密码,可以是一些商用机密数据等等。Snifffer可以作为能够捕获网络报文的设备,ISS为Sniffer这样定义:Sniffer是利用计算机的网络接口截获目的地为其他计算机的数据报文的一种工具。
  
  Sniffer的正当用处主要是分析网络的流量,以便找出所关心的网络中潜在的问题。例如,假设网络的某一段运行得不是很好,报文的发送比较慢,而我们又不知道问题出在什么地方,此时就可以用嗅探器来作出精确的问题判断。 在合理的网络中,sniffer的存在对系统管理员是致关重要的,系统管理员通过sniffer可以诊断出大量的不可见模糊问题,这些问题涉及两台乃至多台计算机之间的异常通讯有些甚至牵涉到各种的协议,借助于sniffer%2C系统管理员可以方便的确定出多少的通讯量属于哪个网络协议、占主要通讯协议的主机是哪一台、大多数通讯目的地是哪台主机、报文发送占用多少时间、或着相互主机的报文传送间隔时间等等,这些信息为管理员判断网络问题、管理网络区域提供了非常宝贵的信息。
  
  嗅探器与一般的键盘捕获程序不同。键盘捕获程序捕获在终端上输入的键值,而嗅探器则捕获真实的网络报文。
  
  为了对sniffer的工作原理有一个深入的了解,我们先简单介绍一下HUB与网卡的原理。
  
  预备知识
  
  HUB工作原理
  由于以太网等很多网络(常见共享HUB连接的内部网)是基于总线方式,物理上是广播的,就是当一个机器发给另一个机器的数据,共享HUB先收到然后把它接收到的数据再发给其他的(来的那个口不发了)每一个口,所以在共享HUB下面同一网段的所有机器的网卡都能接收到数据。
  
  交换式HUB的内部单片程序能记住每个口的MAC地址,以后就该哪个机器接收就发往哪个口,而不是像共享HUB那样发给所有的口,所以交换HUB下只有该接收数据的机器的网卡能接收到数据,当然广播包还是发往所有口。显然共享HUB的工作模式使得两个机器传输数据的时候其他机器别的口也占用了,所以共享HUB决定了同一网段同一时间只能有两个机器进行数据通信,而交换HUB两个机器传输数据的时候别的口没有占用,所以别的口之间也可以同时传输。这就是共享HUB与交换HUB不同的两个地方,共享HUB是同一时间只能一个机器发数据并且所有机器都可以接收,只要不是广播数据交换HUB同一时间可以有对机器进行数据传输并且数据是私有的。
  
  网卡工作原理
  再讲讲网卡的工作原理。网卡收到传输来的数据,网卡内的单片程序先接收数据头的目的MAC地址,根据计算机上的网卡驱动程序设置的接收模式判断该不该接收,认为该接收就在接收后产生中断信号通知CPU,认为不该接收就丢弃不管,所以不该接收的数据网卡就截断了,计算机根本就不知道。CPU得到中断信号产生中断,操作系统就根据网卡驱动程序中设置的网卡中断程序地址调用驱动程序接收数据,驱动程序接收数据后放入信号堆栈让操作系统处理。
  
  局域网如何工作
  数据在网络上是以很小的称为帧(Frame)的单位传输的帧由好几部分组成,不同的部分执行不同的功能。(例如,以太网的前12个字节存放的是源和目的的地址,这些位告诉网络:数据的来源和去处。以太网帧的其他部分存放实际的用户数据、TCP/IP的报文头或IPX报文头等等)。
  
  帧通过特定的网络驱动程序进行成型,然后通过网卡发送到网线上。通过网线到达它们的目的机器,在目的机器的一端执行相反的过程。接收端机器的以太网卡捕获到这些帧,并告诉操作系统帧的到达,然后对其进行存储。就是在这个传输和接收的过程中,嗅探器会造成安全方面的问题。
  
  通常在局域网(LAN)中同一个网段的所有网络接口都有访问在物理媒体上传输的所有数据的能力,而每个网络接口都还应该有一个硬件地址,该硬件地址不同于网络中存在的其他网络接口的硬件地址,同时,每个网络至少还要一个广播地址。(代表所有的接口地址),在正常情况下,一个合法的网络接口应该只响应这样的两种数据帧:
  
    1、帧的目标区域具有和本地网络接口相匹配的硬件地址。
    2、帧的目标区域具有“广播地址”。
  
  在接受到上面两种情况的数据包时,网卡通过cpu产生一个硬件中断,该中断能引起操作系统注意,然后将帧中所包含的数据传送给系统进一步处理。
  
  当采用共享HUB,用户发送一个报文时,这些报文就会发送到LAN上所有可用的机器。在一般情况下,网络上所有的机器都可以“听”到通过的流量,但对不属于自己的报文则不予响应(换句话说,工作站A不会捕获属于工作站B的数据,而是简单的忽略这些数据)。
  
  如果局域网中某台机器的网络接口处于杂收(promiscuous)模式(即网卡可以接收其收到的所有数据包,下面会详细地讲),那么它就可以捕获网络上所有的报文和帧,如果一台机器被配置成这样的方式,它(包括其软件)就是一个嗅探器。
  
  Sniffer
  
  Sniffer原理
  有了这HUB、网卡的工作原理就可以开始讲讲SNIFFER。首先,要知道SNIFFER要捕获的东西必须是要物理信号能收到的报文信息。显然只要通知网卡接收其收到的所有包(一般叫作杂收promiscuous模式:指网络上的所有设备都对总线上传送的数据进行侦听,并不仅仅是它们自己的数据。),在共享HUB下就能接收到这个网段的所有包,但是交换HUB下就只能是自己的包加上广播包。
  
  要想在交换HUB下接收别人的包,那就要让其发往你的机器所在口。交换HUB记住一个口的MAC是通过接收来自这个口的数据后并记住其源MAC,就像一个机器的IP与MAC对应的ARP列表,交换HUB维护一个物理口(就是HUB上的网线插口,这之后提到的所有HUB口都是指网线插口)与MAC的表,所以可以欺骗交换HUB的。可以发一个包设置源MAC是你想接收的机器的MAC,那么交换HUB就把你机器的网线插的物理口与那个MAC对应起来了,以后发给那个MAC的包就发往你的网线插口了,也就是你的网卡可以SNIFFER到了。注意这物理口与MAC的表与机器的ARP表一样是动态刷新的,那机器发包后交换HUB就又记住他的口了,所以实际上是两个在争,这只能应用在只要收听少量包就可以的场合。
  
  内部网基于IP的通信可以用ARP欺骗别人机器让其发送给你的机器,如果要想不影响原来两方的通信,可以欺骗两方,让其都发给你的机器再由你的机器转发,相当于做中间人,这用ARP加上编程很容易实现。并且现在很多设备支持远程管理,有很多交换HUB可以设置一个口监听别的口,不过这就要管理权限了。
  
  利用这一点,可以将一台计算机的网络连接设置为接受所有以太网总线上的数据,从而实现sniffer。Sniffer就是一种能将本地网卡状态设成‘杂收’状态的软件,当网卡处于这种“杂收”方式时,该网卡具备“广播地址”,它对遇到的每一个帧都产生一个硬件中断以便提醒操作系统处理流经该物理媒体上的每一个报文包。(绝大多数的网卡具备置成杂收方式的能力)
  
  可见,sniffer工作在网络环境中的底层,它会拦截所有的正在网络上传送的数据,并且通过相应的软件处理,可以实时分析这些数据的内容,进而分析所处的网络状态和整体布局。值得注意的是:sniffer是极其安静的,它是一种消极的安全攻击。
  
  嗅探器在功能和设计方面有很多不同。有些只能分析一种协议,而另一些可能能够分析几百种协议。一般情况下,大多数的嗅探器至少能够分析下面的协议:标准以太网、TCP/IP、IPX、DECNet。
  
  嗅探器造成的危害
  sniffing是作用在网络基础结构的底层。通常情况下, 用户并不直接和该层打交道,有些甚至不知道有这一层存在。所以,应该说snffer的危害是相当之大的,通常,使用sniffer是在网络中进行欺骗的开始。它可能造成的危害:
  
  嗅探器能够捕获口令。这大概是绝大多数非法使用sniffer的理由,sniffer可以记录到明文传送的userid和passwd。
  能够捕获专用的或者机密的信息。比如金融帐号,许多用户很放心在网上使用自己的信用卡或现金帐号,然而sniffer可以很轻松截获在网上传送的用户姓名、口令、信用卡号码、截止日期、帐号和pin。比如偷窥机密或敏感的信息数据,通过拦截数据包,入侵者可以很方便记录别人之间敏感的信息传送,或者干脆拦截整个的email会话过程。
  可以用来危害网络邻居的安全,或者用来获取更高级别的访问权限。
  窥探低级的协议信息。
  这是很可怕的事,通过对底层的信息协议记录,比如记录两台主机之间的网络接口地址、远程网络接口ip地址、ip路由信息和tcp连接的字节顺序号码等。这些信息由非法入侵的人掌握后将对网络安全构成极大的危害,通常有人用sniffer收集这些信息只有一个原因:他正要进行一次欺骗(通常的ip地址欺骗就要求你准确插入tcp连接的字节顺序号),如果某人很关心这个问题,那么sniffer对他来说只是前奏,今后的问题要大得多。(对于高级的hacker而言,我想这是使用sniffer的唯一理由吧)
  事实上,如果你在网络上存在非授权的嗅探器就意味着你的系统已经暴露在别人面前了。
  
  一般Sniffer只嗅探每个报文的前200到300个字节。用户名和口令都包含在这一部分中,这是我们关心的真正部分。工人,也可以嗅探给定接口上的所有报文,如果有足够的空间进行存储,有足够的那里进行处理的话,将会发现另一些非常有趣的东西……
  
  简单的放置一个嗅探器并将其放到随便什么地方将不会起到什么作用。将嗅探器放置于被攻击机器或网络附近,这样将捕获到很多口令,还有一个比较好的方法就是放在网关上。sniffer通常运行在路由器,或有路由器功能的主机上。这样就能对大量的数据进行监控。sniffer属第二层次的攻击。通常是攻击者已经进入了目标系统,然后使用sniffer这种攻击手段,以便得到更多的信息。如果这样的话就能捕获网络和其他网络进行身份鉴别的过程


sniffer技术资料 :




    sniffer中文翻译过来就是嗅探器。是一中威胁性极大的被动攻击工具!使用在个攻击可以监视网络的状态。数据流动情况以及网络上传输的信息,便可以用网络监听到方式来进行攻击,截获网上的信息。所以黑客常常喜欢用他来截获用户口令!
  
  sniffer可以分为两类一个是硬件的一个软件的,今天给大家讲的主要是软件的sniffer.sniffer只能抓取一个物理网段的包,就是说你和监听的目标中间不能有路由(交换)或其他屏蔽广播包的设备,这一点很重要。所以对一般拨号伤亡的用户来说,是不可能利用sniffer来窃听到其他人的通信内容的!
  
  sniffer属于第二层次的攻击。就是说只有在攻击者已经进入了目标系统的情况下,才能使用sniffer这中攻击手段,以便得到更多的信息。sniffer除了能得到口令或用户名外,还能得到更多的其他的信息,比如一个其他重要的信息,在网上转送的金融信息等等。sniffer几乎能得到任何在以太网上转送的数据包。sniffer是一中比较复杂的攻击手段,一般只有黑客老手才有能力使用他(其实只要了解了也可以去试试我就是常常练习才知道!)而对于一个网络新手来说,即使在一台主机上成功地编译并运行了sinffer,一般也不会得到什么有用的信息。因为通常网络上的信息流量是相当大的,如果不加选绎的接收所有的包,然后要从中找到所需要的信息是非常的困难的,而且如果长时间地进行监听,还有可能把放置sniffer的机器的硬盘撑爆!
  
  现在给大家看一个C程序,它可以完成一般的监听功能,【* *】是注解!
  【*下面是包含进行调试用系统和网络的函数的头文件*】
  #include
  #include
  #include
  【*下面是IP和TCP包头结构*】
  struct ip {
  unsigend int ip_length:4; 【*定义IP头的长度*】
  unsigend int ip_version:4; 【*IP版本,IPV4*】
  unsigend char ip_tos; 【*服务类型*】
  unsigend short ip_total_length; 【*IP数据包的总长度*】
  unsigend short ip_id; 【*鉴定域*】
  unsigend short ip_flags; 【*IP标志*】
  unsigend char ip_ttl; 【*IP包的存活期*】
  unsigend char ip_protocol; 【*IP上层的协议*】
  unsigend short ip_sksum; 【*IP头校研和*】
  unsigend int ip_source; 【*源IP地址*】
  unsigend int ip_dest; 【*目的IP地址*】
  }
  
  struct tcp {
  unsigend short tcp_source_port; 【*定义TCP源端口*】
  unsigend short tcp_dest_port 【*TCP目的的端口*】
  unsigend int tcp_seqno; 【*TCP序列号*】
  unsigend int tcp_ackno; 【*发送者期望的下一个序列号*】
  unsigend int tcp_resl:4; 【*下面几个是TCP的标志*】
  tcp_hlen:4,
  tcp_fin:1,
  tcp_syn:1,
  tcp_rst:1,
  tcp_psh:1,
  tcp_ack:1,
  tcp_urg:1,
  tcp_res:2,
  unsigend short tcp_winsize; 【*能接收的最大字节数*】
  unsigend short tcp_cksum; 【*TCP校研和*】
  unsigend short tcp_urgent; 【*紧急事件标志*】
  }
  【*主函数*】
  int main()
  {
  int sock, bytes_recieved,fromlen;
  char buffer[65535];
  struct sockaddr_in from; 【*定义socket结构*】
  struct ip ip; 【*定义IP和TCP结构*】
  struct tcp *tcp
  sock = socket(AF_INET,SOCK,IPPROTO_TCP)
  【*上面是建立socket连接,第一个参数是地址族类型,用INTERNET类型*】
  【*第二个参数是socket类型,这里用了SOCK--RAW,它可以绕过传输层,*】
  【*直接访问IP层的包,为了调用SOCK--RAW,需要有ROOT权限*】
  【*第三个参数是协议,选IPPROTO--TCP指定可接收TCP层的内容*】
  while(1)
  {
  fromlen=sizeof from;
  bytes_recieved=recvfrom(sock,buffer,sizeofbuffer,0,(struct sockaddr*)&from,&fromlen);
  【*上面这个函数是从建立的socket连接中接收数据*】
  【*因为recvfrom()需要一个sockaddr数据类型,所以我们用一个强制类型转换*】
  printf("\nByets received ::: %4d\n",bytes_recieved); 【*显示出接收的数据字节数*】
  printf("Source address:::%s\n",inet_ntoa(ftom.sin_addr); 【*显示出源地址*】
  ip=(struct ip*)buffer; 【*把接收的数据转换为我们预先定义的结构,便于查看*】
  printf("IP header length:::%d\n",ip->ip_length); 【*显示IP头的长度*】
  printf("Protocol:::%d\n",ip->ip_potocol); 【*显示协议类型,6是TCP,17是UDP*】
  tcp=(struct tcp*)(buffer+(4*ip->ip_length);
  【*上面这句需要详细解释一下,因为接收到的包头数据中,IP头的大小是固定的4字节*】
  【*所以我们用IP长度乘以4,指向TCP头部分*】
  printf("Source potr:::%d\n",ntohs(tcp->tcp_source_port) 【*显示出源端口*】
  prinft("Dest potr:::%d\n",ntohs(tcp->tcp_dest_port) 【*显示出目标端口*】
  }
  以上这个C程序是为了说明sniffer的接收原理而列举的一个最简单的列子,它这是完成了sniffer的接收功能,在运行之前我们还需要手工把网卡设置为混杂模式,在root权限下用命令设置:
  ifconfig eth0 promisc
  假设eth0是你的以太网设备接口,然后运行编译好的程序清单(就是上面的C程序)就可以看到接受的数据包了!(重要消息:这个程序的功能太简单,只能显示源地址,目标地址和源端口,目标端口等极为简单的信息,对于你来说没有用但是你可以改一下)
  
  现在来看看**的sniffer程序
  sniffit 可以运行在linux Solaris SGI NT等各种平台运行的网络监听软件,他主要针对的是TCP/IP协议的不安全性,对运行该协议的计算机进行监听。
  安装
  跟我来一步一步走别跑掉了嘻嘻!跑掉了别怪我呀!
  1。用tat zvfx sniffit.*.*.*.tgz将下载的sniffit.*.*.*.tgz解压缩到你想要的目的文件夹,如果版本是。0。3。7的话,你会看到该目录下出现一个sniffit。0。3。7的目录。
  2。打开sniffit。0。3。7的目录
  3。执行/configure && make命令,只要在个过程中终端上没有意外的错误提示信息出现,就算编译成功了,然后就可以得到一个二进制的sniffit文件,直接运行他即可!
  4。最后使用make clean命令清除掉临时文件。
  sniffit的使用方法
  sniffit的命令
  选项 作用
  -V 显示版本信息
  -t 让程序去监听指定流向某IP的数据
  -s 让程序去监听从某IP流出的IP数据包,可以使用@统配符如-t 192.168.@
  -i 显示出窗口界面,能查出当前 在所属网络上进行连接的机器
  -l 扩展的交互模式,忽略所以其他选项,比-L强大的多
  -c 利用脚本来运行程序
  -F 强制使程序使用网络硬盘
  -n 显示出假的数据包,如果使用ARP,RARP或者其他不是IP的数据包也会显示出来
  -N 只运行plugin时的选项,使其他选项失效
  
  使用示列
  假设在一个子网中有两台主机,一台运行了sniffit,为sniffit.com另一台的IP地址是192.168.0.1我把他称为xxx.com按下列步骤操作!
  1,检查sniffit能否运行;
  sniffit~/#sniffit -d -p 7 -t 192.168.0.1
  并且打开另外一个窗口;
  sniffit~/$telnet xxx.com
  sniffit~/#sniffit -p 21 -l 0 -t 192.168.0.1
  应该可以看到sniffit将远程登陆到对方7号端口echo服务的包捕获。
  2,截获xxx.com上的用户密码
  sniffit:~/#sniffit -p 23 -t 192.168.0.1
  意思就是监听23端口包
  3,如果xxx.com主机的根用户声称有陌生的FTP连接并且希望记录其动作
  sniffit:~/3 sniffit -p 21 -l 0 -t 192.168.0.1
  4,阅读所有进出xxx.com的信件
  sniffit:~/# sniffit -p 25 -l 0 -b -t 192.168.0.1&
  或者sniffit:~/#- sniffit -p 25 -l0 -b -s 192.168.0.1&
  5,监听所以从192.168.0.1进出的包,对其行完全监视
  sniffit:~/# sniffit -P ipicmptcp -p 0 -b -a -d -x -s 192.168.0.1
  6,用more 192*命令读取用下列方式记录的密码:
  sniffit:~/# sniffit -p 23 -A .-t 192.168.0.1
  
  哎好难写呀!现在改给大家一个WIN下的嗅探器了呀!因为win普遍是的吗HOHO
  NetXRay
  NetXRay的功能主要分为三大类
  1,接收并分析数据包
  2,传送数据包功能
  3,网路管理监看的功能
  NetXRay的第三个功能是网络管理监看,网络管理功能中一共有7个按钮。现在给大家介绍一下把!
  DashBoard按钮:将子网下的流量以简要的形式显示出来
  HostTable按钮:观察子网下每台主机的网络流量情况
  Matrix按钮:观察子网下主机与主机之间的流量情况
  History按钮:将网络上的数据以图表的方式显示
  Protocal Distribution按钮:分析网络上各种通信协议的分布情况
  Alarm LOG按钮:设定网络状况警告
  Addree Book按钮:设定主机资料
  由于时间的问题我就在这里介绍一下DashBoard按钮的用法,(哇绝对又有用说我偷懒了,请大家原谅我还是学生没很多时间接触计算机所以就……等我放假了给大家更好的教材行不!)
  对于其他的按钮的详细资料大家可以去http://216.239.33.102找找!
  DashBoard按钮用来以简要的形式显示子网上的流量,单击后会出现一个图形界面很像汽车的油门表一样的东西(没时间给大家抓图了请原谅)
  其中,Packets行表示到目前为止共有多少数据包,Broadcasts行标称有多少个广播的数据包,Multucasts行表示有多少个播数据包,Bytes行表示共有多少字节的数据在你的子网中传输,Errors行表示网络中错误发生的次数。


全面介绍sniffer :




  与电话电路不同,计算机网络是共享通讯通道的。支持每对通讯计算机独占通道的交换机/集线器仍然过于昂贵。共享意味着计算机能够接收到发送给其它计算机的信息。捕获在网络中传输的数据信息就称为sniffing(窃听)。
  
  以太网是现在应用最广泛的计算机连网方式。以太网协议是在同一回路向所有主机发送数据包信息。数据包头包含有目标主机的正确地址。一般情况下只有具有该地址的主机会接受这个数据包。如果一台主机能够接收所有数据包,而不理会数据包头内容,这种方式通常称为"混杂"模式。
  
  由于在一个普通的网络环境中,帐号和口令信息以明文方式在以太网中传输,一旦入侵者获得其中一台主机的root权限,并将其置于混杂模式以窃听网络数据,从而有可能入侵网络中的所有计算机。
  
  哪里可以得到sniffer
  
  Sniffer是黑客们最常用的入侵手段之一。例如Esniff.c,是一个小巧的工具,运行在SunOS平台,可捕获所有telnet、ftp、rloing会话的前300个字节内容。这个由Phrack开发的程序已成为在黑客中传播最广泛的工具之一。
  
  你可以在经过允许的网络中运行Esniff.c,了解它是如何有效地危及本地机器安全。
  
  以下是一些也被广泛用于调试网络故障的sniffer工具:
  
  * Etherfind on SunOs
  
  * Snoop on Solaris 2.x and SunOs
  
  * Tcpdump
  
  * Packetman, Interman, Etherman, Loadman
  
  商用sniffer:
  
  * Network General.
  
  Network General开发了多种产品。最重要的是Expert Sniffer,它不仅仅可以sniff,还能够通过高性能的专门系统发送/接收数据包,帮助诊断故障。还有一个增强产品"Distrbuted Sniffer System"可以将UNIX工作站作为sniffer控制台,而将sniffer agents(代理)分布到远程主机上。
  
  * Microsoft's Net Monitor
  
  对于某些商业站点,可能同时需要运行多种协议--NetBEUI、IPX/SPX、TCP/IP、802.3和SNA等。这时很难找到一种sniffer帮助解决网络问题,因为许多sniffer往往将某些正确的协议数据包当成了错误数据包。Microsoft的Net Monitor(以前叫Bloodhound)可以解决这个难题。它能够正确区分诸如Netware控制数据包、NT NetBios名字服务广
  
  播等独特的数据包。(etherfind只会将这些数据包标识为类型0000的广播数据包。)这个工具运行在MS Windows平台上。它甚至能够按MAC地址(或主机名)进行网络统计和会话信息监视。只需简单地单击某个会话即可获得tcpdump标准的输出。
  
  过滤器设置也是最为简单的,只要在一个对话框中单击需要监视的主机即可。
  
  如何监测主机正在窃听(sniffed)
  
  要监测只采集数据而不对任何信息进行响应的窃听设备,需要逐个仔细检查以太网上所有物理连接。
  
  不可能通过远程发送数据包或ping就可以检查计算机是否正在窃听。
  
  一个主机上的sniffer会将网络接口置为混杂模式以接收所有数据包。对于某些UNIX系统,通过监测到混杂模式的网络接口。虽然可以在非混杂模式下运行sniffer,但这样将只能捕获本机会话。入侵者也可能通过在诸如sh、telnet、login、in.telnetd等
  
  程序中捕获会话,并将用户操作记录到其它文件中。这些都可能通过监视tty和kmem等设备轻易发现。只有混杂模式下的sniffing才能捕获以太网中的所有会话,其它模式只能捕获本机会话。
  
  对于SunOS、NetBSD和其它BSD Unix系统,如下命令:
  
  "ifconfig -a"
  
  会显示所有网络接口信息和是否在混杂模式。DEC OSF/1和IRIX等系统需要指定设备。要找到系统中有什么网络接口,可以运行如下命令:
  
  # netstat -r
  Routing tables
  Internet:
  Destination Gateway Flags Refs Use Interface
  default iss.net UG 1 24949 le0
  localhost localhost UH 2 83 lo0
  
  
  
  然后通过如下命令检查每个网络接口:
  
  #ifconfig le0
  le0: flags=8863
  inet 127.0.0.1 netmask 0xffffff00 broadcast 255.0.0.1
  
  
  
  入侵者经常会替换ifconfig等命令来避开检查,因此一定要检查命令程序的校验值。
  
  在ftp.cert.org:/pub/tools/的cpm程序(SunOS平台)可以检查接口是否有混杂模式标记。
  
  对于Ultrix系统,使用pfstat和pfconfig命令也可能监测是否有sniffer运行。
  
  pfconfig指定谁有权限运行sniffer。
  
  pfstat显示网络接口是否处于混杂模式。
  
  这些命令只在sniffer与内核存在链接时有效。而在缺省情况,sniffer是没有与内核链接的。大多数的Unix系统,例如Irix、Solaris、SCO等,都没有任何标记来指示是否处于混杂模式,因此入侵者能够窃听整个网络而却无法监测到它。
  
  通常一个sniffer的记录文件会很快增大并填满文件空间。在一个大型网络中,sniffer明显加重机器负荷。这些警告信息往往能够帮助管理员发现sniffer。建议使用lsof程序搜索访问数据包设备(如SunOS的/dev/nit)的程序和记录文件。
  
  阻止sniffer
  
  主动式集线器只向目标地址主机发送数据包,从而使混杂模式sniffer失效。它仅适用于10Base-T以太网。(注:这种现在已在计算机市场消失。)
  
  只有两家厂商曾生产过主动式集线器:   * 3Com   * HP
  
  随着交换机的成本和价格的大幅度降低,交换机已成为非常有效的使sniffer失效的设备。目前最常见的交换机在第三层(网络层)根据数据包目标地址进行转发,而不太采取集线器的广播方式,从而使sniffer失去了用武之地。
  
  加密
  
  目前有许多软件包可用于加密连接,从而使入侵者即使捕获到数据,但无法将数据解密而失去窃听的意义。
  
  以下是以前常用的一些软件包
  
  * deslogin
  
  coast.cs.purdue.edu:/pub/tools/unix/deslogin .
  
  * swIPe
  
  ftp.csua.berkeley.edu:/pub/cypherpunks/swIPe/
  
  * Netlock
  
  Kerberos
  
  Kerberos是另一个加密网络中帐号信息的软件包。它的缺点是所有帐号信息都存放在一台主机中,如果该主机被入侵,则会危及整个网络安全。另外配置它也不是一件简单的事情。Kerberos包括流加密rlogind和流加密telnetd等,它可以防止入侵者捕获用户在登录完成后所进行的操作。
  
  Kerberos FAQ可从ftp站点rtfm.mit.edu中得到:/pub/usenet/comp.protocols/kerberos/Kerberos_Users__Frequently_Asked_Questions_1.11一次性口令技术
  
  S/key和其它一次性口令技术一样,使窃听帐号信息失去意义。S/key的原理是远程主机已得到一个口令(这个口令不会在不安全的网络中传输),当用户连接时会获得一个"挑战"(challenge)信息,用户将这个信息和口令经过某个算法运算,产生正确的"响应"(response)信息(如果通讯双方口令正确的话)。这种验证方式无需在网络中传输口令,而且相同的"挑战/响应"也不会出现两次。S/key可从以下网址得到:
  
  ftp://thumper.bellcore.com/pub/nmh/skey
  
  还有一种一次性口令技术是ID卡系统。每个授权用户都有一个产生用于访问各自帐
  
  号的数字号码的ID卡。如果没有这个ID卡,不可能猜出这个数字号码。
  
  
  
  以下是提供这类解决方案的公司资料:
  
  Secure Net Key (SNK)
  Digital Pathways, Inc.
  201 Ravendale Dr. Mountainview, Ca.
  97703-5216 USA
  Phone: 415-964-0707 Fax: (415) 961-7487
  Secure ID
  Security Dynamics,
  One Alewife Center
  Cambridge, MA 02140-2312
  USA Phone: 617-547-7820
  Fax: (617) 354-8836
  Secure ID uses time slots as authenication rather than challenge/response.
  ArKey and OneTime Pass
  Management Analytics
  PO Box 1480
  Hudson, OH 44236
  Email: fc@all.net
  Tel:US+216-686-0090 Fax: US+216-686-0092
  WatchWord and WatchWord II
  Racal-Guardata
  480 Spring Park Place
  Herndon, VA 22070
  703-471-0892
  1-800-521-6261 ext 217
  CRYPTOCard
  Arnold Consulting, Inc.
  2530 Targhee Street, Madison, Wisconsin
  53711-5491 U.S.A.
  Phone : 608-278-7700 Fax: 608-278-7701
  Email: Stephen.L.Arnold@Arnold.Com
  CRYPTOCard is a modern, SecureID-sized, SNK-compatible device.
  SafeWord
  Enigma Logic, Inc.
  2151 Salvio #301
  Concord, CA 94520
  510-827-5707 Fax: (510)827-2593
  For information about Enigma ftp to: ftp.netcom.com in directory/pub/sa/safeword
  Secure Computing Corporation:
  2675 Long Lake Road
  Roseville, MN 55113
  Tel: (612) 628-2700
  Fax: (612) 628-2701
  debernar@sctc.com
  
  
  
  非混杂模式网络接口设备
  
  以前,大多数IBM DOS兼容机器的网卡都不支持混杂模式,所以无法进行sniffing。
  
  但DOS已退出计算机网络舞台,对于现在计算机市场中的网络接口设备,请向供应商查询
  
  是否为非混杂模式设备(即不支持混杂模式)。



闻名业界的Sniffer网络管理解决方案 :




  ----作为被誉为业界降低网络故障的首选解决方案,Sniffer网络分析仪为用户提供了屡获大奖的网络管理工具,凭借先进的性能,Sniffer可以帮助用户主动监测网络,在瓶颈造成故障之前,将其完满解决。Sniffer网络分析仪是一个排除网络故障和对网络性能进行有效管理的可靠工具,它能够自动帮助网络专业人员维护网络,查找故障,协助扩展多拓朴结构、多协议的网络,极大地简化了发现及解决网络问题的过程。
  
  ----Sniffer网络分析仪作为业界用于企业网络故障和性能管理领域最为智能和强大的工具系列,目前,已在世界上得到了广泛的应用,《财富》排名前1000家企业中有80%选择其作为网络信息安全解决方案,分析、维护、开发他们的网络产品,其中包括Cisco、3COM、Lucent及AT&T。伴随着1998年NAI进入中国,Sniffer也来到了广大中国用户面前。现在,越来越多的中国企事业单位采用了Sniffer的安全解决方案,其中包括:中国人民银行、中国建设银行、中国工商银行等。
  
  Sniffer网络分析仪的基本性能
  
  ----专家分析系统 Sniffer能够监视并捕获所有网络上的信息数据包,同时建立一个特有网络环境下的目标知识库。经过将问题分离、分析和归类,Sniffer可实时、自动地发出警告,解释问题的性质并提出解决方案。Sniffer与其他网络协议分析仪最大的差别在于它的人工智能专家系统(Expert System),有了Sniffer的专家系统,用户无需知道那些数据包构成的网络问题,也不必熟悉网络协议,更不用去了解这些数据包的内容,便能轻松解决问题。此外,Sniffer 还提供了专家配制功能,用户可以自已设定专家系统判断故障发生的触发条件。Sniffer能够自动实时监视网络、捕捉数据、识别网络配置,自动发现网络故障并进行告警,它能指出网络故障发生的位置,出现在OSI的第几层,网络故障的性质,产生故障的可能原因以及为解决故障建议采取的行动。
  
  ----Sniffer可进行全OSI七层解码 Sniffer可以在全部七层OSI协议上进行解码,目前其他厂商还没有任何一个系统可以做到对协议如此透彻的分析。Sniffer采用类似剥洋葱的方式,从最低层开始,一直到第七层,甚至对ORACAL与SYBASE的数据库都可以进行协议分析,每一层使用不同的颜色加以区别。Sniffer对每一层都提供了Summary(解码主要规程要素)、Detail(解码全部规程要素)及Hex(十六进制码)等几种解码窗口。在同一时间,用户最多可以打开六个观察窗口。此外,Sniffer还可以实施强制解码功能,如果网络线路上运行的是非标准协议,Sniffer可以使用一个现有标准协议样板去尝试解释捕获的数据。
  
  ----实时监控统计和报警功能 根据用户习惯,Sniffer可提供实时数据或图表方式显示统计结果,统计内容包括如下几个方面。网络统计:如当前和平均网络利用率、总的和当前的帧数及字节数、总站数和激活的站数、协议类型、当前和总的平均帧长等;协议统计:如协议的网络利用率、协议个数、协议的字节数以及每种协议中各种不同类型的帧统计等;差错统计:如错误的CRC校验数、发生的碰撞数、错误帧数等;站统计:如接收和发送的帧数、开始时间、停止时间、消耗时间、站状态等,Sniffer最多可统计1024个站;帧长统计:如某一帧长的帧所占百分比、某一帧长的帧数等。此外,当网络某些指标超过规定的级限时,Sniffer可自动显示或采用有声形式的告警。Sniffer还可根据网络管理者的要求,自动将统计结果生成多种统计报告格式,并可存盘或打印输出。
  
  ----Sniffer 报表生成器 Sniffer 报表生成器允许用户创建图形报告,该报告建立在Sniffer所收集的RMON和类似于RMON2的数据基础之上。那些经预先存储的、易于生成的报告可以提供快速显示受监测网段的全部统计数据以及网络层主机、矩阵和协议分配。这些报告还可以提供针对用户网络通讯趋势的重要信息,例如,用户可评估哪种资源、哪种协议占用了大部分的带宽。这些数据不仅能帮助网络管理者预测额外的带宽需求,还可以帮助用户分配网络资源。Sniffer 报表生成器在网络性能下降发展成为严重的网络故障之前,协助用户预测并更正这些问题。
  
  Sniffer网络分析仪的超强功能
  
  ----故障定位及排除 Sniffer涉及到系统、设备、应用等多个层面,因此将网络性能报告或网络故障准确定位在涉及到(线路、设备、服务器、操作系统、电子邮件)的具体位置,是Sniffer提供的基本功能。
  
  ----预防问题 通过在广域网上对网络设备和网络流量的实施监控和分析,Sniffer有效预防网络故障的发生,即使在系统出现性能抖动时,Sniffer也会及时发现,同时建议系统管理员采用正确的处理方法。
  
  ----优化性能 通过对线路和其他系统进行透视化的管理,用户可利用Sniffer管理系统提供的特殊功能对系统性能进行优化。
  
  ----提供整体网络运行的健康分析及发展趋势分析 Sniffer可对网络系统的整体运行情况作出长期的健康分析与发展趋势报告,分析系统目前的使用情况,以及对新系统的规划作出精确的报告。
  
  Sniffer网络分析仪的优势
  
  ----网络瘫痪时间是衡量现代企业工作效率的一个标准。当用户抱怨"网络太慢"时,可以打开Sniffer,为网段做一次信息捕获。
  
  ---- 作为用于网络故障与性能管理的业界标准分析工具,Sniffer为用户的网络提供了领先于其他解决方案的分析、协议解释、自动化与可见性等功能。Sniffer网络分析仪具有如下优势。快速解决问题:利用自动的问题识别、分析与推荐方案,用户可从根本上精简故障诊断时间;优化投资:利用网络性能降级原因的精确信息,用户可以有效避免因某个偶然问题而草率投入大量资金的错误,利用Sniffer,用户可以明智地根据分析结果作出周密的网络管理计划;提高生产率:通过自动、连续地了解网络配置,Sniffer 减少了网络例行维护时间,由此提高效率和生产率;全方位满足用户需求,Sniffer在网络性能受到影响前会自动地传送预先警告,使用户能够在事件发生之前主动地调整网络,保证终端用户的持续工作。
  
  Sniffer应用实例分析
  
  ----国内某大型企业的网络主干是ATM网络,2001年8月,网络性能突然急剧下降,导致企业的网上应用全部陷于瘫痪。网络管理人员不但无法确定引起网络瘫痪的原因,在甚至连最基本的网络连接也无法恢复。而在这种了无头绪的状态下,Sniffer却显示出强大的网络管理能力。
  
  ----Sniffer工程师采用了ATM专用的Sniffer设备对该公司的ATM主干网络进行了测试,以下为测试的全部过程。
  
  ----工程师首先调用了Sniffer的Dashboard功能对网络的整体流量状况进行了监控,,该监控功能旨在对网络的带宽利用率(总体流量)、网络每秒钟的数据包数,以及网络中每秒钟的错误包数进行监控。从这些监控中,Sniffer的技术人员发现用户的整体网络带宽占用率并不高(如左边的仪表盘所示),只有10%左右,网络中的绝对流量也不大,但工程师同时发现网络中的数据包却非常多(如中间的仪表盘所示),甚至超过了Sniffer缺省定义的警戒值。从详细的数值可以看出,网络中64个字节以下的小包最多,因此,技术人员初步断定,网络中太多的小包可能是引起网络瘫痪的原因。
  
  ----为了确定到底是那些计算机在生成这些数据包,技术人员又调用了Sniffer的另外一个流量监控功能HostTable,HostTable可监控网络中每台计算机的流量状况,包括每台计算机收到的数据包数、数据包字节数、每台计算机发出的数据包数、发出数据包的字节数、总的包数和总的字节数等流量信息。在监控中,技术人员很快发现了用户网络中发包最多的那些计算机的网络流量都有一个共同特点,即他们收到的数据包非常少,有的计算机甚至为零。这些计算机在网络中拼命发数据包,是非常不正常的,而这也正是当时爆发的CodeRed II病毒的特征,感染了CodeRed病毒的计算机会往网络中发送大量的数据包,最终导致网络的瘫痪。通过这些特征,技术人员已经十分确定用户网络的瘫痪原因是由于图三中所示的那些计算机感染了CodeRed病毒引起的。
  
  ----为了进一步确定CodeRed病毒的特征,技术人员用Sniffer的Capture功能进行了抓包,并将数据包进行解码分析,图四就是Sniffer对CodeRed病毒产生的数据包的解码分析报告,从中可以清楚地看到CodeRed就是通过发送特定的Http Get请求,利用微软IIS的漏洞进行传播的,这些请求在传播过程中产生大量的数据包,使网络路由器和交换机陷于瘫痪。
  
  ----正是采用了Sniffer网络分析仪使用户得以迅速地查明了网络瘫痪的原因,并监控到了每个感染CodeRed病毒的计算机情况,从而在很短的时间内将这些计算机中的病毒进行彻底清除,使用户网络得以快速恢复,有效避免了更大的损失。
  
  ----基于出色的性能,Sniffer近年获得的全球性大奖超过45个,在2000年荣获美国知名媒体《NetwWork Computing》"十年来最佳网络产品奖",同获此殊荣的产品包括:MS Windows NT、Novell Netware、Cisco 路由器与Apache Web服务器。《NetwWork Computing》的资深专家一致认为,"随着网络复杂度的日渐增长,使网络保持平稳运作的需求也与日俱增,但Sniffer仍然是该行业的最佳产品"。



Sniffer 常见问题集(FAQ) :




   本文是ISS公司在几年前发布的一份Sniffer FAQ。虽然里面涉及的技术可能相对陈旧了一些,但仍然可作为入门级文档。希望这份Sniffer FAQ能够帮助管理员们对网络监听及解决方法有一个较为清楚的认识。Sniffer已成为当今互联网上最常见的主机入侵手段之一。
   在绿盟网络安全月刊中,我还将陆续介绍Sniffer、Sniffer的克星——Anti-Sniffer和Anti-Sniffer的克星——Anti Anti-Sniffer。希望对这方面有兴趣的朋友如果有些什么好资料或建议,请与我联系。
  
  
  FAQ目录:
  
   * 什么是sniffer及其工作原理
   * 哪里可以得到sniffer
   * 如何监测主机正在窃听(sniffed)
   * 阻止sniffer
   o 主动集线器
   o 加密
   o Kerberos
   o 一次性口令技术
   o 非混杂模式网络接口设备
  
  
  什么是sniffer及其工作原理
  
   与电话电路不同,计算机网络是共享通讯通道的。支持每对通讯计算机独占通道的交换机/集线器仍然过于昂贵。共享意味着计算机能够接收到发送给其它计算机的信息。捕获在网络中传输的数据信息就称为sniffing(窃听)。
  
   以太网是现在应用最广泛的计算机连网方式。以太网协议是在同一回路向所有主机发送数据包信息。数据包头包含有目标主机的正确地址。一般情况下只有具有该地址的主机会接受这个数据包。如果一台主机能够接收所有数据包,而不理会数据包头内容,这种方式通常称为“混杂”模式。
  
   由于在一个普通的网络环境中,帐号和口令信息以明文方式在以太网中传输,一旦入侵者获得其中一台主机的root权限,并将其置于混杂模式以窃听网络数据,从而有可能入侵网络中的所有计算机。
  
  
  
  哪里可以得到sniffer
  
   Sniffer是黑客们最常用的入侵手段之一。例如Esniff.c,是一个小巧的工具,运行在SunOS平台,可捕获所有telnet、ftp、rloing会话的前300个字节内容。这个由Phrack开发的程序已成为在黑客中传播最广泛的工具之一。
  
   你可以在经过允许的网络中运行Esniff.c,了解它是如何有效地危及本地机器安全。
  
   以下是一些也被广泛用于调试网络故障的sniffer工具:
  
   * Etherfind on SunOs
   * Snoop on Solaris 2.x and SunOs
   * Tcpdump
   * Packetman, Interman, Etherman, Loadman
  
   商用sniffer:
  
   * Network General.
  
   Network General开发了多种产品。最重要的是Expert Sniffer,
   它不仅仅可以sniff,还能够通过高性能的专门系统发送/接收数
   据包,帮助诊断故障。还有一个增强产品"Distrbuted Sniffer
   System"可以将UNIX工作站作为sniffer控制台,而将sniffer
   agents(代理)分布到远程主机上。
  
   * Microsoft's Net Monitor
  
   对于某些商业站点,可能同时需要运行多种协议——NetBEUI、
   IPX/SPX、TCP/IP、802.3和SNA等。这时很难找到一种sniffer帮助
   解决网络问题,因为许多sniffer往往将某些正确的协议数据包当
   成了错误数据包。Microsoft的Net Monitor(以前叫Bloodhound)
   可以解决这个难题。它能够正确区分诸如Netware控制数据包、NT
   NetBios名字服务广播等独特的数据包。(etherfind只会将这些数
   据包标识为类型0000的广播数据包。)这个工具运行在MS Windows
   平台上。它甚至能够按MAC地址(或主机名)进行网络统计和会话
   信息监视。只需简单地单击某个会话即可获得tcpdump标准的输出。
   过滤器设置也是最为简单的,只要在一个对话框中单击需要监视的
   主机即可。
  
  
  
  如何监测主机正在窃听(sniffed)
  
   要监测只采集数据而不对任何信息进行响应的窃听设备,需要逐个仔细检查以太网上所有物理连接。
  
   不可能通过远程发送数据包或ping就可以检查计算机是否正在窃听。
  
   一个主机上的sniffer会将网络接口置为混杂模式以接收所有数据包。对于某些UNIX系统,通过监测到混杂模式的网络接口。虽然可以在非混杂模式下运行sniffer,但这样将只能捕获本机会话。入侵者也可能通过在诸如sh、telnet、rlogin、in.telnetd等程序中捕获会话,并将用户操作记录到其它文件中。这些都可能通过监视tty和kmem等设备轻易发现。只有混杂模式下的sniffing才能捕获以太网中的所有会话,其它模式只能捕获本机会话。
  
   对于SunOS、NetBSD和其它BSD Unix系统,如下命令:
  
   "ifconfig -a"
  
   会显示所有网络接口信息和是否在混杂模式。DEC OSF/1和IRIX等系统需要指定设备。要找到系统中有什么网络接口,可以运行如下命令:
  
   # netstat -r
   Routing tables
  
   Internet:
   Destination Gateway Flags Refs Use Interface
   default iss.net UG 1 24949 le0
   localhost localhost UH 2 83 lo0
  
   然后通过如下命令检查每个网络接口:
  
   #ifconfig le0
   le0: flags=8863
   inet 127.0.0.1 netmask 0xffffff00 broadcast 255.0.0.1
  
   入侵者经常会替换ifconfig等命令来避开检查,因此一定要检查命令程序的校验值。
  
   在ftp.cert.org:/pub/tools/的cpm程序(SunOS平台)可以检查接口是否有混杂模式标记。
  
   对于Ultrix系统,使用pfstat和pfconfig命令也可能监测是否有sniffer运行。
  
   pfconfig指定谁有权限运行sniffer。
   pfstat显示网络接口是否处于混杂模式。
  
   这些命令只在sniffer与内核存在链接时有效。而在缺省情况,sniffer是没有与内核链接的。大多数的Unix系统,例如Irix、Solaris、SCO等,都没有任何标记来指示是否处于混杂模式,因此入侵者能够窃听整个网络而却无法监测到它。
  
   通常一个sniffer的记录文件会很快增大并填满文件空间。在一个大型网络中,sniffer明显加重机器负荷。这些警告信息往往能够帮助管理员发现sniffer。建议使用lsof程序搜索访问数据包设备(如SunOS的/dev/nit)的程序和记录文件。
  
  
  
  阻止sniffer
  
   主动式集线器只向目标地址主机发送数据包,从而使混杂模式sniffer失效。它仅适用于10Base-T以太网。(注:这种现在已在计算机市场消失。)
  
   只有两家