现代无线侦察技术(二):MANA 和已知信标攻击 - 嘶吼 RoarTalk – 网络安全行业综合服务平台,4hou.com

现代无线侦察技术(二):MANA 和已知信标攻击

丝绸之路 无线安全 2019-11-22 09:14:17
34531355
收藏

导语:在本系列的下一篇文章中,我们将描述客户端设备安全性的改进是如何使 Karma 攻击的效果大大降低的。

在本系列文章的第一部分中,我们介绍了802.11的一些基本原理,并描述了如何利用协议的漫游和网络选择特性来执行无线中间人(PITM)攻击。 我们还讨论了如何在 EAPHammer 中执行基本的仿冒接入点攻击(参见: https://github.com/s0lst1c3/eaphammer) 如果你还没有读过本系列文章的第一部分,你可以在这里找到:

· https://posts.specterops.io/modern-wireless-attacks-pt-i-basic-rogue-ap-theory-evil-twin-and-karma-attacks-35a8571550ee

在本系列的下一篇文章中,我们将描述客户端设备安全性的改进是如何使 Karma 攻击的效果大大降低的。 然后,我们将讨论 Dominic White (@singe) Ian de Villiers George Chatzisofroniou (@sophron)开发的三种攻击技巧,这些技巧可以用来规避这些改进 [1][2] :

· MANA 攻击: Dom White Ian de Villiers 开发的一种 Karma 风格的攻击,其中伪基站(AP)重建附近设备的首选网络列表(PNL)

· Loud  MANA攻击: Dom White Ian de Villers 开发的MANA攻击的一个变种,在这种攻击中,伪基站发送信标和探测响应帧给附近设备的所有 PNL 中的每个 ESSID (我用集合论来描述这一点,见下面的详细解释)

· 已知信标攻击: George Chatzisofroniou 开发的一种伪基站攻击,攻击者试图暴力猜解邻近设备的 PNL 以实现强制连接。

在讨论了这些技术在算法和技术层面上的工作方式之后,我们将介绍这些技术是如何在 EAPHammer 中实现的。

主动探测的限制

在本系列文章的第一部分中,我们讨论了定向探测是如何成为一个相当明显的设计缺陷,对无线客户端设备具有严重的安全性影响。 因此,现代设备通常避免依赖定向探测请求,这严重限制了原始 Karma 攻击的成功率。

正如 White de Villiers DEF CON 22会议上发表的题为天赐之物的演讲中指出的那样,现代客户端设备通常具有以下两个特征之一:

· 该设备忽略来自非首次响应广播探测的 AP 的探测响应[1]

· 该设备完全忽略使用主动探测,而完全依赖于被动扫描[1]

接下来的章节我将重温Whitede Villiers George Chatzisofroniou 为处理客户端设备设计中的这些改进而开发的技术[1][2]

MANA 攻击: 使用有限的主动探测攻击目标设备

MANA 攻击是由 Dom White Ian de Villiers 2015年开发的,是对 Dino Dai Zovi Shane Macaulay 提出的原始 Karma 攻击的改进,Karma 攻击我们在本系列文章的第一部分中提到过。 在最初的 Karma 攻击中,伪基站没有保存它收到探测请求的 ESSID 历史记录。 相反,伪基站用匹配到的探测响应盲目地响应它接收到的每个定向探测请求。 从安全的角度来看,这是有问题的,因为许多现代设备会忽略来自未首先响应广播探测的 AP 的探测请求。 MANA 是一种绕过这个限制的技术。

MANA 攻击中,伪基站使用哈希表记录每个客户端设备的 MAC 地址,从这些设备接收探测请求。 这个主哈希表中的每个 MAC 地址映射到设备已探测的另一个 ESSID 哈希表。 通过这样做,伪基站能够有效地重建和跟踪附近使用定向探测的客户端设备的 PNL

image.png

MANA 的客户端 PNL

MANA 算法的工作原理如下: 每次访问点接收到探测请求时,它首先确定它是广播探测还是定向探测。 如果是定向探测,则将发送方的 MAC 地址添加到哈希表(如果哈希表尚未存在的话) ,并将 ESSID 添加到该设备的 PNL AP 随后以定向探测响应进行响应。 如果它是一个广播探测,接入点将响应该设备的 PNL 中的每个网络的探测响应。 伪基站能够保持附近设备的 PNL 状态,这使得它能够对定向探测和广播探测做出精确响应。

使用 EAPHammer 执行 MANA 攻击

1.4.0版本中,EAPHammer 的基本 karma 实现已经被 White de Villers 的算法实现所取代,这大大提高了它对现代无线设备攻击的有效性。 从开发人员的角度来看,这是我写过的最具挑战性的代码之一,我甚至无法想象 White de Villiers 在没有已有的学习路线图的情况下完成这个任务会是什么样子(特别是考虑到整个攻击必须在 C 语言中使用内核和驱动程序级别的库函数来实现)

要使用 EAPHammer MANA 攻击新功能,可以使用—-mana 标志,如下面的例子所示:

./eaphammer -i wlan0 -e theClientAcceptsTheRisk --cloaking full --captive-portal --mana --mac-whitelist whitelist.txt

或者,你可以像以前一样继续使用—-karma 标志,这个标志现在是 —-mana  标志的别名:

./eaphammer -i wlan0 -e seemsLegit --cloaking full --captive-portal --karma --mac-whitelist whitelist.txt

已知的信标和 Loud Mode 攻击: 使用无定向探测攻击目标设备

White de Villers MANA 攻击允许我们锁定那些忽略探测响应的设备,这些探测响应来自不能准确响应广播探测的 AP 然而,标准的 MANA攻击仍然不允许我们攻击不使用定向探测的设备[1]

要攻击这些设备,我们可以使用仿冒的伪基站进行攻击,如果我们已经拥了目标的 PNL 信息。 但是如果我们事先没有这些信息呢? 有两种技术可以用来克服这个问题: Chatzisofroniou 提出的已知信标攻击和 White de Villers 提出的 Loud Mode 攻击。 我们将在接下来的章节中逐一介绍这些攻击技术。

Loud Mode 攻击

Loud Mode MANA 攻击的一种变体,它依赖于在物理上接近的多个客户端设备之间可能至少有一些在它们的 PNL 中相同的条目。

让我们考虑一下这个想法包含的安全含义。 我经常发现,把事情分解成()数学逻辑,可以更容易地推理出我们正在考虑的情景:

A B 是物理上彼此非常接近的无线客户端设备。 假设 A 使用定向探测进行网络发现。 

假设 B 没有使用定向探测进行网络发现,而是完全依赖于被动扫描。

假设 A B PNL 相交。

因为 A 使用的是定向探测,所以我们知道它的整个 PNL。因此我们也知道 B PNL 中至少有一个条目与 A 相同,因为 A B PNL 相交。

因此,我们可以同时使用伪基站攻击 A B

11.png


设备 A 使用主动探测(易受 MANA 攻击) 设备 B 使用被动扫描(不易受到 MANA 的攻击) 交叉的 PNL 意味着两者都容易受到 Loud Mode 的攻击

Loud Mode 攻击类似于基本的 MANA 攻击,但有一个关键的区别。 这个伪基站没有在一个特定设备的 PNL 中用每个 ESSID 响应探测请求,而是在它以前见过的所有设备中,为每个 PNL 中的每个 ESSID 发送探测响应。 根据集合理论,我们可以说 AP 为附近设备的所有 PNL 的联合中的每个 ESSID 发送探测响应。 通过这种方式,Loud Mode 攻击允许攻击者利用第二个设备的不良探测行为来攻击一个相对安全的设备。

22.gif

Loud Mode攻击演示动画

EAPHammer 中执行Loud Mode 攻击

EAPHammer 中,Loud Mode 攻击的算法与最初在 hostapd-mana 中实现的非常相似,尽管它们的实现方式有所不同。 正因为如此,对这两种工具的谍报技术的考虑是相同的。

要在 EAPHammer 中执行一个Loud Mode 的攻击,可以使用 --loud 标志  --karma    --mana 标志(记住它们是彼此的别名) :

./eaphammer -i wlan0 -e replicantWifi --cloaking full --mana --loud

另外,--singe  标志可以用作 --loud 标志的别名(我已经把它包含在攻击的创建者中) :

./eaphammer -i wlan0 -e tyrellCorp --cloaking full --mana --singe

已知信标攻击

虽然 Loud Mode 攻击非常有效,特别是在人口密集的地区,但这种攻击仍然在一些情况下不会成功。

已知信标攻击是 George Chatzisofroniou  2018年初首次开发和实现的,它试图解决 Loud Mode 攻击在某些情况下不能成功的问题。 这种攻击的天才之处在于它的简单。 攻击者首先从字典文件构造一组已知的 ESSID” 接下来,攻击者创建一个伪基站,这个伪基站被设置为接受任意的 ESSID 的关联请求(类似于基本的 karma 攻击) 最后,攻击者开始为已知的 ESSID 列表中的所有 ESSID 发送信标帧。 再次以集合论的方式来说就是: 如果字典中的所有 ESSID 集合与目标设备的 PNL 中的所有 ESSID 集合相交,则目标设备将连接到攻击者的伪基站。

 33.gif

已知信标攻击

理想情况下,Chatzisofroniou 提出的 Known Beacon 攻击应该使用一个相对常见的 ESSID 的字典来执行。

EAPHammer 中执行已知信标攻击

EAPHammer 中实现的已知信标攻击与 Chatzisofroniou 创建的原始攻击有很大的不同。 Chatzisofroniou 的实现中,字典文件被加载到与伪基站并发运行的 Python 脚本中。 当伪基站运行时,Python 脚本使用 Scapy (参见: https://scapy.net/) 为字典中的每个条目伪造和传输信标数据包。 EAPHammer 中,字典被加载到相同的哈希表中,这些哈希表用于实现本文前面描述的 MANA Loud Mode 攻击。 这使得 EAPHammer 能够直接从伪基站本身发送信标帧,而不依赖与 AP 一起运行的独立代码。

在语法方面,有几种不同的方法可以使用 EAPHammer 来执行已知信标攻击。 这两种方法都依赖于 --known-beacons 标志的使用。 --known-ssids 标志可以直接通过 EAPHammer 的命令行界面接口(CLI)提供简短的 ESSID 字典,如下面的例子所示:

# transmit beacons for the following ESSIDs: apples, oranges, grapes, pears, bananas
./eaphammer -i wlan0 \
    --mana \
    -e apples \
    --known-beacons \
    --captive-portal \
    --known-ssids oranges grapes pears bananas

或者,你可以使用 --known-ssids-file 标志来指定包含一列 ESSID 字典文件的路径,如下面的示例所示:

# transmit beacons for the following ESSIDs: apples + all ESSIDs in wordlist.txt
./eaphammer -i wlan0 \
    --mana \
    -e apples 
    —-known-beacons \
    --captive-portal \
    --known-ssids-file wordlist.txt

字典文件的格式应该如下面所示,每行只有一个 ESSID:

oranges
grapes
pears
bananas
dragon
lychee

需要注意的是,EAPHammer 将允许你在字典文件中的每一行的开始和结束处放置空白,并将此空白解释为 ESSID 的一部分。 在使用字典文件之前,一定要对它们进行相应的校对。

为了提高攻击效率, --known-beacons 标志可以与  --loud 标志别名组合使用,如下面的命令所示:

./eaphammer -i wlan0 --mana --loud -e apples --known-beacons --captive-portal --known-ssids-file wordlist.txt

44.gif 

已知信标攻击演示动画

提高已知信标攻击的效率

已知信标攻击的噪声往往有点大。 EAPHammer “forge-beacons”脚本(使用Python 编写)的形式提供了一种隐形选择,该脚本可以与伪基站并行运行,并可以在短时间内传输大量伪造信标数据包。 你所要做的就是把它指向一个字典文件,然后给它指定一个 AP BSSID,如下面的例子所示(注意 --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

55.gif

当与使用 MANAgement Frame ACL 的伪基站配对时,这个脚本是最有效的,我们将在本系列文章的第三部分中讨论这个问题。

总结

本系列文章的第二部分到此结束。 在第三部分中,我们将介绍如何使用MANAgement Frame ACL (MFACL)来约束针对特定目标的 MANA 攻击和已知信标攻击,使这些攻击在专业环境中具有操作可行性。 我们还将详细描述 MFACL 在技术层面上的工作方式,并讨论它们对 hostapd 运行时效率的影响。

参考资料

[1] https://sensepost.com/blog/2015/improvements-in-rogue-ap-attacks-mana-1%2F2/
[2] https://census-labs.com/news/2018/02/01/known-beacons-attack-34c3/
[3] https://github.com/sensepost/hostapd-mana/blob/master/src/ap/beacon.c
[4] https://github.com/sensepost/hostapd-mana/blob/master/src/ap/ap_config.h

  • 分享至
取消

感谢您的支持,我会继续努力的!

扫码支持

打开微信扫一扫后点击右上角即可分享哟

发表评论

 
本站4hou.com,所使用的字体和图片文字等素材部分来源于原作者或互联网共享平台。如使用任何字体和图片文字有侵犯其版权所有方的,嘶吼将配合联系原作者核实,并做出删除处理。
©2022 北京嘶吼文化传媒有限公司 京ICP备16063439号-1 本站由 提供云计算服务