IP MAC捆绑原理及缺陷的讨论
ideal(2001-06-07 22:33)
〖返回〗〖转发〗
路由器从外面收到发给子网的包时,直接用其事先存储的 ARP 表查出对应 MAC 地址
而以这个MAC地址为目的MAC地址在子网内发包 , 这样没有注册的网卡就收不到外面来
的包.
但这种方法有缺陷,就是对发出的包不检查,即使网卡MAC 是未登记的, 也可以向外
发数据包,而且可以用伪造的IP, 当然有的路由器检查源IP的范围, 这时候伪造的IP
也必须属于子网内的IP.
我们这里的路由器则更土, 把没有登记的IP 对应的 MAC 设为 0123456789AB , 所以
只要把网卡的 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中写入帧的呢?答案是否定的。
实际上在网卡中有一地址寄存器,该处也记着MAC地址,网卡组帧时所用的MAC
地址即从此处读出,然后由硬件写入帧中,而地址寄存器的内容则是程序在网卡
初始化时从ROM中读出写入的,用图表示如下:
——————— ——————— ————
| ROM | |地址寄存器 | | 帧 |
--------------- -------------- -------
| | | |
|-----程序----------------| |————硬件------
由此过程可以看出,程序部分是唯一一部分可以用来修改MAC的部分,即我们可以截取
网卡驱动程序中该部分代码,进行修改以修改MAC。
如果HUB换用Switch, 某些Switch可以锁定端口和MAC, 某个端口只允许指定
MAC接入, 再加上IP-MAC绑定, 还要加上将Switch锁起来, 情况回好些. 这时
别人要盗用IP除了要改IP,改MAC,还要将机器搬过来换网线:).
有这个问题, 好象TCP/IP启动时会先发ARP广播一下自己的IP和MAC(?) 不知到95/NT
是否会检测到这个. 我的试验是在两台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
两条命令就搞定了...
----------摘自清华BBS