上一篇讲解了无线安全专题_攻击篇--干扰通信,没在首页待多长时间就被拿下了,看来之后不能只是讲解攻击实战,还要进行技术原理和防御方法的讲解。本篇讲解的是局域网内的MAC泛洪攻击,这种攻击方式主要目的是窃取局域网中的通信数据,例如ftp的账号和密码,下面的实战也是以此为例子。接下来按照原理,场景,攻击实战,防御方法的层次步骤进行讲解。(我的新书《Python爬虫开发与项目实战》出版了,大家可以看一下样章

  一.MAC泛洪攻击的原理

  MAC泛洪攻击主要是利用局域网交换机的mac学习和老化机制。

  1.1交换机的工作流程如下:  

  局域网中的pc1发送数据帧给pc2,经过交换机时,交换机会在内部mac地址表中查找数据帧中的目标mac地址,如果找到就将该数据帧发送到相应的端口,如果找不到,交换机就会向入端口以外的所有端口发送此数据帧(所谓的广播,不过不是广播帧,广播帧的目的mac地址是全F)。

  由此可以看到交换机实现交换功能的关键就是内部的mac地址表,那这个内部mac地址是怎么形成的呢?有什么特性呢?接下来就要讲解一下交换机的mac学习和老化机制。

  1.2 交换机的mac学习机制

   1. 首先咱们看一下内部mac表的结构,内部mac表都是有大小的,一般8k左右,一但mac表满了,其他mac地址就加不进来:

  

    内部mac表是将主机的mac地址和连接到交换机上的端口号进行绑定,这样可以根据mac地址找到端口进行转发。

   2.一开始的时候,没有主机连接,交换机内的mac表是空白的,这时候就要进行学习。

  下面咱们幻想出一个场景: PC1这时候想往PC2发送数据,数据帧经过交换机的时候,交换机会把数据帧中的源mac地址和进入的端口号记录到mac表中; 由于一开始mac表中没有PC2的mac地址和端口绑定,所以交换机会将这个数据帧进行全网转发,就是所谓的广播,也叫泛洪。

  1.   交换机将所有数据帧进行全网转发后,每台主机的协议栈会比对数据帧的目的mac地址是否和自身的一样,如果一样就进行应答,如果不一样,就进行丢弃(注意:那些mac地址不相同的主机网卡也会接收到数据帧,只是不予理会,对网卡进行抓包是能看到数据帧的)。
  2.   这个时候,PC2接收到了数据帧,并进行应答。应答数据帧经过交换机的时候,交换机会将应答数据帧的源mac地址和端口号学习到mac表中,也就是PC2的mac地址和端口号绑定。
  3.   交换机根据应答数据帧的目的mac地址,开始查询mac表,发现PC1的记录存在,就根据这绑定的端口号,直接将应答数据帧发给了PC1。这就是整个mac地址表的学习过程。

  1.3 交换机的mac老化机制

    若交换机与某台主机长时间未通信,交换机就会把该主机的mac地址从mac地址表里删除掉,等下次通信时重新学习地址。

  1.4 泛洪攻击的可能性

  •   正常的通信是除非一开始mac表中没有目标主机的mac和端口,这样才进行数据广播,只要mac表中有相应的绑定关系,之后两台主机间的 通信,都是由交换机直接根据mac和端口绑定进行转发,其他的主机是获取不到这两台主机之间的数据的。
  •   泛洪攻击的目标就是想获取主机之间的通信数据。要想达到这个目的,就需要强迫交换机进行数据广播,那就要实现mac表中没有目标主机  的mac和端口绑定。泛洪攻击的实现方法就是通过伪造大量的未知mac地址进行通信,交换机进行不断的学习,很快mac表就会被充满,这样正常的主机的mac地址在经过老化之后,就无法再添加到mac地址表中,导致之后的数据都变成了广播。

  二.攻击场景

  ftp服务器:我在一台windows主机上使用FileZilla Server搭建了一个ftp服务器,ip地址为10.170.62.240。如何搭建ftp服务器请参考,http://jingyan.baidu.com/article/6079ad0e67acf828ff86db3f.html。ftp的账号为qiye,密码为qiye123789。

  PC1: 局域网中的另一台主机,win7操作系统,作为ftp的客户机,ip地址为10.170.56.82。

  PC2:我的个人笔记本电脑作为攻击机,kali系统,ip地址为10.170.39.165。

  三.实战攻击

    实施mac泛洪攻击使用的工具是kali系统自带的macof,用来发送大量伪造的mac地址的数据包。

    第一步,我在PC2上打开macof,并且开启多个窗口运行,力求以尽快的速度,填满交换机的mac表。

    

    与此同时,在开启一个窗口,使用tcpdump进行抓包,抓取端口为21的ftp数据包。

  

    第二步,我使用PC1登录ftp服务器。既可以在浏览器中登录,也可以使用win7自带的ftp客户端。

  第三步,查看PC2中是否抓包广播出来的ftp登录信息。

    可以看到,我已经成功抓取到PC1访问ftp服务器的登录账号和密码。我使用wireshark,也抓取了一下,可能看的更直观一些。

  四.防御手段

  限定交换机接入的端口的mac数量。例如:设置该交换机的该端口可以学习8个mac地址,超过了8个mac地址就停止学习,丢弃后来的mac。一般高级的交换机都有这项功能。

  今天的分享就到这里,下一篇继续分析。如果大家觉得还可以呀,记得推荐呦。

欢迎大家支持我公众号: 
本文章属于原创作品,欢迎大家转载分享。尊重原创,转载请注明来自:七夜的故事 http://www.cnblogs.com/qiyeboy/
 
 

无线安全专题_攻击篇--MAC泛洪攻击的更多相关文章

  1. 无线安全专题_破解篇02--kali破解pin码

    最近项目有点紧,所以本应该上周发的文章,拖到了本周三,在此说声抱歉.无线安全专题,我打算系统地写六个部分,分别为破解篇,攻击篇,欺骗篇,路由篇,移动篇和蓝牙篇,当然在发布的过程中,可能还会掺杂着发布f ...

  2. MAC泛洪攻击

    先来解释一下啥是泛洪攻击 交换机里有一张专门记录MAC地址的表,为了完成数据的快速转发,该表具有自动学习机制:泛洪攻击即是攻击者利用这种学习机制不断发送不同的MAC地址给交换机,充满整个MAC表,此时 ...

  3. Mac地址泛洪攻击的防御措施和具体配置

    Mac地址泛洪攻击指的是:利用交换机的mac地址学习机制,攻击者不断地刷新mac地址,填满交换机的mac地址表,以致崩溃,使交换机不得不使用广播发包,从而获取其他人的报文信息. mac地址泛洪攻击的防 ...

  4. 分分钟学会系列:mac地址泛洪攻击实验

    一.实验目的: 通过实战深入理解mac地址泛洪攻击的原理. 二.实验原理: 交换机中有一张非常重要的表,叫做mac表,这个表是一个硬件组成的表,主要是完成快速转发.mac表有大小限制,不同的交换机的m ...

  5. 交换机安全学习笔记 第二章 MAC地址泛洪攻击

    本文为书中相关知识的摘要,由于书中以思科设备为配置依据,所以笔记中补充了华为.H3C设备的相关配置.华为设备配置参考华为S2352EI 产品版本:V100R005C01文档版本:02.  H3C配置参 ...

  6. android下获取无线wif信号、ssid、MAC等操作类

    一个android下获取无线wif信号.ssid.MAC等操作的类. WifiAdmin.java package com.afu; import java.util.List; import and ...

  7. 局域网安全-生成树攻击-ARP攻击-MAC攻击-VTP攻击-动态VLAN的攻击

    一.MAC layer attacks 1.CAM表的OVERLOAD 第三方设备不断发送变化的MAC地址,填满CAM表,对于后来合法的MAC地址不能学习到从而泛洪,这时攻击者将学习到合法者的数据包. ...

  8. 20165230田坤烨网络对抗免考报告_基于WIN10的渗透攻击

    目录 简单信息收集 主机发现 ping nmap 端口扫描 nmap OS及服务版本探测 nmap -sV 绕过防火墙尝试 诱饵 随机数据长度 随机顺序扫描目标 MAC地址欺骗 实现win10的渗透攻 ...

  9. Python黑帽编程 3.3 MAC洪水攻击

    Python灰帽编程 3.3 MAC洪水 传统的交换机(我只对我目前使用的交互机做过测试,按照常识只能这样表述)在数据转发过程中依靠对CAM表的查询来确定正确的转发接口,一旦在查询过程中无法找到相关目 ...

随机推荐

  1. CMake 使用方法(转)

    CMake是一个跨平台的安装(编译)工具,可以用简单的语句来描述所有平台的安装(编译过程).他能够输出各种各样的makefile或者project文件,能测试编译器所支持的C++特性,类似UNIX下的 ...

  2. Java 中英文数字排序

    //网上找的一个例子自己修改了下分享下,可以传多个排序字段数组 public class SortList<E>{ public static Logger loger = LoggerF ...

  3. 下拉框数据的动态选择,类似级联ajax刷新数据

    简单的两个下拉列表,第二个中的数据与第一个下拉框相关: --------------------var selected = $(this).children('option:selected').v ...

  4. filter之排除个别过滤

    1.jsp 篇 一般拦截器设置都是拦截*.action.*.jsp等,如此我们可以扩展后缀名,逃过拦截: jsp的话,可以改成.jspf后缀. ( 把一个JSP文件命名为jspf扩展名,然后inclu ...

  5. 先学习下一些基础的js和xpath语法

    这两个方法到底是在做什么呢?其实就是克隆了当前指令的节点,并生成子作用域.克隆的节点由transclude定义,如果你的属性是true,则克隆的是指令模板中的ng-transclude所在的DOM节点 ...

  6. 关于公司VPN专线接入的一个案例

    最近互通网络技术部门收到一到封邮件,是关于公司VPN接入的问题,问题如下: 条件:A区为办公地点1,其他办公电脑20台,并通过写字楼的宽带接口联通外网. B区为新办公地点2,预设应用.数据库.备份服务 ...

  7. 通过通知监听键盘的状态来改变View的位置

    #import "ViewController.h" @interface ViewController ()<UITextFieldDelegate>{    UIV ...

  8. 一行css代码调试中学到的javascript知识,很有意思

    现在到处都是JavaScript,每天都能知道点新东西.一旦你入了门,你总能从这里或是那里领悟到很多知识.今天我想分享Addy Osmani的一行代码 ,这行代码对于你调试你的CSS是很有用的.为了可 ...

  9. Field 'id' doesn't have a default value(jdbc连接错误)

    JDBC 连接错误: 编写数据库连接增添数据时,出现以下错误: error : java.sql.SQLException: Field 'id' doesn't have a default val ...

  10. json_encode中文unicode的问题

    近期做微信卡券开发遇到一个问题,创建卡券post数据给服务器时返回data format error, do NOT use json unicode encode (/uxxxx/uxxxx), p ...