从入门到精通:网络监听技术全解

www.net130.com     日期:2008-4-7    浏览次数:
出处:互联网
 检测网络监听的手段

  对发生在局域网的其他主机上的监听,一直以来,都缺乏很好的检测方法。这是由于产生网络监听行为的主机在工作时总是不做声的收集数据包,几乎不会主动发出任何信息。但目前网上已经有了一些解决这个问题的思路和产品:

  1:反应时间

  向怀疑有网络监听行为的网络发送大量垃圾数据包,根据各个主机回应的情况进行判断,正常的系统回应的时间应该没有太明显的变化,而处于混杂模式的系统由于对大量的垃圾信息照单全收,所以很有可能回应时间会发生较大的变化。

  2:观测dns

  许多的网络监听软件都会尝试进行地址反向解析,在怀疑有网络监听发生时可以在dns系统上观测有没有明显增多的解析请求。

  3:利用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

  4:利用arp数据包进行监测

  除了使用ping进行监测外,目前比较成熟的有利用arp方式进行监测的。这种模式是上述ping方式的一种变体,它使用arp数据包替代了上述的icmp数据包。向局域网内的主机发送非广播方式的arp包,如果局域网内的某个主机响应了这个arp请求,那 么我们就可以判断它很可能就是处于网络监听模式了,这是目前相对而言比较好的监测模式。

  这种方式,在neped和PromiScan这两个产品中有所体现。可分别参见:
  http://www.apostols.org/、
  http://www.securityfriday.com/ToolDownload/PromiScan/promiscan_doc.html

  值得注意的是,现在互联网上流传着一些基于上面这两种技术的脚本和程序,它们宣称自己能准确捕捉到局域网内所有进行网络监听的主机,目前来讲,这种说法基本上是不可靠的,因为上述技术在实现中,除了要考虑网卡的硬件过滤外,还需要考虑到不同操作系统可能产生的软件过滤。因为虽然理论上网卡处于混杂模式的系统应该接收所有的数据包,但实际上不同的操作系统甚至相同的操作系统的不同版本在tcp/ip的实现上都有自己的一些特点,有可能不会接收这些理论上应该接收的数据包。

  除了上述几种方式外,还有一些其他的方式,如:检测hub灯,但相比局限性就更大了,只能作为上述模式的补充。

  相对而言,对发生在本机的网络监听,是可以利用一些工具软件来发现的,比较简单,这里我们不介绍,有兴趣的读者可以参考cert等网站。 

交换机环境的网络监听

  文章到这里结束了吗?没有,我们还漏掉了一个很重要的监听手段-交换环境下面的网络听,这是个很有必要谈及的话题,笔者作为网络管理员参加了许多的工程决策,吃惊的发现许多的公司都还停留在交换机是局域网安全的彻底解决之道的概念上。

  应该认识到这个概念是个传说,是的,在以前,的确是这样的,但随着上面介绍的dsniff等软件的诞生,所谓交换机的安全已经成为一个传说了。

  本文前面的部分介绍了交换机工作的原理,不同于HUB的共享式报文方式,交换机转发的报文是一一对应的,由此看来,交换环境下再采用传统的共享式局域网下网络监听是不可行了,由于报文是一一对应转发的,普通的网络监听软件此时无法监听到交换环境下其它主机任何有价值的数据。

  交换机是安全的?

  不,还有一些别的方法,比如利用arp,本文一开始就提到了局域网内主机数据包的传送完成不是依靠ip地址,而是依靠arp找出ip地址对应的mac地址实现的。而我们知道arp协议是不可靠和无连接的,通常即使主机没有发出arp请求,也会接受发给它的arp回应,并将回应的mac和ip对应关系放入自己的arp缓存中。

  那么如果能利用这个特性,在这个环节中做些文章,还是可以截获数据包的。

  Arp理论的实践

  作者这里推荐一个不错的上述理论产物,dsniff,这个软件包中包括了filesnarf、 mailsnarf、msgsnarf、urlsnarf、dnsspoof、macof 等诸多很有特色的组件,可以捕获网络中的各种敏感数据,但这些不是今天感兴趣的主题,我们只看其中一个组件,arpspoof,这个组件就是上述arp理论的一个实践,它的工作原理是这样的:发起arpspoof的主机向目标主机发送伪造的arp应答包,骗取目标系统更新arp表,将目标系统的网关的mac地址修改为发起arpspoof的主机mac地址,使数据包都经由发起arpspoof的主机,这样即使系统连接在交换机上,也不会影响对数据包的攫取,由此就轻松的通过交换机实现了网络监听。   举例如下:

  主机a和b连接在交换机的同一个vlan上,

  A机的ip地址:192.168.1.37
  B机的ip地址:192.168.1.35,mac地址为:08-00-20-c8-fe-15
  网关的ip地址:192.168.1.33,mac地址为:00-90-6d-f2-24-00

  首先在a机上看看a机的arp表

    C:\ >arp -a
    Interface: 192.168.1.37
    Internet Address Physical Address Type
    192.168.1.33 00-90-6d-f2-24-00 dynamic

  我们看到a机中保留着网关的ip地址192.168.1.33和对应的mac地址00-90-6d-f2-24-00

  我们在B机上执行arpspoof,将目标指向a机,宣称自己为网关,如下:

    HOSTB# arpspoof -t 192.168.1.37 192.168.1.33
    8:0:20:c8:fe:15 0:50:ba:1a:f:c0 0806 42: arp reply 192.168.1.33 is-at 8:0:20:c8:fe:15
    8:0:20:c8:fe:15 0:50:ba:1a:f:c0 0806 42: arp reply 192.168.1.33 is-at 8:0:20:c8:fe:15
    8:0:20:c8:fe:15 0:50:ba:1a:f:c0 0806 42: arp reply 192.168.1.33 is-at 8:0:20:c8:fe:15
    8:0:20:c8:fe:15 0:50:ba:1a:f:c0 0806 42: arp reply 192.168.1.33 is-at 8:0:20:c8:fe:15
    8:0:20:c8:fe:15 0:50:ba:1a:f:c0 0806 42: arp reply 192.168.1.33 is-at 8:0:20:c8:fe:15
    8:0:20:c8:fe:15 0:50:ba:1a:f:c0 0806 42: arp reply 192.168.1.33 is-at 8:0:20:c8:fe:15
    8:0:20:c8:fe:15 0:50:ba:1a:f:c0 0806 42: arp reply 192.168.1.33 is-at 8:0:20:c8:fe:15
    8:0:20:c8:fe:15 0:50:ba:1a:f:c0 0806 42: arp reply 192.168.1.33 is-at 8:0:20:c8:fe:15
    8:0:20:c8:fe:15 0:50:ba:1a:f:c0 0806 42: arp reply 192.168.1.33 is-at 8:0:20:c8:fe:15

  可以看到b机持续向a发送arp回应包,宣称网关192.168.1.33的mac地址是自己!此时,我们在a机上看看arp表的内容,

    C:\>arp -a
    Interface: 192.168.1.37
    Internet Address Physical Address Type
    192.168.1.33 08-00-20-c8-fe-15 dynamic

  哈!a机的arp表已经改变了,网关的mac地址被更新为了 b机的mac地址,这样,当有数据包发送时,a机理所当然的会发到它arp表中网关对应的mac地址08-00-20-c8-fe-15,然而这个地方的b机正在等待着,悄然无声的冒充网关收发着a机的数据包。

  有一点要说明的是,为了让a机能正常使用网络,b机还必须打开数据转发,

  linux中可以使用sysctl -w net.ipv4.ip_forward = 1

  bsd系统可以使用sysctl -w net.inet.ip.forwarding =1

  solaris系统可以使用ndd -set /dev/ip ip_forwarding 1

  除了这样打开内核的支持外,也可以选用外部的fragrouter等转发软件,如此,就能确保a机正常工作了。

  此外,ettercap的作者指出,内核为2.4.x的linux系统在arp实现中,考虑到了arp欺骗,不会接受未经请求的arp回应,因此直接向这种系统发送arp reply也是无效的,不过,有意思的是虽然它不会接受未经请求的arp reply,但是只要接收到arp的request,它就会更新自己的arp缓存,;),如此就好办了,发送一个伪造的arp request即可!不过,作者在自己实验时没有发现这个问题,作者内核为2.4.7的系统接受了直接的arp reply,并更新了自己的arp表。

  如果一切配置正常的话,被重定向的a机是不会有什么明显的感觉的,网络照常是通畅的,只是在后台数据都绕了一个小圈子,不是直接到网关,而是先经由b机,再由b机转发到网关,因为数据包都经过了b机,那么在b机上起一个网络监听软件,a机的所有数据必然会被监听到。交换环境下的监听由此实现!

  除此之外,dsniff还提供了macof等淹没交换机arp表等进行监听的模式,这里就不介绍了,有兴趣的读者可以自己查阅相关资料。

    Arp方式监听的防范

  对付采用arp方式的监听也是个比较棘手的问题,有几个不是非常理想的对策。

  首先还是上面提到的加密,尽可能的让局域网内的传输的数据都是秘文的,这个可能相对最理想的防范方法,但实施起来可能有一点困难。有一点要注意,ssh1是不安全的,我们提到的dsniff和ettercap都可以对ssh1实施中间人的监听。

  另外,还可以考虑指定静态arp,如大多数unix系统支持arp读取指定的ip和mac地址对应文件,首先编辑内容为ip和mac地址对照的文件,然后使用命令:arp -f /path/to/ipandmacmapfile读取文件,这样就指定了静态的arp地址,即使接收到arp reply,也不会更新自己的arp缓存,从而使arpspoof丧失作用。windows系统没有-f这个参数,但有-s参数,用命令行指定ip和mac地址对照关系,如arp -s 192.168.1.33 00-90-6d-f2-24-00,可惜除了xp外,其它的版本的window平台即使这样做,当接收到伪造的arp reply后,依然会更新自己的arp缓存,用新的mac地址替换掉老的mac地址,所以无法对抗arpspoof。而且采用静态arp有一个缺憾,就是如果网络很大的话,工作量会非常的大。

 Arp方式监听的检测

  首先是借助检测ip地址和mac地址对应的工具,如arpwatch,安装了arpwatch的系统在发生mac地址变化时会在系统的日志文件中看到如下提示

    Apr 21 23:05:00 192.168.1.35 arpwatch: flip flop 192.168.1.33 0:90:6d:f2:24:0 (8:0:20:c8:fe:15)
    Apr 21 23:05:02 192.168.1.35 arpwatch: flip flop 192.168.1.33 8:0:20:c8:fe:15 (0:90:6d:f2:24:0)
    Apr 21 23:05:03 192.168.1.35 arpwatch: flip flop 192.168.1.33 0:90:6d:f2:24:0 (8:0:20:c8:fe:15)

  从提示中可以看出arpwatch检测到了网关mac地址发生了改变。

  其次借助于一些入侵检测系统,如snort,亦可以起到的一定的检测作用。在snort的配置文件中打开arpspoof的preprocessor开关并进行配置即可。

  作者本人试验发现,如果采用本地解析时,观测局域网本地的dns服务器的反解是一个好的办法,因为发起arpspoof的主机会不间断的尝试正反解析冒充的网关ip,发送数量非常多的重复解析数据包,当怀疑有arpspoof时很容易被发现,如下:

    nameserver# tcpdump -n -s 0 port 53
    tcpdump: listening on hme0
    23:19:22.489417 192.168.1.35.41797 > 192.168.1.68.53: 32611+ PTR? 33.224.102.202.in-addr.arpa. (45) (DF)
    23:19:22.490467 192.168.1.35.41798 > 192.168.1.68.53: 32611+ PTR? 33.224.102.202.in-addr.arpa. (45) (DF)

    结束语

  上面我们介绍了网络监听技术的几个主要方面,包括网络监听的主要技术细节,具体实现,检测方法等。此外还介绍了一种非传统的监听方式,通过本文,希望读者能对网络监听产生一些认识。

本新闻共4页,当前在第4页  1  2  3  4  

相关新闻