MAC地址欺骗(原理及实验)
MAC地址欺骗
MAC地址欺骗(或MAC地址盗用)通常用于突破基于MAC地址的局域网访问控制,例如在交换机上限定只转发源MAC地址修改为某个存在于访问列表中的MAC地址即可突破该访问限制,而且这种修改是动态的并且容易恢复。还有的访问控制方法将IP地址和MAC进行绑定,目的是使得一个交换机端口只能提供给一位用户的一台主机使用,此时攻击者需要同时修改自己的IP地址和MAC地址去突破这种限制。
在不同的操作系统中修改MAC地址有不同的方法,其实质都是网卡驱动程序从系统中读取地址信息并写入网卡的硬件存储器,而不是实际修改网卡硬件ROM中存储的原有地址,因此攻击者可以为了实施攻击临时修改主机的MAC地址,事后很容易恢复为原来的MAC地址。
Windows系统下修改MAC地址的方法
在Windows中,几乎所有的网卡驱动程序都可以从注册表中读取用户指定的MAC地址,当驱动程序确定这个MAC地址有效时,就会将其编程写入网卡的硬件寄存器中,而忽略网卡原来的MAC地址。
在网卡的【配置】-【高级】-【网络地址】菜单项中修改,系统会自动重启网卡,修改后可以在控制台窗口中键入“ipconfig /all”命令检查网卡地址是否已成功更改,如果选择【不存在】则恢复为原有MAC地址。该方法针对有线网卡有效,但是无线网卡默认没有“网络地址”,无法使用这种方法修改。
方法一
实验:
新建一个Windows 7 x64 家庭版的虚拟机,网卡使用桥接模式;

然后在网络和共享中心打开更改适配器设置;

右键,属性;

点击配置;

修改MAC地址并确定后,系统会自动重启网卡;

在命令行输入“ipconfig /all”可以看到网卡的地址已经修改成功;

选择“不存在”后,再次查看发现已经恢复为原有MAC地址;

方法二
可以看到在无线网卡的配置里没有网络地址的键值;

直接修改注册表,生成与第一种方法相同的针对无线网卡的“网络地址”设置。
运行注册表编辑器(regedit.exe),在“\HKEY_LOCALMACHINE\SYSTEM\ControlSet001\Control\Class”键下搜索网卡的描述信息,定位网卡配置选项在注册表中的位置;

无线网卡的对应配置选项在注册表项“HKEY_LOCAL_MACHIN\SYSTEM\ControlSet001\Control\Class\{4d36e972-e325-11ce-bfc1-08002be10318}\0003”内;
然后在“Ndi\params”子项下新建子项“NetworkAddress”,并新增如下所有键值:
|
(默认) |
REG_SZ |
(数值未设置) |
|
default |
REG_SZ |
000000000000 |
|
LimitText |
REG_SZ |
12 |
|
Optional |
REG_SZ |
1 |
|
ParamDesc |
REG_SZ |
网络地址 |
|
type |
REG_SZ |
edit |
|
UpperCase |
REG_SZ |
1 |

即可在无线网络连接的配置选项中生成“网络地址”菜单项,并可自由修改MAC地址;
当地址修改成功后,注册表会自动在上述表项(即0003)中增加一个“NetworkAddress”的键值;
也可以将以下文本导入注册表(保存为.reg后缀的文件名),也可产生同样的效果。
[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Class\{4d36e972-e325-11ce-bfc1-08002be10318}\0003\Ndi\Params\NetworkAddress]
“default” = “000000000000”
“optional” = “1”
“ParamDesc” = “网络地址”
“type” = “edit”
“UpperCase” = “1”
“LimitText” = “12”

可以看到无线网卡中出现了网络地址的键值,进行修改;

可以看到注册表中多了MAC地址;

但是在命令行输入“ipconfig /all”查看的时候发现MAC地址并没有改变;
原因查找:修改网卡地址时需要注意前三个字节表示网卡厂商,如果修改后的网卡地址不属于该厂商,修改后的地址可能会无效,系统只会设置有效的地址,所以必须检查修改后的地址是否生效,以及无线网的MAC值的第二个数只能是2、6、A、E中的一个,否则修改就不会起作用;

再次尝试修改;

修改成功;
Linux系统下修改MAC地址的方法
方法一
在Linux系统下修改MAC地址十分方便,只要网卡的驱动程序支持修改网卡的物理地址,即可应用三条“ifconfig”命令完成地址修改任务:①禁用网卡;②设置网卡的MAC地址;③启用网卡。(论将大象放入冰箱的步骤= =);
eth0是网卡名,ether表示是以太网类型的网卡,“0000aabbccff”是随机设置的一个地址,使用“ifconfig eth0”即可查看地址修改是否已经生效。不过使用该方法有一点不方便的是,用户需要自行保存原有的MAC地址,然后再用相同的方法恢复。
三条命令:
ifconfig eth0 down
ifconfig eth0 hw ether 0000aabbccff
ifconfig eth0 up
实验:
打开kali-linux虚拟机;

方法二
使用地址修改工具macchanger,他不需要用户保存原有地址即可自动恢复。不但可以修改为原有MAC地址为同一个厂家的随机MAC地址、修改为不同厂家但是与原有地址属于同一类型的随机MAC地址、修改为不同厂家不同类型的随机MAC地址或修改为完全随机的MAC地址,而且还支持查询各知名厂家的MAC地址段。

真的是相当方便啊!
MAC地址欺骗(原理及实验)的更多相关文章
- mac地址泛洪攻击的实验报告
案例介绍: PC A 访问 本网络的一台FTPserver主机,中间人进行arp的投毒,获取PC-A和FTPserve之间的回话记录,截获用户名和密码. 实验拓扑:
- 分分钟学会系列:mac地址泛洪攻击实验
一.实验目的: 通过实战深入理解mac地址泛洪攻击的原理. 二.实验原理: 交换机中有一张非常重要的表,叫做mac表,这个表是一个硬件组成的表,主要是完成快速转发.mac表有大小限制,不同的交换机的m ...
- 交换机工作原理、MAC地址表、路由器工作原理详解
一:MAC地址表详解 说到MAC地址表,就不得不说一下交换机的工作原理了,因为交换机是根据MAC地址表转发数据帧的.在交换机中有一张记录着局域网主机MAC地址与交换机接口的对应关系的表,交换机就是根据 ...
- Mininet实验 MAC地址学习
实验目的 了解交换机的MAC地址学习过程. 了解交换机对已知单播.未知单播和广播帧的转发方式. 实验原理 MAC(media access control,介质访问控制)地址是识别LAN节点的标识.M ...
- Huawei-R&S-网络工程师实验笔记20190608-VLAN划分基础(基于端口、MAC地址、子网地址、协议)
>Huawei-R&S-网络工程师实验笔记20190608-VLAN划分基础(基于端口.MAC地址.子网地址.协议) >>实验开始,先上拓扑图参考: 一.基于端口划分VLAN ...
- Mininet实验 MAC地址学习分析
拓扑图 学习过程分析 首先交换机A和交换机B一开始的MAC地址表都是空的. 此时主机11向主机33发送一个数据帧. 数据帧会先到达交换机A,交换机A会获得主机11的MAC地址和端口号.(此时交换机A的 ...
- ARP防火墙绑定网关MAC地址预防ARP攻击和P2P终结者
[故障原理] 要了解故障原理,我们先来了解一下ARP协议. 在局域网中,通过ARP协议来完成IP地址转换为第二层物理地址(即MAC地址)的.ARP协议对网络安全具有重要的意义.通过伪造IP地址和M ...
- TCP连接三次握手协议,释放连接四次挥手,以及使用 awl伪造mac地址进行多线程syn洪泛攻击。
这个TCP连接就是一次追女生-谈恋爱-分手,追求比分手简单,但是分手比追求复杂.哥,谈了半年的女朋友,在就快要成功了的时候分了,原因是因为有人在后面该老子背后搞SYN洪泛攻击,最后女朋友丢失了.学会T ...
- Cisco 绑定mac地址
在Cisco中有以下三种方案可供选择,方案1和方案2实现的功能是一样的,即在具体的交换机端口上绑定特定的主机的MAC地址(网卡硬件地址),方案3是在具体的交换机端口上同时绑定特定的主机的MAC地址(网 ...
随机推荐
- 《Three.js 入门指南》3.1.1 - 基本几何形状 -圆柱体(CylinderGeometry)
3.1 基本几何形状 圆柱体(CylinderGeometry) 构造函数: THREE.CylinderGeometry(radiusTop, radiusBottom, height, radiu ...
- 软件——Hexo-NexT配置个人博客
一.安装NexT Hexo 安装主题的方式非常简单,只需要将主题文件拷贝至站点目录的 themes 目录下, 然后修改下配置文件即可.具体到 NexT 来说,安装步骤如下. 1.克隆最新版本 在终端窗 ...
- 个推push数据统计(爬虫)
该方案基于任务调度框架Gearman,采用Python开发的分布式数据统计系统. 项目的目录结构很简单: # apple at localhost in ~/Develop/getui [11:24: ...
- 【php】php操作MySQL数据库
一.操作步骤: 1. 连接MySQL数据库并判断是否连接成功2. 选择数据库3. 设置字符集4. 准备SQL语句5. 向MySQL服务发送SQL语句6. 解析处理结果集7. 释放结果集,关闭数据库连接 ...
- SpringMVC(五):JSON
本文是按照狂神说的教学视频学习的笔记,强力推荐,教学深入浅出一遍就懂!b站搜索狂神说或点击下面链接 https://space.bilibili.com/95256449?spm_id_from=33 ...
- Java第三十五天,用JDBC操作MySQL数据库(一),基础入门
一.JDBC的概念 Java DataBase Connectivity 从字面意思我们也不难理解,就是用Java语言连接数据库的意思 JDBC定义了Java语言操作所有关系型数据库的规则(接口).即 ...
- C语言 文件操作(二)
1.fputc(); fputc 是 file output char 的所以,意思是向指定的文件中写入一个字符.fputc() 的用法为: int fputc ( int ch, FILE *fp ...
- PHP获取当天、本周、本月、本季度、本年度时间
function get_date($date, $t = 'd', $n = 0) { if ($t == 'd') { $firstday = date('Y-m-d 00:00:00', str ...
- 如何关闭php的所有错误提示
在调试PHP 应用程序时,应当知道两个配置变量.下面是这两个变量及其默认值:display_errors = Offerror_reporting = E_ALL E_ALL能从不良编码实践到无害提示 ...
- python selenium使用
安装selenium #Python pip install selenium #Anaconda3 conda install selenium 下载浏览器版本对应的驱动文件 chrome chro ...