在google上找了很久才找到.
L0pht AntiSniff 技术文档
概 述
--------
L0pht Heavy Industries开发的AntiSniff工具用于满足检测本地网络是否有机器处于混杂模式(即监听模式)。
一台处于混杂模式的机器通常是两种含义之一:它已被入侵并用于窃听网络中的口令或数据;或者它正被用于合法的正常的网络监听。对于网络管理员和网络安全专家而言,了解哪台机器正处于混杂模式以作进一步的调查研究是非常重要的。
AntiSniff Version 1.X被设计为运行在以太网的Windows NT系统中,并提供了简单易用的用户图形界面。该工具以多种方式测试远程系统是否正在捕捉和分析那些并不是发送给它的数据包。这些测试方法与其操作系统本身无关。
使用AntiSniff V1.X
------------------
AntiSniff运行在本地以太网的一个段上。例如,如果在非交换式的C类网络中运行时,AntiSniff能监听整个网络;如果网络被按工作组分组并用交换机隔离,则每个工作组中都需要运行一个AntiSniff。原因是某些特殊的测试使用了无效的以太网地址和某些测试需要进行混杂模式下的统计(如响应时间,包丢失率等)。
AntiSniff V1.X的用法非常简单直观。在工具的图形界面中选择需要进行检查的机器(单台或多台),并且指定检查频率。对于除网络响应时间检查外的测试,每一台机器会返回一个确定的正值或负值。返回的正值表示该机器正处于混杂模式。还可以根据这个返回值定义报警或提示。
对于网络响应时间测试的返回值,建议用户根据第一次返回的数值计算标准值,然后再对在flood和非flood两次测试的返回结果有较大变化的机器进行检查。一旦这些机器退出混杂模式返回到正常操作模式下,AntiSniff的下一次测试将会记录到混杂模式和非混杂模式的差值(正值)。
建议尽可能周期性地运行这个工具。这个周期值根据不同的站点、不同的网络负荷、测试的机器数量和网站策略等而不同。
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工具周期性运行。只要发现某台机器性能(响应时间)发生数量级的变化,
一般就能确定其正处于混杂模式。这种方法不需比较两台独立系统间的性能数据,而只需比较同一台机器不同时候的数据就能确定该机器是否处于混杂模式。 |