这篇的重置版已经发布于新站
前言
最近在某个群看到有人问如何获取WiFi密码,刚好又在在Freebuf看到一篇WiFi渗透相关的近源渗透——WiFi渗透,于是便打算对其进行一遍复现。于是等了大概两个星期的WiFi Adapter终于到了,买的是Amazon的CanaKit Raspberry Pi WiFi Wireless Adapter / Dongle (802.11 n/g/b 150 Mbps),感觉隐藏性比较好,而且看过几篇YouTube相关的用的也是这个Adapter,Kali Linux也支持,于是乎便下单了。
然后是漫长的两个星期等待,终于到了。O(∩_∩)O 可以开始复现了
这里有一些前置知识感觉很有用,于是一起照搬过来了
- 自备无线网卡(支持Monitor模式,即监听模式):我们平时用的网卡都是混杂模式的,是不支持监听模式的,需要自备。监听模式:监听模式下,可以监听到经过它的所有流量,并且不需要与无线接入点建立连接,就可以接收到目标的mac地址等信息。
- 握手包:当终端与路由器建立连接时,会先进行认证,认证过程中传输的报文就是握手包。 其中包括了路由器的密 码,所以抓取握手包,获取密码并破解即可实现。通过网卡的监听模式,可以监听来自经过它的所有流量,从而可以抓取目标的握手包。
- wifi密码的破解方式:破解方式有很多种,利用路由器的相关漏洞,基于弱加密(WPS,WEP)的破解,以及对WPA/WPA2的暴力破解,就加密算法来说wep<wpa<wpa2<wpa3;然而现如今市场上的主流路由器加密方式都是wpa2的,所以只能通过字典进行暴力破解。
- Aircrack-ng:是一套用于无线审计的工具,kali自带,里面包含了多种工具,此处主要用到了以下工具;airmon-ng:改变网卡的工作模式;airodump-ng:捕获802.11的数据报文;aireplay-ng:发送注入数据包攻击目标,为后续捕获握手包做准备;aircrack-ng:对捕获的握手包进行暴力破解
- 密码字典生成工具:推荐使用crunch,kali自带,详情请见crunch 使用教程-随心所欲生成字典
正文
1. 暴力破解
1.1 启动WiFi Adapter
首先,插入我们的WiFi Adapter, 然后进入Kali虚拟机:
- 输入命令
iwconfig查看当前插入的网卡,发现wlan0就是我们的设备,也就是IEEE 802.11。接着我们便可以开始启动网卡, - 但是在启动网卡之前,建议kill掉可能会影响的进程,使用命令
airmon-ng check kill,但是我这边发现即使kill了之后,后续不明什么原因还是会有东西影响,导致后续使用命令airodump-ng进行渗透的时候,会一直用fixed channel: + 一个随机的channel的问题,不知道什么情况,有知道的小伙伴求说一下。(这里问题已经解决了,是因为airodump-ng请不要同时开启两个,比如同时airodump-ng wlan0mon和airodump-ng --bssid BA:B8:1B:73:CE:4A -c 4 -w psk wlan0mon,这样的话就会造成一边在一直monitor,但是同一边又在想要固定channel 4的局面,在airodump-ng wlan0mon之后,就暂停即可。) - 输入命令
airmon-ng start wlan0可以启动我们的网卡,并且再次通过iwconfig查询的时候,发现我们的网卡从wlan0已经变成了wlan0mon,并且工作模式已经从Managed变成了Monitor。

1.2 查看附近可用WiFi
输入命令,airodump-ng wlan0mon,启用监听,监听附近的WiFi。可以发现我们的测试WiFi就在第一个,(笑,因为我直接把他摆在我面前,所以距离最近,必然是第一个)
-48c04f49bb31489693dc1019c2cc4778.png)
对某些数值的解释,文章近源渗透——WiFi渗透解释的很清楚,所以打算在他基础上细化一下(更详细的请查询Aircrack-ng官方文档):
- AP: Access Point,接入点,其功能是把有线网络转为无线网络
- BSSID: 目标路由器的mac地址
- PWR(Packets W? R?): 与目标的距离,该值越大,距离越近
- Beacons: AP发送的公告包数
- #Data: 捕获的数据包的数量
- #/s: 10秒内捕获的数据包的数量
- CH: 信道号
- MB: AP 支持的最大速度;例:MB=11, 则为802.11b
- ENC: 加密算法;例:OPN=不加密,WPA...
- CIPHER: 检测到密码。 CCMP、WRAP、TKIP、WEP、WEP40 或 WEP104 之一。
- AUTH: 使用的身份验证协议。 MGT(WPA/WPA2 使用单独的身份验证服务器)、SKA(WEP 共享密钥)、PSK(WPA/WPA2 预共享密钥)或 OPN(WEP 开放)之一。
- ESSID: WiFi的名称
1.3 嗅探并尝试抓取目标的握手包
由于我们的目标为“Pen-testing...”这个Wifi网络,我们可以看见其AP地址为BA:B8:1B:73:CE:4A,于是使用命令airodump-ng --bssid BA:B8:1B:73:CE:4A -c 4 -w psk wlan0mon进行抓包模式,其中:
- bssid:AP的bssid
- -c:信道号,这里是4
- -w:保存的文件名,我们之后需要将抓的包保存的地址
- wlan0mon:interface,也就是我们的网卡名
-7cb8b960c7e245c8a9076b91998051b0.png)
我们可以发现这里,有一个正在与我们路由器连接的设备F4:30:8B:01:01:DB,也就是我们这里的测试设备,我们也就获取了我们的测试设备,可以进行进一步的抓取握手包操作,这里对其其他参数进行稍微的补充解释:
- Station: 连接这个ap客户端的mac地址,需要记录,后续抓握手包使用
- PWR: 与上文一样
- Rate: Station的接收速率 - 传输速率
- Lost: 在过去 10 秒内丢失的数据包数
- Frames: data一种
- Notes: 有关客户端的其他信息,例:EAPOL、PMKID
- Probes: 探测到的 ESSID。
1.4 泛洪攻击,加速获取握手包的速度
其实到了1.3这一步我们就可以慢慢等待用户连接了,但是这个速度未必太慢了一点,因为握手包一旦确立,Session一旦建立,下一次的获取也许就不知道是什么时候了,我们这个时候可以使用泛洪攻击,强制断开station与AP的连接,进而让他们重新验证,我们进而可以获得握手包。
使用命令aireplay-ng -0 2 -a BA:B8:1B:73:CE:4A -c F4:30:8B:01:01:DB wlan0mon
- -0: 冲突攻击,使目标和客户端断开连接,重新连接的时候进而获得我手表
- 0: 攻击次数,1为1次,2为2次,0为循环
- -a: 后面跟着Bssid
- -c: 后面跟着Station
- wlan0mon: 使用的带有monitor模式的无线网卡
-f4b53cdc15d346ca8da95fead1e7101c.png)
这时候转去我们第一个窗口,我们发现我们对于BA:B8:1B:73:CE:4A的握手包已经找到了,显示为WPA handshake:BA:B8:1B:73:CE:4A
-c4247b23c18a4840b1591adad2c2150a.png)
1.5 使用字典对密码进行暴力破解
我们会发现我们的目录下有一个*.cap的文件,这里面也包含我们的握手包,我们需要用字典对其进行暴力破解,对于WPA2来说仅有暴力破解。
-1532881efd1145b48a1e471ed45a6361.png)
使用命令aircrack-ng -w /home/kali/Documents/dictionaries/test.txt psk-01.cap
- -w: 为指定密码字典的路径
- /home/kali/Documents/dictionaries/test.txt为字典位置
- psk-01.cap为捕获的数据报文
-9f903ea6187b4f22a19edc7beae0b2f6.png)
KEY FOUND! [19970308]
1.6 所有terminal
最后一览最后开启的terminal如下:
-95b62b660d7f4471b9116e86a47d010e.png)
2. Evil Twin
2.1 钓鱼框架
这个钓鱼框架比较好玩,基本就是自动的脚本,有很多钓鱼框架:fluxion、wifiphisher等等,我们这里与freebuf的这篇文章一样,选择了fluxion,其流程与我们的暴力破解很像:
- 获取目标握手包
- 泛洪攻击真实ap,使其停止服务
- 伪造钓鱼ap,获取用户输入
- 通过钓鱼获得真实ap密码
在Fluxion上面运行主要分为两步:
- Handshake Snooper:获取握手包
- Evil Twin:创造一个Evil Twin接入点
2.2 安装fluxion
kali下git安装,输入命令git clone https://www.github.com/FluxionNetwork/fluxion.git
2.3 启动fluxion
在fluxion目录下,输入命令./fluxion.sh
-cf7d62a612df48f8bbc938f25b06f77c.png)
2.4 获取目标握手包,选择2
-8faf8f2302c4437d98ae8a032bd3cfdc.png)
2.5 对于信道的扫描选择,选择所有信道扫描,选择3
-04a7a5aa46a94753a2641773a4e1acdb.png)
2.6 寻找目标WiFi
发现目标之后,输入Ctrl + C,便会自动返回到fluxion界面
-76a1c3bb595943a680b2f212e3e9808a.png)
2.7 选择目标WiFi,也就是16
-f3a7d142ed3345f19315629ef2ac9fa7.png)
2.8 这一步跳过,选择2

2.9 这一步和之前的一样,使用aircrack-ng获取握手包,选择2

2.10 选择推荐的hash验证方法,选择2
-645a7fccc72746529a791c84ef42032c.png)
2.11 间隔时间选择30秒,选择1
-a28b72ad881446daa36c738b61becefe.png)
2.12 验证方式选择推荐,选择2
-51660f33283447f395a5361d8454c5b5.png)
2.13 这时候会出现三个窗口:

左上角窗口:监听握手包的记录
左下角窗口:握手包抓取结果
右下角窗口:使用aircrack的攻击记录
2.14 出现这个窗口说明握手包捕获完成
-4fc51275120f4fefb611353c91c6a79d.png)
2.15 我们开始攻击真实ap,伪造钓鱼ap,选择攻击方式,选择1
-b062a6c5bc694c0d9798c10d148e6b3a.png)
2.16 创建一个邪恶的双胞胎,也就是Evil Twin作为接入点
-c7767f1e47cf4395b0221db0962db096.png)
2.17 对刚扫描的接入点进行攻击,选择Y
-b7bde0cc286843b7bd17240b3dc90401.png)
2.18 由于没有专用接口,跳过,选择2
-7ad4ff19ecd4424f86c537ff3d9d8d4a.png)
2.19 选择无线网卡,进行攻击,选择2
-be3f74741c9e4cb0ad908dd10bdff664.png)
2.20 与之前说的一样,选择aireplay进行攻击,选择2

2.21 使用推荐的hostpad进行攻击,选择1
-273339cfa873435fb7bca67fe05315f9.png)
2.22 密码验证方式选择cowpatty,选择1
-50182c8b15d14a579eef712bf24712e8.png)
2.23 对于这次攻击选择刚刚抓取到的hash文件,选择1
-1803efaf236f4c8d933e720c8e791e9b.png)
2.24 对于hash验证方法,选择推荐的,选择2
-07dd57921759463bb1d4f4e328f0ff33.png)
2.25 选择钓鱼认证门户,此处选择SSL证书来源,选择1
-1217f8313dfe4087886aec12504befe2.png)
2.26 对于流氓网络,选择仿真网络,选择2
-561034fc4f854e0681811b50e6495d6c.png)
2.27 对于钓鱼模板,我们就选择最简单的中文模板,毕竟是测试,选择3
-220fbab07bac421686620c670c979ae6.png)
2.28 开始抓取用户输入的信息
-df52da6b000a43758bbc1cf3840b8bd1.png)
分别表示:
- AP DHCP 服务
- AP 服务
- 认证密码保存信息
- DNS信息
- 服务器访问记录
- 攻击真实AP的记录
2.29 成功获取用户输入的密码
-75f3ef15214649f9bf373aa42e0e9a1c.png)
会发现已经成功获取用户的密码
具体用户端的录屏:click here
2.30 打开密码的.log文件
-08d1e60744b649a3bef9e13844159082.png)
成功获取,Password: 19970308
参考
[1] 近源渗透——WiFi渗透
Q.E.D.