0x00. 无线渗透简介
在网络越来越发达的今天,相信家家户户都已经连上了无线Wi-Fi,然而在享受Wi-Fi带来的便捷性的同时,大家是否想过正是这小小的Wi-Fi却能成为黑客成功入侵计算机,盗取机密信息的踏板!?接下来笔者会写一个系列的无线渗透文章,为大家逐个分析Wi-Fi破解,破解之后黑客的攻击手段,无线AP的伪造以及中间人攻击,相信大家能在目睹Wi-Fi脆弱性的同时提高自我保护意识。此系列文章仅作技术研究,请勿他用!
0x01. 协议分析
无线Wi-Fi能够传递、接受信号不仅依赖于物理硬件的支持(在物理层将数据信息转换为电子信号,通过无线电波传递到周围空气当中),更借助其上层数据链路层提供的逻辑标准来控制信息传递的有序进行。 而我们的Wi-Fi就是依赖数据链路层的802.11协议,经过多年的发展,IEEE组织已经制定了不同的协议族,正如上图所示,过去常用的是802.11b但是由于传输速度的限制现在大多数的网卡都已经开始支持802.11n,下面是笔者的Mac支持的协议。后面可能会涉及到数据包的传输过程,大家可以先去了解一下详细的802.11协议,以便更好理解后面内容。
0x02. WPA简介
无线通信中WPA2是目前个人用户用得最广的加密协议,企业用的最广的是企业级WPA2,而WEP加密因为被认为很不安全,所以很少会有使用,但是也存在极少个例不太懂安全的人使用,后面的文章都会有介绍。本文笔者先从WPA的攻击开始介绍,WPA2的攻击过程类似。
0x03. WPA密钥交换流程
虽然WPA加密算法十分安全可靠,但是在密钥交换时却不能保证握手过程不被黑客嗅探到。如上图所示,WPA密钥交换要经过四步握手过程,这和TCP握手类似
1.首先由AP(可以通俗理解为Wi-Fi)发送ANonce给STATION(客户端);
2.STA接收到ANonce之后利用正确的Essid(Wi-Fi名称)和PSK(共享密钥,即密码)经过迭代算法计算出PMK,然后STA再自己生成一个SNonce,此时STA同时拥有ANonce、SNonce、PMK、AP MAC、STA MAC,利用这些已知信息STA经过散列算法就可以计算出PTK(密钥流,后续就用PTK来加密数据包),接下来STA就把SNonce和PTK的MIC值发送给AP;
3.AP拿到SNonce之后也拥有了ANonce、SNonce、PMK、AP MAC、STA MAC(AP也可以生成PMK),得到这些信息之后AP也计算出PTK,通过比较PTK的MIC值来判断密码是否正确和数据是否被篡改,接下来由AP发送GTK和MIC值给STA;
4.STA也要通过比对MIC值来判断数据是否被篡改,如果MIC值相同则回送一个用密钥加密过的ACK给AP确定,此时密钥交换完成。
0x04. WPA PSK攻击原理
上面介绍了WPA密钥交换原理,而我们的攻击过程正是要利用这个原理来实现的,所以笔者希望大家能够试图看懂上面介绍的原理流程。
攻击原理
1.利用抓包工具抓取四步握手过程;
2.抓取到四步握手之后我们便得到了ANonce、SNonce、Essid、AP MAC、STA MAC、MIC,因为PMK=Essid + PSK + 迭代计算,所以我们可以尝试用字典来计算出各种PMK,然后生成PTK MIC值(PTK MIC = ANonce + SNonce + PMK + AP MAC + STA MAC + 散列计算)比较抓取到的MIC值,其实这个过程和破解hash是一个道理,主要依赖字典。
0x05. WPA攻击实战
介绍了这么多,相信大家已经摩拳擦掌,准备拿自己的Wi-Fi下手了,下面笔者演示实操攻破自己的Wi-Fi。
环境准备
1.kali Linux虚拟机
2.TL-WN722N网卡
3.Wi-Fi密码为admin123的路由器
操作流程
1.启动kali Linux虚拟机,映射网卡
2.启动网卡,设置为monitor模式
airmon-ng start wlan0 && iwconfig
3. airodump-ng 启动监听,可以看到我的Wi-Fi–TimeS0ng
airodump-ng wlan0mon
4.启动airodump-ng进行抓包侦听
airodump-ng wlan0mon -c 11 --essid TimeS0ng -w wifi_TimeS0ng
5.利用aireplay-ng(aireplay -0 3 -a [AP MAC] -c [STA MAC] [interface] 迫使MAC为 98:01:A7:C5:F7:6D的主机下线重连Wi-Fi,以便抓取四步握手
aireplay-ng -0 3 -a E4:F3:F5:2D:55:A8 -c 98:01:A7:C5:F7:6D wlan0mon
6.调用aircrack-ng破解密码(aircrack-ng -w [wordlist.txt] wpa-01.cap)
aircrack-ng -w /usr/share/sqlmap/txt/wordlist.txt wifi_TimeS0ng-01.cap