嗅探器检测工具和对策
本篇文章将讨论通过进入混杂模式下对网络数据包进行监听的工具软件及采取何种对策以降低其破坏性。为了保证网络的安全性和防止不必要的恐慌,系统管理人员应该非常熟悉这些探测工具的能力和其局限性,并在遇到此类问题时应能采取正确的措施。
本机监控
不同操作系统的计算机采用的检测工具也不尽相同。大多数UNIX系列操作系统都使用"ifconfig"。利用"ifconfig"管理人员可以知道网卡是否工作在混杂模式下。但是因为安装未被授权的sniffer时,特洛伊木马程序也有可能被同时安装,因而"ifconfig"的输出结果就可能完全不可信。系统管理人员还可以选择其它的主要工具来检测sniffers(嗅探器)是否存在,例如"ls","df","du","ps","find"和"netstat"等等,但是以上问题仍有可能发生。许多流行的特洛伊木马程序在系统的"/dev/"目录下都有自己的ASCII文件,该文件中包含该木马程序的配置信息。在安全系统中,"/dev/"目录下应该没有ASCII文件,因而系统管理人员应该定时检测"/dev/"目录。如果"/dev/"目录下存在ASCII文件,则表明系统中已经被攻击者安装了sniffer(嗅探器)。特洛伊木马的ASCII配置文件一般包括sniffers(嗅探器)和与其输出文件相关的进程信息和相应的文件信息,这些信息一般都对系统管理人员隐藏。
大多数版本的UNIX都可以使用lsof(该命令显示打开的文件)来检测sniffer(嗅探器)的存在。lsof的最初的设计目地并非为了防止sniffer(嗅探器)入侵,但因为在sniffer(嗅探器)入侵的系统中,sniffer(嗅探器)会打开其输出文件,并不断传送信息给该文件,这样该文件的内容就会越来越大,因而lsof就有了用武之地。如果利用lsof发现有文件的内容不断的增大,我们就有理由怀疑系统被人装了sniffer(嗅探器)。因为大多数sniffers(嗅探器)都会把截获的"TCP/IP"数据写入自己的输出文件中,因而系统管理人员可以把lsof的结果输出到"grep"来减少系统被破坏的可能性。
对于BSD的UNIX,可以使用cpm来检测sniffer(嗅探器)的存在。cpm(该命令检测混杂模式的存在)是由CERT/CC开发的工具软件。在1994年,好多网站报告合法用户名、用户密码和关键数据被恶意偷窃,cpm就在那时应运而生。更多的相关内容请参阅如下站点http://www.cert.org/advisories/CA-1994-01.html。cpm使用socket(2)和ioctl(2)来判断是否有网卡处在混杂模式,并向系统汇报检测结果。cpm只列出处在混杂模式的网卡。
对于使用SunOS 5.5和5.6的用户,可以使用ifstatus检测sniffer(嗅探器)的存在。用户可以从ftp://ftp.cerias.purdue.edu/pub/tools/unix/sysutils/ifstatus/站点下载该工具。该工具软件向系统汇报哪些网卡处在debug模式或者混杂模式。
对于NT系统,并没有太知名的sniffer(嗅探器)检测工具供使用。就作者所知,NT平台上并没有切实可行的工具去测试网卡的混杂模式。出现这种情况的原因在于作为Microsoft系统平台一部分的工具也可能已经被安装了特洛伊木马程序。使用"alpha"机器的NT用户可以考虑使用"rootkit"(www.rootkit.com)。Microsoft平台远程可以利用的管理员级安全漏洞很少,这可能是Microsoft平台下sniffer(嗅探器)工具和检测工具相对较少的一个原因。
监控本地局域网的数据帧
监控DNS流量。系统管理人员可以运行自己的sniffer(嗅探器),例如tcpdump,Windump和snoop等等,监控网络中指定主机的DNS流量。因为系统管理人员通常指定某些特定的服务器进行监控,以便了解网络的性能,因而sniffer一般都自动的进行IP级的DNS查询。举例说明,一个网站的邮件服务器名为mail.foo.com,则其DNS就可能为ns.foo.com。这样恶意攻击者就可以利用sniffer进行DNS查询,并从中获取网络有用信息,进而破坏系统。
考虑使用Antisniff。系统管理人员可以从www.l0pht.com/antisniff下载该工具软件,该软件是唯一的网络级商业化sniffer测试工具。按照L0pht的软件介绍,Antisniff发送特定的数据帧到网络中,以便发现混杂模式下系统的回应。Antisniff可用于三种不同类型的测试:操作系统详细测试、DNS测试和系统可能潜伏问题测试。
操作系统详细测试:当系统在混杂模式下,系统会对某些特定类型的数据包回应,对其它的数据包则置之不理。在Antisniff进行操作系统详细测试时,Antisniff会通过广播或非广播方式发送一个并不存在的Ether地址,并对系统回应进行监听。Antisniff发送虚假地址的请求ICMP回应数据帧,如果系统在混杂模式下则会对该数据帧进行应答,否则
放弃。在Linux系统下,非广播方式发送一个虚假的Ether地址。对于BSD,虚假Ether地址
则发送给多个地址。如果NT系统在混杂模式下,它不能正确的检测IP地址的前八位Ether地址,所以构造ff:00:00:00:00:00地址,就可以判断系统是否在混杂模式下。在NT系统中,Antisniff某些情况下可能判断失误,但这只存在于很少的一些网卡中。
DNS测试:在这种测试情况下,Antisniff发送一个IP的信息到网络中,并监听网络中主机的所有DNS解析请求,从而进行判断。
系统可能潜伏问题测试:按照Antisniff的文档说明,系统可能潜伏问题测试是最彻底的、最深入的测试。Antisniff发送ICMP数据包到网络中,并计算系统响应时间。在正常的情况下,系统会在网卡级过滤数据包,而混杂模式的情况并非如此。因为处在混杂模式下的系统并不依赖硬件进行流量过滤,因而它的回应时间就会相对较长,利用这种方法就可以判断混杂模式的存在。
对策
系统管理人员并不需要移除某些软件或服务。但是系统管理人员需要定时查询服务商或者CERT/CC、 Securityfocus和SANS等网络安全站点,在这些站点中寻找最新漏洞公告、下载补丁、安全配置等内容,并采取建议的相应对策。因为恶意攻击者总是在安装完特洛伊木马程序后才安装sniffer(嗅探器),所以系统管理人员需要定时使用tripwire或者防病毒软件定时检测系统。
系统管理人员也可以在本地网络中加入交换设备,来预防sniffer(嗅探器)的侵入。具有交换功能的网络可以设定每个集线器只传送广播数据包,进而防止每个主机的数据包冲突问题,也可以设定指定的数据包只发送给指定的目的计算机。因为在这样的网络环境中,那些非广播式的数据包只会被交换设备获取、telnet、 ftp或smtp也只能把数据包直接传送给给目的计算机,所以sniffer(嗅探器)在此毫无用武之地。但是攻击者可以利用ARP(地址解析协议)欺骗或者ARP过载等方法迫使交换设备失去作用,成为一个仅仅发送信息的hub,这样交换设备就失去更新计算机ARP信息的功能。因为交换设备的内存空间有限,如果发送大量ARP数据包使得交换设备处理信息过载,网络就会处在全广播模式下,这样恶意用户就可以在任意一台机器上获取网络中发送的信息。利用这些信息,攻击者就可以用虚假的网络地址来更新交换设备中的信息,进而在从一个被侵入的计算机进行监听活动。被sniffer的计算机甚至可以把接送的信息在发送到指定的地点来迷惑系统管理人员。通常攻击者都使用dsniff和parasite这样利用ARP欺骗的工具进行破坏活动。
系统管理人员应该坚决阻止系统内核的重新载入。为了把sniffers(嗅探器)隐藏在服务级,恶意攻击者可能更改内核的代码内容并重新载入该内核。系统管理人员应该生成静态的系统内核,并禁止核心相关模块的重新的卸载和载入。
系统管理人员可以使用加密技术,防止使用明文传输信息。使用secure shell、secure copy或者IPV6协议都可以使得信息安全的传输。系统管理人员也可以使用一次性的密码。虽然这样无法阻止sniffers(嗅探器)收集特定的信息(如mail),但是使用一次性密码可以防止sniffers(嗅探器)非法获取系统的密码。在硬件系统和软件系统中使用一次性密码都是可行的。详细资料请参阅如下站点:http://www.cert.org/advisori es/CA-1994-01.html。
结论
迄今并没有一个切实可行的方法可以一劳永逸的阻止sniffer的安装或者防备其对系统的侵害。跟踪服务商提供的软件补丁是远远不够的。系统管理人员应该采取一切可行的方法去防止sniffe的侵入,例如重新规划网络、监视网络性能、按时跟踪安全公告,并要非常了解相关工具的使用及其局限性。
资源
CERT/CC. CERT/CC Advisory 1994-01 Ongoing Network Attacks
http://www.cert.org/advisories/CA-1994-01.html 2 Feb 95 (13 Oct 2000)
CERT/CC. Tools that Aid in Detecting Intrusions
http://www.cert.org/security-improvement/implementations/i042.07.html 12 Sep 2000 (9 Oct 2000)
Able, Vic. lsof ftp://vic.cc.purdue.edu/pub/tools/unix/lsof/README 22 Aug 2000 (13 Oct 2000)
Curry, David. ifstatus
ftp://ftp.cerias.purdue.edu/pub/tools/unix/sysutils/ifstatus/README.local, 12 Oct 1995 (9 Oct 2000)
CERT/CC. cpm ftp://ftp.cerias.purdue.edu/pub/tools/unix/sysutils/cpm/cpm.1.2.tar 1 Feb 1996 (9 Oct 2000)
Rootkit
http://www.rootkit.com/ (13 Oct 2000)
L0pht Heavy Industries. Antisniff Technical Documentation
http://www.l0pht.com/antisniff/tech-paper.html, 19 Jul 1999 (9 Oct 2000)
Song, D. dsniff
http://www.monkey.org/~dugsong/dsniff/ (18 Oct 2000)
Van Hauser, parasite
http://thc.pimmel.com/thc/parasite-0.5.tar.gz (18 Oct 2000)
Creed (pseud.). Knark Kernel Loadable Module
http://packetstorm.securify.com/mag/b4b0/b4b0-09.txt B4B0 Issue#9, 1999 (Oct 13 2000)
Spoon (pseud.). Linux Capabilities (LCAP)
http://pweb.netcom.com/~spoon/lcap/ 22 Dec 1999 (11 Oct 2000)
发布人:netbull 来自:LinuxAid