发信人: starseacn(顾枫)
整理人: williamlong(2002-05-20 11:11:06), 站内信件
|
作者:Yiming Gong
http://security.zz.ha.cn
申明:任何形式的摘抄必须保留上述作者和http地址
网络监听技术
第二部分
(接第一部分)
实现网络监听的工具:
好了,上面我们看到,一切的关键就在于网卡被设置为混杂模式的状态,这种工作复杂吗?不幸的是,这种工作并不复杂,目前有太多的工具可以做到这一点。
自网络监听这一技术诞生以来,产生了大量的可工作在各种平台上相关软硬件工具,其中有商用的,也有free的。在google上用sniffer tools作为关键字,可以找到非常多。
作者在这里列举一些作者喜欢的软件,供有兴趣的读者参考使用。
Windows平台下的:
Windump
Windump是最经典的unix平台上的tcpdump的window移植版,和tcpdump几乎完全兼容,采用命令行方式运行,对用惯tcpdump的人来讲会非常顺手。目前版本是3.5.2,可运行在Windows 95/98/ME/Windows NT/2000/XP平台上
Iris
Eeye公司的一款付费软件,有试用期,完全图形化界面,可以很方便的定制各种截获控制语句,对截获数据包进行分析,还原等。对管理员来讲很容易上手,入门级和高级管理员都可以从这个工具上得到自己想要得东西。运行在Windows 95/98/ME/Windows NT/2000/XP平台上
参见:http://www.eeye.com/html/Products/Iris/index.html
*nix平台下的:
tcpdump
不多说,最经典的工具,被大量的*nix系统采用,无需多言。
参见:http://www.tcpdump.org
ngrep
和tcpdump类似,但与tcpdump最大的不同之处在于,借助于这个工具,管理员可以很方便的把截获目标定制在用户名,口令等感兴趣的关键字上。
参见:http://www.packetfactory.net/projects/ngrep/
snort
参见:http://www.snort.org
目前很红火的免费的ids系统,除了用作ids以外,被用来sniffer也非常不错,可以借助工具或是依靠自身能力完全还原被截获的数据。
Dsniff
作者设计的出发点是用这个东西进行网络渗透测试,包括一套小巧好用的小工具,主要目标放在口令,用户访问资源等敏感资料上,非常用特色,工具包中的arpspoof等工具可以令人满意的捕获交换机环境下的主机敏感数据。
参见:http://www.monkey.org/~dugsong/dsniff/
Ettercap
和dsniff在某些方面有相似之处,也可以很方便的工作在交换机环境下
提示:国内用户访问这个站点需要使用代理服务器。
参见:http://ettercap.sourceforge.net/
网络监听的防范方法:
上面我们介绍了可以用来进行网络监听的软件,那么对这种不受欢迎的行为,有没有一些防范手段呢?
上面我们知道,sniffer是发生在以太网内的,那么,很明显,首先就要确保以太网的整体安全性,因为sniffer行为要想发生,一个最重要的前提条件就是以太网内部的一台有漏洞的主机被攻破,只有利用被攻破的主机,才能进行sniffer,去收集以太网内敏感的数据信息。
其次,采用加密手段也是一个很好的办法,因为如果sniffer抓取到的数据都是以密文传输的,那对入侵者即使抓取到了传输的数据信息,意义也是不大的-至少截止目前采用ssh2还是安全的。这是目前相对而言使用较多的手段之一,在实际应用中往往是指替换掉不安全的采用明文传输数据的服务,如在server端用ssh,openssh等替换unix系统自带的telnet,ftp,rsh,在client端使用securecrt,sshtransfer替代telnet,ftp等。
除了加密外,使用交换机目前也是一个应用比较多的方式,不同于工作在第一层的hub,交换机是工作在二层,也就是说数据链路层的,以CISCO的交换机为例,交换机在工作时维护着一张ARP的数据库,在这个库中记录着交换机每个端口绑定的MAC地址,当有数据报发送到交换机上时,交换机会将数据报的目的MAC地址与自己维护的数据库内的端口对照,然后将数据报发送到"相应的"端口上,注意,不同于HUB的报文广播方式,交换机转发的报文是一一对应的。对二层设备而言,仅有两种情况会发送广播报文,一是数据报的目的MAC地址不在交换机维护的数据库中,此时报文向所有端口转发,二是报文本身就是广播报文。由此,我们可以看到,这在很大程度上解决了网络监听的困扰。但是有一点要注意,随着dsniff,ettercap等软件的出现,交换机的安全性已经面临着严峻的考验!我们将在以后的文章中对这种技术进行专门介绍。
此外,对安全性要求比较高的公司可以考虑kerberos,kerberos是一种为网络通信提供可信第三方服务的面向开放系统的认证机制,它提供了一种强加密机制使client端和server即使在非安全的网络连接环境中也能确认彼此的身份,而且在双方通过身份认证后,后续的所有通讯也是被加密的。在实现中也即建立可信的第三方服务器保留与之通讯的系统的密钥数据库,仅kerberos和与之通讯的系统本身拥有私钥(private key),然后通过private key以及认证时创建的session key来实现可信的网络通讯连接。
检测网络监听的手段
对发生在局域网的其他主机上的监听,一直以来,都缺乏很好的检测方法。这是由于产生网络监听行为的主机在工作时总是不做声的收集数据包,几乎不会主动发出任何信息这种工作方式决定的。但是依然还是有一些检测的手段得,目前相对广泛使用的技术有两种:
1:利用ping模式进行监测
上面我们说过:当一台主机进入混杂模式时,以太网的网卡会将所有不属于他的数据照单全收。按照这个思路,我们就可以这样来操作:假设我们怀疑的主机的硬件地址是00:30:6E:00:9B:B9,它的ip地址是192.168.1.1,那么我们现在伪造出这样的一种icmp数据包:硬件地址是不与局域网内任何一台主机相同的00:30:6E:00:9B:9B,目的地址是192.168.1.1不变,我们可以设想一下这种数据包在局域网内传输会发生什么现象:任何正常的主机会检查这个数据包,比较数据包的硬件地址,和自己的不同,于是不会理会这个数据包,而处于网络监听模式的主机呢?由于它的网卡现在是在混杂模式的,所以它不会去对比这个数据包的硬件地址,而是将这个数据包直接传到上层,上层检查数据包的ip地址,符合自己的ip,于是会对对这个ping的包做出回应。这样,一台处于网络监听模式的主机就被发现了。
这种方法,在10pht这个黑客组织的antisniff产品中有很好的体现。可参见:
http://www.securitysoftwaretech.com/antisniff/download.html
2:利用arp数据包进行监测
除了使用ping进行监测外,目前比较成熟的有利用arp方式进行监测的。和上面的ping方式比较相似,它使用arp数据包替代了上述的icmp数据包。向局域网内的主机发送非广播方式的arp包,如果局域网内的某个主机响应了这个arp请求,那 么我们就可以判断它很可能就是处于网络监听模式了。
这种方式,在neped和PromiScan这两个产品中有所体现。可分别参见:
http://www.apostols.org/
http://www.securityfriday.com/ToolDownload/PromiScan/promiscan_doc.html
除了上述两种方式外,还有一些其他的方式,如:观测dns数据包,decoy模式,检测hub灯,latency模式等,虽然都有较大的局限性,但是可以作为上述模式的补充。
有一点很重要,现在互联网上流传着一些基于上面这两种技术的脚本和程序,它们宣称自己能准确捕捉到局域网内所有进行网络监听的主机,目前来讲,在很大程度上,这种说法是不可靠的,因为上述两种技术在实现中,除了网卡的硬件过滤外,还需要考虑到不同操作系统可能产生的软件过滤。 相对而言,对发生在本机的网络监听,是可以利用一些工具软件来发现的,比较简单,这里我们不介绍,有兴趣的读者可以参考cert等网站。
结束语:
上面我们介绍了网络监听技术的几个主要方面,包括网络监听的主要技术细节,具体实现,检测方法等。但还有一些在网络监听领域比较新颖的技术没有进行展开,我们将在后面的文章中介绍本文提到一种比较新的监听模式-绕过交换机的网络监听。
---- 网络是不会真实的,但我是真实的
|
|