购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

2.6 WPA高速破解技术新趋势
——显卡破解

在最近几年举行的Blackhat、Defcon、xKungFoo以及其他全球各类黑客/安全会议上,有很多黑客们都频繁提到了使用显卡GPU来对破解进行加速,比如2009年在美国拉斯维加斯举行的Blackhat 2009上,Marc Bevand就做了一个名为“MD5 Chosen-Prefix Collisions on GPUs”的演讲,有需要其PPT的读者朋友可以在Blackhat(黑帽子大会)官网上找到。

那什么是GPU呢?GPU又有哪些优点呢?其可以应用到哪些领域或者有哪些领域已经在使用GPU进行破解运算呢?下面先来看看什么是GPU。

2.6.1 关于GPU

1.GPU基本概念

GPU英文全称Graphic Processing Unit,中文翻译为“图形处理器”。GPU是相对于CPU的一个概念,由于在现代的计算机中(特别是家用系统,游戏的发烧友)图形的处理变得越来越重要,需要一个专门的图形核心处理器。该处理器存在于显卡上,但只有中高端的显卡才有。

2.GPU的作用

GPU的性能决定了该显卡的档次和大部分性能,同时也是2D显示卡和3D显示卡的区别依据。早期的2D显示芯片(现在还在很广泛地使用)在处理3D图像和特效时主要依赖CPU的处理能力,称为“软加速”,我想很多朋友应该对于在“软加速”下打CS的效果深有体会,尤其是一些笔记本用户。而3D显示芯片是将三维图像和特效处理功能集中在显示芯片内,也即所谓的“硬件加速”功能。显示芯片通常是显示卡上最大的芯片(也是引脚最多的)。现在市场上的显卡大多采用NVIDIA和ATI两家公司的图形处理芯片。

GPU相当于专门用于图像处理的CPU,正因为它专用于图形处理,所以在处理图像时它的工作效率远高于CPU,但是CPU是通用的数据处理器,在处理数值计算时是它的强项,它能完成的任务是GPU无法代替的,所以不能说用GPU就一定可以代替CPU。

3.GPU与CPU比较

通常来说,很多人认为存在于显卡上的GPU无非是进行图形渲染之类的工作,无法与CPU相媲美,甚至还有很大的差距。下面简单比较一下。

CPU的主要应用是在通用运算,比如操作系统,系统软件,应用程序,通用计算,系统控制等;游戏中人工智能,物理模拟等;3D建模-光线追踪渲染;虚拟化技术——抽象硬件,同时运行多个操作系统或者一个操作系统的多个副本等。

而GPU由于采用的是并行运算,则主要用于图形类矩阵运算、非图形类并行数值计算、高端3D游戏等,如图2-60所示。

图2-60

而在一台均衡计算的普通计算机系统中,CPU和GPU还是各司其职。虽然当前的典型应用还是高端3D游戏,一个高效的GPU配合一个高效的CPU,3D游戏的整体效率才能得到保证。但是除了图形运算外,GPU将会主要集中在高效率低成本的高性能并行数值计算,帮助CPU分担这种类型的计算,提高系统这方面的性能。

2.6.2 GPU编程语言CUDA

1.什么是CUDA

NVIDIA CUDA技术是当今世界上唯一针对NVIDIA GPU的C语言环境,该技术充分挖掘出NVIDIA GPU巨大的计算能力。凭借NVIDIA CUDA技术,开发人员能够利用NVIDIA GPU(图形处理器)攻克极其复杂的密集型计算难题。

按照NVIDIA官方的解释,CUDA™是一种由NVIDIA推出的通用并行计算架构,该架构使GPU能够解决复杂的计算问题。它包含了CUDA指令集架构(ISA)以及GPU内部的并行计算引擎。开发人员现在可以使用C语言来为CUDA™架构编写程序,C语言是应用最广泛的一种高级编程语言。所编写出的程序可以在支持CUDA™的处理器上以超高性能运行。将来还会支持其他语言,包括FORTRAN以及C++,如图2-61所示。

图2-61

2.CUDA的技术特点

用于GPU并行应用开发的标准C语言;

快速傅里叶转换(FFT)以及基本线性代数子程序(BLAS)的标准数字库;

专用CUDA驱动器,用于GPU和CPU之间快速数据传输计算;

CUDA驱动程序与OpenGL和DirectX图形驱动程序可以实现互操作;

支持Linux 32/64位,Windows XP 32/64位以及Mac操作系统。

3.GPU编程资料

对于GPU编程方面资料感兴趣的读者朋友可以从下面网址了解更多内容,除了CUDA之外,还有AMD的GPU资料,虽然比之NVIDIA的GPU有些差距,但仍令人期待。由于本书内容仅偏重在无线安全技术上,所以关于GPU的编程设计就不再深入讲述。

NVIDIA公司:

http://developer.nvidia.com/page/home.html

AMD(原ATI)公司:

http://ati.amd.com/developer/index.html

关于使用CUDA破解SHA1、MD5的源代码有需要的朋友可以到搜索引擎中搜索一下,一定会有所得。

2.6.3 GPU在安全领域的应用及发展

2006年9月德国的c’t杂志上刊登了一篇关于使用显卡进行NTLM破解的文章,这应该算是一个新的破解技术应用的里程碑。之后,关于使用GPU进行密码破解的研究和工具开始逐渐崭露头角。

1.国外黑客的尝试

在国际黑客及安全领域上,黑客们使用GPU的场合除了广为熟知的MD5、SHA1、NTLM等算法或加密方式之外,有很多特殊的算法或者加密环境也开始尝试应用。如表2-6所示给出了一个国外黑客们使用NVIDIA的GeForce 8800GS显卡进行破解测试的参考数值。

表2-6 破解测试参考数值

如图2-62所示为使用python开发的GPU计算工具Pyrit在不同显卡下的测试数据。该工具主要是在进行WPA PMK Hash运算。

相对而言,最近几年,国内的GPU研究及应用仍主要侧重于网络游戏渲染、引擎开发等方向,根据在上海、北京等地从事的游戏开发现状来看,在GPU方面国内目前的意识暂时还是有所偏向的。

图2-62

2.可用显卡列表

即便是普通用户,也可以使用一些小巧的工具来查询自己主机上的NVIDIA显卡是否支持GPU运算,以及GPU主频等内容,此类工具常见的有GPU-Z、GPU Caps Viewer等。如图2-63所示为GPU Caps Viewer的工作界面。

图2-63

作为NVIDIA公司,已经在其官方网站上公开了可用于GPU运算的显卡,由于版面有限,如表2-7所示列出了可用于GPU运算的NVIDIA显卡型号。

表2-7 可用于GPU运算的NVIDIA显卡型号

详细列表请参考以下网址:

http://www.nvidia.com/object/cuda_learn_products.html

如图2-64所示为可支持三路NVIDIA SLI技术的全新GeForce GTX 280 GPU,可以为世界上最快的Windows Vista游戏平台带来出色的性能提升。当然,对于通用运算也同样能够带来性能的迅猛提升。如图2-65所示为NVIDIA的SLI技术标示。

图2-64

图2-65

相关知识:

之前NVIDIA的SLI技术是在一块支持双PCI Express X16的主板上使用两块同规格的PCI Express版的GeForce 6800U或GeForce 6800 GT显卡(即NV45核心显卡,它的核心上有很小的一部分大约0.75%被分配给提供SLI支持的装置),然后再使用一个小小的U型PCB电路板连接器MIO,利用两块GeForce 6800显卡上方的一组金手指,将它们连接在一起。而最新的SLI技术已经能够支持三路GPU运算,也变得更为强大。

2.6.4 将GPU技术用于破解

目前大部分密码恢复仍然采用“暴力破解”或称为“穷举法”的技术,通过一定的时间理论上是可以恢复某些软件的密码。比如微软新的操作系统Windows Vista中,登录密码若为8位含有大小写混合字符串,则将有55万亿种可能的密码。Windows Vista默认采用NTLM散列技术,所采用是新的双核处理器,每秒最多测试10000000个密码,完成所有测试大约需要两个月时间。而采用诸如ElcomSoft所研发的GPU运算新技术后,该过程将只需要花三天到五天时间,当然,这也取决于CPU和GPU的好坏。

回到无线WPA加密破解上,对于Core 2 Duo E4500和Core 2 Quad Q6600处理器而言,Elcomsoft开发的GPU/CPU通用破解软件EWSA每秒钟可以试验480个和1100个密码,换成GeForce GTX 280、Radeon HD 4870、Radeon HD 4870 X2这些显卡能大幅增至11800个、15750个和31500个,而最厉害的是NVIDIA的视觉计算系统Tesla S1070,每秒钟可达52400个,相当于E4500的110倍。如图2-66所示为来自Elcomsoft的显卡运算无线加密测试理论破解速率,可看到若使用ATI的HD5970显卡,运算速率可轻易突破10万个密码/秒,要知道,家用PC常配置的双核处理器在进行WPA-PSK破解的速率基本都是在200~500个密码/秒。有趣的是,ElcomSoft声称其中使用了他们“独家开发的GPU加速技术”,而非基于NVIDIA CUDA、ATI Stream或者OpenGL等。

既然EWSA表现得如此出众,接下来就开始学习如何使用EWSA。

图2-66

2.6.5 关于EWSA

EWSA,全称为Elcomsoft Wireless Security Auditor,翻译过来就是Elcomsoft无线安全审计工具,一般都简称为EWSA。该工具支持Windows2000/XP/2003/Vista系统。该软件包装如图2-67所示。

图2-67

ElcomSoft是一家在安全界非常有名的俄罗斯安全公司,主要产品都是各类商业化密码破解软件,涉及Office、SQL、PDF、EFS等加密文件的破解。2009年1月15日ElcomSoft推出了“Wireless Security Auditor 1.0”,号称可以利用显卡的GPU运算性能快速攻破无线网络WPA-PSK及WPA2-PSK密码,运算速度相比单纯使用CPU可提高最多上百倍。不过经过我的实测,一般都是在3~30倍。

这款软件的工作方式很简单,就是利用词典去暴力破解无线WPA和WPA2密码,还支持字母大小写、数字替代、符号顺序变换、缩写、元音替换等12种变量设定,在ATI和NVIDIA显卡上均可使用。具体支持列表如表12-5所示。

2.6.6 EWSA的使用准备

1.查看显卡是否支持

首先,先检查一下自己或者周围机器上的显卡是否在支持列表中,若没有合适的显卡也没有关系,EWSA同样可以直接使用CPU来进行破解。表2-8是适用于绝大部分用户的EWSA显卡支持列表,包括NVIDIA及ATI两类显卡。涉及更高级商业显卡的详细列表请到Elcomsoft的官网(http://www.nvidia.com/object/cuda_gpus.html)查看。

表2-8 EWSA显卡支持列表

注意: EWSA的最低要求显卡版本为GeForce8500GT,之下的低版本显卡不能支持GPU,需要展开测试的读者应先升级显卡再继续。

2.安装EWSA

安装前应先从官方网站下载EWSA最新版本,截至本书完稿前的最新版本是2010年5月12日发布的EWSA 2.12版。官网下载地址如下。

EWSA商业试用版的下载地址:

http://www.elcomsoft.com/download/ewsa.zip

稍显遗憾的是,目前官网没有提供中文版本的下载。安装方法很简单,双击下载的安装文件setup.exe,然后一直单击“下一步”按钮即可,要注意的是测试版安装过程中出现提示输入注册码时应直接跳过。

2.6.7 使用EWSA进行WPA-PSK破解

在使用EWSA破解前,需要先获取WPA-PSK的握手包,关于无线WPA-PSK握手数据报文的捕获,可以使用之前学到的Aircrack-ng套装来实现,或者Commview for WiFi等工具获得,下面给出一个可以用于捕获WPA握手包的参考工具列表,如表2-9所示,具体步骤就不再重复讲述。

表2-9 捕获WPA握手包的参考工具

在使用上述工具之一捕获到包含WPA握手的数据包后,就可以导入EWSA进行破解。关于使用EWSA破解的操作步骤如下。

步骤1:打开EWSA,由于是Demo(未注册)版本,所以需要等待15秒。进入主界面后,在菜单处选择“Options”,即“选项”,在这里有几个必须要先行设置的选项,分别是“CPU Options”,“GPU Options”,“Dictionary Options”及“Password mutation Options”,如图2-68所示。

图2-68

单击打开“CPU Options”,可以看到当前环境的CPU核心数量、产品型号、工作主频等信息。这里我使用的是Intel 4核Q9300 CPU,操作系统为Windows XP SP3,如图2-69所示。

单击打开“GPU Options”,可以看到当前环境的显卡型号、显存、工作频率等信息。这里我使用的是GeForce 9800GTX高端显卡。若是显卡不支持,此处将无法识别并显示为空白。详细信息可以单击“Display drivers info”来查看,如图2-70所示。

图2-69

图2-70

单击打开“Dictionary Options”窗口,可以看到如图2-71所示的界面,默认情况下EWSA已经提供了一个英文单词字典,但是这里可以单击“Add”按钮再添加其他预备的字典,比如事先制作的8位数字字典。若希望先启用某个字典,可以单击选择字典,再单击右侧的“Up”按钮排序。

图2-71

步骤2:在将EWSA设置完毕后,即可开始导入事先捕获的WPA-PSK握手数据包,选择“File→Import TCPDUMP File”导入TCPDUMP文件,这里文件类型指的是使用airodump-ng、Wireshark、Ethereal或者TCPDUMP抓取的WPA-PSK验证数据包,文件类型一般为cap、pcap、dmp等,如图2-72所示。

在导入捕获的WPA-PSK验证数据包后,EWSA能够自动识别出数据包里的验证握手数据,可以看到这里识别出两个完整的无线WPA-PSK验证报文,SSID均为linksys。单击“OK”按钮即可导入,如图2-73所示。

图2-72

图2-73

步骤3:确认导入数据无误后,单击“Start attack”按钮,开始进行破解,可以看到破解中不断前进的进度栏、调用的字典进度及完成百分比。如图2-74所示可以看到,当前速度为15525 pass/s,已经远超于常见计算机的500 pass/s左右的速率。

图2-74

步骤4:破解完成后,若字典中包含密码,则会弹出如图2-75所示的对话框,提示破解成功。

图2-75

而此时,如图2-76所示,EWSA上在password密码栏处会显示出已破解密码的前2位,后面的则以“not shown in trial version”所替代,这是由于是未注册版本的缘故。不过没关系,下来我们就来看看如何从内存中找到这个密码。

图2-76

2.6.8 未注册EWSA的临时解决方法

对于经常进行加脱壳操作的读者朋友来说,本小节的内容显得相对简单,这里就以WinHex为例介绍一种临时查看未注册EWSA成功记录的方法。WinHex是一款以通用的16进制编辑器为核心,专门用来对付计算机取证、数据恢复、低级数据处理以及IT安全性、各种日常紧急情况的高级工具:用来检查和修复各种文件、恢复删除文件、硬盘损坏、数码相机卡损坏造成的数据丢失等。下面开始用WinHex来查看内存中的数据,具体操作步骤如下。

步骤1:如图2-77所示,打开WinHex,依次单击“工具→打开RAM内存”命令,即可查看当前内存的所有内容。

图2-77

如图2-78所示,找到名为“Ewsa”的进程,选择“Ewsa.exe”,单击“OK”按钮。注意,若选择“Primary Memory”,将会发现有很多烦乱的内容,对于我们的查找会很不方便。

在打开的内存页面前,选择菜单栏上的“Find Text”选项,弹出“Find Text”对话框,如图2-79所示,在输入框中输入刚才破解的前两位“12”,注意选择编码模式为“ASCII/code”,单击“OK”按钮。

图2-78

图2-79

在排除掉前面的几个明显不符的内容后,就可以看到如图2-80的内容,在一片空白处出现了一段数字,这就是刚刚破解出来的WPA-PSK密码,即为“12349999”。

图2-80

注意: 若此处以“not shown in trial version”为关键字搜索的话,无论将编码方式采用ASCII还是转换成Unicode,搜索后都将会看到如图2-81所示内容,是无法找到密码的。

图2-81

到这里便算是成功地破解WPA-PSK握手验证数据包中的密码。对比一下就能看出使用GPU已经比单纯地使用本机CPU进行破解快了很多。

对于没有高端显卡的用户来说,也可以直接使用EWSA所支持的纯CPU破解,不需要额外设置什么,导入预破解的WPA-PSK握手文件即可。不过此时破解的速率就完全取决于机器的CPU配置了。如图2-82所示为未采用显卡只使用4核CPU进行破解的情况,可以看到,破解速度降低到3429 pass/s,是原来的五分之一。而使用双显卡的话,最高甚至能达到12万个/s以上。如图2-83所示是双显卡的运算效果。

图2-82

那么,若是有条件使用更高端的显卡配置,比如使用多块ATI HD5800显卡,速度就会出现较大的提升,如图2-83所示,破解速度可以轻松地突破12万个/s。

图2-83 OcE6ae9axQwHJwQkokUs46w8psE/sXkI3+h6RMY/vWK81Rbrotl7lhJUfj4g+mGX

点击中间区域
呼出菜单
上一章
目录
下一章
×