当前位置:Linux教程 - Linux - L0pht AntiSniff 技术文档

L0pht AntiSniff 技术文档



        
    LinuxByte注:本站有antisniff下载


    概 述
    --------

    L0pht Heavy Industries开发的AntiSniff工具用于
    满足检测本地网络是否有机器处于混杂模式(即监听模
    式)。

    一台处于混杂模式的机器通常是两种含义之一:它
    已被入侵并用于窃听网络中的口令或数据;或者它正被
    用于合法的正常的网络监听。对于网络管理员和网络安
    全专家而言,了解哪台机器正处于混杂模式以作进一步
    的调查研究是非常重要的。

    AntiSniff Version 1.X被设计为运行在以太网的
    Windows NT系统中,并提供了简单易用的用户图形界
    面。该工具以多种方式测试远程系统是否正在捕捉和分
    析那些并不是发送给它的数据包。这些测试方法与其操
    作系统本身无关。


    使用AntiSniff V1.X
    ------------------

    AntiSniff运行在本地以太网的一个段上。例如,如
    果在非交换式的C类网络中运行时,AntiSniff能监听整
    个网络;如果网络被按工作组分组并用交换机隔离,则
    每个工作组中都需要运行一个AntiSniff。原因是某些特
    殊的测试使用了无效的以太网地址和某些测试需要进行
    混杂模式下的统计(如响应时间,包丢失率等)。

    AntiSniff V1.X的用法非常简单直观。在工具的图
    形界面中选择需要进行检查的机器(单台或多台),并
    且指定检查频率。对于除网络响应时间检查外的测试,
    每一台机器会返回一个确定的正值或负值。返回的正值
    表示该机器正处于混杂模式。还可以根据这个返回值定
    义报警或提示。

    对于网络响应时间测试的返回值,建议用户根据第
    一次返回的数值计算标准值,然后再对在flood和非
    flood两次测试的返回结果有较大变化的机器进行检查。
    一旦这些机器退出混杂模式返回到正常操作模式下,A
    ntiSniff的下一次测试将会记录到混杂模式和非混杂模
    式的差值(正值)。

    建议尽可能周期性地运行这个工具。这个周期值根
    据不同的站点、不同的网络负荷、测试的机器数量和网
    站策略等而不同。


    AntiSniff的技术细节
    -------------------

    目前的AntiSniff V1.X实现了三种类型的测试:操
    作系统类特殊测试、DNS测试和网络响应时间测试。每种
    测试都能单独或与其它测试一起确定机器的运行状态。
    AntiSniff V1.X主要工作在非交换环境下的本地网段
    中,如果运行在交换环境下其功能将大打折扣。
    AntiSniff V2.0将不但能在本地网段中,而且能够穿过
    路由器和交换机进行工作。


    ◆ 操作系统类特殊测试


    Linux 内核测试

    旧版本的Linux内核存在一个奇怪的特性,可被用于
    确定机器是否处于混杂模式。在正常情形下,网卡会过
    滤和丢弃那些目标地址不是本机MAC地址或以太网广播地
    址的数据包。如果数据包的目标地址为本机以太网地址
    或广播地址,将传送给内核进行处理,因为其认为该以
    太网数据帧包含了本机的正确IP地址或该网络广播地
    址。如果网卡处于混杂模式,则每个数据包都会传递给
    操作系统进行分析或处理。许多版本的Linux内核只检查
    数据包中的IP地址以确定是否存放到IP堆栈中进行处
    理。为了利用这一点,AntiSniff构造一个无效以太网地
    址而IP地址有效的数据包。对于使用了这些内核版本和
    处于混杂模式的Linux系统,由于只检查到IP地址有效而
    将其接收并存放到相应堆栈中。通过在这个伪造的以太
    网数据帧中构造一个ICMP ECHO请求,这些系统会返回响
    应包(如果处于混杂模式)或忽略(如果不处于混杂模
    式),从而暴露其工作模式。当伪造的以太网数据帧中
    的IP地址设置为网络广播地址时这个测试非常有效。
    AntiSniff的使用者可以修改伪造的以太网址,缺省值为
    66:66:66:66:66:664。


    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 V1.X的web网站。


    ◆ DNS 测试

    进行DNS测试的原因是许多攻击者使用的网络数据收
    集工具都对IP地址进行反向DNS解析,因为他们希望根据
    域名寻找更有价值的主机。例如joepc1.foo.bar对攻击
    者的吸引力往往不如payroll.foo.bar这种商业域名。此
    时这些工具就由被动型网络工具变为主动型网络工具
    了。而不监听网络通讯的机器不会试图反向解析数据包
    中的IP地址。为了利用这一点,AntiSniff V1.X使自身
    处于混杂模式下,向网络发送虚假目标IP地址的数据
    包,然后监听是否有机器发送该虚假目标IP地址的反向
    DNS查询。伪造数据包的以太网地址、检查目标、虚假目
    标IP地址可由用户定制。


    ◆ 网络和主机响应时间测试

    这种测试已被证明是最有效的。它能够发现网络中
    处于混杂模式的机器,而不管其操作系统是什么。警
    告,这个测试会在很短的时间内产生巨大的网络通讯流
    量。

    进行这种测试的理由是不处于混杂模式的网卡提供
    了一定的硬件底层过滤机制。也就是说,目标地址非本
    地(广播地址除外)的数据包将被网卡的固件丢弃。在
    这种情况下,骤然增加、但目标地址不是本地的网络通
    讯流量对操作系统的影响只会很小。而处于混杂模式下
    的机器则缺乏此类底层的过滤,骤然增加、但目标地址
    不是本地的网络通讯流量会对该机器造成较明显的影响
    (不同的操作系统/内核/用户方式会有不同)。这些变
    化可以通过网络通讯流量工具监视到。

    根据以上要点,AntiSniff V1.X首先利用ICMP ECHO
    请求及响应计算出需要检测机器的响应时间基准和平均
    值。在得到这个数据后,立刻向本地网络发送大量的伪
    造数据包。与此同时再次发送测试数据包以确定平均响
    应时间的变化值。非混杂模式的机器的响应时间变化量
    会很小,而混杂模式的机器的响应时间变化量则通常会
    有1-4个数量级。

    为了对付攻击者和入侵者们最常用的多种工具,
    AntiSniff进行了三种网络饱和度测试:
    SIXTYSI、TCPSYN和THREEWAY。

    * SIXTYSIX测试构造的数据包数据全为0x66。这些
    数据包不会被非混杂
    模式的机器接收,同时方便使用常见的网络监听/
    分析工具(如tcpdump
    和snoop等)记录和捕获。

    * TCPSYN测试构造的数据包包含有效的TCP头和IP
    头,同时TCP标志域的
    SYN位被设置。

    * THREEWAY测试采取的原理基本上与TCPSYN一样,
    但更复杂些。在这种测
    试中两个实际不存在的机器间多次建立完整的TCP
    三方握手通讯。它能
    够更好地欺骗那些骇客工具。

    AntiSniff V1.X中能够通过以上三种数据包测试发
    现正处于混杂模式机器的测试方法最好周期性地进行和
    与以前的数据比较。响应时间测试第一次运行的数据还
    能够用于分析一个大型网络在flooding和非flooding状
    态时的性能,并帮助工程师调整网络性能。一旦确信本
    地网络已运行在正常(没有未经允许而处于混杂模式的
    机器)状态,就应该设置AntiSniff工具周期性运行。只
    要发现某台机器性能(响应时间)发生数量级的变化,
    一般就能确定其正处于混杂模式。这种方法不需比较两
    台独立系统间的性能数据,而只需比较同一台机器不同
    时候的数据就能确定该机器是否处于混杂模式。

    发布人:netbull 来自:中国网络安全技术联盟