找回密码
 注册
搜索
热搜: 回贴
微赢网络技术论坛 门户 安全攻防 查看内容

局域网中防范非法IP地址

2009-12-14 01:22| 发布者: admin| 查看: 19| 评论: 0|原作者: 慕容紫英

由于目前Windows操作系统的使用非常普遍,而且可以十分方便地修改本机IP地址,所以在许多单位局域网内的IP地址使用情况十分混乱。即使有些单位在网关出口采用了IP地址和MAC地址的绑定技术,但只能针对管理通过网关的网络访问。对于一个非法的IP地址,并不能在局域网内将其完全隔离,非法IP地址用户仍能利用Windows操作系统的漏洞,或直接通过“网上邻居”来访问局域网中的共享文件夹。据杭州的一个建筑设计院提供信息:外来非法用户用笔记本接入局域网,删除了存放在共享文件服务器上的设计图纸,造成无法按时完成合同,对该单位的声誉和经济造成严重损失。

在本文中,介绍一种基于SNIFFER技术在共享式局域网中防范非法IP地址使用的软件实现方法。

相关基础技术

局域网协议基础

我们知道,一台计算机若要接入局域网,必须有一个网络适配器,也就是通常所说的网卡。连接局域网的各个计算机的设备有路由器、交换机、交换式HUB和共享式HUB。在小型企业和普通学校中使用比较普遍的是共享式HUB,共享式HUB有一个特点:就是网络上的数据包是以广播方式传播,即每一个数据包都会经过每一块网卡。

在局域网的信息包都有一个相同的协议包头,前6字节为目的MAC地址,后6字节为源MAC地址,最后两个字节有两种含义:如果传输的是TCP/IP协议,那么这两个字节表示上层的协议号,比如上层若是IP协议,则这两个字节分别为80 00;若传输的是802.3局域网协议,则这两个字节代表整个后续数据包的长度。

每一个网卡都有一个唯一的MAC地址,目前的MAC地址长度通常为6字节。在局域网中若有两台计算机进行交换数据,则在数据的发送和接收操作步骤大致如下:

发送方A取得本机网卡的MAC地址和目标计算机的MAC地址,封装成以太网包头,加在上层数据前面,然后交给物理层发送到网络上。

接收方B的网卡一直在“监听”网络上传输的每一个数据包,然后比较每个数据包的目的MAC地址是否与自己的MAC地址相等,若是,则收下这个数据包,并且将其剥离以太网包头后交给上层协议或者应用进程处理。注意:此时接收方B只是将这个数据包从网络上“拷贝”下来,尽管此数据包已经达到了目的计算机并且已经被接收,但是它还是在网络上的其他计算机广播。

SNIFFER技术

SNIFFER技术,也就是网络监听技术,在网络安全上一直是一个比较敏感而常用的技术。作为一种发展比较成熟的技术,监听在协助网络管理员监测网络传输数据,排除网络故障等方面具有不可替代的作用,因而一直倍受网络管理员的青睐。

如上所述,在一个共享式网络中,数据包是以广播方式传播的,这样每一个网卡都能“听到”网络上传输的每一个数据包。在正常情况下,网卡只是接收目的MAC地址与自己的MAC地址相等的数据包。但是,我们可以通过一些设置,迫使网卡接收全部它所“听到”的数据包,此时网卡就处于“混杂”模式。这样,我们就能获得所有我们所需要的数据包,虽然我们并非是这些数据包的真正接收者。

当然,一个处于“混杂”模式的网卡并不一定要安装在共享式网络中。我们可以根据需要,将它安装在网络主干节点、重要内容服务器的入口处等,监视所有通过的网络数据。

在这些技术基础上,我们就可以通过自己编写软件来解决局域网内的IP地址管理问题。

协议分析

以下分析一下安装有Windows操作系统的计算机登陆到局域网的过程。

Windows操作系统缺省安装以下三个网络组件:

● Microsoft网络客户端
● Microsoft网络的文件和打印机共享
● Internet协议(TCP/IP)

在启动计算机后,首先,系统取得本机设定的静态IP地址(比如是10.2.1.168),然后发出ARP查询广播包,该查询包的目标IP地址和源IP地址均被设置成10.2.1.168,源MAC地址设置成该计算机的MAC地址,目标MAC地址设成空,协议解析如图1。




图1
发出该ARP广播查询包的目的是:目前在网络上是否有计算机正在使用10.2.1.168的IP地址?此ARP包一共要发出三次,在等待了三次之后,如果该计算机没有收到回应ARP包,即认为目前没有计算机正在使用这个IP地址,那么它就认为自己可以使用这个IP地址。

然后,该计算机又将发出三次NetBIOS的名字注册包,在局域网上注册自己的计算机名字(比如是“CHENYANHUA” ):在该数据包中,申明欲注册的计算机名字是“CHENYANHUA”。同样,这个数据包也是发出三次,在三次发出之后如果没有收到回应,那么该计算机即认为自己可以使用这个名字注册。

这样,装有基本协议的计算机的局域网登陆过程就结束了。如果该计算机安装有NetBEUI协议,那么它在发出ARP广播查询包之后将发出NetBEUI的名字查询包,该协议的分析如图2。




图2

在该查询包中,同样是查询“CHENYANHUA”这个计算机名字有没有被别的计算机所使用,三次查询之后,即认为此名字没有被使用。

如果该计算机安装了IPX协议,那么它还将发出IPX上的NetBIOS名字查询包。

IP地址管理的思路

凭着使用Windows操作系统的经验,我们知道,如果在局域网上有一台计算机使用了一个IP地址(比如10.2.1.168),那么,另外一台计算机如果将IP地址修改成10.2.1.168,那么操作系统就会给出“IP地址冲突”的告警信息,而且系统将自动封锁网络连接。同样,如果在局域网上已经有计算机在使用一个名字(比如“CHENYANHUA” ),那么其余的计算机就不能再使用这个名字。

那么,如果现在要阻止将一台确定的计算机登陆局域网,我们可以做如下设想:在未经许可的计算机登陆的时候,在局域网上伪造出一台使用同样IP和名字的计算机,那么Windows系统就会根据网络上的情况自动断开网络连接,这样就达到了阻止对方登陆局域网的目的。

现在就来实现上述想法。我们在局域网的一个子网内设置一台管理机,该管理机上运行监听程序,当非法计算机A联入网络,启动操作系统并发出ARP广播查询包的时候(比如IP地址为“10.2.1.103”),监听程序就获取了这个数据包,当与管理机中已注册的MAC地址比对,发现为非法计算机时,立即伪造一个回应包,告诉计算机A:“此IP我已经使用”(实际上该管理机并没有使用这个IP地址,但是我们可以伪造),具体分析如图3。




图3

注意,在监听到计算机A发出三次ARP查询广播包时,也必须伪造三个数据包给予回应。

同样,在监听到NetBEUI名字查询包的时候,我们构造三个回应包,告诉计算机A该名字已经有人使用。一样的办法,也构造IPX上的NETBIOS名字查询回应包。

这样,当计算机A操作系统完全启动后,会出现两个出错警告:“IP地址冲突”和“网络重命名”,前一个出错信息就是我们构造的ARP回应数据包造成的,而后一个出错信息是我们构造的NetBEUI、IPX和TCP上的NetBIOS回应包共同作用的结果。

这样,在操作系统启动时候的IP地址冲突将造成该系统将自身的IP地址设置为0.0.0.0(在DOS输入ipconfig命令可以看到),此IP是一个无效的IP地址,将无法同网络进行任何在IP层上的数据通信。命名冲突将造成无法进行以名字为目标的网络操作,具体表现就是无法打开“网上邻居”和无法查看任何相邻工作组,这样也就不能获取局域网上的任何共享资源。

最新评论

QQ|小黑屋|最新主题|手机版|微赢网络技术论坛 ( 苏ICP备08020429号 )

GMT+8, 2024-9-30 17:29 , Processed in 0.396845 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

返回顶部