IP地址盗用技术研究

时间:2022-09-06 09:37:44

IP地址盗用技术研究

摘要:该文提出通过即时查询网络设备的MIB库信息,快速确定盗用IP地址用户所在网络端口,定义了了快速定位――验证模型,最后结合SNMP++编程,给出了具体的实现办法。

关键词:地址盗用;MIB;SNMP

中图分类号:TP393文献标识码:A文章编号:1009-3044(2008)36-2605-03

Reseach on IP Address embezzlement

LI Yuan1,HOU Song-li2

(work Information Center, Henan University, Kaifeng 475001, China;puter Center of Henan University,Kaifeng 475001, China)

Abstract: The paper discusses that through instantly look up the MIB library information of network equipments,we can quickly ascertain the network port which a user who steal an ip address use.It defines the fast locating――verifying model,at last , combine with the SNMP++ programming,the paper gives a specific implementing method.

Key words:address embezzlement;MIB;SNMP

1 引言

随着网络的不断发展,网络规模日益扩大,用户对网络安全及稳定性方面的要求也日益提高。在日常的网络管理中,IP地址的盗用一直是网络管理员比较棘手的问题。

IP地址盗用就是盗用者将本机的IP地址修改为本子网内的另外一个合法用户的IP地址或未分配的IP地址,然后利用该IP地址去访问网络,从而影响合法用户的网络的正常使用。

网络管理部门在规划的网段中,为合法注册用户分配了相应的网络IP地址资源,以保证通信数据的正常传输。以这种方式接入的用户,静态的IP地址是必不可少的配置项目之一,它享有“网络通信身份证”的特权。网络管理员在配置IP地址资源时,对其正确性有特殊的要求,主要表现在以下两个方面:分配的地址应在规划的子网网段范围内;分配的IP地址对任何联网的主机必须是惟一的,即无二义性。然而,IP地址作为接入网络主机的唯一标识、网络管理的重要信息元素,却只是对网络设备、主机有意义,对网络管理部门来讲,并不能从IP地址上识别主机或用户,从而为网络管理带来了障碍。

如果用户在配置TCP/IP或修改TCP/IP配置时,使用的不是网络管理部门分配的IP地址,就形成了IP地址盗用。具体表现为三种方式:

1) 静态修改IP地址

由于IP地址是一个逻辑地址,是一个需要用户设置的值,因此无法限制用户对于IP地址的静态修改,除非使用DHCP服务器分配IP地址,但又会带来其它管理问题。

2) 同时修改IP-MAC地址

MAC地址是设备的硬件地址,对于我们常用的以太网来说,即俗称的计算机网卡地址。每一个网卡的MAC地址在所有以太网设备中必须是唯一的,它由IEEE分配,是在设备出厂时固化在网卡上的,但由于网卡的驱动程序在收发数据包时为了加快处理速度并非每次处理数据帧时都从网卡的ROM中读MAC地址,而是将MAC地址放入缓存中,需要的时候直接从缓存中读取,这种工作机制就造成了用户可以通过专用软件甚至操作系统修改网卡的MAC地址进而达到欺骗上层网络软件的目的。

3) 伪造IP地址

利用编制好的IP欺骗工具,绕过上层网络软件收发数据包。

2 问题分析

目前防止IP地址盗用比较常用的方法是定期扫描网络中各路由器的ARP(address resolution protocol)表,获得当前正在使用的IP地址以及IP-MAC对照关系,与合法的IP地址表,IP-MAC表对照,如果不一致则有非法访问行为发生。另外,从用户的故障报告(盗用正在使用的IP地址会出现MAC地址冲突的提示)也可以发现IP地址的盗用行为。在此基础上,常用的防范机制有:IP- MAC捆绑技术、服务器技术、IP-MAC-USER认证授权以及透明网关技术等。但这些机制都有一定的缺点:如IP-MAC捆绑技术无法防范对修改IP-MAC的盗用行为;服务器技术不适合大规模企业网络的使用;透明网关不能控制来自内部的地址盗用,更重要的是上述机制事实上仅仅是造成了盗用者无法访问三层设备以上的外部资源,由于IP地址盗用者仍然具有该网段内完全活动的自由,因此一方面这种行为会干扰合法用户的使用:另一方面可能被某些有不良企图用户用来攻击该网段内的其他机器和网络设备。如果侦测到服务器的存在,盗用者还可以通过种种手段获得网外资源。所以,亟待解决的问题是如何快速定位盗用者所在的用户端口并快速实现阻断。

一般情况下,在进行网络综合布线的同时,施工单位会获得网络设备端口与具体物理位置(用户)的对应关系,如果能把IP地址对应的端口找到,就可以通过查找该端口所在物理位置确定用户所在。而网络设备的MIB库中就记录了数据包的IP地址和MAC信息,为查找端口提供了基础。

网络从上至下可分为核心层、汇聚层和接入层,位于不同层次的网络设备中存储着不同的MIB库,对应相应的IP―MAC地址和相应的物理端口,可以通过网络设备的逐层分析,定位目标IP所处的网络端口位置。要从位于不同层次的网络设备中提取到相应的ARP的信息,就要进行基于网络的SNMP(简单网络管理协议)分析。SNMP协议目前最常用的有两个版本,通常称之为v1和v2。一般情况下v2向下兼容v1版。

SNMP标准主要由三部分组成:简单网络管理协议(SNMP);管理信息结构(Structure of Management Information,简称SMI,RFC1155标准)和管理信息库(MIB,RFC1156、RFC1158标准)。管理信息结构(SMI)和管理信息库(MIB)两个协议是关于管理信息的标准,它们规定了被管理网络对象的定义格式、MIB库中都包含哪些对象以及怎样访问这些对象等等。SMI协议规定了定义和标识MIB变量的一组原则。它规定所有的MIB变量必须用ASN.1(即抽象语法表示法I,它是一种描述数据结构的通用方法。

SNMP MIB管理信息库的存储方式是一种目录树的结构,而且它总是开始于:iso. Org. Dod翻译成数字就是1.3.6,这就是我们所说的MIB(Management Information Base,管理信息库)的格式,而关于物理地址的MIB就是:iso. Org. Dod. Internet. Mgmt. Mib. At. AtTable. AtEnty. AtPhysAddress(1.3.6.1.2.1.3.1.1.2)。

每个MIB变量都有一个名称用来标识。在SMI中,这个名称以对象标识符(Object Identifier)来表示。对象标识符相互关联,共同构成一个分层结构。在这个分层结构里,一个对象的标识符是由从根出发到对象所在节点的途中所经过的一个数字标号序列组成。如图1中,Internet的对象标识符就是1.3.6.1,对象标识符的命名由专门的机构负责。

在Internet节点下的mgmt节点,专门为管理信息库分配了一个子树,名为mib(1)。所有的MIB变量都在mib节点下,因此它们的名称(对象标识符)都以.dod.internet.mgmt.mib开始,数字表示是1.3.6.1.2.1。MIB变量的命名实际上是引用了ISO的对象标识(OIDObject Identfier)名字空间管理,表示法分为整数标识法和字符标识法两种,前者适合软件实现,后者便于理解。

图1 SNMP树形表格示意图

图2 SNMP体系结构

3 定位模型

路由器中的路由表MIB中存有网络中工作站IP地址与MAC地址的对应表。在CISCO路由器的路由表中,这种信息一般放在树型结构的{1.3.6.1.2.1.3.1.1.2.0.0.1.47}位置中,比如:一个IP地址为10.169.169.2的机器,它的MAC地址就存放在MIB表中{1.3.6.1.2.1.3.1.1.2.0.0.1.47}+{10.169.169.2}的这个位置上,知道了这个表结构后,我们就可以通过编写CGI程序来调用SNMP,读取MIB管理信息表中的MAC地址。

我们调用简单网络管理协议SNMP从设备的MIB库中获取有用信息,SNMP体系结构如图2所示。SNMP协议是运行在UDP(用户数据报协议)之上的应用层协议。SNMP系统一部分由Agent(分布式)软件组成,它运行在服务器、路由器等被管理的对象上。每一个Agent都有一个MIB(Management Information base 管理对象信息库)及一些与具体设备有关的变量。SNMP系统的另一关键部分是网络管理站(NMS Network Management Station),它具有全部被管对象的主数据库。

Agent在网管系统结构的位置相当于管理器和被管设备之间的网关和协议转换器。Agent的功能需求的范围应该为:

1) 协议转换:实现SNMP协议和被管设备之间的协议互相转换

2) 转发请求:包括向被管设备转发查询,设置请求;向Manager转发设备产生的告警信息

3) 通过MIB库维护被管设备的信息结构

4) 对Manager提供一个统一的网管接口,无论被管设备有多复杂,对Manager来说只需要和Agent交互就可以获得所有被管设备的网管信息

5) 不需要牵涉诸如轮巡,告警策略等网管业务逻辑。也不参与被管设备本身对网管数据的处理流程。这些由被管设备的网管业务逻辑层自行处理。

6) 不需要对数据进行统计分析

7) 不需要保存历史或实时网管数据

SNMP以GET-SET方式替代了复杂的命令集。SNMP协议现在有3个版本。其中SNMPv1定义了5种用于管理进程和Agent之间交换信息的报文格式:

get-request 从agent上读取数值

set-request 对agent上的变量进行设置

get-next-request 从agent上读取当前所读参数的下一个参数值,用于表的遍历

get-reponse agent对前面三个操作的响应,返回参数值

trap agent主动向 Manager发送的报文,通知事件的发生。

我们可以利用上述五种报文从MIB库中获取相关信息,从而有针对性的设置参数。从上可以获取公开源代码的SNMP开发工具SNMP++v3.2,使用该软件包可以获取MIB信息并实现对目标端口的控制。

MIB表是通过行和列来描述的。其中列表头是各个表项的原始Oid,而行表头则是index。这样以来一个Oid和一个index就唯一地确定了表中的一项。比如在接口表中,ifDescr(Oid为1.3.6.1.2.1.2.2.1.2)为一列,而具体对于某一个接口则为一行。这样,某一具体表项的Oid就表示为:列Oid+index的形式。按照RFC1213描述,最基本的方法是通过index来获取某一表项。但事实上,index本身也是一个表项,再加之有些表需要多个index,并且各种index的数据类型不同,比如要手工处理ip地址类型的index就比较困难,所以这种方法具有很难的操作性。因此,在实际编程时,可以采取如下方法:

从Snmp中对于get报文的描述可知,如果get-ext的参数为一个表中某一列的表头Oid,比如前面的ifDescr(1.3.6.1.2.1.2.2.1.2),则得到的值为该列第一行元素值,并可得到该值的Oid。再对取得的Oid使用GetNext就可获得该列第二行的值。如此下去,如果到了该列的最后一行,那么用GetNext将得到下一列的第一行。如果到了该表的最后一个元素,那么用GetNext将得到按MIB树所得的下一个元素值。显然,在越界的情况下,其Oid的前部分已不同于本列表头的Oid,所以,可以通过得到的Oid值来判断是否越界。

获取了MIB信息,我们定义“验证――定位模型”如下:

1) 从核心设备上根据IP-ARP表确定MAC地址。主要读取表ipNetToMediaTable中的两项:ipNetToMediaNetAddress(存放IP地址信息)和ipNetToMediaPhysAddress(存放MAC地址信息)。利用snmp_get_net()遍历表ipNetToMedia NetAddress获取指定的IP的索引值x,使用snmp+get(x)命令报文获取指定IP对应的MAC地址;

2) 确定MAC地址对应的汇聚层设备。根据获取的MAC地址,利用snmp_get()读取表dot1dTpFdbPort,获得MAC对应的端口号p,查找存储拓扑结构信息的MIB,确定核心设备上端口p所连接的汇聚层设备;

3) 在汇聚层设备上重复1、2两个步骤,进而确定接入层是哪个设备;

4) 在接入层设备根据MAC地址确定目标主机所连接的端口;

5) 发送snmp_set( )至接入层设备的MIB库中的表项mib-2.interfaces.ifTable.ifEntry.ifOperStatus将其值设为“2”(关闭)

至此,我们实现了对目标主机的快速定位、验证和阻断。

4 结束语

由于上述涉及到的MIB表项均属于由IEEE的标准MIB库,所以目前网络中绝大多数支持SNMP的设备均可方便采用该方式实现对地址盗用主机的快速定位和阻断,而与设备的型号、种类无关,大大减轻了网络管理员的工作量。

通过对网络设备MIB信息的采集和分析,利用SNMP编程接口可以开发各种网络管理程序,实现网络设备信息的自动采集和对设备的管理,缩短了网络排障时间,提高了网络系统运行的稳定性、安全性及可靠性。

参考文献:

[1] IETF RFC1213./rfc/.

[2] STALLINGS.W.SNMP网络管理[M].北京:中国电力出版社,2001.

[3] 李霞,胡伟.基于SNMP的IP地址盗用解决方案[J].绵阳师范学院学报,2005(2): 31-33,49.

上一篇:基于SOA的防汛防旱指挥系统的设计与实现 下一篇:基于PCA/SOFM混合神经网络的矢量量化