基础概念
无线网络(Wireless Local Area Network,WLAN),基于802.11b/g/n无线局域网标准协议(IEEE)。
Wi-Fi是指定802.11无线网络的组织,因此很多无线网也叫wifi,并非代表所有无线网
802.11 | 2Mbit/s66,2.4GHz频道,原始标准 |
---|---|
802.11a | 54Mbit/s66,5GHz频道,物理层更改 |
802.11b | 2Mbit/s66,2.4GHz频道,物理层更改 |
802.11c | MAC桥接 |
802.11d | 各国调整 |
802.11e | QoS(Quality of Service)支持 |
802.11f | 基站互联 |
802.11g | 54Mbit/s66,2.4GHz频道,物理层更改 |
802.11h | 无线覆盖范围调整 |
802.11i | 安全调整 |
802.11n | 多重输入输出,40Mbit通道宽度 |
还有一些非标准改进
全程需要用到linux系统,no reason
词汇与术语
Station:通常指无线客户端
AP:无线接入点(Access Point),无线接入点,它用于无线网络的无线交换机,也是无线网络的核心。无线AP是移动计算机用户进入有线网络的接入点,主要用于宽带家庭、大楼内部以及园区内部,可以覆盖几十米至上百米。
BS:基站(Base Station)
BSSID:基本服务单元(Base service Set Identifier)指定的是AP的MAC地址
SSID(ESSID):全名服务集标识符(service Set Identifier)就是AP的名字,服务集标识。SSID技术可以将一个无线局域网分为几个需要不同身份验证的子网络,每一个子网络都需要独立的身份验证,只有通过身份验证的用户才可以进入相应的子网络,防止未被授权的用户进入本网络。
WAP:无线应用协议(Wireless Application Protocol),无线应用协议,是一项全球性的网络通信协议。它使移动Internet有了一个通行的标准,其目标是将Internet的丰富信息及先进的业务引入到移动电话等无线终端之中
WEP:认证机制(Wired Equivalent Privacy),WEP是Wired Equivalent Privacy的简称,有线等效保密(WEP)协议是对在两台设备间无线传输的数据进行加密的方式,用以防止非法用户窃听或侵入无线网络。已经淘汰的加密机制
WPA:认证机制(WI-FI Protected Access),有WPA和WPA2两个标准,是一种保护无线电脑网络(Wi-Fi)安全的系统,它是应研究者在前一代的系统有线等效加密(WEP)中找到的几个严重的弱点而产生的。
WLAN:无线局域网(Wireless LAN)
WWAN:无线广域通讯(Wiress WAN)就是通常是通常使用的3G/4G/5G通讯
WPAN:无线个人局域网通讯技术(Wireless personal Area Network Communication Technologies),有高速(HR-WPAN)和低速(LR-WPAN)之分一般用在符附属设备上,Bluetooth,ZigBee,红外线(IrDA)。
IrDA:点对点传输速率高可达1GMb/s,受视距影响
mW:毫瓦,千分之一瓦,一般的无线发射器在30-50mw,100mw无障碍可以传输200m有障碍40m左右
dBm:也是表示功率dBM=10log(mW)
如何看见无线网
无线电波充斥着四周,他们都是可见波之外的,要想看见无线网还得依靠无线网卡。
将无线网卡连接到parrot系统,使用命令行进行查看
1 | ┌─[✗]─[root@parrot]─[~] |
返回信息中多了个网络适配器,wlx488ad2f87b18就是无线网卡,有的时候无法看到这个网卡,最可能的是此适配器还没有打开。
1 | ifconfig -a |
可以查看所有的适配器,包括未打开的。发现无线适配器后使用名字打开
1 | ┌─[root@parrot]─[~] |
这样就可以使用了。
如果ifconfig -a也无法发现适配器,很有可能是因为驱动问题,导致硬件无法识别。
Aircrack-ng
主要使用的工具包,kali和parrot系统都自带
aircrack-ng | 检测数据包破解 |
---|---|
airmon-ng | 改变无线网卡为监听模式 |
airodump-ng | 捕获无线数据包 |
airplay-ng | WEP和WPA-PSK密码恢复 |
airserv-ng | 转接无线网卡端口· |
airolib-ng | 进行彩虹表破解建立数据库 |
airdecap-ng | 解开处于加密状态的数据包 |
tools | 其他工具airdriver-ng,paketforge-ng |
模块升级
- airodump-ng-oui-update 升级airodump-ng OUI库
网卡监听:airmon-ng start 网卡名字
1 | airmon-ng start wlx488ad2f87b18 |
此时网卡中会多出一个wlan0mon,需要使用ifconfig -a才能看到
1 | wlan0mon: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 |
需要用到这个网卡进行扫描无线网络
启动探测:airodump-ng wlan0mon
1 | ┌─[✗]─[root@parrot]─[~] |
原本无法看到的无线信号全部展示了出来,而且这个返回是持续动态的,可以看出来airodump-ng 返回结果分为两大块西下面介绍参数。
1 | 第一块:显示AP的详细信息 |
下面为aircrack-ng的官方文档解释
BSSID AP的MAC地址,如果在client section中BSSID显示为“(not associated)”,那么意味着该客户端没有和AP连接上。这种unassociated状态下,它正在搜索能够连接上的AP
PWR 网卡报告的信号水平,它主要取决与驱动,当信号值越高时说明你离AP或电脑越近。如果一个BSSID的PWR是-1,说明网卡的驱动不支持报告信号水平。如果是部分客户端的PWR为-1,那么说明该客户端不在你网卡能监听到的范围内,但是你能捕捉到AP发往该客户端的数据。如果所有的客户端PWR值都为-1,那么说明网卡驱动不支持信号水平报告。
RXQ 接收质量,它用过去10秒钟内成功接收到的分组(管理和数据帧)的百分比来衡量。更详细的解释请看下面的注解。
Beacons AP发出的通告编号,每个接入点(AP)在最低速率(1M)时差不多每秒会发送10个左右的beacon,所以它们能在很远的地方就被发现。
#Data 被捕获到的数据分组的数量(如果是WEP,则代表唯一IV的数量),包括广播分组。
#/s 过去10秒钟内每秒捕获数据分组的数量
CH 信道号(从beacon中获取)
MB AP所支持的最大速率,如果MB=11,它是802.11b,如果MB=22,它是802.11b+,如果更高就是802.11g。后面的点(高于54之后)表明支持短前导码(short preamble)。
ENC 使用的加密算法体系。OPN=无加密, “WEP?”=WEP或者更高(没有足够的数据来选择(WEP与WPA/WPA2)),WEP(没有问号)表明静态或动态WEP,如果出现TKIP或CCMP,那么就是WPA/WPA2。
CIPHER 检测到的加密算法,CCMP,WRAAP,TKIP,WEP,WEP40或者WEP104中的一个。典型的来说(不是一定的),TKIP与WPA结合使用,CCMP与WPA2结合使用。如果密钥索引值(key index)大于0,显示为WEP40。标准情况下索引0-3是40bit,104bit应该是0。
AUTH 使用的认证协议。 以下的其中一种:MGT(WPA/WPA2使用独立的认证服务器,平时我们常说的802.1x,radius,eap等),SKA(WEP的共享密钥),PSK(WPA/WPA2的预共享密钥),或者OPN(WEP开放式)
ESSID 所谓的“SSID”,如果启用隐藏SSID的话它可以为空,这种情况下airodump-ng试图从probe responses和association requests中获取ssid
STATION 客户端的MAC地址,包括连上的和想要搜索AP来连接的客户端。如果客户端没有连接上,就在BSSID下显示“not associated”
Lost 在过去10秒钟内丢失的数据分组,基于序列号检测。更多的说明看下面的注解; i# m$ N% ~1 n
Packets 客户端发送的数据分组数量
Probes 被客户端查探的ESSID。如果客户端正试图连接一个AP但是没有连接上,那么就显示在这里。
注解:
RXQ扩展:
它用于衡量所有的管理帧和数据帧,你能够从这个数值中了解很多东西,它是一个线索。假定你获得百分百的RXQ和所有以10(或者任何的速率)/每秒速率发出的beacon帧。某个时候突然RXQ降到了90以下,但是你仍然收到了所有的beacon,那么你就能知道AP正在向客户端发送数据,而你监听不到客户端或者AP发送到客户端的数据,需要更加靠近才行。另一种情况,你用一个11MB的网卡来监听并捕获数据(prism2.5),并且你相对于AP的位置非常好,AP设置成了54MBit,这个时候如果RXQ再次下降,那么就能知道至少有一个54MBit的客户端连接到AP了。
Lost扩展:
它意味着从客户端来的数据丢包,每个非管理帧中都有一个序列号字段,把刚接收到的那个帧中的序列号和前一个帧中的序列号一减就能知道丢了几个包,这就是判别的方法。
可能产生丢包的原因:
1.你不能够同时发送和监听(如果你在发送数据的话),当你发送一些数据的时候,在此间隔内你不能监听到其它的包
2.太高的发射功率导致你丢包(可能离AP太近了)
3.在当前信道上存在太多的干扰,干扰源可能是其它的AP,微波炉,蓝牙设备等
为了降低丢包率,你该调整你的物理位置,使用各种天线,调整信道、发包或者注入的速率
WEP解密
获取目标信息后进行数据包收集
1 | airodump-ng --ivs -w * -c CH wlan0mon |
-ivs是仅收集ivs数据包,后缀是.ivs,-w是将数据包保存到文件,-c是信道(CH)可以在信息中看到
如果数据交互太慢使用ARP Request攻击。
另开一个终端使用aircrack-ng *-01.ivs进行密码破解-01是因为写入数据对文件名自动编号了。
1 | airodump-ng -w * -c CH wlan0mon |
单纯抓取数据包,后缀是.cap,体积比较大,同样可以使用aircrack-ng破解,之后还能分析数据
ARP Request注入攻击
使用这种攻击可以刺激AP产生更多数据包,加快破解
1 | aireplay-ng -3 -b AP_Mac -h Client_Mac wlan0mon |
-3是采用ARPRequest注入攻击
-b后面带AP的MAC地址
-h后面带客户端MAC地址
最后指定使用的网线网卡名称
WAP解密
首先抓包,准备工作和前面一样
1 | airodump-ng -w *.cap -c CH wlan0mon |
抓取全部数据包,需要获得握手包,只有客户端进行认证的时候才会获得握手包,所以需要进行Deauth攻击强迫用户下线重连。
攻击成功会获得握手包第一行显示如下
1 | CH 8 ][ Elapsed: 4 mins ][ 2020-07-15 21:07 ][ WPA handshake: 88:C3:97:E1:6A:4E |
看到handshake关键词表示获得成功
下面进行破解握手包
需要准备字典,一个好的字典可以节约破解时间,我获得的数据包是a-01.cap,使用dic.txt字典进行破解
1 | aircrack-ng -w dic.txt a-01.cap |
-w 指定使用的字典
后面加上获取的数据包
提示如下信息
1 | ┌─[root@parrot]─[~/wireless] |
这里是抓取的所有数据包,88开头的是之前抓取的握手包。选择序号就可以了
1 | Index number of target network ? 3 |
每秒尝试123次密码,KEY OUND!后面的就是破解后的密码
使用cowpatty进行密码破解
1 | cowpatty -f dic.txt -r a-01.cap -s CMCC_sjn |
-f 指定字典
-r 指定握手包
-s 指定wifi的名字
1 | cowpatty 4.8 - WPA-PSK dictionary attack. <jwright@hasborg.com> |
每秒尝试453次密码,显然要快很多。
Deauth攻击
1 | aireplay-ng -0 1 -a AP_Mac -c Client_Mac wlan0mon |
-0表示deauth攻击模式,后面是攻击次数
-a AP的MAC
-c 客户端的MAC
最后加上网卡
突破MAC地址过滤
一般设置MAC地址过滤后就算有密码也是无法连接无线网的。
只需要将自己的无线网卡MAC地址设置成其中的合法MAC地址就可以突破过滤
windows在无线适配器中高级选项可能可以修改
linux使用ifconfig命令进行修改
1 | ifconfig eth0 hw ether mac |
如果这样连接上会造成通mac的设备卡顿,这时候只需登陆路由后台清除同mac的设备就可以有效防止被蹭网
无SSID破解
有些设备不对外进行广播,没有SSID(ESSID),设备无法对这些AP进行搜索。
1 | 50:0F:F5:9A:52:30 -1 0 10 0 7 -1 WPA <length: 0> |
在探索中出现<length:>的情况就是隐藏了SSID
使用Deauth攻击,让客户端和AP重连,可以迫使SSID出原型从而抓到SSID标识
无线DDoS
信标攻击
建立大量的信标淹没合法AP,对客户端造成干扰。
1 | mdk3 wlan0mon b -g -c 1 -h 10 |
- b 代表信标bacon
- -n 指定伪造的SSID名称,如果不指定则随机生成
- -g 伪装成54M满足802.11g标准的无线网络
- -c 指定信道
- -h 提升攻击效率
- -s 发包速率
Auth Flood攻击
验证洪水攻击(Authentication Flood Attack),即发送大量身份验证信息,达到拒绝服务的目的。
攻击工具使用MDK3,在kali或parrot系统自带。
1 | mdk3 wlan0mon a -a AP_Mac |
- a 代表使用验证洪水攻击
- -a 指定目标AP的MAC
- -s 发包速率
Association Flood攻击
关联洪水攻击(Association Flood attack)大量伪造无线客户端填满AP记录客户端的关联表,使得AP无法再记录客户端。和Auth Flood攻击一样
1 | mdk3 wlan0mon a -a AP_Mac [-s] |
经过测试可以攻击成功,无线网络出现无法连接的状态,但是无法攻击5G无线网。
Deauth Flood攻击
取消验证洪水攻击(Deauthentication Flood Attack),通过欺骗从AP到客户端单播地址取消身份验证帧将客户端转化为未认证的状态。
1 | mdk3 wlan0mon d -c 8 |
- d 表示取消验证洪水攻击
- -c 指定AP的信道
- -w 指定文件名,白名单里是mac地址,避开不攻击这些mac
- -b 指定文件名,黑名单同样mac,指定需要攻击的mac
Disassociation Flood攻击
取消关联洪水攻击(Association Flood attack),和Deauth Flood攻击一样,只是在发送程度及使用工具上有所区别,前者常用于配合无线中间人攻击,后者常用于针对点对点的无线DOS,如破坏或干扰指定组织或部门的无线接入点。
1 | mdk3 wlan0mon d -c 1[,6,11] [-w file1 -b file2] |
经过测试可以攻击成功,无线网络出现无法连接的状态,但是无法攻击5G无线网。
Association Broadcast攻击
取消关联广播攻击(Association Broadcast attack),他和取消关联洪水攻击原理基本一致。
RF Jamming攻击
前面的攻击都是基于协议进行攻击,而RF是 利用发射干扰频射。类似与手机信号屏蔽器,这种攻击将会让某一频段的信号丧失通讯功能。
密码组成原理
WPA密码组成原理
简单的密码组成是MK->PMK->PTK->MIC
MK(Master key)密码原文,就是通常输入的密码
PMK(Pairwise Master Key)通PBKDF2运算加密的密码
PTK(pairwisetemporary)一组密钥
MK生成PMK
平时说的密码是PSK(pre-sharedkey),PMK会根据SSID(AP名字)和PSK通过PBKDF2运算生成一个值,这些值都是64位 ,如果SSID改变PMK就会改变,所以破解是一个很麻烦的过程。
PMK生成PTK
需要进行四次握手,客户端的MAC地址,AP的BSSID,A-NONCE,S-NONE,MIC,最关键的PMK和PTK是不包含在握手包里的,过程很复杂,但是PTK的计算消耗很小
PTK生成MIC
四次握手后将获得的参数算出一个MIC,将MIC发送给AP,AP采用相同的参数与算法计算出MIC,并与客户端发过来的比较,如果一致,则认证通过。
制作WPA的Hash Table
所谓的Hash Table就是很多PMK组合起来的表。空间占用非常大
genpmk
1 | genpmk -f dic.txt -d dic.hash -s CMCC_sjn |
- -f 指定字典
- -d 生成的hash table
- -s 目标AP的SSID
Hash破解WPA/WPA2
cowpatty
1 | cowpatty -d dic.hash -r a-01.cap -s CMCC_sjn |
- -d 指定hash table
- -r 指定获得的握手包
- -s 指定AP的SSID
1 | ┌─[✗]─[root@parrot]─[~/wireless] |
可以看到破解速率是15503个密码每秒,相对于之前453个每秒快了35倍之多。