在有些局域网中针对网卡的 MAC 地址设置了限速,特定 MAC 地址的网卡只能获得一个非常慢的网速。
此时,我们可以通过「MAC 地址欺骗」来解除网速限制。
MAC地址欺骗(或MAC地址盗用)通常用于突破基于MAC地址的局域网访问控制,例如在交换机上限定只转发源MAC地址,修改为某个存在于访问列表中的MAC地址即可突破该访问限制,而且这种修改是动态的并且容易恢复。
还有的访问控制方法将IP地址和MAC进行绑定,目的是使得一个交换机端口只能提供给一位用户的一台主机使用,此时攻击者需要同时修改自己的IP地址和MAC地址去突破这种限制。
一、MAC 地址
MAC 地址由 6 个字节组成,前 3个字节是厂商代码 ( OUI ),由国际组织分配给不同的网络设备商;后三个字节是序列号 ( SN ),由厂商分配给它生产的网络设备。

厂商代码和序列号都是唯一分配,因此 MAC 地址是「全球唯一」的。因此,只要路由器上限制了你的 MAC 地址,那不修改 MAC 地址的话你就永远被限制了。
二、修改MAC地址的实质
在不同的操作系统中修改MAC地址有不同的方法,但其实质都是网卡驱动程序从系统中读取地址信息并写入网卡的硬件存储器,而不是实际修改网卡硬件ROM中存储的原有地址,因此攻击者可以为了实施攻击临时修改主机的MAC地址,事后很容易恢复为原来的MAC地址。
三、Windows系统修改无线网卡的 MAC 地址
在Windows中,几乎所有的网卡驱动程序都可以从注册表中读取用户指定的MAC地址,当驱动程序确定这个MAC地址有效时,就会将其编程写入网卡的硬件寄存器中,而忽略网卡原来的MAC地址。
有线网卡的地址有现成的图形界面操作可以设置,但是无线网卡需要通过修改注册表让这个操作显示出来。
(一)通过修改注册表给无线网卡增加修改 MAC 地址的选项
首先,运行注册表编辑器(regedit.exe),跳转到下面位置
\HKEY_LOCALMACHINE\SYSTEM\ControlSet001\Control\Class
在这个位置,按下Crtl+F搜索你的无线网卡的描述信息,定位网卡配置选项在注册表中的位置。网卡的描述信息可以在 CMD 中运行 ipconfig /all 然后去找「描述」后面对应的网卡名称,也可以在「设备管理器」的网络适配器下面找到。
在注册表中,你的网卡的名称会对应在「Adapter Model」这个项下。如下图:

然后我们展开当前所在的「0009」文件夹,在「Ndi\params」子项下新建子项“NetworkAddress”,并新增如下所有键值,增加方式为「右键」-「新建」-「字符串值」:
| (默认) | REG_SZ | (数值为设置) |
| default | REG_SZ | 000000000000 |
| LimitText | REG_SZ | 12 |
| Optional1 | REG_SZ | 1 |
| ParamDesc | REG_SZ | 网络地址 |
| type | REG_SZ | edit |
| UpperCase | REG_SZ | 1 |
设置完成后如下图所示:

此时,我们已经在无线网络连接的配置选项中生成“网络地址”菜单项,并可自由修改MAC地址。
(二)修改无线网卡 MAC 地址
下面的操作流程针对有线网卡也有效。但如果是无线网卡,默认没有“网络地址”这个属性,在使用下面方法修改前首先要进行本章节的第(一)步操作。
打开「开始」菜单,搜索「网络连接」,点击「查看网络连接」。

在弹出的「网络连接」窗口中,右键你的无线网卡,点击「属性」。
在弹出「WLAN 属性」窗口中,点击「配置」。

在弹出的无线网卡属性设置窗口中,找到我们刚才在注册表添加的「网络地址」这个属性,然后在右边输入你想要设置的假的 MAC 地址。

注意,新的 MAC 地址不是随心所欲瞎填的,而是要符合一定的规则:
- 前三个字节表示网卡厂商,如果修改后的网卡地址不属于该厂商,修改后的地址可能会无效,系统只会设置有效的地址,所以必须检查修改后的地址是否生效。
- 无线网卡的MAC值的第二个数只能是2、6、A、E中的一个,否则修改就不会起作用,例如:26-31-B6-24-C2-B1。
当地址修改成功后,注册表会自动在上述表项(即0009)中增加一个“NetworkAddress”的键值。当我们想要恢复无线网卡原本的 MAC 地址时,可以在上图位置勾选「不存在」,此时,则恢复为原有MAC地址,“NetworkAddress”的键值也会消失。
修改成功后,系统会自动重启网卡。我们可以在 CMD 中键入「ipconfig /all」命令检查网卡地址是否已成功更改。




