Chinaunix首页 | 论坛 | 博客
  • 博客访问: 5581
  • 博文数量: 4
  • 博客积分: 10
  • 博客等级: 民兵
  • 技术积分: 30
  • 用 户 组: 普通用户
  • 注册时间: 2012-11-02 14:52
文章分类
文章存档

2012年(4)

最近访客

分类:

2012-11-02 15:19:22

原文地址:Sniffer全攻略 作者:我为鹤狂



第一篇: sniffer原理篇

现在人们谈到黑客攻击,一般所指的都是以主动方式进行的,例如利用漏洞或者猜测系统密码的方式对系统进行攻击。但是其实还有一类危害非常大的被动攻击方式往往为大家所忽视,那就是利用Sniffer进行嗅探攻击。
Sniffer, 中文可以翻译为嗅探器,是一种威胁性极大的被动攻击工具。使用这种工具,可以监视网络的状态、数据流动情况以及网络上传输的信息。当信息以明文的形式在网 络上传输时,便可以使用网络监听的方式来进行攻击。将网络接口设置在监听模式,便可以将网上传输的源源不断的信息截获。黑客们常常用它来截获用户的口令。 据说某个骨干网络的路由器曾经被黑客攻人,并嗅探到大量的用户口令。本文将详细介绍Sniffer的原理和应用。

一、Sniffer 原理

1.网络技术与设备简介
在讲述Sni计er的概念之前,首先需要讲述局域网设备的一些基本概念。
数据在网络上是以很小的称为帧(Frame)的单位传输的,帧由几部分组成,不同的部分执行不同的功能。帧通过特定的称为网络驱动程序的软件进行 成型,然后通过网卡发送到网线上,通过网线到达它们的目的机器,在目的机器的一端执行相反的过程。接收端机器的以太网卡捕获到这些帧,并告诉操作系统帧已 到达,然后对其进行存储。就是在这个传输和接收的过程中,嗅探器会带来安全方面的问题。
每一个在局域网(LAN)上的工作站都有其硬件地址,这些地址惟一地表示了网络上的机器(这一点与Internet地址系统比较相似)。当用户发送一个数据包时,这些数据包就会发送到LAN上所有可用的机器。
在一般情况下,网络上所有的机器都可以“听”到通过的流量,但对不属于自己的数据包则不予响应(换句话说,工作站A不会捕获属于工作站B的数据, 而是简单地忽略这些数据)。如果某个工作站的网络接口处于混杂模式(关于混杂模式的概念会在后面解释),那么它就可以捕获网络上所有的数据包和帧。

2.网络监听原理
Sniffer程序是一种利用以太网的特性把网络适配卡(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,一般也不会得到什么有用的信息,因为通常网络上的信息流量是相当大的,如果不加选择地接收所有的包,然后从中找到所需要的信息非常困难;而且,如果长时间进行监听,还有可能把放置Sniffer的机器的硬盘撑爆。

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(嗅探器)是一种常用的收集有用数据方法,这些数据可以是用户的帐号和密码,可以是一些商用机密数据等等。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可以设置一个口监听别的口,不过这就要 管理权限了。

利用这一点,可以将一台计算机的网络连接设置为接受所有以太网总线上的数据,从而实现snifferSniffer就是一种能将本地网卡状态设成‘杂收’状态的软件,当网卡处于这种“杂收”方式时,该网卡具备“广播地址”,它对遇到的每一个帧都产生一个硬件中断以便提醒操作系统处理流经该物理媒体上的每一个报文包。(绝大多数的网卡具备置成杂收方式的能力)

可见,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含义及工作原理

一.有关sniffersniffer的含义
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 站点甚至倒卖信用卡号码。



阅读(492) | 评论(0) | 转发(0) |
0

上一篇:抓包工具tcpdump

下一篇:没有了

给主人留下些什么吧!~~