引言
对IP地址盗用的解决方案绝大多数都是采取MAC与IP地址绑定策略这种做法是十分危险的本文将就这个问题进行探讨在这里需要声明的是本文是处于对对MAC与IP地址绑定策略安全的忧虑不带有任何黑客性质
为什么要绑定MAC与IP 地址
影响网络安全的因素很多IP地址盗用或地址欺骗就是其中一个常见且危害极大的因素现实中许多网络应用是基于IP的比如流量统计账号控制等都将IP地址作为标志用户的一个重要的参数如果有人盗用了合法地址并伪装成合法用户网络上传输的数据就可能被破坏窃听甚至盗用造成无法弥补的损失
盗用外部网络的IP地址比较困难因为路由器等网络互连设备一般都会设置通过各个端口的IP地址范围不属于该IP地址范围的报文将无法通过这些互连设备但如果盗用的是Ethernet内部合法用户的IP地址这种网络互连设备显然无能为力了道高一尺魔高一丈对于Ethernet内部的IP地址被盗用当然也有相应的解决办法绑定MAC地址与IP地址就是防止内部IP盗用的一个常用的简单的有效的措施
MAC与IP 地址绑定原理
IP地址的修改非常容易而MAC地址存储在网卡的EEPROM中而且网卡的MAC地址是唯一确定的因此为了防止内部人员进行非法IP盗用(例如盗用权限更高人员的IP地址以获得权限外的信息)可以将内部网络的IP地址与MAC地址绑定盗用者即使修改了IP地址也因MAC地址不匹配而盗用失败而且由于网卡MAC地址的唯一确定性可以根据MAC地址查出使用该MAC地址的网卡进而查出非法盗用者
目前很多单位的内部网络尤其是学校校园网都采用了MAC地址与IP地址的绑定技术许多防火墙(硬件防火墙和软件防火墙)为了防止网络内部的IP地址被盗用也都内置了MAC地址与IP地址的绑定功能
从表面上看来绑定MAC地址和IP地址可以防止内部IP地址被盗用但实际上由于各层协议以及网卡驱动等实现技术MAC地址与IP地址的绑定存在很大的缺陷并不能真正防止内部IP地址被盗用
破解MAC与IP地址绑定策略
IP地址和MAC地址简介
现行的TCP/IP网络是一个四层协议结构从下往上依次为链路层网络层传输层和应用层
Ethernet协议是链路层协议使用的地址是MAC地址MAC地址是Ethernet网卡在Ethernet中的硬件标志网卡生产时将其存于网卡的EEPROM中网卡的MAC地址各不相同MAC地址可以唯一标志一块网卡在Ethernet上传输的每个报文都含有发送该报文的网卡的MAC地址
Ethernet根据Ethernet报文头中的源MAC地址和目的MAC来识别报文的发送端和接收端IP协议应用于网络层使用的地址为IP地址使用IP协议进行通讯每个IP报文头中必须含有源IP和目的IP地址用以标志该IP报文的发送端和接收端在Ethernet上使用IP协议传输报文时IP报文作为Ethernet报文的数据IP地址对于Ethernet交换机或处理器是透明的用户可以根据实际网络的需要为网卡配置一个或多个IP地址MAC地址和IP地址之间并不存在一一对应的关系
MAC地址存储在网卡的EEPROM中并且唯一确定但网卡驱动在发送Ethernet报文时并不从EEPROM中读取MAC地址而是在内存中来建立一块缓存区Ethernet报文从中读取源MAC地址而且用户可以通过操作系统修改实际发送的Ethernet报文中的源MAC地址既然MAC地址可以修改那么MAC地址与IP地址的绑定也就失去了它原有的意义 破解方案
下图是破解试验的结构示意图其内部服务器和外部服务器都提供Web服务防火墙中实现了MAC地址和IP地址的绑定报文中的源MAC地址与P地址对如果无法与防火墙中设置的MAC地址与P地址对匹配将无法通过防火墙主机和内部服务器都是内部网络中的合法机器主机是为了做实验而新加入的机器安装的操作系统是W企业版网卡是Com的
试验需要修改主机中网卡的MAC和IP地址为被盗用设备的MAC和IP地址首先在控制面板中选择网络和拨号连接选中对应的网卡并点击鼠标右键选择属性在属性页的常规页中点击配置按钮在配置属性页中选择高级再在属性栏中选择Network Address在值栏中选中输人框然后在输人框中输人被盗用设备的MAC地址MAC地址就修改成功了
然后再将IP地址配置成被盗用设备的IP地址盗用内部客户机IP地址将主机的MAC地址和IP地址分别修改为主机的MAC地址和IP地址主机可以访问外部服务器能够顺利地通过防火墙访问权限与主机没有分别而且与此同时主机也可以正常地访问外部服务器完全不受主机的影响无论是主机还是防火墙都察觉不到主机的存在主机如果访问内部服务器根本无需通过防火墙更是畅通无阻了
盗用内部服务器IP地址将主机的MAC地址和U地址修改为内部服务器的MAC地址和IP地址主机也提供Web服务为了使效果更明显主机上提供的Web服务内容与内部服务器提供的内容不同
因为在实际的实验中主机与主机连在同一个HUB上主机的访问请求总是先被主机响应主机期望访问的是内部服务器得到的却总是主机提供的内容更一般地主机如果试图访问内部服务器获得的到底是主机提供的内容还是内部服务器提供的内容具有随机性要看它的访问请求首先被谁响应在后面的分析中我们将进一步对此进行阐述
盗用服务器的MAC和IP危害可能更大如果主机提供的Web内容和内部服务器中的内容一样那么主机将无法识别它访问的到底是哪个机器如果Web内容中要求输人账号密码等信息那么这些信息对于主机来说则是一览无遗了
破解成功的原因
上面的实验验证了绑定MAC地址与IP地址的确存在很大的缺陷无法有效地防止内部IP地址被盗用接下来将从理论上对该缺陷进行详细的分析
缺陷存在的前提是网卡的混杂接收模式所谓混杂接收模式是指网卡可以接收网络上传输的所有报文无论其目的MAC地址是否为该网卡的MAC地址正是由于网卡支持混杂模式才使网卡驱动程序支持MAC地址的修改成为可能否则就算修改了MAC地址但是网卡根本无法接收相应地址的报文该网卡就变得只能发送无法接收通信也就无法正常进行了
MAC地址可以被盗用的直接原因是网卡驱动程序发送Ethernet报文的实现机制Ethernet报文中的源MAC地址是驱动程序负责填写的但驱动程序并不从网卡的EEPROM中读取MAC而是在内存中建立一个MAC地址缓存区网卡初始化的时候将EEPROM中的内容读入到该缓存区如果将该缓存区中的内容修改为用户设置的MAC地址以后发出去的Ethernet报文的源地址就是修改后的MAC地址了
如果仅仅是修改MAC地址地址盗用并不见得能够得逞Ethernet是基于广播的Ethernet网卡都能监听到局域网中传输的所有报文但是网卡只接收那些目的地址与自己的MAC地址相匹配的Ethernet报文如果有两台具有相同MAC地址的主机分别发出访问请求而这两个访问请求的响应报文对于这两台主机都是匹配的那么这两台主机就不只接收到自己需要的内容而且还会接收到目的为另外一台同MAC主机的内容
按理说两台主机因为接收了多余的报文后都应该无法正常工作盗用马上就会被察觉盗用也就无法继续了但是在实验中地址被盗用之后各台实验设备都可以互不干扰的正常工作这又是什么原因呢?答案应该归结于上层使用的协议
目前网络中最常用的协议是TCP/IP协议网络应用程序一般都是运行在TCP或者UDP之上例如实验中Web服务器采用的HTTP协议就是基于TCP的在TCP或者UDP中标志通信双方的不仅仅是IP地址还包括端口号在一般的应用中用户端的端口号并不是预先设置的而是协议根据一定的规则生成的具有随机性像上面利用IE来访问Web服务器就是这样UDP或者TCP的端口号为位二进制数两个位的随机数字相等的几率非常小恰好相等又谈何容易?两台主机虽然MAC地址和IP地址相同但是应用端口号不同接收到的多余数据由于在TCP/UDP层找不到匹配的端口号被当成无用的数据简单地丢弃了而TCP/UDP层的处理对于用户层来说是透明的所以用户可以正确无误地正常使用相应的服务而不受地址盗用的干扰
当然某些应用程序的用户端口号可能是用户或者应用程序自己设置的而不是交给协议来随机的生成那么结果又会如何呢?例如在两台MAC地址和IP地址都相同的主机上启动了两个端口相同的应用程序这两个应用是不是就无法正常工作了呢?其实不尽然
如果下层使用的是UDP协议两个应用将互相干扰无法正常工作如果使用的是TCP协议结果就不一样了因为TCP是面向连接的为了实现重发机制保证数据的正确传输TCP引入了报文序列号和接收窗口的概念在上述的端口号匹配的报文中只有那些序列号的偏差属于接收窗口之内的报文才会被接收否则会被认为是过期报文而丢弃TCP协议中的报文的序列号有位每个应用程序发送的第一个报文的序列号是严格按照随机的原则产生的以后每个报文的序列号依次加
窗口的大小有位也就是说窗口最大可以是而序列号的范围是主机期望接收的TCP数据的序列号正好也处于对方的接收范围之内的概率为/可谓小之又小 TCP的序列号本来是为了实现报文的正确传输现在却成了地址盗用的帮凶
解决MAC与IP地址绑定被破解的方法
解决MAC与IP地址绑定被破解的方法很多主要以下几种
交换机端口MAC地址和IP地址三者绑定的方法代理服务与防火墙相