1 / 23

基于 CUDA 的 WPA/WPA2-PSK 无线网络密码暴力破解

基于 CUDA 的 WPA/WPA2-PSK 无线网络密码暴力破解. 组长:陈凯 组员:程彬、吕波. 目录. 目录 一、背景介绍 二、目标 三、任务分解 四、系统实现 五、优化 六、结果分析. 背景介绍. 背景介绍. 破解过程描述: 1 、 监听 AP 与 STA 之间的通信,获得 4 次握手包和 AP 的 SSID 2 、 穷举每个可能的密钥,利用 SSID ,计算 PMK

noleta
Download Presentation

基于 CUDA 的 WPA/WPA2-PSK 无线网络密码暴力破解

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 基于CUDA的WPA/WPA2-PSK无线网络密码暴力破解 组长:陈凯 组员:程彬、吕波

  2. 目录 目录 一、背景介绍 二、目标 三、任务分解 四、系统实现 五、优化 六、结果分析

  3. 背景介绍

  4. 背景介绍 破解过程描述: 1、监听AP与STA之间的通信,获得4次握手包和AP的SSID 2、穷举每个可能的密钥,利用SSID,计算PMK 3、利用握手包中的AP MAC、STATION MAC、 Anonce、 Snonce和PMK计算出PTK,并取得前16字节MIC _Key 4、利用握手包中的802.1x data和MIC_Key,计算出MIC,并与握手包中的MIC对比,相同则猜测正确,否则尝试下一个秘钥

  5. 目标 ◆监听通信,获取WPA2握手包信息并发送到服务器进行暴力破解,并将明文密码发回

  6. 任务解析 ◆最耗时的部分是第一步计算PMK的过程,需要4096次迭代 ◆整个过程所需要的访存量不多(只需要穷举的各种passphrase排列),为典型的计算密集型任务, ◆因此可以使用GPU进行并行计算,获取大量可能的PMK(针对某一个SSID);然后将得到的PMK与PMK对应的passphrase异步拷贝回CPU memory,由CPU完成剩下两步计算,并对比已有的MIC。

  7. 任务分解 任务分解 整个任务分解为两级(大)流水线: GPU + CPU 并行 GPU: 穷举计算PMK CPU :使用所有可能的PMK计算最终MIC

  8. 系统实现 • 整个系统由两大部分组成 • Client : 监听握手包并解析出所需信息 • Server: 接收文件或网络输入,穷举计算MIC并对比 • 其中 Server 包含 CPU 和 GPU 计算PMK和CPU计算MIC的代码

  9. 系统实现 • Client 监听握手包获取信息流程 • 使用工具 airdump-ng 监听某SSID的通信 • 挑选一个合适距离的已连接用户 • 使用airplay-ng向已连接用户发送 authenticate 指令,使其断开连接并自动重连 • 在此用户重连时,抓取WPA 4次握手包 • 读取握手包信息,获取所有破解所需信息

  10. 系统实现 • Server 获取信息计算MIC流程 • 从client生成的中间文件或网络接收所需信息 • 使用预先生成的字典(或在线生成的生日字典)以及接收到的SSID,使用GPU穷举计算PMK • 对生成的所有PMK,取前32 bytes,使用ap, spa 等消息计算PTK和MIC • 对比收到信息中的MIC,如果相等,则将字典中相应passphrase发回

  11. 优化 • PMK – GPU 基本优化 • 减少内存使用:每次只将一部分字典组合拷贝至device计算 • 足够并行度:每次仍处理足够数量的组合 • 优化访存:使用异步内存拷贝 • 增加并行度:使用多个 CUDA stream ,开启多个 kernel 同时计算

  12. 优化 • 计算PMK的算法 - pbkdf2_sha1 • PMK为32 bytes,然而SHA1_DIGEST_SIZE 为20,因此需要两次计算 • 每相邻两个thread计算同一个PMK的前20和后20 bytes • 每次计算时需要4096次 hmac_sha1 • 需要大量临时变量! • Hmac_sha1 • 每次计算实际上需要进行两次 SHA1

  13. 优化 • pbkdf2_sha1与hmac_sha1优化 • 减少临时变量(local memory)使用:使用 shared memory替换 • 增加内存复用,一块shared memory 内存重复利用 • 然而仍然有很多的内存使用!

  14. 优化

  15. 优化 • 进一步优化 • PMK的两次计算并无依赖关系,因此可以并行计算:使用2个线程计算一个PMK • 如上,同时减少了 shared memory 的使用 • 10.5KB/block  9.25KB/block • 循环展开:SHA1计算时硬编码,免去循环 • 把不变的信息如 SSID存入constant memory

  16. 优化

  17. 结果分析 • 在我的实验室台式机上测试 • CPU: i5-2300 CPU @ 2.80GHz • RAM: 8GB • GPU: GT 430, only 96 cuda cores • RAM: 512M • PMK-CPU :约 190 PMKs per second • PMK-GPU :约 802 PMKs per second • 加速比:4.22

  18. 结果分析 • 在我的实验室台式机上测试 • CPU: i5-2300 CPU @ 2.80GHz • RAM: 8GB • GPU: GT 430, 96 cuda cores • RAM: 512M • PMK to MIC (PMKPTKMIC) • 约115600 times/second • 占全部计算时间的0.164% • 因此CPU计算部分不是瓶颈

  19. 结果分析 • 在服务器上测试 • CPU: E5-2620 @ 2.0GHz • RAM: 32G • GPU: K20c • PMK-CPU :约 140 PMKs per second • PMK-GPU :约 8800 PMKs per second • 加速比: 62.87

  20. 结果分析 • 主要限制 • 大量的 shared memory • 9.25 KB per block(from visual profiler) • 大量的 local memory • 61 registers per thread • 80% local memory overhead • 以上导致的低 occupancy • 只有 20%

  21. 结果分析 • 进一步可能的优化 • 拆分 hmac_sha1 • 使用不同 kernel计算其中的不同阶段 • 将中间数据存放在global memory中 • 可以减少每个thread使用的内存大小,提高occupancy • 重用更多buffer • 进一步跟踪数据流,将某些可合并的内存复用

  22. 现场演示

  23. 谢谢! • Questions?

More Related