文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>Sniff网络基础原理和软件实现技巧详解

Sniff网络基础原理和软件实现技巧详解

时间:2005-09-01  来源:比目鱼

  

一、前言

SNIFF真是一个古老的话题,关于在网络上采用SNIFF来获取敏感信息已经不是什么新鲜事,也不乏很多成功的案例,那么,SNIFF究竟是什么呢? SNIFF就是嗅探器,就是窃听器,SNIFF静悄悄的工作在网络的底层,把你的秘密全部记录下来。看过威尔史密斯演的《全民公敌》吗?SNIFF就象里面精巧的窃听器一样,让你防不胜防。
SNIFF可以是软件,也可以是硬件,既然是软件那就要分平台,有WINDOWS下的、UNXI
下的等,硬件的SNIFF称为网络分析仪,反正不管硬件软件,目标只有一个,就是获取在网络上传输的各种信息。本文仅仅介绍软件的SNIFF。
当你舒适的坐在家里,惬意的享受网络给你带来的便利,收取你的EMAIL,购买你喜欢
的物品的时候,你是否会想到你的朋友给你的信件,你的信用卡帐号变成了一个又一个的信息包在网络上不停的传送着,你是否曾经这些信息包会通过网络流入别人的机器呢?你的担忧不是没有道理的,因为SNIFF可以让你的担忧变成实实在在的危险。就好象一个人躲在你身后偷看一样。

二、网络基础知识
    "网络基础知识",是不是听起来有点跑题了?虽然听起来这和我们要谈的SNIFF没什么
关系,可是还是要说一说的,万丈高楼平地起,如果连地基都没打好,怎么盖楼?!如果你对网络还不是十分清楚的话,最好能静下心来好好看看,要知道,这是基础的基础,在这里我只是简单的说一下,免得到时候有人迷糊,详细的最好能够自己去找书看看。
(1)TCP/IP体系结构
     开放系统互连(OSI)模型将网络划分为七层模型,分别用以在各层上实现不同的功能,
这七层分别为:应用层、表示层、会话层、传输层、网络层、数据链路层及物理层。而TCP/IP体系也同样遵循这七层标准,只不过在某些OSI功能上进行了压缩,将表示层及会话层合并入应用层中,所以实际上我们打交道的TCP/IP仅仅有5层而已,网络上的分层结构决定了在各层上的协议分布及功能实现,从而决定了各层上网络设备的使用。实际上很多成功的系统都是基于OSI模型的,如:如帧中继、ATM、ISDN等。
TCP/IP的网络体系结构

 

| SMTP | DNS| HTTP | FTP | TELNET| 应用层

| TCP | UDP | 传输层

| IP | ICMP | ARP RARP | 网络层

| IEEE 802 以太网 SLIP/PPP PDN etc| 数据链路层

| 网卡 电缆 双绞线 etc | 物理层


从上面的图中我们可以看出,第一层物理层和第二层数据链路层是TCP/IP的基础,而
TCP/IP本身并不十分关心低层,因为处在数据链路层的网络设备驱动程序将上层的协议和实际的物理接口隔离开来。网络设备驱动程序位于介质访问子层(MAC)。
(2)网络上的设备
中继器:中继器的主要功能是终结一个网段的信号并在另一个网段再生该信号,一句话,就是简单的放大而已,工作在物理层上。
网桥:网桥使用MAC物理地址实现中继功能,可以用来分隔网段或连接部分异种网络,工
作在数据链路层。
路由器:路由器使用网络层地址(IP,X.121,E.164等),主要负责资料包的路由寻径,也能处理物理层和数据链路层上的工作。
网关:主要工作在网络第四层以上,主要实现收敛功能及协议转换,不过很多时候网关都被用来描述任何网络互连设备。
(3)TCP/IP与以太网
    以太网和TCP/IP可以说是相互相成的,可以说两者的关系几乎是密不可分,以太网在一二层提供物理上的联机,而TCP/IP工作在上层,使用32位的IP地址,以太网则使用48位的MAC地址,两者间使用ARP和RARP协议进行相互转换。从我们上面TCP/IP的模型图中可以清楚的看到两者的关系。
载波监听/冲突检测(CSMA/CD)技术被普遍的使用在以太网中,所谓载波监听是指在以
太网中的每个站点都具有同等的权利,在传输自己的资料时,首先监听信道是否空闲,如果空闲,就传输自己的数据,如果信道被占用,就等待信道空闲。而冲突检测则是为了防止发生两个站点同时监测到网络没有被使用时而产生冲突。以太网采用广播机制,所有与网络连接的工作站都可以看到网络上传递的资料。
为了加深你的理解,我们来看看下面的图,一个典型的在以太网中客户与服务器使用
TCP/IP协议的通信。
用户进程 FTP客户 <-------------------------> FTP服务器 应用层
| |
内核中的协议栈 TCP <-------------------------> TCP 传输层
| |
内核中的协议栈 IP <-------------------------> IP 网络层
| |
以太网驱动程序 <-------------------------> 以太网驱动程序 数据链路层
说了这么多,有人烦了吧?相信我,这是基础的基础,可以说是说得是很简单拉,
如果需要,拿出个几十万字来说上面的内容,我想也不嫌多,好了,让我们进入下一节, sniff的原理。

 

三、 SNIFF的原理

要知道在以太网中,所有的通讯都是广播的,也就是说通常在同一个网段的所有网络接口都可以访问在物理媒体上传输的所有资料,而每一个网络接口都有一个唯一的硬件地址,这个硬件地址也就是网卡的MAC地址,大多数系统使用48比特的地址,这个地址用来表示网络中的每一个设备,一般来说每一块网卡上的MFC地址都是不同的,每个网卡厂家得到一段地址,然后用这段地址分配给其生产的每个网卡一个地址。在硬件地址和IP地址间使用ARP和RARP协议进行相互转换。
     在正常的情况下,一个网络接口应该只响应这样的两种资料帧:
1.与自己硬件地址相匹配的资料帧。
2.发向所有机器的广播资料帧。
     在一个实际的系统中,资料的收发是由网卡来完成的,网卡接收到传输来的资料,网卡
内的单片程序接收资料帧的目的MAC地址,根据计算机上的网卡驱动程序设置的接收模式判断该不该接收,认为该接收就接收后产生中断信号通知CPU,认为不该接收就丢掉不管,所以不该接收的资料网卡就截断了,计算机根本就不知道。CPU得到中断信号产生中断,操作系统就根据网卡的驱动程序设置的网卡中断程序地址调用驱动程序接收资料,驱动程序接收资料后放入信号堆栈让操作系统处理。而对于网卡来说一般有四种接收模式:
广播方式:该模式下的网卡能够接收网络中的广播信息。
组播方式:设置在该模式下 的网卡能够接收组播资料。

直接方式:在这种模式下,只有目的网卡才能接收该数据。

混杂模式:在这种模式下的网卡能够接收一切通过它 的资料,而不管该资料是否是 传给它的。

好了,现在我们总结一下,首先,我们知道了在以太网中是基于广播方式传送资料的,也就是说,所有的物理信号都要经过我的机器,再次,网卡可以置于一种模式叫混杂模式(promiscuous),在这种模式下工作的网卡能够接收到一切通过它的资料,而不管实际上数据的目的地址是不是他。这实际上就是我们SNIFF工作的基本原理:让网卡接收一切他所能接收的数据。

我们来看一个简单的例子,机器A、B、C与集线器HUB相连接,集线器HUB通过路由器Router访问外部网络。这是一个很简单也很常见的情况,比如说在公司大楼里,我所在的网络部办公室里的几台机器通过集线器连接,而网络部、开发部、市场部也是同样如此,几个部门的集线器通过路由器连接。还是回到我们的图一上来,值得注意的一点是机器A、B、C使用一个普通的HUB连接的,不是用SWITCH,也不是用ROUTER,使用SWITCH和ROUTER的情况要比这复杂得多。
我们假设一下机器A上的管理员为了维护机器C,使用了一个FTP命令向机器C进行远程登陆,那么在这个用HUB连接的网络里资料走向过程是这样的。首先机器A上的管理员输入的登陆机器C的FTP口令经过应用层FTP协议、传输层TCP协议、网络层IP协议、数据链路层上的以太网驱动程序一层一层的包裹,最后送到了物理层,我们的网线上。接下来资料帧送到了HUB上,现在由HUB向每一个接点广播由机器A发出的资料帧,机器B接收到由HUB广播发出的资料帧,并检查在资料帧中的地址是否和自己的地址相匹配,发现不是发向自己的后把这资料帧丢弃,不予理睬。而机器C也接收到了资料帧,并在比较之后发现是发现自己的,接下来他就对这数据帧进行分析处理。

在上面这个简单的例子中,机器B上的管理员如果很好奇,他很想知道究竟登陆机器C上FTP口令是什么?那么他要做的很简单,仅仅需要把自己机器上的网卡置于混杂模式,并对接收到的资料帧进行分析,从而找到包含在资料帧中的口令信息。

 


四、如何防止SNIFF
    防止sniff最有效的手段就是进行合理的网络分段,并在网络中使用交换机和网桥,在理想的情 况下使每一台机器都拥有自己的网络段,当然这会使你的网络建设费用增加很多,所以你可以尽量 使相互信任的机器属于同一个网段,使他们互相之间不必担心sniff的存在。并在网段于网段间进 行硬件屏障。你也可以使用加密技术对你在网络中传送的敏感资料如户ID或口令,你的银行帐号, 商业机密等进行加密,你可以选用SSH等加密手段。为了防止ARP欺骗,你可以使用永久的ARP 缓存条目,反正上面的攻击手段和原理你也看了,你就反过来想想该怎么办好了。不过有盾必有矛,平时的安全意识才是最重要的。
(注:以下关于AntiSniff的介绍取至backend翻译整理的L0pht AntiSniff 技术文档一文) 当你做做层层保护后,你还是怀疑自己的网络上存在sniff该怎么办? L0pht 小组为了探测 sniff专门发布了一个软件 AntiSniff,当然这个软件不是免费的:),AntiSniff 工具用于检测局 域网中是否有机器处于混杂模式,AntiSniff Version 1.x被设计为运行在以太网的Windows系统中, 提供了简单易用的图形用户接口,AntiSniff Version 1.x 主要工作在非交换环境下的本地网段中, 如果运行在交换环境下其功能将大打折扣。AntiSniff Ver 2.0 将不但能在本地网段中,而且能够穿 过路由器和交换机进行工作。

◆ 操作系统类特殊测试
    Linux 内核测试 旧版本的Linux内核存在一个奇怪的特性,可被用于确定机器是否处于混杂模式。在正常情形下, 网卡会过滤和丢弃那些目标地址不是本机MAC地址或以太网广播地址的数据包。如果资料包的目标地 址为本机以太网地址或广播地址,将传送给内核进行处理,因为其认为该以太网数据帧包含了本机 的正确IP地址或该网络广播地址。如果网卡处于混杂模式,则每个资料包都会传递给操作系统进行 分析或处理。许多版本的 Linux内核只检查资料包中的IP地址以确定是否存放到IP堆栈中进行处理。 为了利用这一点,AntiSniff构造一个无效以太网地址而IP地址有效的数据包。对于使用了这些内核 版本和处于混杂模式的Linux系统,由于只检查到IP地址有效而将其接收并存放到相应堆栈中。通过在这个伪造的以太网资料帧中构造一个ICMP ECHO请求,这些系统会返回响应包(如果处于混杂模式) 或忽略(如果不处于混杂模式),从而暴露其工作模式。当伪造的以太网资料帧中的IP地址设置为网络 广播地址时这个测试非常有效。 AntiSniff的使用者可以修改伪造的以太网址,缺省值为66:66:66:66:66:66。
NetBSD许多NetBSD内核具有与上述Linux内核相同的特性,不过伪造以太网资料帧中的 IP地址必须设为广播地址。Windows 95/98/NT
    根据对网络驱动程序头文件的了解,可以知道当处于混杂模式时,Microsoft的操作系统会确切地检 查每个包的以太网地址。如果与网卡的以太网地址匹配,将作为目标IP地址为本机的资料包存放到相应 堆栈中处理。可以被利用的一点是系统对以太网广播包的分析。在正常情形下,例如机器工作在非混 杂模式下,网卡只向系统内核传输那些目标以太网址与其匹配或为以太网广播地址(ff:ff:ff:ff:ff:ff) 的数据包。如果机器处于混杂模式下,网络驱动程序仍然会检查每个资料包的以太网地址,但检查是否 为广播包时却只检查头8位地址是否为0xff。因此,为了使处于混杂模式的系统返回响应信息,AntiSniff构造以太网地址为ff:00:00:00:00:00且含有正确目标IP 地址的资料包,当Microsoft的操作系统接收到这个资料包时,将根据网络驱动程序检查到的细微差别而返回响应包(如果处于混杂模式) 或丢弃这个资料包(如果处于非混杂模式)。 需要注意的是,这个检查与使用的网络驱动程序有关。Microsoft缺省的网络驱动程序具有以上特性,大多数的厂商为了保持兼容性也继承了这些特性。不过有些网卡会在其硬件层中检查以太网地址的头8位,所以可能会无论系统真正的状态是什么都总是返回正值。关于这类网卡和驱动程序请访问
AntiSniff Ver 1.x的web网站。
◆ DNS 测试
   进行DNS测试的原因是许多攻击者使用的网络资料收集工具都对IP地址进行反向 DNS解析,因为他们 希望根据域名寻找更有价值的主机。例如joepc1.foo.bar对攻击者的吸引力往往不如payroll.foo.bar 这种商业域名。此时这些工具就由被动型网络工具变为主动型网络工具了。而不监听网络通讯的机器不会试图反向解析资料包中的 IP地址。为了利用这一点,AntiSniff Ver 1.x使自身处于混杂模式下,向网络发送虚假目标IP地址的资料包,然后监听是否有机器发送该虚假目标IP地址的反向DNS查询。 伪造资料包的以太网地址、检查目标、虚假目标IP地址可由用户定制。
◆ 网络和主机响应时间测试
   这种测试已被证明是最有效的。它能够发现网络中处于混杂模式的机器,而不管其操作系统是什么。
警告,这个测试会在很短的时间内产生巨大的网络通讯流量。进行这种测试的理由是不处于混杂模的网卡提供了一定的硬件底层过滤机制。也就是说,目标地址非本地(广播地址除外)的资料包将被网卡 的固件丢弃。在这种情况下,骤然增加、但目标地址不是本地的网络通讯流量对操作系统的影响只会很小。而处于混杂模式下的机器则缺乏此类底层的过滤,骤然增加、但目标地址不是本地的网络通讯流量会对该机器造成较明显的影响(不同的操作系统/内核/用户方式会有不同)。这些变化可以通过网络通讯流量工具监视到。 根据以上要点,AntiSniff Ver 1.x 首先利用ICMP ECHO请求及响应计算出需要检测机器的响应时间基准和平均值。在得到这个资料后,立刻向本地网络发送大量的伪造资料包。与此同时再次发送测试资料包以确定平均响应时间的变化值。非混杂模式的机器的响应时间变化量会很小,而混杂模式的机器的响应时间变化量则通常会有 1-4个数量级。为了对付攻击者和入侵者们最常用的多种工具,
AntiSniff进行了三种网络饱和度测试:SIXTYSIX、TCPSYN和THREEWAY。
*SIXTYSIX测试构造的资料包资料全为0x66。这些资料包不会被非混杂模式的机器接收,同时方便使用常见的网络监听/分析工具(如tcpdump和snoop等)记录和捕获。
*TCPSYN测试构造的数据包包含有效的TCP头和IP头,同时TCP标志域的SYN位被设置。
*THREEWAY测试采取的原理基本上与TCPSYN一样,但更复杂些。在这种测试中两个实际不存在
的机器间多次建立完整的TCP三方握手通讯。它能够更好地欺骗那些骇客工具。
AntiSniff Ver 1.x中能够通过以上三种资料包测试发现正处于混杂模式机器的测试方法最好周 期性地进行和与以前的资料比较。响应时间测试第一次运行的资料还能够用于分析一个大型网络在 flooding和非flooding状态时的性能,并帮助工程师调整网络性能。一旦确信本地网络已运行在正常(没有未经允许而处于混杂模式的机器) 状态,就应该设置AntiSniff工具周期性运行。只要发现 某台机器性能(响应时间)发生数量级的变化,一般就能确定其正处于混杂模式。这种方法不需比较两台独立系统间的性能资料,而只需比较同一台机器不同时候的资料就能确定该机器是否处于混杂模式。


五、

相关阅读 更多 +
排行榜 更多 +
地狱摩托游戏最新版下载

地狱摩托游戏最新版下载

赛车竞速 下载
小猫快来钓鱼游戏下载

小猫快来钓鱼游戏下载

休闲益智 下载
殴打氪金大佬昊天手游下载

殴打氪金大佬昊天手游下载

休闲益智 下载