北京小妞
著名写手
著名写手
  • 铜币0枚
  • 威望0点
  • 贡献值0点
阅读:1895回复:1

浅谈sniffer的功能和特点

楼主#
更多 发布于:2005-05-17 10:21
  SNIFFER(嗅探器)-简介  
来源:ChinaITLab
2003-1-16 23:11:00
  
 

  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这种攻击手段,以便得到更多的信息。如果这样的话就能捕获网络和其他网络进行身份鉴别的过程
    


[a]http://www.chinaitlab.com/www/special/Sniffer.asp[/a]详情请进!
[ 2005-05-17 10:26:46 北京小妞 修改 ]
[b] [color=#ff0036]Every breath you take Every move you make Every bond you break Every step you take I'll be watching you Every single day Every word you say Every game you play Every night you say I'll be watching you O can't you see You belong to me How my poor heart aches With every step you take Every move you make Every vow you break Every smile you fake Every claim you stake I'll be watching you[/color] [/b]
北京小妞
著名写手
著名写手
  • 铜币0枚
  • 威望0点
  • 贡献值0点
1C#
发布于:2005-05-17 10:28
Re:浅谈sniffer的功能和特点
Sniffer攻击实例
   下面我们来看一个使用Sniffer进行被动攻击的实际例子。假设我们已经通过某种方法成功的攻人了 Solaris 主机 202.11.22.33(本文隐藏了实际 IP地址,下同)并且获得这台主机上的最高root权限。那么,现在我们就可以在这台主机上使用Sniffer来嗅探此网段上传输的密码。
  1.Snoop简介
   在Solaris系统中有一个默认安装的Sniffer软件叫做Snoop,所以没有必要重新安装其他的Sniffer了,可以直接使用Snoop来进行嗅探。下面简要介绍一下Snoop的使用方法。
   Snoop 是一个命令行的软件,它的使用方法为:Snoop[选项][过滤条]
   其中选项包括:
  [-a]# 在 audio上监听
  [-d device]# 设置的监听设备
  [-s snaplen]# 将包截短
  [-c count]#设置捕获包的数量
  [-P]#关闭混杂模式
  [-D]# 报告掉包
  [-S]#报告包大小
  [-i file]#从文件读人记录
  [-o file]#把捕获情况存人文件
  [-n flle]#从文件读人域名表
  [-N]# 创建域名表
  [-t r|a|d]#设置时间,可以为相对或绝对时间
  [-v]#详细的包信息显示
  [-V]#显示所有包信息
  [-p first[,last] ]#显示指定的包
  [-x offset[,length] ]# 显示 16进制数据
  [-C]# 显示包过滤码
   其中最常用的选项是-o和-c,通过一o选项可以把捕获情况输出到一个文件中,否则会显示在屏幕上。通过-c可以设置要捕获包的数量,否则就会无限制地捕获传输的包。
   Snoop的重点在于设置过滤条件,所谓过滤条件就是我们要捕获什么样的包,因为以太网上传输的数据量一般是相当大的,所以不能捕获所有传输的包,否则会无法找到我们要的信息,于是我们就设置一个过滤条件,只捕获我们要的包,例如含有密码的包。
   过滤条件主要包括from、to、net和 port。其中from是指从特定主机发送过来的包,to是指发送到特定主机的包,net是来自或发往特定网络的包,port是指来自或发往特定端口的包。这些过滤条件可以通过and(且关系)、or(或关系)和not(非关系)来进行组合。例如,下面Snoop命令捕获所有来自192.168.3.12地址的DNS和NFS包:
  
   snoop from 192.168.3.12 port domain or rpc nfs
  
  2.SnooP攻击实例
   假设我们已经通过某种方法成功的攻人了Solaris主机 202.11.22.33(本文隐藏了实际IP地址,下同)并且获得这台主机上的最高root权限。那么现在我们就可以在这台主机上使用Snoop来嗅探此同段上传输的密码。
   首先我们使用find命令查找一下此主机上的Snoop安装在哪里:
  #find/-name snoop -print
  /usr/sbin/snoop
   因为我们的目的是捕获网络上传输的密码,所以我们要设置Snoop的过滤选项来捕获网络上所有的 telnet和 ftp包,使用下面的命令:
  #nohup /usr/sbin/snoop -o slog -c 10000 port
  telnet or port ftp&
   我们使用nohup和&来把Snoop挂在后台运行,这样,当我们从终端退出的时候,Snoop仍然可以在后台运行。并且我们使用-o把嗅探结果保存在文件slog里,使用-c选项来设置一共捕获10000个包,以免捕获数据量太大而占据硬盘空间。port telnet or ftp就是过滤选项,它设置只捕获Telnet和FTP包,因为这两种协议都使用密码验证而且密码不加密。
   然后我们就可以退出登录,第二天再次登录上这台主机,可以看到当前目录下有一个slog文件,这就是嗅探结果。但是要注意这个文件不是文本文件,不能使用cat命令直接查看,必须用Snoop的-i选项来查看,使用如下命令:
  #/usr/sbin/snoop -i slog |more
   这里,我们使用more来一点一点查看,发现 输出中有以下片段:
  gi-12-107.bta.net.cn->202.11.22.68 FTP C port=1924
  202.11.22.68->gi-12-107.bta.net.cn FTP R POrt=1924
  gi-12-107.bta.net.cn->202.11.22.68 FTP C POrt=1924
  202.11.22.68->gi-12-107.bta.net.cn FTP R POrt=1924
  220 202.11.22.68
  gi-12-107.bta.net.cn->202.11.22.68 FTP C port=1924
  gi-12-107.bta.net.cn->202.11.22.68 FTP C port=1924
   USER bode\r\n
  202.11.22.68->gi-12-107.bta.net.cn FTP R POrt=1924
  202.11.22.68->gi-12-107.bta.net.cn FTP R POrt=1924
  331 Password require
  gi-12-107.bta.net.cn->202.11.22.68 FTP C port=1924
  gi-12-107.bta.net.cn->202.11.22.68 FTP C port=1924
  PASS zhangjm\r\n
  202.11.22.68->gi-12-107.bta.net.cn FTP R POrt=1924
  202.11.22.68->gi-12-107.bta.net.cn FTP R POrt=1924
  230 user bode logged
  gi-12-107.bta.net.cn->202.11.22.68 FTP C port=1924
   通过上面的记录我们可以看到,来自gi-12-107.bta.net.cn的用户使用 FTP登录上了202.11.22.68主机,它使用的用户名为bode,密码为zhangjm。于是我们就可以使用这个用户名和密码来登录上202.11.22.68了。
-------------------- 这是谁啊?俺的对象!崇拜的对象不行啊!?[FLASH=450,300]http://images.enet.com.cn/egames/articleimage/200402/s1075961684.swf[/FLASH]
[b] [color=#ff0036]Every breath you take Every move you make Every bond you break Every step you take I'll be watching you Every single day Every word you say Every game you play Every night you say I'll be watching you O can't you see You belong to me How my poor heart aches With every step you take Every move you make Every vow you break Every smile you fake Every claim you stake I'll be watching you[/color] [/b]
游客

返回顶部