前言

最近在某个群看到有人问如何获取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 可以开始复现了
这里有一些前置知识感觉很有用,于是一起照搬过来了

  1. 自备无线网卡(支持Monitor模式,即监听模式):我们平时用的网卡都是混杂模式的,是不支持监听模式的,需要自备。监听模式:监听模式下,可以监听到经过它的所有流量,并且不需要与无线接入点建立连接,就可以接收到目标的mac地址等信息。
  2. 握手包:当终端与路由器建立连接时,会先进行认证,认证过程中传输的报文就是握手包。 其中包括了路由器的密 码,所以抓取握手包,获取密码并破解即可实现。通过网卡的监听模式,可以监听来自经过它的所有流量,从而可以抓取目标的握手包。
  3. wifi密码的破解方式:破解方式有很多种,利用路由器的相关漏洞,基于弱加密(WPS,WEP)的破解,以及对WPA/WPA2的暴力破解,就加密算法来说wep<wpa<wpa2<wpa3;然而现如今市场上的主流路由器加密方式都是wpa2的,所以只能通过字典进行暴力破解。
  4. Aircrack-ng:是一套用于无线审计的工具,kali自带,里面包含了多种工具,此处主要用到了以下工具;airmon-ng:改变网卡的工作模式;airodump-ng:捕获802.11的数据报文;aireplay-ng:发送注入数据包攻击目标,为后续捕获握手包做准备;aircrack-ng:对捕获的握手包进行暴力破解
  5. 密码字典生成工具:推荐使用crunch,kali自带,详情请见crunch 使用教程-随心所欲生成字典

正文

1. 暴力破解

1.1 启动WiFi Adapter

首先,插入我们的WiFi Adapter, 然后进入Kali虚拟机:

  1. 输入命令iwconfig查看当前插入的网卡,发现wlan0就是我们的设备,也就是IEEE 802.11。接着我们便可以开始启动网卡,
  2. 但是在启动网卡之前,建议kill掉可能会影响的进程,使用命令airmon-ng check kill但是我这边发现即使kill了之后,后续不明什么原因还是会有东西影响,导致后续使用命令airodump-ng进行渗透的时候,会一直用fixed channel: + 一个随机的channel的问题,不知道什么情况,有知道的小伙伴求说一下。(这里问题已经解决了,是因为airodump-ng请不要同时开启两个,比如同时airodump-ng wlan0monairodump-ng --bssid BA:B8:1B:73:CE:4A -c 4 -w psk wlan0mon,这样的话就会造成一边在一直monitor,但是同一边又在想要固定channel 4的局面,在airodump-ng wlan0mon之后,就暂停即可。)
  3. 输入命令airmon-ng start wlan0可以启动我们的网卡,并且再次通过iwconfig查询的时候,发现我们的网卡从wlan0已经变成了wlan0mon,并且工作模式已经从Managed变成了Monitor

3909da7653f23aef37d4ab82845124b.png

1.2 查看附近可用WiFi

输入命令,airodump-ng wlan0mon,启用监听,监听附近的WiFi。可以发现我们的测试WiFi就在第一个,(笑,因为我直接把他摆在我面前,所以距离最近,必然是第一个)
16483959901.png
对某些数值的解释,文章近源渗透——WiFi渗透解释的很清楚,所以打算在他基础上细化一下(更详细的请查询Aircrack-ng官方文档):

  1. AP: Access Point,接入点,其功能是把有线网络转为无线网络
  2. BSSID: 目标路由器的mac地址
  3. PWR(Packets W? R?): 与目标的距离,该值越大,距离越近
  4. Beacons: AP发送的公告包数
  5. #Data: 捕获的数据包的数量
  6. #/s: 10秒内捕获的数据包的数量
  7. CH: 信道号
  8. MB: AP 支持的最大速度;例:MB=11, 则为802.11b
  9. ENC: 加密算法;例:OPN=不加密,WPA...
  10. CIPHER: 检测到密码。 CCMP、WRAP、TKIP、WEP、WEP40 或 WEP104 之一。
  11. AUTH: 使用的身份验证协议。 MGT(WPA/WPA2 使用单独的身份验证服务器)、SKA(WEP 共享密钥)、PSK(WPA/WPA2 预共享密钥)或 OPN(WEP 开放)之一。
  12. 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进行抓包模式,其中:

  1. bssid:AP的bssid
  2. -c:信道号,这里是4
  3. -w:保存的文件名,我们之后需要将抓的包保存的地址
  4. wlan0mon:interface,也就是我们的网卡名

16483960541.png
我们可以发现这里,有一个正在与我们路由器连接的设备F4:30:8B:01:01:DB,也就是我们这里的测试设备,我们也就获取了我们的测试设备,可以进行进一步的抓取握手包操作,这里对其其他参数进行稍微的补充解释:

  1. Station: 连接这个ap客户端的mac地址,需要记录,后续抓握手包使用
  2. PWR: 与上文一样
  3. Rate: Station的接收速率 - 传输速率
  4. Lost: 在过去 10 秒内丢失的数据包数
  5. Frames: data一种
  6. Notes: 有关客户端的其他信息,例:EAPOL、PMKID
  7. 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

  1. -0: 冲突攻击,使目标和客户端断开连接,重新连接的时候进而获得我手表
  2. 0: 攻击次数,1为1次,2为2次,0为循环
  3. -a: 后面跟着Bssid
  4. -c: 后面跟着Station
  5. wlan0mon: 使用的带有monitor模式的无线网卡

16483968141.png
这时候转去我们第一个窗口,我们发现我们对于BA:B8:1B:73:CE:4A的握手包已经找到了,显示为WPA handshake:BA:B8:1B:73:CE:4A
16483968761.png

1.5 使用字典对密码进行暴力破解

我们会发现我们的目录下有一个*.cap的文件,这里面也包含我们的握手包,我们需要用字典对其进行暴力破解,对于WPA2来说仅有暴力破解。
16483969731.png
使用命令aircrack-ng -w /home/kali/Documents/dictionaries/test.txt psk-01.cap

  1. -w: 为指定密码字典的路径
  2. /home/kali/Documents/dictionaries/test.txt为字典位置
  3. psk-01.cap为捕获的数据报文

16483972091.png
KEY FOUND! [19970308]

1.6 所有terminal

最后一览最后开启的terminal如下:
16483973111.png

2. Evil Twin

2.1 钓鱼框架

这个钓鱼框架比较好玩,基本就是自动的脚本,有很多钓鱼框架:fluxionwifiphisher等等,我们这里与freebuf的这篇文章一样,选择了fluxion,其流程与我们的暴力破解很像:

  1. 获取目标握手包
  2. 泛洪攻击真实ap,使其停止服务
  3. 伪造钓鱼ap,获取用户输入
  4. 通过钓鱼获得真实ap密码

在Fluxion上面运行主要分为两步:

  1. Handshake Snooper:获取握手包
  2. Evil Twin:创造一个Evil Twin接入点

2.2 安装fluxion

kali下git安装,输入命令git clone https://www.github.com/FluxionNetwork/fluxion.git

2.3 启动fluxion

在fluxion目录下,输入命令./fluxion.sh
16483999651.png

2.4 获取目标握手包,选择2

16484000281.png

2.5 对于信道的扫描选择,选择所有信道扫描,选择3

16484000651.png

2.6 寻找目标WiFi

发现目标之后,输入Ctrl + C,便会自动返回到fluxion界面
16484001151.png

2.7 选择目标WiFi,也就是16

16484002911.png

2.8 这一步跳过,选择2

image.png

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

image.png

2.10 选择推荐的hash验证方法,选择2

16484004121.png

2.11 间隔时间选择30秒,选择1

16484004411.png

2.12 验证方式选择推荐,选择2

16484004851.png

2.13 这时候会出现三个窗口:

image.png
左上角窗口:监听握手包的记录
左下角窗口:握手包抓取结果
右下角窗口:使用aircrack的攻击记录

2.14 出现这个窗口说明握手包捕获完成

16484006651.png

2.15 我们开始攻击真实ap,伪造钓鱼ap,选择攻击方式,选择1

16484013681.png

2.16 创建一个邪恶的双胞胎,也就是Evil Twin作为接入点

16484015001.png

2.17 对刚扫描的接入点进行攻击,选择Y

16484015281.png

2.18 由于没有专用接口,跳过,选择2

16484015601.png

2.19 选择无线网卡,进行攻击,选择2

16484015881.png

2.20 与之前说的一样,选择aireplay进行攻击,选择2

1648401620.png

2.21 使用推荐的hostpad进行攻击,选择1

16484016461.png

2.22 密码验证方式选择cowpatty,选择1

16484016721.png

2.23 对于这次攻击选择刚刚抓取到的hash文件,选择1

16484017061.png

2.24 对于hash验证方法,选择推荐的,选择2

16484017371.png

2.25 选择钓鱼认证门户,此处选择SSL证书来源,选择1

16484017731.png

2.26 对于流氓网络,选择仿真网络,选择2

16484017991.png

2.27 对于钓鱼模板,我们就选择最简单的中文模板,毕竟是测试,选择3

16484018621.png

2.28 开始抓取用户输入的信息

16484018821.png
分别表示:

  1. AP DHCP 服务
  2. AP 服务
  3. 认证密码保存信息
  4. DNS信息
  5. 服务器访问记录
  6. 攻击真实AP的记录

2.29 成功获取用户输入的密码

16484023881.png
会发现已经成功获取用户的密码
具体用户端的录屏:click here

2.30 打开密码的.log文件

16484024581.png

成功获取,Password: 19970308

参考

[1] 近源渗透——WiFi渗透

Q.E.D.


立志做一个有趣的碳水化合物