当前位置--> 首 页 --> 文 章 -->Network

※阅读文章※

IP MAC捆绑原理及缺陷


作者:不祥 [文章出自: www.fanqiang.com]

路由器从外面收到发给子网的包时,直接用其事先存储的 ARP 表查出对应 MAC 地址而以这个MAC
地址为目的MAC地址在子网内发包 , 这样没有注册的网卡就收不到外面来的包.  但这种方法有缺
陷,就是对发出的包不检查,即使网卡MAC 是未登记的, 也可以向外发数据包,而且可以用伪造
的IP, 当然有的路由器检查源IP的范围, 这时候伪造的IP也必须属于子网内的IP. 
  我们这里的路由器则更土, 把没有登记的IP 对应的 MAC 设为23456789AB , 所以只要把网卡
  的 MAC 改成这个通用 MAC , 就可以以任何没有登记的 IP 出去, 至于钱就不知道记在哪个倒
  霉鬼的头上了. 
  从根本上说,采用 IP-MAC 来防止IP 盗用是不行的,所有的网卡 MAC 都可以修改而且更让人吃
  惊的是网卡发出的包的源 MAC 地址并不是网卡本身写上去的, 而是应用程序提供的,只是在通
  常的实现中,应用程序先从网卡上得到了MAC地址,每次发送包的时候用这个MAC 地址作为源MAC
  地址而已,所以完全可以不用! 网卡带的配置程序修改MAC仅仅靠修改网络的驱动程序就可以改MAC .
  在 pkt-driver + win31 的环境下我已经测试过的确是可以的,win95 下利用 NDIS 也是可以的。 
  对于基于连接的TCP协议来说,伪造IP就不是太容易, 这就涉及到 TCP 连接序号的预测的问题,
  这里面有很多的学问了,国外有很多Hack站点有这些方面问题的讨论. 

这个嘛....说实话,我也没干过.... 
只是曾和这样的人聊过,方法: 
1.直接对网卡操作,改其EPROM内容(以太网卡的地址正是存在此) 
2.现在有的网卡据说驱动就能改网卡地址,以前有人讨论过的,你可找找... 
其实我也很想实验下,苦于无法详细了解具体细节,老兄要是 
有了进一步的体会心得,还望不吝赐教. 


初次发表文章,我这里献丑了,先将我对王卡的一些研究与大家分享。 
我们知道网卡有一个唯一表示其地址的物理地址,该地址写在ROM中(不管该ROM 
是EEPROM或ROM),在网卡组帧时需要将该网卡地址写入帧中,那么网卡在写入 
帧中时是否是将MAC地址直接从ROM中写入帧的呢?答案是否定的。 
实际上在网卡中有一地址寄存器,该? σ布亲臡AC地址,网卡组帧时所用的MAC 
地址即从此处读出,然后由硬件写入帧中,而地址寄存器的内容则是程序在网卡 
初始化时从ROM中读出写入的,用图表示如下: 
                  ———————          ———————           ———— 
                 |  ROM        |          |地址寄存器  |          | 帧    | 
                 ---------------          --------------           ------- 
&nbs! p;                    |                         |  |                 | 
                     |-----程序----------------|  |————硬件------ 
由此过程可以看出,程序部分是唯一一部分可以用来修改MAC的部分,即我们可以截取网卡驱动程序
中该部分代码,进行修改以修改MAC。 


如果HUB换用Switch, 某些Switch可以锁定端口和MAC, 某个端口只允许指定 
MAC接入, 再加上IP-MAC绑定, 还要加上将Switch锁起来, 情况回好些. 这时 
别人要盗用IP除了要改IP,改MAC,还要将机器搬过来换网线:). 

  有这个问题, 好? 骉CP/IP启动时会先发ARP广播一下自己的IP和MAC(?) 不知到95/NT & nbsp;是
  否会检测到这个. 我的试验是在两台Linux上做的(许多实验室都用Linux跑router)  至少
  ifconfig后两台机器都没有给出信息(在前台, 没看log). 这里的关键在于那合法  IP的MAC地址
  是在router处定好的(static), router不会发ARP查询 MAC, 因此至少  从router外来的包ARP不
  会乱(也就是一直用合法IP机的MAC), 而盗用IP的目的当然不会  是在subnet内转悠 :-) 相当于
  盗用IP机进入promisc模式, 从合法IP机的包中取出属于  自己的IP包(port不对的丢弃). 经实
  验, ping, traceroute等ICMP双方(合法非法IP机)可以用, UDP也可以(DNS实验). 但TCP不
  行(telnet, ftp等), 我看看source到底是怎么回事, 现在是合法IP机TCP可用, 盗用者不可用... 

  要是TCP也可以了, 那盗用IP岂非很简单, 根本不用改什么MAC, ifconfig/route  两条命令就搞定了... 

文章加入时间: 2004-11-17 14:49:39 责任编辑: w9   (3186 人次查阅)
 
Copyright © 1998-2004 中国PHP联盟 All rights reserved.