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 | 
|