曹操: WPA2破解教程(详细步骤)
aireplay-ng -0 2 -a AA:BB:CC:DD:EE:FF wlan1
前言
本博客旨在技术学习交流,仅供学习参考之用,请勿用于任何非法用途,否则后果作者概不负责。
一、前言
本人前段时间在研究WiFi破解(WPA2)的相关原理和具体步骤,期间在网上搜索了很多资料,也走了不少坑。最后发现网上大部分的资源都是利用工具来破解的,其中某些具体的细节并没有提及,如抓包过程、比对过程等。用工具破解的方法和具体步骤直接百度就可以找到了,很多。下面主要讲手动破解的流程,即自己编程实现,不利用工具。
在这里本人将研究结果记录下来,一是为了方便以后回顾查阅,二是为了给有类似问题的同胞们提供一些资料和参考。由于本人水平有限,如发现有任何错漏之处,欢迎批评指出。
二、WPA2认证过程
要想破解wpa2,就要先了解其认证过程,还有一些基础知识。
1. 哈希算法
首先要了解一种加密算法:哈希算法(hash),哈希是一类算法的统称,包括MD5,SHA-1等等,这是一种不可逆运算,即你不可能通过运算结果来反向推出原来的值。
2. 握手过程
然后是握手过程,建议大家可以先网上搜索一些别人写的博客,了解下四次握手过程是怎样的,心里有个大概的框架,然后再详细研究《802.11-2012.pdf》这个官方文档的第11章“11. ”,以官方文档为主,而且要非常仔细地研究官方文档,非常仔细,非常仔细!当研究完这个文档的第11章,你就彻底明白握手过程的具体步骤了。这点很重要,否则后面破解过程会有很多地方不能理解,无法进行。
三、破解过程
实验环境:
- 目标机操作系统:
- 服务器操作系统:14.04
- 终端:小米6
在目标机上进行抓包、解析数据报、提取有用信息,然后通过传给服务器,服务器上进行最后的破解工作。
抓包,提取有用信息---> 计算pmk、ptk等值---> 计算mic,进行比对---> 比对成功,得出WiFi密码。
使用密码字典破解wpa2的大概流程就如上面所示,比较难的部分应该是提取信息以及算法,下面将对流程进行详细的讲解。
1)抓包
首先将用于抓包的网卡设置为模式(有些网卡是不支持模式的,本人实验时用的是高通),然后用命令或者库进行抓包,只要能抓到包就可以,具体通过什么方法并不重要。这一部要抓的其实只是4次握手包,其它包都不需要(用工具抓包时会将所有的802.11的包都存到一个cap文件里,这个文件又是要传到服务器端进行破解用的,所以会导致流量很大,这也是我为什么不想利用工具,而要自己编程实现的原因)。
一般为了尽快抓到握手包,采取主动发Death攻击包的方法,迫使终端断开连接后自动重连,这样就能很快抓到握手包了。发攻击包可以使用-ng命令:
2)提取信息
这一步是比较难的,要对抓到的数据包进行解析,筛选出四次握手包,再从握手包中提取出这些信息,具体怎么解析和筛选,这里就不展开了,不是本文的重点。
那四次握手包中有哪些我们需要的信息呢?看下面:
- AP的MAC地址(BSSID)
- 客户端的MAC地址(STA)
- AP的随机数(ANonce)
- 客户端的随机数(SNonce)
- AP的认证密钥版本(AKM)
- 客户端的认证密钥版本(AKM)
- AP的加密类型(Pairwise Cipher Suite)
- 客户端的加密类型(Pairwise Cipher Suite)
这些信息在后续的破解过程中会被用到,所以提取并保存好这些信息非常重要。具体的解析和提取方法可以参考其他资料。
#include
#include
#include
#include
#include
3)计算pmk、ptk
在这一步中,我们需要计算pmk和ptk,具体的计算过程如下:
- AMac + SSID + Passphrase -> pmk
- AMac + SMac + ANonce + SNonce + pmk -> ptk
第一、二步在目标机上实现,目标机将第二步提取到的参数发送给服务器,由服务器进行参数计算和比对。你可以选择在目标机或虚拟机上实现,只要你的存储空间足够大即可(字典占用的空间很大,几个GB的字典都算是小的)。
问题来了,计算时每一步分别使用什么算法?我在网上居然搜不到!最后无奈之下只好去看-ng的源码。下面直接贴出算法,需要使用相关库和头文件。
//计算pmk:
PKCS5_PBKDF2_HMAC_SHA1(pwd, strlen(pwd), ap_mac, strlen(ap_mac), 4096, LEN_PMK, pmk);
//计算ptk:
HMAC(EVP_sha1(), pmk, 32, data, 100, result, &result_len);
HMAC(EVP_sha1(), kck, LEN_PTK_KCK, eapol_frame, len_eapol, mic, NULL);
4)计算mic、比对
在这一步中,我们需要使用之前计算得到的kck来计算mic,并与eapol frame中的mic进行比对。
具体的步骤如下:
- 使用kck对整个eapol frame进行运算,得到mic。
- 将计算得到的mic与eapol frame中的mic进行比对。
需要注意的是,这里并不是简单的运算,而是使用kck对整个eapol frame进行运算。不要被网上一些错误的说法所迷惑。
完成这一步后,我们就可以进行mic的比对,如果比对成功,就意味着我们成功破解了WiFi密码。
四、结束语
在这篇博客中,我花了大约3个星期的时间研究了WiFi破解(WPA2)的相关原理和具体步骤。我搜集了大量的资料,确定了方案,制定了软件框架,并设计了破解流程。在编程实现的过程中,遇到了许多问题,但通过不断查阅资料和咨询专家的帮助,最终成功完成了整个破解过程。
我要感谢那些给予我帮助的人,谢谢你们!
文章来源:https://blog.csdn.net/bb807777/article/details/81043336