使用ARP分组检测处于混杂模式的网络节点

使用ARP分组检测处于混杂模式的网络节点
Version 1.0

原著:Daiji Sanai
英文版翻译:Kelvin King-Pang Tsang
中文版翻译:nixe0n(译自英文版)

摘要
1.简介
2.网络嗅探的原理
3.检测混杂模式的基本概念
4.基础

1).硬件过滤器
2).ARP机制

5.检测处于混杂模式的节点
6.软件过滤器

1).Linux
2).Micro$oft Windows

7.混杂模式检测
8.检查所有网络节点
9.异常情况

1).旧网卡
2).3COM网卡
3).Windows Y2K分组捕获驱动模块
摘要


在一个局域网中,安全问题应该引起注意。当纯文本数据在网络上传输时,任何网络用户都会很容易地窃取这些信息。在网络上窃取数据就叫作嗅探(sniffing)。通过嗅探网络,一个用户能够获得绝密文档的访问权限,窥探到任何人的隐私。在Internet上有很多自由散发的嗅探器软件可以实现上述目的。尽管进行网络嗅探非常容易,然而却没有很好的方法来检测这种恶意行为。本文将阐述PromiScan(一个能够有效地检测网络嗅探器的软件)使用的检测机制。嗅探器为了能够截获网络上所有的分组,必须把网络接口卡(Network Interface Card,NIC)设置为混杂模式(promiscuous mode)。接着,网卡就能够接受网络上所有的分组,并将其送到系统内核。地址解析协议(Address Resolution Protocol,ARP)请求报文用来查询硬件地址到IP地址的解析。我们将使用这类分组来校验网卡是否被设置为混杂模式(promiscuous mode)。之所以会使用ARP请求分组是因为它适用于所有基于以太网的IPV4协议。在混杂模式(promiscuous mode)下,网卡不会阻塞目的地址不是自己的分组,而是照单全收,并将其传送给系统内核。然后,系统内核会返回包含错误信息的报文。基于这
种机制,我们可以假造一些ARP请求报文发送到网络上的各个节点,没有处于混杂模式的网卡会阻塞这些报文,但是如果某些节点有回应,就表示这些节点的网卡处于混杂模式下。这些处于混杂模式的节点就可能运行嗅探器程序。这样就可以成功地检测到网络运行的嗅探器程序。
1.简介


在局域网中,嗅探行为已经成为网络安全的一个巨大威胁。通过网络嗅探,一些恶意用户能够很容易地窃取到绝密的文档和任何人的隐私。要实现上述目的非常容易,恶意用户只要从网络上下载嗅探器并安全到自己的计算机就可以了。然而,却没有一个很好的方法来检测网络上的嗅探器程序。本文将讨论使用地址解析协议(Address Resolution Protocol)报文来有效地检测办公网络和校园网上的嗅探器程序。
3.网络嗅探的原理



局域网通常使用以太网进行连接。在以太网线缆上使用IP(IPV4)机械毕业设计论坛协议传输的传递的信息是明文传输的,除非使用了加密程序进行了加密。当一个人把信息发送到网络上,他会希望只有特定的用户才能收到这些信息。但是,非常不幸,以太网的工作机制为非验证用户提供了窃取这些数据的机会。以太网在进行信息传输时,会把分组送到各个网络节点,目的地址匹配的节点会接收这些分组,其它的网络节点只做简单的丢弃操作。而接收还是丢弃这些分组由以太网卡控制。在接收分组时,网卡会过滤出目的地址是自己的分组接收,而不是照单全收。在本文以后的部分我们将把网卡的这种过滤称为硬件过滤(Hardware Filter)。但是这只是在正常情况下,嗅探器使用另一种工作方式,它把自己的网卡设置为接收所有的网络分组,而不管分组的目的地址是否是自己。这种网卡模式叫作混杂模式(Promiscuous Mode)
摩门教
3.检测混杂模式的基本概念



在网络中,嗅探器接收所有的分组,而不发送任何非法分组。它不会妨碍网络数据的流动,因此很难对其进行检测。不过,处于混杂模式(promiscuous mode)网卡的状态很显然和处于普通模式下不同。在混杂模式下,应该被硬件过滤掉的分组文会进入到系统的内核。是否回应这种分组完全依赖与内核。

下面我们举一个现实世界中的例子,说明我们检测处于混杂模式网络节点的方法。设想一下,在一个会议室中正在举行一个会议。某个人把耳朵放在会议室就可以进行窃听(嗅探^_^)。当她(还是个女的,原文如此:P)进行窃听(嗅探)时,会屏住呼吸,安静地聆听会议室内所有的发言。然而,如果此时会议室内有人忽然叫窃听者的名字:“XX太太,她就可能答应。这听起来有点好笑,但是完全可以用于网络嗅探行为的检测。网络进行网络嗅探的节点会接收网络的所有报文,因此其内核可能对某些本该被硬件过滤的分组作出错误回应。根据这个原理,我们可以通过检查节点对ARP报文的响应来检测网络的嗅探行为。
4.基础



1).硬件过滤器

首先,我们从处于混杂模式(promiscuous mode)下和普通模式下有何不同开始。以太网的地址是6个字节,制造商为每块网卡分配的地址在全世界是唯一的,因此理论上没有相同地址的网卡。在以太网上的所有通讯都是基于这种硬件地址。不过,网卡可以被设置为不同的过滤模式以接收不同种类的分组。下面就是以太网卡的过滤模式:
unicast

网卡接收所有目的地址是自己的分组
broadcast

接收所有广播分组,以太网广播分组的目的地址是FFFFFFFFFFFF。这种广播分组能够到达网络上的所有节点。
multicast

接收目的地址为指定多投点递交(multicast)组地址的分组。网卡只接收其地址已经预先在多投点列表中注册的分组。
all multicast

接收所有多投点递交广播分组。
promiscuous

根本不检查目的地址,接收网络上所有的分组。



-1描述了硬件过滤器处于在正常情况下和在混杂模式下的区别。通常,网卡的硬件过滤器被设置为接收目为单投点递交(unicast)、广播(broadcast)和多投点递交(multicast)地址1的分组。过滤器只接收目的地址为自己的地址、广播地址(FF FF FF FF FF FF)和多投点地址1(01 00 5E 00 00 01)的分组。


2).ARP机制

使用以太网连接的IP网络需要依靠以太网进行传输。只使用IP地址,报文是无法发送的。因此,在以太网上需要一种机制来提供IP地址和硬件地址之间的转换。这种机制就是地址解析协议(Address Resolution Protocol)ARP属于网络层,和IP处于OSI模型的同一层。在IP网络上地址解析是不断进行的,所以ARP报文比较适合用来检测处于混杂模式(promiscuous mode)的网络节点。

在下面的例子中,我们将讲述使用ARP报文是怎样解析IP地址的:

例如:网络上一台IP地址为192.168.1.1PC(X)以太网地址是00-00-00-00-00-01,这台PC(X)需要向网络上另外一台IP地址为192.168.1.10PC(Y)导丝男士发送消息。在发送之前,X首先发出一个ARP请求包查询192.168.1.10对应的以太网地址。查询包的目的地址被设置为F
F-FF-FF-FF-FF-FF(广播),从而本地网络上的所有节点都可以收到这个包。收到之后,每个节点会检查这个ARP包查询的IP地址和本机的IP地址是否匹配。如果不同,就忽略这个ARP包;如果匹配(Y)就向X发出应答。X收到应答之后就缓存YIP/硬件地址。然后,X就可以向Y发送实际的数据。
5.检测处于混杂模式的节点


上面讲到,报文的过滤状态是处于混杂模式状态和正常的网络节点的区别。当网卡被设置为混杂模式,本该被过滤掉的报文就会进入系统的内核。通过这种机制,我们可以检测到网络上处于混杂模式的节点:我们构造一个ARP查询包,其目的地址不是广播地址,然后向网络上的各个节点发送这个ARP查询包,最后通过各个节点的回应来判断是否处于混杂模式。

下面我们讨论一下整个ARP请求/响应的操作过程。首先,产生一个ARP查询包来解析192.168.1.10的硬件地址。为了使网络上的所有节点都能够收到这个查询包,把这个包的目的地址设置为广播地址。理论上,只有IP地址为192.168.1.10的网卡才能对这个查询包进行响应。江门发票

进一步设想,如果我们把这个查询包的目的地址(以太网地址)设置为另外的地址,而不是原来的广播地址又将如何?例如:我们把查询包的目的地址设置为00-00-00-00-00-01会发生什么?处于正常模式下网络节点的以太网卡会认为这个查询包是发往其它主机的,其硬件过滤器会拒绝接收这个包;然而,如果这个网络节点(192.168.1.10)的以太网卡处于混杂模式(promiscuous mode)下,那么即使以太网地址不匹配,其硬件过滤器也不进行任何过滤,从而使这个查询包能够进入到系统的内核。因为这个节点的IP地址和查询包的要查询IP地址相同,其内核就会认为ARP查询包到达,应该作出应答。但是,另我们吃惊的是,这个处于混杂模式节点的内核不会应答ARPR查询包。这种出人意料的结果说明这个包被系统内核过滤掉了。在这里我们把这叫作软件过滤器。



再进一步,我们可以通过区别硬件过滤器和软件过滤器的不同特征来检测处于混杂模式的网络节点。硬件过滤器一般会阻塞所有无效的分组(这些分组显然不会进入系统内核),因此能够通过硬件过滤器一般也能够通过软件过滤器,这种情况我们不多做讨论。现在我们需要构造应该被被硬件过滤器阻塞,但是却能够通过软件过滤器的报文。如果把这种报文送到各个网络节点,那么处于普通模式下的网络节点将不做应答;而处于混杂模式的节点会进行应答。
6.软件过滤器


软件过滤器依赖于操作系统的内核,因此有必要理解系统内核软件过滤器是如何工作的。Linux是开放源玛系统,因此我们能够获得其软件过滤机制。但是对于Micro$oft Windows我们只有凭经验猜测了:(

电脑知识与技术1).Linux

Linux的以太网驱动模块中,分组是以硬件地址分类的。

广播包
FF FF FF FF FF FF



多投点分组
所有的分组都有一个组标志位集合,不包括广播分组。


TO_US分组
目的地址和本机网卡相同的分组。


OTHERHOST分组
所有目的地址和本机网卡不同的分组。


现在,我们假设具有组标志位的所有分组都是广播分组。IP网络对应的以太网多投点分组的目的地址是01-00-5e-xx-xx-xx,而且,通过校验组标志位本来就不能对多投点分组进行分类。这个假设并不错误,因为01-00-5e-xx-xx-xx是一个基于IP的多投点地址,但是网卡硬件地址还用于其它高层协议。

下面,我们看一下ARP模块的代码。

if (in_dev == NULL ||
arp->ar_hln != dev->addr_len ' '
dev->flags & IFF_NOARP ||
skb->pkt_type == PACKET_OTHERHOST ||
skb->pkt_type == PACKET_LOOPBACK ||
arp->ar_pln != 4)
goto out;

Linux内核的ARP模块拒绝所有OTHERHOST类型的分组。接着,ARP模块将处理广播、多投点和TO_US类型的分组。表1综合了硬件过滤器和软件过滤器对各种ARP分组的过滤处理,1说明:hw(hardware)sw(software)res.(response)肌肉松弛剂gr(group)



下面,后我们将对这六硬件地址的分组进行详细描述:
TO_US
网卡在正常模式下,所有地址为TO_US的分组都能够通过精简过滤器和软件过滤器。因此,不管网卡是否处于混杂模式(promiscuous mode)下,ARP模块都会对其进行响应。

本文发布于:2024-09-24 21:15:25,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/233648.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:网络   地址   分组
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议