Kali-Linux-无线渗透测试初学者指南第三版-一-

Kali Linux 无线渗透测试初学者指南第三版(一)

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

译者:飞龙

协议:CC BY-NC-SA 4.0

前言

无线网络已经在今天的世界中无处不在。全球每天有数百万人在家中、办公室和公共热点使用无线网络连接互联网,进行个人和职业工作。尽管无线网络让我们的生活变得极其便捷,提供了极大的流动性,但它也带来了风险。近年来,不安全的无线网络已被用来入侵公司、银行和政府机构。这些攻击的频率只增不减,因为网络管理员仍然对如何以强健和万无一失的方式保护无线网络一无所知。

《Kali Linux 无线渗透测试入门指南》,第三版,旨在帮助读者理解与无线网络相关的安全隐患,以及如何进行渗透测试来发现并修复这些漏洞。这本书是希望对无线网络进行安全审计的人必读的书,尤其是那些一直想要一本逐步实践指南的人。通过这本书,您的学习将完整无缺,因为每个无线攻击的讲解后面都会紧跟一个实践演示。

我们选择了 Kali Linux 作为平台,在本书中测试所有的无线攻击。Kali Linux,如你所知,是全球最流行的渗透测试发行版。它包含了成百上千的安全和黑客工具,其中一些我们将在本书中使用。

本书内容概览

第一章,无线实验室搭建,展示了如何使用现成的硬件和开源软件创建一个无线测试实验室。为了能够尝试本书中的几十个练习,您需要搭建一个无线实验室。我们将首先关注硬件需求,包括无线网卡、天线、接入点以及其他支持 Wi-Fi 的设备。接下来,我们将转向软件需求,包括操作系统、Wi-Fi 驱动程序和安全工具。最后,我们将创建一个实验平台,并在其上验证不同的无线配置。

第二章,WLAN 及其固有的不安全性,重点讲解了无线网络中固有的设计缺陷,这些缺陷使得无线网络从一开始就不安全。我们将使用名为 Wireshark 的网络分析工具快速回顾 802.11 WLAN 协议。这将使我们对这些协议的工作原理有一个实际的了解。最重要的是,我们将通过分析管理帧、控制帧和数据帧,看到客户端与接入点之间的通信如何在数据包层面上运作。然后,我们将学习如何进行数据包注入和数据包嗅探,并探讨一些能够帮助我们实现这些功能的工具。

第三章,绕过 WLAN 认证,展示了如何突破 WLAN 认证机制!我们将一步一步地探讨如何颠覆开放认证和共享密钥认证。在这个过程中,你将学习如何分析无线数据包,找出网络的认证机制。我们还将讨论如何突破启用了隐藏 SSID 和 MAC 过滤的网络。这两种机制是网络管理员常用来让无线网络更加隐秘和难以渗透的方法,然而,这些方法非常容易绕过。

第四章,WLAN 加密缺陷,描述了 WLAN 协议中最脆弱的部分之一——加密方案——包括 WEP、WPA 和 WPA2。在过去的十年里,黑客发现了这些加密方案的多个漏洞,并编写了公开的破解软件来解密数据。此外,尽管 WPA/WPA2 在设计上是安全的,但错误配置会导致安全漏洞,这些漏洞很容易被利用。在本章中,你将了解这些加密方案的安全隐患,并进行实操演示,展示如何破解它们。

第五章,WLAN 基础设施攻击,将焦点转向 WLAN 基础设施的漏洞。我们将探讨由配置和设计问题引发的漏洞。我们还将进行实际的攻击演示,包括接入点 MAC 欺骗、比特翻转和重放攻击、恶意接入点、模糊测试和拒绝服务攻击。本章将使你对如何进行 WLAN 基础设施渗透测试有一个扎实的理解。

第六章,攻击客户端,如果你一直认为无线客户端安全不需要担心,那么这章可能会让你大开眼界!大多数人在考虑 WLAN 安全时,都会把客户端排除在外。本章将毫无疑问地证明,客户端在渗透测试 WLAN 网络时和接入点一样重要。我们将探讨如何通过客户端攻击手段(如错误关联、Caffe Latte、去关联、对等连接、模糊测试和蜜罐)来危害安全。

第七章,高级 WLAN 攻击,在我们已经涵盖了基础设施和客户端的基本攻击之后,继续讨论更高级的攻击。这些攻击通常涉及将多个基础攻击结合使用,在更具挑战性的场景中突破安全防护。这些攻击包括无线设备指纹识别、无线中间人攻击、规避无线入侵检测与防御系统,以及使用自定义协议的恶意接入点操作。本章展示了现实世界中的无线攻击最前沿技术。

第八章,KRACK 攻击,探讨了 2017 年发现的一组新漏洞,涉及 WPA2 握手。你将复习并详细检查 WPA2 握手,了解这些新攻击是如何应用的。

第九章,攻击 WPA-Enterprise 和 RADIUS,通过介绍对 WPA-Enterprise 和 RADIUS 服务器设置的高级攻击,将你带入下一个层次。当你需要对依赖 WPA-Enterprise 和 RADIUS 身份验证来提供安全保障的大型企业网络进行渗透测试时,这些攻击会派上用场。

第十章,WLAN 渗透测试方法论,将前几章的所有学习内容汇集在一起,我们将系统性和有条理地学习如何进行无线渗透测试。你将了解渗透测试的各个阶段——规划、发现、攻击和报告,并将其应用到无线渗透测试中。我们还将了解如何在无线渗透测试后提出建议和最佳实践。

第十一章,WPS 和探测,涵盖了自初版发布以来,业界发展出的两种新攻击——WPS 暴力破解和探测嗅探监控。

本书所需内容

要跟随并重现本书中的实际操作,你将需要两台内置 Wi-Fi 卡的笔记本电脑、一只 USB 无线 Wi-Fi 适配器、Kali Linux 及一些其他硬件和软件。我们在第一章,无线实验室设置中已经详细说明了这些内容。

作为替代方案,你也可以创建一个虚拟机来运行 Kali Linux,并通过 USB 接口将 Wi-Fi 卡连接到虚拟机。这样可以帮助你更快地开始使用本书,但我们建议在实际评估中,使用一台专门运行 Kali Linux 的设备。

从前提角度来看,你应该了解无线网络的基础知识。这包括对 802.11 协议以及客户端-接入点通信的基础了解。尽管我们会在搭建实验室时简要涉及这些内容,但预期你已经掌握了这些概念。

本书适合谁阅读

虽然本书是初学者系列,但适用于所有水平的用户,从业余爱好者到无线安全专家。每个人都能从中受益。本书从简单的攻击开始,然后逐步讲解更复杂的攻击,最后讨论前沿攻击和研究。由于所有攻击都是通过实际演示进行讲解的,因此各个水平的读者都可以轻松地自己尝试这些攻击。请注意,尽管本书强调了可以针对无线网络发起的不同攻击,但真正的目的是教育用户成为一名无线渗透测试员。一位熟练的渗透测试员将理解书中的所有攻击,并能够在客户要求时轻松演示它们。

各章节

本书中有多个经常出现的标题(行动时间发生了什么?小测试挑战英雄)。

为了提供清晰的操作步骤或任务完成指南,我们将这些部分按以下方式呈现:

行动时间 – 标题

  1. 行动 1

  2. 行动 2

  3. 行动 3

指令通常需要一些额外的解释,以确保它们的意义清晰,因此这些部分后面会跟随更多的说明:

发生了什么?

本节解释了你刚刚完成的任务或指令的工作原理。

本书中还包括一些其他的学习辅助工具,例如:

小测试 – 标题

这些是简短的选择题,旨在帮助你测试自己对内容的理解。

挑战英雄 – 标题

这些是实际的挑战,能够为你提供实验和应用所学知识的灵感。

约定

你还会发现一些文本样式,用以区分不同类型的信息。以下是这些样式的示例及其含义的解释。

书中的代码字、数据库表名、文件夹名称、文件名、文件扩展名、路径名、虚拟网址、用户输入以及 Twitter 用户名等内容,格式如下所示:“将卡插入 Kali 笔记本的一个 USB 端口并启动它。登录后,打开一个终端并输入iwconfig。”

代码块如下所示:

import subprocess
import datetime
results = open("results.txt", "a")
while 1:
    cmd = subprocess.check_output(["tshark –n –i wlan0mon –T fields -e wlan.sa –e wlan.ssid –c 100"], shell=True)
    split = cmd.split("\n")
    for value in split[:-1]:
           if value.strip():
                   splitvalue = value.split("\t")
                   MAC = str(splitvalue[0])
                   SSID = str(splitvalue[1])
                   time = str(datetime.datetime.now())
                   results.write(MAC+" "+SSID+" "+time+"\r\n")

当我们希望特别引起你对某一代码块的注意时,相关行或项目将以粗体显示:

import subprocess
import datetime
results = open("results.txt", "a")
while 1:
    cmd = subprocess.check_output(["tshark –n –i wlan0mon –T fields -e wlan.sa –e wlan.ssid –c 100"], shell=True)
    split = cmd.split("\n")
    for value in split[:-1]:
           if value.strip():
 **splitvalue = value.split("\t")**
 **MAC = str(splitvalue[0])**
 **SSID = str(splitvalue[1])**
                   time = str(datetime.datetime.now())
                   results.write(MAC+" "+SSID+" "+time+"\r\n")

任何命令行输入或输出将按以下格式书写:

**ifconfig wlan0 up**

术语重要 词汇以粗体显示。你在屏幕上看到的单词、菜单或对话框中的词汇,如:“用此 DVD 启动笔记本并从启动菜单中选择安装选项”。

注意

警告或重要提示通常会出现在像这样的小框中。

提示

提示和技巧像这样显示。

读者反馈

我们始终欢迎读者的反馈。告诉我们你对本书的看法——你喜欢或不喜欢的部分。读者反馈对我们非常重要,它帮助我们开发你真正能够从中受益的书籍。

要向我们发送一般反馈,只需发送电子邮件至<feedback@packtpub.com>,并在邮件主题中提到书籍标题。

如果你在某个领域具有专业知识,并且有兴趣编写或贡献书籍,请参阅我们的作者指南:www.packtpub.com/authors

客户支持

现在你已经成为一本 Packt 书籍的骄傲拥有者,我们为你提供了很多帮助,以便你能从购买中获得最大收益。

下载示例代码

你可以从www.packtpub.com的账户中下载本书的示例代码文件。如果你从其他地方购买了本书,你可以访问www.packtpub.com/support,并注册以便将文件直接通过电子邮件发送给你。

你可以按照以下步骤下载代码文件:

  1. 使用你的电子邮件地址和密码登录或注册我们的官网。

  2. 将鼠标指针悬停在顶部的支持选项卡上。

  3. 点击代码下载与勘误表

  4. 搜索框中输入书名。

  5. 选择你想要下载代码文件的书籍。

  6. 从下拉菜单中选择你购买本书的地方。

  7. 点击代码下载

你也可以通过点击书籍网页上的代码文件按钮来下载代码文件。此页面可以通过在搜索框中输入书名来访问。请注意,你需要登录到你的 Packt 账户。

文件下载完成后,请确保使用最新版本的工具解压或提取文件夹:

  • 适用于 Windows 的 WinRAR / 7-Zip

  • 适用于 Mac 的 Zipeg / iZip / UnRarX

  • 适用于 Linux 的 7-Zip / PeaZip

本书的代码包也托管在 GitHub 上:github.com/PacktPublishing/Kali-Linux-Wireless-Penetration-Testing-Beginners-Guide-Third-Edition。我们还提供了其他书籍和视频的代码包,详情请访问github.com/PacktPublishing/。快去看看吧!

下载本书的彩色图片

我们还为你提供了一份包含本书中使用的截图/图表彩色图片的 PDF 文件。这些彩色图片将帮助你更好地理解输出的变化。你可以从 www.packtpub.com/sites/default/files/downloads/KaliLinuxWirelessPenetrationTestingBeginnersGuideThirdEdition_ColorImages.pdf 下载该文件。

勘误

尽管我们已经尽力确保内容的准确性,但错误仍然可能发生。如果你在我们的书籍中发现任何错误——可能是文本或代码中的错误——我们将非常感激你能向我们报告。通过这样做,你可以帮助其他读者避免困扰,并帮助我们改进该书的后续版本。如果你发现任何勘误,请访问 www.packtpub.com/submit-errata 进行报告,选择你的书籍,点击勘误提交表单链接,并填写勘误详情。一旦你的勘误被验证,你的提交将被接受,勘误将会上传到我们的网站或添加到该书勘误部分的现有勘误列表中。

要查看之前提交的勘误表,请访问 www.packtpub.com/books/content/support,并在搜索框中输入书名。所需信息将显示在勘误部分。

盗版

互联网盗版问题在所有媒体中都普遍存在。在 Packt,我们非常重视版权和许可的保护。如果你在互联网上发现任何形式的非法复制品,请立即提供该网址或网站名称,以便我们采取措施。

请通过 <copyright@packtpub.com> 与我们联系,提供涉嫌盗版材料的链接。

感谢你在保护我们的作者和我们提供有价值内容方面的帮助。

问题

如果你对本书的任何部分有问题,可以通过 <questions@packtpub.com> 与我们联系,我们将尽力解决问题。

第一章 无线实验室设置

“如果我有八个小时来砍倒一棵树,我会花六个小时来磨利我的斧头。”
--亚伯拉罕·林肯,第 16 任美国总统

每一次成功的执行背后都需要数小时或数天的准备工作,无线渗透测试也不例外。在这一章中,我们将创建一个无线实验室,供本书中的实验使用。把这个实验室当作你进入实际渗透测试前的准备场地吧!

无线渗透测试是一个实用的学科,首先设置一个实验室非常重要,在这里我们可以在安全、受控的环境中尝试本书中的所有不同实验。在继续本书之前,重要的是你首先要设置好这个实验室。

在本章中,我们将了解以下内容:

  • 硬件和软件要求

  • 安装 Kali

  • 设置一个接入点并进行配置

  • 安装无线网卡

  • 测试笔记本与接入点之间的连接

那么,让我们开始吧!

硬件要求

我们需要以下硬件来设置无线实验室:

  • 两台带内置 Wi-Fi 卡的笔记本电脑:我们将把其中一台笔记本作为实验室中的“受害者”电脑,另一台作为渗透测试者的笔记本。虽然几乎任何一台笔记本都能满足这个要求,但至少需要 3GB RAM 的笔记本会更理想。因为我们在实验中可能会运行很多占用内存的软件。

  • 一个无线适配器(可选):根据你笔记本的无线网卡,我们可能需要一个支持数据包注入和数据包嗅探的 USB Wi-Fi 卡,而 Kali 是支持这一功能的。最好的选择似乎是来自 Alfa Networks 的 Alfa AWUS036H 卡,因为 Kali 自带支持此卡。在撰写本书时,它在www.amazon.com上的零售价格为 18 英镑。另一个可选的选择是 Edimax EW-7711UAN,它更小巧且略微便宜。

  • 一个接入点:任何支持 WEP/WPA/WPA2 加密标准的接入点都可以。为了说明本书中的内容,我将使用 TP-LINK TL-WR841N 无线路由器。你可以在www.amazon.com上购买,零售价格大约为 20 英镑(截至撰写时)。

  • 互联网连接:这对于进行研究、下载软件以及我们的某些实验将非常有用。

软件要求

我们需要以下软件来设置无线实验室:

  • Kali:你可以从官方网站www.kali.org下载此软件。该软件是开源的,你应该能够直接从网站下载。

  • Windows XP/Vista/7/10:你需要在其中一台笔记本上安装 Windows XP、Windows Vista、Windows 7 或 Windows 10 中的任意一种。这台笔记本将作为本书余下章节中的“受害者”机器。

注意

需要注意的是,即使我们在测试中使用基于 Windows 的操作系统,所学到的技术也可以应用于任何支持 Wi-Fi 的设备,例如智能手机和平板电脑等。

安装 Kali

现在让我们快速看看如何快速上手并运行 Kali。

Kali 将安装在笔记本电脑上,作为本书中渗透测试人员的主要工具。

行动时间 - 安装 Kali

Kali 的安装相对简单。我们将通过启动光盘来运行 Kali,并将其安装在硬盘上。

按照以下步骤逐步执行:

  1. 将您下载的 Kali 32 位 ISO 刻录到可启动的 DVD 上。

  2. 使用此 DVD 启动笔记本电脑,并从启动菜单中选择 Install 选项:行动时间 - 安装 Kali

  3. 如果启动成功,您将看到一个很棒的复古屏幕,如下面的截图所示:行动时间 - 安装 Kali

  4. 此安装程序类似于大多数 Linux 系统的基于 GUI 的安装程序,应该很容易跟随。在每个屏幕上选择适当的选项并开始安装过程。安装完成后,按提示重新启动机器并移除光盘。

  5. 一旦机器重新启动,将显示登录屏幕。以 root 用户登录,密码是您在安装过程中设置的密码。现在您应该已经成功登录到安装好的 Kali 版本。恭喜!

  6. 我将更改桌面主题和一些设置以适应本书。随意使用您自己的主题和颜色设置!

刚刚发生了什么?

我们已成功在笔记本电脑上安装了 Kali!在本书的所有其他实验中,我们将使用这台笔记本电脑作为渗透测试人员的工作设备。

挑战英雄 - 在 VirtualBox 上安装 Kali

我们还可以在诸如 VirtualBox 等虚拟化软件中安装 Kali。如果您不想将整个笔记本专用于 Kali,这是最佳选择。在 VirtualBox 中,Kali 的安装过程完全相同。唯一的区别是您需要在 VirtualBox 中进行预设置。试试看吧!您可以从 www.virtualbox.org 下载 VirtualBox。

我们还可以通过 USB 驱动器安装和使用 Kali。如果您不想在硬盘上安装,但仍想存储持久数据(如脚本和新工具),这将特别有用。我们也鼓励您尝试这种方法!

设置访问点

现在我们将设置访问点。如前所述,我们将在本书的所有实验中使用 TP-LINK TL-WR841N 无线路由器。不过,您可以自由选择其他访问点。操作和使用的基本原理保持不变。

行动时间 - 配置访问点

让我们开始吧!我们将配置接入点使用开放认证OAuth),并将 SSID 设置为 Wireless Lab

按照以下步骤操作:

  1. 打开接入点,并使用以太网线将你的笔记本电脑连接到接入点的一个以太网端口。

  2. 在浏览器中输入接入点配置终端的 IP 地址。对于 TP-Link,默认地址是 192.168.1.1。你应查阅接入点的设置指南以找到其 IP 地址。如果没有接入点的手册,也可以通过运行 route –n 命令来找到 IP 地址。网关 IP 地址通常就是接入点的 IP。连接后,你应该会看到一个配置门户,其界面类似于以下TP-LINK 无线路由器 WR841N的截图:行动时间——配置接入点

  3. 登录后,浏览门户中的各种设置,找到与配置新 SSID 相关的设置。

  4. 将 SSID 更改为 Wireless Lab。根据接入点的不同,你可能需要重启它才能使设置生效。

  5. 同样,找到与无线安全相关的设置,并将其更改为禁用安全禁用安全表示它使用的是开放认证模式。行动时间——配置接入点

  6. 保存接入点的更改并重新启动它(如果需要)。现在你的接入点应该已成功启动,SSID 为 Wireless Lab

验证这一点的简单方法是使用 Windows 中的无线配置工具,并观察使用 Windows 笔记本电脑可用的网络。你应该能在列表中找到Wireless Lab作为其中一个网络:

行动时间——配置接入点

刚刚发生了什么?

我们已成功设置接入点的 SSID 为 Wireless Lab。它正在广播其存在,并且 Windows 笔记本电脑及其他在接入点无线频率RF)范围内的设备可以接收到它。

需要注意的是,我们将接入点配置为开放模式,这是最不安全的。建议暂时不要将此接入点连接到互联网,因为任何在无线频率范围内的人都可以利用它访问互联网。

英雄出击——配置接入点使用 WEP 和 WPA

玩弄接入点的配置选项。尝试使用加密方案,如 WEP 和 WPA/WPA2,使其正常运行。我们将在后续章节中使用这些模式来演示对它们的攻击。

设置无线网卡

设置无线适配器比配置接入点要简单得多。优势在于 Kali 开箱即用支持此卡,并且自带所有必要的设备驱动程序,可以启用数据包注入和数据包嗅探。

行动时间——配置你的无线网卡

我们将使用无线适配器与渗透测试人员的笔记本进行配合使用。

请按照以下步骤逐步设置您的网卡:

  1. 将网卡插入 Kali 笔记本的 USB 端口并启动它。登录后,打开终端窗口并输入 iwconfig。您的屏幕应该如下所示:现在开始操作 – 配置您的无线网卡

    如您所见,wlan0 是为无线适配器创建的无线接口。

    输入 ifconfig wlan0 up 来启用接口。然后,输入 ifconfig wlan0 来查看接口的当前状态:

    现在开始操作 – 配置您的无线网卡

  2. MAC 地址 00:c0:ca:3e:bd:93 应该类似于您 Alfa 网卡下写的 MAC 地址。我使用的是 Edimax 网卡,给我提供了前面的 MAC 地址 80:1f:02:8f:34:d5。这是一个快速检查,以确保您启用了正确的接口。

刚刚发生了什么?

Kali 系统自带了 Alfa 和 Edimax 适配器所需的所有驱动程序。机器启动后,适配器被识别并分配了网络接口 wlan0。现在我们的无线适配器已经启动并正常工作了!

连接到接入点

现在我们来看看如何使用无线适配器连接到接入点。我们的接入点有一个 SSID,即 Wireless Lab,并且不使用任何认证方式。

现在开始操作 – 配置您的无线网卡

让我们开始吧!请按照以下步骤将您的无线网卡连接到接入点:

  1. 让我们先看看无线网卡当前检测到哪些无线网络。执行 iwlist wlan0 scanning 命令,您将看到您附近的网络列表:现在开始操作 – 配置您的无线网卡

    继续向下滚动,您应该在此列表中找到 Wireless Lab 网络。在我的设置中,它被检测为 Cell 05,在您的设备中可能会有所不同。ESSID 字段包含网络名称。

  2. 由于多个接入点可能有相同的 SSID,请确保前面提到的 Address 字段中的 MAC 地址与接入点的 MAC 地址匹配。一个快速且简单的方法是查看接入点底部的 MAC 地址,或者使用基于网页的 GUI 设置来查找。

  3. 现在,执行 iwconfig wlan0 essid "Wireless Lab" 命令,然后执行 iwconfig wlan0 来检查状态。如果您已成功连接到接入点,您应该在 iwconfig 输出的 Access Point 字段中看到接入点的 MAC 地址。

  4. 我们知道接入点的管理界面 IP 地址是 192.168.0.1,这个信息可以从其手册中找到。或者,当我们运行 route –n 命令时,默认的路由器 IP 地址也是这个。让我们通过执行 ifconfig wlan0 192.168.0.2 netmask 255.255.255.0 up 命令,将 IP 地址设置在同一子网中。通过输入 ifconfig wlan0 并检查输出,验证命令是否成功执行。

  5. 现在,让我们通过执行 ping 192.168.0.1 命令来 ping 接入点。如果网络连接设置正确,您应该看到来自接入点的响应。您还可以额外执行 arp –a 命令来验证响应是否来自接入点。您应该会看到 IP 192.168.0.1 的 MAC 地址是我们之前记录的接入点的 MAC 地址。需要注意的是,一些较新的接入点可能会禁用对 互联网控制消息协议 (ICMP) 回显请求包的响应。这通常是为了让接入点在最小配置设置下更安全。遇到这种情况,您可以尝试启动浏览器并访问 Web 界面,验证连接是否正常:操作时间 – 配置您的无线网卡

  6. 在接入点上,我们可以通过查看连接日志来验证连接情况。正如您在以下日志中看到的,无线网卡的 MAC 地址 4C:0F:6E:70:BD:CB 已经记录了来自路由器的 DHCP 请求:操作时间 – 配置您的无线网卡

刚刚发生了什么?

我们刚刚成功地通过 Kali 使用无线适配器连接到接入点。我们还学习了如何在无线客户端和接入点两侧验证连接是否已建立。

英雄试试 – 在 WEP 配置中建立连接

这里有一个具有挑战性的练习:在 WEP 配置中设置接入点。对于每个设置,尝试使用无线适配器与接入点建立连接。提示:通过输入 man iwconfig 查阅 iwconfig 命令的手册,查看如何配置网卡以连接到 WEP。

快速测验 – 理解基础知识

Q1. 执行 ifconfig wlan0 命令后,如何验证无线网卡是否正常工作?

Q2. 我们能仅使用 Kali live CD 进行所有实验吗?我们不能将 CD 安装到硬盘上吗?

Q3. arp –a 命令显示什么?

Q4. 我们应该使用 Kali 中的哪个工具连接到 WPA/WPA2 网络?

总结

本章为您提供了如何设置自己的无线实验室的详细说明。此外,您还学习了执行以下基本步骤:

  • 在硬盘上安装 Kali 并探索其他选项,如虚拟机和 USB。

  • 通过 Web 界面配置接入点

  • 理解并使用多个命令来配置和使用您的无线网卡

  • 验证无线客户端与接入点之间的连接状态

增强配置系统的信心对您很重要。如果您不自信,建议您多次重复前面的示例。在后续章节中,我们将设计更复杂的场景。

在下一章中,你将学习到 WLAN 设计中固有的基于设计的安全隐患。我们将使用网络分析工具 Wireshark,以一种实践的方式来理解这些概念。

第二章 WLAN 及其固有的不安全性

"建筑越高,基础必须越深。"
--托马斯·阿·坎皮斯

没有伟大的东西可以建立在脆弱的基础上,在我们的背景下,没有安全的东西可以建立在本质上不安全的基础上。

WLAN 设计上存在某些相对容易被利用的不安全性,例如数据包欺骗、数据包注入和嗅探(甚至可以远程进行)。我们将在本章探讨这些缺陷。

在本章中,我们将讨论以下内容:

  • 重访 WLAN 帧

  • 不同的帧类型和子类型

  • 使用 Wireshark 来嗅探管理、控制和数据帧

  • 对给定无线网络进行数据包嗅探

  • 向给定无线网络注入数据包

让我们开始吧!

重访 WLAN 帧

由于本书涉及无线安全方面的内容,我们假定您已经对协议和数据包头部有基本了解。如果没有,或者如果您已经有一段时间没有处理无线网络,那么现在是重新学习这个主题的好时机。

现在让我们快速回顾一些大家可能已经了解的 WLAN 基本概念。在 WLAN 中,通信是通过帧来进行的。一个帧会有以下头部结构:

重访 WLAN 帧

Frame Control字段本身具有更复杂的结构:

重访 WLAN 帧

Type字段定义了三种 WLAN 帧类型:

  • 管理帧:管理帧负责维护接入点和无线客户端之间的通信。管理帧可以有以下子类型:

    • 认证

    • 注销认证

    • 关联请求

    • 关联响应

    • 重新关联请求

    • 重新关联响应

    • 断开连接

    • 信标

    • 探测请求

    • 探测响应

  • 控制帧:控制帧负责确保接入点和无线客户端之间数据的正确交换。控制帧可以具有以下子类型:

    • Request to Send (RTS)

    • Clear to Send (CTS)

    • 确认 (ACK)

  • 数据帧:数据帧携带实际在无线网络上传输的数据。数据帧没有子类型。

当我们讨论不同攻击时,我们将讨论每个帧的安全影响。

现在我们将看看如何使用 Wireshark 在无线网络上嗅探这些帧。还有其他工具——如 Airodump-NG、Tcpdump 或 Tshark,你也可以用来进行嗅探。在本书中,我们主要使用 Wireshark,但我们鼓励你也探索其他工具。首先要做的是创建一个监视模式接口。这将为我们的适配器创建一个接口,允许我们读取空中的所有无线帧,无论它们是否是为我们而来的。在有线世界中,这通常称为混杂模式

开始操作 – 创建监控模式接口

现在,让我们将无线适配器设置为监控模式。

按照以下步骤开始操作:

  1. 启动 Kali 并连接适配器。进入控制台后,输入iwconfig命令确认网卡已经被检测到并且驱动程序已正确加载:开始操作 – 创建监控模式接口

  2. 使用ifconfig wlan0 up命令启用网卡(其中wlan0是你的适配器)。通过运行ifconfig wlan0命令验证网卡是否已启用。你应该在输出的第一行看到UP字样,如下图所示:开始操作 – 创建监控模式接口

  3. 为了将我们的网卡设置为监控模式,我们将使用 Kali 系统默认提供的airmon-ng工具。首先运行airmon-ng命令以验证是否能够检测到可用的网卡。你应该在输出中看到wlan0wlan1接口:开始操作 – 创建监控模式接口

  4. 现在输入airmon-ng start wlan0命令,为wlan0设备创建一个监控模式接口。这个新的监控模式接口将被命名为wlan0mon。(你可以通过再次运行airmon-ng命令来验证它是否已经创建):开始操作 – 创建监控模式接口

  5. 此外,运行ifconfig wlan0mon命令现在应该显示一个名为wlan0mon的新接口:开始操作 – 创建监控模式接口

刚刚发生了什么?

我们已经成功创建了一个名为wlan0mon的监控模式接口。这个接口将用于捕获无线数据包。这个接口是为我们的无线适配器创建的。

挑战一下英雄 – 创建多个监控模式接口

可以使用相同的物理网卡创建多个监控模式接口。使用airmon-ng工具查看如何操作。

太棒了!我们已经有了一个监控模式接口,等待从空中捕获数据包。那么,让我们开始吧。

在下一个练习中,我们将使用 Wireshark 通过我们刚刚创建的wlan0mon监控模式接口来捕获无线数据包。

开始操作 – 捕获无线数据包

按照以下步骤开始捕获数据包:

  1. 启动我们在第一章中配置的接入点Wireless Lab无线实验室设置

  2. 在控制台中输入Wireshark &启动 Wireshark。一旦 Wireshark 启动,导航到Capture | Options开始操作 – 捕获无线数据包

  3. 通过点击界面右下角的开始按钮,选择来自 wlan0mon 接口的数据包捕获,正如前面截图所示。Wireshark 将开始捕获,现在你应该能在 Wireshark 窗口中看到数据包。行动时间 – 嗅探无线数据包

  4. 这些是无线数据包,你的无线适配器正在从空中嗅探它们。为了查看任何数据包,在顶部窗口中选择它,整个数据包将在中间窗口显示。行动时间 – 嗅探无线数据包

    点击IEEE 802.11 无线局域网管理帧前的三角形展开,查看更多信息。

查看数据包中的不同头部字段,并将其与之前学过的 WLAN 帧类型和子类型进行关联。

刚刚发生了什么?

我们刚刚从空中嗅探到第一组数据包!我们启动了 Wireshark,它使用了我们之前创建的监控模式接口 wlan0mon。通过查看 Wireshark 的底部区域,你应该能看到数据包捕获的速度以及目前已捕获的数据包数量。

挑战时刻 – 查找不同的设备

Wireshark 的跟踪信息有时可能让人望而生畏;即使是一个相对繁忙的无线网络,你也可能嗅探到几千个数据包。因此,能够深入分析我们感兴趣的数据包非常重要。通过在 Wireshark 中使用过滤器可以实现这一点。探索如何使用这些过滤器来识别跟踪中独特的无线设备——包括接入点和无线客户端。

如果你无法做到这一步,别担心,因为这是我们接下来要学习的内容。

行动时间 – 查看管理帧、控制帧和数据帧

现在,我们将学习如何在 Wireshark 中应用过滤器来查看管理帧、控制帧和数据帧。

请按步骤逐一操作:

  1. 若要查看捕获的数据包中的所有管理帧,请在过滤器窗口中输入过滤器 wlan.fc.type == 0 并按 Enter 键。如果你希望防止数据包滚动得太快,可以停止数据包捕获。行动时间 – 查看管理帧、控制帧和数据帧

  2. 要查看控制帧,请修改过滤器表达式为 wlan.fc.type == 1行动时间 – 查看管理帧、控制帧和数据帧

  3. 要查看数据帧,请修改过滤器表达式为 wlan.fc.type == 2行动时间 – 查看管理帧、控制帧和数据帧

  4. 若要额外选择一个子类型,请使用 wlan.fc.subtype 过滤器。例如,要查看所有管理帧中的信标帧,请使用以下过滤器:

    (wlan.fc.type == 0) && (wlan.fc.subtype == 8)
    

    行动时间 – 查看管理帧、控制帧和数据帧

  5. 或者,你也可以右键单击中间窗口中的任何头字段,然后选择应用为过滤器 | 所选内容,将其添加为过滤器:行动时刻——查看管理、控制和数据帧

  6. 这将自动在过滤器字段中为你添加正确的过滤器表达式。

刚才发生了什么?

我们刚刚学习了如何使用各种过滤器表达式在 Wireshark 中过滤数据包。这有助于我们监控来自我们感兴趣设备的选定数据包,而不是试图分析空中的所有数据包。

另外,我们可以看到,管理帧、控制帧和数据帧的包头是明文的,并且没有加密。任何能够嗅探数据包的人都可以读取这些头部。还需要注意的是,黑客也有可能修改这些数据包中的任何内容并重新传输它们。由于协议中没有完整性检查或重放攻击的缓解措施,因此这是非常容易做到的。我们将在后续章节中探讨这些攻击。

英雄,来试试吧——玩转过滤器

你可以查阅 Wireshark 的手册,了解更多可用的过滤器表达式及其使用方法。尝试通过各种过滤器组合进行实验,直到你有信心可以在非常大的数据包追踪中深入到任何细节层级。

在下一个练习中,我们将学习如何嗅探在我们的接入点与无线客户端之间传输的数据包。

行动时刻——嗅探我们网络的数据包

在本练习中,我们将学习如何嗅探给定无线网络的数据包。为了简化起见,我们将观察没有加密的数据包。

按照这些指令开始操作:

  1. 打开我们命名为Wireless Lab的接入点,并保持其配置为不使用加密。

  2. 我们首先需要找出Wireless Lab接入点所在的频道。为此,打开终端并运行airodump-ng --bssid <mac> wlan0mon,其中<mac>是我们接入点的 MAC 地址。让程序运行,不久你应该能看到你的接入点和它运行的频道出现在屏幕上。

  3. 我们可以从上面的截图看到,我们的接入点Wireless Lab正在频道 11 上运行。请注意,这可能与你的接入点不同。

    为了嗅探进出这个接入点的数据包,我们需要将我们的无线网卡锁定到相同的频道,即频道 11。为此,运行命令iwconfig wlan0mon channel 11,然后运行iwconfig wlan0mon进行验证。你应该在输出中看到Frequency: 2.462 GHz的值。这对应于频道 11。

    行动时刻——嗅探我们网络的数据包

  4. 现在启动 Wireshark 并开始在wlan0mon接口上嗅探数据包。在 Wireshark 开始嗅探数据包后,应用一个过滤器,针对我们的接入点的bssid,如以下屏幕截图所示,使用wlan.bssid == <mac>进行过滤。请使用适合你的接入点的 MAC 地址。操作时间 – 嗅探我们网络的数据包

  5. 为了查看我们接入点的数据包,请将以下内容添加到过滤器中(wlan.bssid == <mac>) && (wlan.fc.type_subtype == 0x20)。在客户端笔记本上打开浏览器,并在管理界面中输入接入点的 URL。根据我们在第一章中看到的无线实验室设置,它是http://192.168.0.1。这将生成 Wireshark 可以捕获的数据包。

  6. 数据包嗅探使我们能够非常容易地分析未加密的数据包。这就是我们需要在无线网络中使用加密的原因。

刚刚发生了什么?

我们刚刚通过 Wireshark 使用不同的过滤器嗅探了无线数据包。由于我们的接入点没有启用加密,所以我们能够看到所有的明文数据。这是一个重大的安全问题,因为任何处在接入点射频范围内的人都可以使用像 Wireshark 这样的嗅探工具看到所有数据包。

试试看,英雄 – 分析数据包

使用 Wireshark 进一步分析数据包。你会注意到客户端发出了一个 DHCP 请求,并且如果有 DHCP 服务器可用,它会响应一个地址。然后你会看到 ARP 数据包和其他协议数据包。这是一种在无线网络上进行被动主机发现的简单有效方法。能够查看数据包的跟踪并重建无线主机如何与网络上的其他部分通信是非常重要的。Wireshark 提供的一个有趣功能是能够跟踪流。这使你可以查看属于同一个 TCP 交换的多个数据包,集中在同一个连接中。

另外,尝试登录到www.gmail.com或任何其他流行的网站,并分析生成的数据流量。

我们现在将演示如何向无线网络中注入数据包。

操作时间 – 数据包注入

本次练习将使用aireplay-ng工具,该工具在 Kali 中可用。

请仔细遵循以下说明:

  1. 为了进行注入测试,首先启动 Wireshark,并应用过滤表达式(wlan.bssid == <mac>) && !(wlan.fc.type_subtype == 0x08)。这将确保我们只看到我们实验室网络中的非信标数据包。

  2. 现在在终端中运行命令aireplay-ng -9 -e Wireless Lab -a <mac> wlan0mon

  3. 返回到 Wireshark,你现在应该在屏幕上看到很多数据包。其中一些数据包是由我们启动的aireplay-ng发送的,其他的则是接入点Wireless Lab响应注入数据包后的数据包。

刚刚发生了什么?

我们刚刚通过aireplay-ng成功向测试实验室网络注入了数据包。需要注意的是,我们的卡在没有实际连接到接入点Wireless Lab的情况下,向网络注入了这些任意的数据包。

英雄出击 – 在 VirtualBox 上安装 Kali

我们将在后面的章节中更详细地讨论数据包注入;不过,您可以随时探索aireplay-ng工具的其他选项来注入数据包。你可以使用 Wireshark 来监视无线电频谱,验证注入是否成功。

关于 WLAN 嗅探和注入的重要注意事项

WLAN 通常在三个不同的频段内工作——2.4 GHz、3.6 GHz 和 4.9/5.0 GHz。并非所有 Wi-Fi 卡都支持所有这些频段及其相关的子频带。例如,旧版的 Alfa 卡仅支持 IEEE 802.11b/g,这意味着这些卡无法在 802.11a/n 频段下工作。关键在于要在特定频段中进行嗅探或注入数据包;你的 Wi-Fi 卡需要支持该频段。

Wi-Fi 的另一个有趣方面是,在每个频段内都有多个频道。需要注意的是,你的 Wi-Fi 卡在任何时刻只能在一个频道上。无法同时调谐到多个频道。最好的类比是你的汽车收音机。你一次只能调到一个可用频道。如果你想听不同的频道,你必须换台。WLAN 嗅探也遵循相同的原则。这让我们得出一个重要结论——我们不能同时嗅探所有频道;我们需要选择一个感兴趣的频道。这意味着,如果我们的目标接入点在频道 1,我们就需要将卡设置到频道 1。

虽然我们在前面的段落中已经讨论了 WLAN 嗅探,但注入的原理也相同。要在特定频道上注入数据包,我们需要将卡的无线电设置到那个频道。

现在我们来做一些练习,设置我们的卡到特定频道,进行频道跳跃,设置监管域、功率级别等。

开始行动 – 实验你的适配器

请仔细按照以下步骤操作:

  1. 要将卡设置到特定频道,我们使用iwconfig wlan0mon channel X命令:开始行动 – 实验你的适配器

  2. iwconfig系列命令没有频道跳跃模式。可以编写一个简单的脚本来实现此功能。更简单的方法是使用airodump-ng,通过选项来任意跳跃频道、仅使用部分频道或仅使用特定频段。所有这些选项可以通过运行airodump-ng --help命令时的截图来查看:开始行动 – 实验你的适配器

刚刚发生了什么?

我们理解到,无线嗅探和数据包注入都依赖于硬件的支持。这意味着我们只能操作网卡允许的频段和频道。此外,无线网卡的射频一次只能工作在一个频道上。因此,这意味着我们一次只能在一个频道上进行嗅探或注入。

尝试一下,英雄 – 嗅探多个频道

如果你需要同时在多个频道上进行嗅探,你将需要多个物理 Wi-Fi 网卡。如果能够获得额外的网卡,可以尝试同时在多个频道上进行嗅探。

快速测验 – WLAN 数据包嗅探与注入

Q1. 哪些帧类型负责 WLAN 中的认证?

  1. 控制

  2. 管理

  3. 数据

  4. QoS

Q2. 使用airmon-ngwlan0上创建的第二个监视模式接口名称是什么?

  1. wlan0mon

  2. wlan0mon1

  3. 1mon

  4. monb

Q3. 在 Wireshark 中查看所有非信标帧的过滤表达式是什么?

  1. !(wlan.fc.type_subtype == 0x08)

  2. wlan.fc.type_subtype == 0x08

  3. (无信标)

  4. wlan.fc.type == 0x08

总结

在本章中,我们对 WLAN 协议进行了若干关键观察。

管理帧、控制帧和数据帧未加密,因此可以很容易地被监控空域的任何人读取。这里需要注意的是,数据包有效载荷可以通过加密来保护,从而保持机密性。我们将在下一章讨论这一点。

我们可以通过将无线网卡设置为监视模式,嗅探我们周围的整个空域。

由于管理帧和控制帧没有完整性保护,因此通过修改这些数据包或使用像aireplay-ng这样的工具将其重放为原样非常容易。

未加密的数据包也可以被修改并重新播放回网络。如果数据包是加密的,我们仍然可以原样重新播放该数据包,因为 WLAN 设计上没有数据包重放保护。

在下一章中,我们将探讨 WLAN 中使用的不同认证机制,如 MAC 过滤和共享认证,并通过现场演示了解它们的各种安全漏洞。

第三章 绕过 WLAN 认证

"虚假的安全感比不确定更糟糕。"
--匿名

虚假的安全感比没有安全感更糟糕,因为你可能没有准备好面对被黑客攻击的结果。

WLAN 可能具有脆弱的认证方案,容易被破解和绕过。在本章中,我们将研究 WLAN 中使用的各种基本认证方案,并学习如何击败它们。

在本章中,我们将讨论以下主题:

  • 揭露隐藏的 SSID

  • 击败 MAC 过滤器

  • 绕过开放认证

  • 绕过 共享密钥认证SKA

隐藏 SSID

在默认配置模式下,所有接入点都会在信标帧中广播其 SSID。这使得附近的客户端能够轻松发现它们。隐藏 SSID 是一种配置,其中接入点不在信标帧中广播其 SSID。因此,只有知道接入点 SSID 的客户端才能连接到它。

不幸的是,这一措施并未提供强大的安全性,但大多数网络管理员认为它有效。隐藏 SSID 绝不应被视为一种安全措施。现在我们将探讨如何揭露隐藏的 SSID。

开始行动 – 揭露隐藏的 SSID

请按照以下指示操作,开始进行:

  1. 使用 Wireshark,如果我们监控无线实验室网络中的信标帧,我们能够看到 SSID 明文。你应该能看到信标帧,如下图所示:开始行动 – 揭露隐藏的 SSID

  2. 配置你的接入点,将 Wireless Lab 网络设置为隐藏 SSID。不同的接入点配置选项可能不同。在我的案例中,我需要在 可见性状态 选项中勾选 Invisible,如下图所示:开始行动 – 揭露隐藏的 SSID

  3. 现在,如果你查看 Wireshark 跟踪,你会发现 SSID Wireless Lab 已经从信标帧中消失。这就是隐藏 SSID 的本质:开始行动 – 揭露隐藏的 SSID

  4. 为了绕过信标帧,我们将首先使用被动技术,等待合法客户端连接到接入点。这将生成探测请求和探测响应数据包,其中包含网络的 SSID,从而揭示其存在:开始行动 – 揭露隐藏的 SSID

  5. 或者,你也可以使用aireplay-ng工具代表Wireless Lab接入点向所有站点发送去认证数据包,命令为aireplay-ng -0 5 -a <mac> --ignore-negative wlan0mon,其中<mac>是路由器的 MAC 地址。-0选项用于选择去认证攻击,5是要发送的去认证数据包的数量。最后,-a指定你要攻击的接入点的 MAC 地址:行动时刻 – 揭开隐藏的 SSID

  6. 前面的去认证数据包将迫使所有合法客户端断开连接并重新连接。最好添加一个过滤器来以隔离的方式查看去认证数据包,方法是使用wlan.fc.type_subtype == 0x0c行动时刻 – 揭开隐藏的 SSID

  7. 来自接入点的探测响应最终会揭示其隐藏的 SSID。这些数据包会显示在 Wireshark 中,如下截图所示。一旦合法客户端重新连接,我们可以通过探测请求和探测响应帧查看隐藏的 SSID。你可以使用过滤器(wlan.bssid == <the AP MAC>) && !(wlan.fc.type_subtype == 0x08)来监视进出接入点的所有非信标数据包。&&表示逻辑与运算符,!表示逻辑非运算符:行动时刻 – 揭开隐藏的 SSID

刚刚发生了什么?

即使 SSID 被隐藏且未广播,每当合法客户端尝试连接到接入点时,它们会交换探测请求和探测响应数据包。这些数据包包含接入点的 SSID。由于这些数据包没有加密,因此可以非常轻松地从空气中嗅探到,SSID 也就暴露出来。

我们将在后续章节中讲解使用探测请求进行其他目的,如跟踪。

在许多情况下,所有客户端可能已经连接到接入点,Wireshark 跟踪中可能没有探测请求/响应数据包。此时,我们可以通过在空中发送伪造的去认证数据包,强制客户端从接入点断开连接。这些数据包将迫使客户端重新连接接入点,从而揭示 SSID。

动起来,英雄 – 选择去认证

在上一个练习中,我们发送了广播去认证数据包以迫使所有无线客户端重新连接。试着验证如何使用aireplay-ng工具有选择地针对单个客户端。

需要注意的是,尽管我们使用 Wireshark 说明了许多概念,但也可以使用其他工具来进行这些攻击,比如aircrack-ng套件。我们鼓励你探索整个aircrack-ng工具集,并查阅其官网上的其他文档:www.aircrack-ng.org

MAC 过滤器

MAC 过滤器是一种古老的身份验证和授权技术,其根源在有线网络中。不幸的是,它们在无线环境中效果极差。

基本思路是基于客户端的 MAC 地址进行身份验证。MAC 过滤器是分配给网络接口的身份识别码;路由器能够检查这个代码,并将其与批准的 MAC 地址列表进行比较。允许的 MAC 地址列表将由网络管理员维护,并输入到接入点。接下来我们将看看绕过 MAC 过滤有多么容易。

行动时刻——突破 MAC 过滤

按照下面的说明开始操作:

  1. 首先,我们配置接入点使用 MAC 过滤,并将受害者笔记本的客户端 MAC 地址添加到白名单中。我路由器的设置页面如下所示:Time for action – beating MAC filters

  2. 一旦启用 MAC 过滤,只有允许的 MAC 地址才能成功通过接入点的身份验证。如果我们尝试从具有非白名单 MAC 地址的机器连接接入点,连接将会失败。

  3. 在后台,接入点正在向客户端发送认证失败消息。数据包跟踪如下所示:Time for action – beating MAC filters

  4. 为了绕过 MAC 过滤器,我们可以使用airodump-ng来查找连接到接入点的客户端的 MAC 地址。我们可以通过执行airodump-ng -c 10 -a --bssid <mac> wlan0mon命令来实现。通过指定bssid命令,我们将只监控感兴趣的接入点。-c 10命令设置频道为10,即接入点所在的频道。-a命令确保在airodump-ng输出的客户端部分中,仅显示已关联并连接到接入点的客户端。这将展示与接入点关联的所有客户端 MAC 地址:Time for action – beating MAC filters

  5. 一旦我们找到了白名单客户端的 MAC 地址,就可以使用 Kali 自带的macchanger工具伪造该客户端的 MAC 地址。你可以使用macchanger –m <mac> wlan0mon命令来完成此操作。你在-m命令选项中指定的 MAC 地址将是wlan0mon接口的新伪造 MAC 地址:Time for action – beating MAC filters

  6. 如你所见,我们现在能够通过伪造一个白名单客户端的 MAC 地址来连接到接入点。

刚才发生了什么?

我们使用airodump-ng监控无线信号,找到了连接到无线网络的合法客户端的 MAC 地址。然后,我们使用macchanger工具将无线网卡的 MAC 地址更改为与客户端相匹配的地址。这样接入点误以为我们是合法客户端,允许我们访问其无线网络。

您被鼓励通过查阅它们网站上的文档来探索airodump-ng工具的不同选项:www.aircrack-ng.org/doku.php?id=airodump-ng

开放认证

开放认证这一术语几乎是一个误称,因为它实际上根本不提供认证。当接入点配置为使用开放认证时,它将成功地认证所有连接到它的客户端。

现在我们将进行一个练习,以通过开放认证对接入点进行身份验证和连接。

操作时间 - 绕过开放认证

现在让我们看看如何绕过开放认证:

  1. 我们将首先设置我们的实验室接入点 Wireless Lab 以使用开放认证。在我的接入点上,这只需通过将安全模式设置为禁用安全来完成:操作时间 - 绕过开放认证

  2. 然后,我们使用iwconfig wlan0 essid Wireless Lab命令连接到此接入点,并验证连接是否成功以及我们是否已连接到接入点。

  3. 请注意,我们无需提供任何用户名/密码/口令即可通过开放认证。

刚才发生了什么?

到目前为止,这可能是最简单的练习了。正如您所见,连接到开放认证网络并连接到接入点没有障碍。

共享密钥认证

SKA 使用共享密钥,如 WEP 密钥,用于对客户端进行身份验证。以下截图显示了信息的确切交换过程(来自www.netgear.com):

共享密钥认证

无线客户端向接入点发送认证请求,接入点响应挑战。现在客户端需要用共享密钥加密此挑战并将其发送回接入点,接入点解密以检查是否可以恢复原始挑战文本。如果成功,客户端成功认证;否则,发送认证失败消息。

这里的安全问题在于,通过侦听空中的整个通信,攻击者可以访问明文挑战和加密挑战。他可以应用 XOR 操作来检索密钥流。此密钥流可用于加密接入点发送的任何未来挑战,而无需知道实际密钥。

最常见的共享认证形式被称为有线等效隐私WEP)。它很容易被破解,随着时间的推移,已经开发出了许多工具来帮助破解 WEP 网络。

在这个练习中,我们将学习如何侦听空中以检索挑战和加密挑战,检索密钥流,并使用它来认证到接入点,而无需共享密钥。

操作时间 - 绕过共享认证

绕过共享认证比以前的练习更具挑战性,因此请仔细跟随以下步骤:

  1. 让我们首先为我们的无线实验室网络设置共享认证。我已经在我的访问点上通过将安全模式设置为WEP认证设置为共享密钥来完成此操作:操作时间——绕过共享认证

  2. 现在让我们使用我们在步骤 1 中设置的共享密钥将合法客户端连接到该网络。

  3. 为了绕过 SKA,我们首先开始嗅探访问点和其客户端之间的数据包。然而,我们也希望记录整个共享认证交换过程。为了做到这一点,我们使用airodump-ng实用程序,并使用命令airodump-ng wlan0mon -c 11 --bssid <mac> -w keystream。这里的-w选项是新加入的,请求airodump-ng将数据包存储在以单词keystream为前缀的文件中。顺便说一句,将不同会话的数据包捕获到不同的文件中可能是个好主意,这样您可以在收集跟踪数据之后长时间分析它们:操作时间——绕过共享认证

  4. 我们可以等待合法客户端连接到访问点,或者使用之前使用的去认证技术强制重新连接。一旦客户端连接并 SKA 成功,airodump-ng将通过嗅探到的空中捕获此交换。捕获成功的指示是AUTH列显示 WEP。

  5. 捕获的密钥流存储在当前目录中以单词keystream为前缀的文件中。在我的情况下,文件名为keystream-01-00-21-91-D2-8E-25.xor

  6. 如果这个方法不起作用,您可以使用aireplay-ng -4 -h <Connected Device MAC> -a <AP BSSID> wlan0mon生成一个.xor文件。这需要一个连接设备连接到目标 WEP 保护网络,并生成伪造其 MAC 地址的数据包来识别 XOR 流和密钥。操作时间——绕过共享认证

  7. 为了伪造 SKA,我们将使用aireplay-ng工具。我们运行aireplay-ng -1 0 -e "无线实验室" -y keystream-01-00-21-91-D2-8E-25.xor -a <mac> -h AA:AA:AA:AA:AA:AA wlan0mon命令。这个aireplay-ng命令使用我们刚刚检索到的密钥流,并尝试使用 SSID 为无线实验室、MAC 地址为00:21:91:D2:8E:25的访问点进行身份验证,并使用任意客户端 MAC 地址AA:AA:AA:AA:AA:AA

  8. 启动 Wireshark 并通过应用wlan.addr == AA:AA:AA:AA:AA:AA过滤器嗅探所有感兴趣的数据包。我们可以使用 Wireshark 进行验证。您应该在 Wireshark 屏幕上看到一个跟踪,如下图所示:操作时间——绕过共享认证

  9. 第一个数据包是aireplay-ng工具发送给接入点的认证请求:行动时间 – 绕过共享认证

  10. 第二个数据包包含接入点发送给客户端的挑战文本,如下图所示:行动时间 – 绕过共享认证

  11. 在第三个数据包中,工具将加密的挑战发送到接入点:行动时间 – 绕过共享认证

  12. 由于aireplay-ng工具使用推导出的密钥流进行加密,认证成功,接入点在第四个数据包中发送了成功消息:行动时间 – 绕过共享认证

  13. 认证成功后,工具伪造了与接入点的关联,且成功连接。如果你检查接入点管理界面的无线日志,你应该能看到一个无线客户端,其 MAC 地址为AA:AA:AA:AA:AA:AA连接:行动时间 – 绕过共享认证

刚才发生了什么?

我们成功地从共享认证交换中推导出了密钥流,并使用它伪造了对接入点的认证。

动手吧英雄 – 填充接入点的表格

接入点在达到最大客户端数后会开始拒绝连接。通过在aireplay-ng上写一个简单的包装程序,可以自动化并发送数百个来自随机 MAC 地址的连接请求到接入点。这将填充内部表格,一旦达到最大客户端数,接入点将停止接受新连接。这通常被称为拒绝服务DoS)攻击,并可能迫使路由器重启或使其无法正常工作。这可能导致所有无线客户端断开连接并无法使用授权网络。

检查你是否可以在实验室中验证这一点!

小测试 – WLAN 认证

Q1. 如何强制无线客户端重新连接到接入点?

  1. 通过发送去认证数据包

  2. 通过重启客户端

  3. 通过重启接入点

  4. 所有上述情况

Q2. 开放认证做了什么?

  1. 它提供了不错的安全性

  2. 它不提供任何安全性

  3. 它需要使用加密

  4. 上述都不是

Q3. 破解 SKA 是如何工作的?

  1. 通过从数据包中推导密钥流

  2. 通过推导加密密钥

  3. 通过向接入点发送去认证数据包

  4. 通过重启接入点

总结

在本章中,我们学习了 WLAN 认证。隐藏 SSID 是一种安全隐蔽特性,相对容易被突破。MAC 地址过滤并不提供任何安全性,因为 MAC 地址可以通过无线数据包从空中嗅探到。这是可能的,因为 MAC 地址在数据包中是未加密的。开放认证根本不提供任何真实的认证。SKA 虽然有点难以突破,但借助合适的工具,我们可以推导出存储和密钥流,从而能够回应接入点发送的所有未来挑战。结果是,我们可以在不需要知道实际密钥的情况下完成认证。

在下一章中,我们将看看不同的 WLAN 加密机制——WEP、WPA 和 WPA2,并探讨它们存在的安全漏洞。

第四章 WLAN 加密缺陷

“640K 是任何人永远不需要的内存。”
--比尔·盖茨,微软创始人

即使怀着最好的意图,未来总是不可预测的。WLAN 委员会设计了 WEP 和 WPA,旨在成为万无一失的加密机制,但随着时间的推移,这两种机制都暴露出了缺陷,这些缺陷已经被广泛报道并在现实世界中被利用。

WLAN 加密机制长期以来一直容易受到密码学攻击。它始于 2000 年初的 WEP,最终完全被破解。近年来,WPA 已被证明包含多个缺陷,这些缺陷已经被多次处理和重新处理。尽管目前没有公开的攻击能够在所有一般条件下破解 WPA,但在特殊情况下,某些攻击是可行的。

在本章中,我们将讨论以下主题:

  • WLAN 中的不同加密方案

  • 破解 WEP 加密

  • 破解 WPA 加密

WLAN 加密

WLAN 通过空气传输数据,因此保护数据机密性是一个内在需求。最好的方法是使用加密。WLAN 委员会(IEEE 802.11)制定了以下数据加密协议:

  • 有线等效隐私WEP

  • Wi-Fi 受保护访问WPA

  • Wi-Fi 受保护访问 v2WPA2

在本章中,我们将逐一了解这些加密协议,并演示对它们的各种攻击。

WEP 加密

WEP 协议早在 2000 年就已被发现存在缺陷,但令人惊讶的是,它仍然存在于许多组织中,很多接入点仍然出厂时启用了 WEP 功能。

WEP 存在许多加密弱点,这些弱点是由 Walker、Arbaugh、Fluhrer、Martin、Shamir、KoreK 等人发现的。从密码学的角度评估 WEP 并不是理解如何破解它的基本要求。在本节中,我们将看看如何使用 Kali Linux 上现成的工具破解 WEP 加密。这包括整个aircrack-ng工具套件:airmon-ngaireplay-ngairodump-ngaircrack-ng等。

WEP 的根本弱点是其使用 RC4 和一个每 224 帧就会回收的短 IV 值。虽然这看起来是一个大数字,但每 5000 个数据包就有 50%的概率出现四次 IV 重用。为了利用这一点,我们需要生成大量流量,以增加 IV 被重用的可能性,从而比较使用相同 IV 和密钥加密的两个密文。

现在让我们首先在测试实验室中设置 WEP,并看看我们如何破解它。

行动时间——破解 WEP

按照给定的说明开始操作:

  1. 让我们首先连接到我们的接入点无线实验室,进入处理无线加密机制的设置区域。

  2. 在我的接入点上,可以通过将安全模式设置为WEP来完成此操作。我们还需要设置 WEP 密钥长度。如下截图所示,我已将 WEP 设置为使用128 位密钥。我已将默认密钥设置为 WEP 的密钥 1,十六进制值为abcdefabcdefabcdefabcdef12,作为 128 位 WEP 密钥。您可以根据需要进行设置:实施行动 - 破解 WEP

  3. 应用设置后,接入点现在应该提供 WEP 作为首选的加密机制。现在让我们设置攻击者机器。

  4. 让我们通过发出以下命令来启动wlan0

    **ifconfig wlan0 up**
    
    
  5. 然后,我们将运行以下命令:

    **airmon-ng start wlan0**
    
    
  6. 这是为了创建wlan0mon,一个监控模式接口,如下截图所示。使用ifconfig命令验证wlan0mon接口是否已创建:实施行动 - 破解 WEP

  7. 让我们运行airodump-ng以查找我们的实验室接入点,使用以下命令:

    **airodump-ng wlan0mon**
    
    
  8. 如您在下面的截图中所见,我们能够看到运行 WEP 的Wireless Lab接入点:实施行动 - 破解 WEP

  9. 对于此练习,我们只关心Wireless Lab网络,因此可以调整命令以仅查看此网络的数据包:

    **airodump-ng --bssid <Your AP MAC> --channel <whatever channel it's on> --write WEPCrackingDemo wlan0mon**
    
    

    下面的截图显示了一个示例命令行:

    实施行动 - 破解 WEP

  10. 我们将请求airodump-ng使用--write标志将数据包保存到pcap文件中:实施行动 - 破解 WEP

  11. 现在,让我们将无线客户端连接到接入点,并使用 WEP 密钥作为abcdefabcdefabcdefabcdef12。一旦客户端成功连接,airodump-ng应在屏幕上报告它:实施行动 - 破解 WEP

  12. 如果您在同一目录中执行ls命令,您将能够看到以WEPCrackingDemo-*为前缀的文件,如下截图所示。这些是由airodump-ng创建的流量转储文件:实施行动 - 破解 WEP

  13. 如果您注意到airodump-ng屏幕,#Data下列出的数据包非常少(仅35):实施行动 - 破解 WEP

  14. 在 WEP 破解中,我们需要大量使用相同密钥加密的数据包来利用协议中的弱点。因此,我们将不得不强制网络产生更多数据包。为此,我们将使用aireplay-ng工具。

  15. 我们将使用aireplay-ng在无线网络上捕获 ARP 数据包,并将它们注入网络以模拟 ARP 响应。我们将在单独的窗口中启动aireplay-ng,如下一张截图所示。重复这些数据包数千次,我们将在网络上生成大量的数据流量。尽管aireplay-ng不知道 WEP 密钥,但它能够通过检查数据包的大小识别 ARP 数据包。ARP 是一个固定头部的协议;因此,可以轻松确定 ARP 数据包的大小,甚至在加密流量中也可以识别它们。我们将运行带有下列讨论的选项的aireplay-ng-3选项是 ARP 重放,-b指定我们网络的 BSSID,-h指定我们正在欺骗的客户端 MAC 地址。不要忘记添加要使用的适配器。我们需要这样做,因为重放攻击仅适用于经过身份验证和关联的客户端 MAC 地址:操作时间 - 破解 WEP

  16. 非常快速,你应该看到aireplay-ng能够嗅探 ARP 数据包,并开始将它们重新发送到网络中。如果像我一样遇到与信道相关的错误,请在命令末尾添加--ignore-negative-one,如下截图所示:操作时间 - 破解 WEP

  17. 此时,airodump-ng也将开始注册大量的数据包。所有这些嗅探到的数据包都将存储在我们之前看到的WEPCrackingDemo-*文件中:操作时间 - 破解 WEP

  18. 现在,让我们开始实际的破解部分!在新窗口中启动aircrack-ng,使用选项WEPCrackingDemo-0*.cap。这将启动aircrack-ng软件,并开始使用文件中的数据包破解 WEP 密钥。请注意,让airodump-ng收集 WEP 数据包,让aireplay-ng执行重播攻击,并让aircrack-ng尝试基于捕获的数据包破解 WEP 密钥,是个好主意。在这个实验中,它们都在单独的窗口中打开:操作时间 - 破解 WEP

  19. 当 Aircrack-ng 正在处理数据包以破解 WEP 密钥时,你的屏幕应该像下面的截图一样:操作时间 - 破解 WEP

  20. 破解密钥所需的数据包数量是不确定的,但通常在十万个或更多的数量级上。在快速网络上(或使用aireplay-ng),这应该最多需要 5-10 分钟。您可能需要多次重启此过程。

  21. 一旦捕获并处理了足够的数据包,aircrack-ng应该能够破解密钥。一旦成功,它会在终端中骄傲地显示密钥并退出,如下面的截图所示:操作时间 - 破解 WEP

  22. 需要注意的是,WEP 是完全有缺陷的,任何 WEP 密钥(无论多复杂)都会被aircrack-ng破解。唯一的要求是,必须有足够多的数据包(使用此密钥加密)可以提供给aircrack-ng

刚才发生了什么?

我们在实验室中设置了 WEP 并成功破解了 WEP 密钥。为此,我们首先等待网络的合法客户端连接到接入点。之后,我们使用aireplay-ng工具将 ARP 数据包重放到网络中。这导致网络发送 ARP 重放数据包,从而大大增加了通过无线传输的数据包数量。然后,我们使用aircrack-ng工具,通过分析这些数据包中的加密弱点来破解 WEP 密钥。

请注意,我们还可以通过使用共享密钥认证SKA)绕过技术来伪造对接入点的认证,这种技术是我们在上一章学到的。如果合法客户端离开网络,这个方法会非常有用。这样,我们可以伪造认证和关联,并继续将重放的数据包发送到网络中。

动手试试,英雄 – 使用 WEP 破解伪造认证

在上一个练习中,如果合法客户端突然从网络中注销,我们将无法重放数据包,因为接入点会拒绝接收来自未关联客户端的数据包。

你的挑战是,在 WEP 破解进行的同时,利用我们在上一章学到的 SKA 绕过技术伪造认证和关联。将合法客户端从网络中注销,并验证你是否仍然能够向网络注入数据包,以及接入点是否接受并响应这些数据包。

WPA/WPA2

WPA(或有时称为 WPA v1)主要使用临时密钥完整性协议TKIP)加密算法。TKIP 旨在改进 WEP,而不需要完全新的硬件来支持它。相比之下,WPA2 强制使用 AES-CCMP 算法进行加密,这比 TKIP 强大且稳定得多。

WPA 和 WPA2 都允许使用基于 EAP 的认证,通过 RADIUS 服务器(企业版)或基于预共享密钥PSK)(个人版)的认证方案。

WPA/WPA2 PSK 容易受到字典攻击。这种攻击所需的输入是客户端和接入点之间的四次握手(WPA 四次握手),以及一个包含常见密码短语的字典。然后,使用诸如aircrack-ng之类的工具,我们可以尝试破解 WPA/WPA2 PSK 密码短语。

以下截图展示了四次握手的过程:

WPA/WPA2

WPA/WPA2 PSK 的工作方式是,它使用 PSK 和其他五个参数(网络的 SSID,认证者随机数ANonce),客户端随机数SNonce),认证者 MAC 地址(接入点 MAC),客户端 MAC 地址(Wi-Fi 客户端 MAC))来推导每个会话密钥,称为配对瞬时密钥PTK)。然后,该密钥用于加密接入点和客户端之间的所有数据。

一名通过嗅探空气来窃听整个对话的攻击者,可以获取前文提到的所有五个参数。唯一缺失的是 PSK。那么,PSK 是如何生成的呢?它是通过使用用户提供的 WPA-PSK 密码以及 SSID 来推导的。两者的组合通过基于密码的密钥推导函数PBKDF2)输出 256 位共享密钥。

在典型的 WPA/WPA2 PSK 字典攻击中,攻击者会使用一个包含大量可能密码的字典与攻击工具。该工具从每个密码推导出 256 位 PSK,并与前面描述的其他参数一起使用来创建 PTK。PTK 将用于验证某个握手包中的消息完整性检查MIC)。如果匹配,则字典中的猜测密码是正确的;如果不匹配,则是错误的。

最终,如果授权的网络密码存在于字典中,它将被识别出来。这就是 WPA/WPA2 PSK 破解的工作原理!以下图示说明了相关步骤:

WPA/WPA2

在接下来的练习中,我们将学习如何破解 WPA PSK 无线网络。破解 WPA2-PSK 网络时,使用 CCMP(AES)时将涉及完全相同的步骤。

时间行动——破解 WPA-PSK 弱密码

按照给定的说明开始操作:

  1. 我们首先连接到我们的接入点Wireless Lab并将接入点设置为使用 WPA-PSK。我们将 WPA-PSK 密码设置为abcdefgh,使其易受字典攻击:Time for action – cracking WPA-PSK weak passphrase

  2. 我们使用以下命令启动airodump-ng,使其开始捕获并存储我们网络的所有数据包:

    **airodump-ng --bssid 00:21:91:D2:8E:25 --channel 11 --write WPACrackingDemo wlan0mon**
    
    

    以下截图展示了输出结果:

    Time for action – cracking WPA-PSK weak passphrase

  3. 现在,我们可以等待新客户端连接到接入点,以便我们捕获四次握手 WPA 握手包,或者我们可以发送广播的去身份验证数据包,强制客户端重新连接。为了加快进度,我们选择后者。未知频道错误可能会再次发生,再次使用--ignore-negative-one。这也可能需要多次尝试:Time for action – cracking WPA-PSK weak passphrase

  4. 一旦我们捕获到 WPA 握手,airodump-ng工具将在屏幕的右上角显示一个 WPA 握手,后面跟着接入点的 BSSID:操作时间 – 破解 WPA-PSK 弱密码短语

  5. 如果你使用--ignore-negative-one,工具可能会用一个固定频道信息替换 WPA 握手。只需留意 WPA 握手的快速闪烁。如果我们检查工作目录,应该会看到生成了一个.cap文件:操作时间 – 破解 WPA-PSK 弱密码短语

  6. 现在我们可以停止airodump-ng工具了。让我们在 Wireshark 中打开捕获文件,查看四次握手。你的 Wireshark 终端应当显示以下截图中的内容。我在截图中选中了追踪文件中的四次握手的第一个数据包。握手数据包的协议是EAPOL。你可以通过在过滤器栏输入eapol来进行过滤:操作时间 – 破解 WPA-PSK 弱密码短语

  7. 现在,我们将开始实际的密钥破解练习!为此,我们需要一个常用单词的字典。Kali 中提供了许多字典文件,这些文件位于metasploit文件夹中,路径如下截图所示。需要注意的是,在 WPA 破解中,你的字典决定了破解的效果。Kali 附带了一些字典文件,但这些可能不够用。人们选择的密码取决于很多因素,包括用户所在的国家、该地区的常用名称和短语、用户的安全意识等。进行渗透测试时,收集特定国家和地区的字典列表是个不错的主意:操作时间 – 破解 WPA-PSK 弱密码短语

  8. 现在我们将调用aircrack-ng工具,输入pcap文件和字典文件的链接,如下截图所示。我使用的是nmap.lst,它可以在/usr/share/wordlists/目录下找到,如终端所示:操作时间 – 破解 WPA-PSK 弱密码短语

  9. aircrack-ng工具使用字典文件尝试各种密码短语组合,试图破解密钥。如果密码短语存在于字典文件中,它最终会破解该密钥,屏幕上将显示类似于截图中的内容:操作时间 – 破解 WPA-PSK 弱密码短语

  10. 请注意,由于这是字典攻击,因此前提是密码短语必须存在于你提供给aircrack-ng的字典文件中。如果密码短语不在字典中,攻击将会失败!

刚刚发生了什么?

我们在接入点上设置了 WPA-PSK,使用了一个常见的密码短语:abcdefgh。然后,我们使用去身份验证攻击使合法客户端重新连接到接入点。当我们重新连接时,我们捕获到接入点和客户端之间的四次握手 WPA 握手。

由于 WPA-PSK 易受字典攻击,我们将包含 WPA 四次握手的捕获文件和常见密码短语的列表(以字典文件形式)提供给 aircrack-ng。由于密码短语 abcdefgh 在字典中,aircrack-ng 能够破解 WPA-PSK 共享密码短语。再次强调,在 WPA 字典攻击中,你的成功与否完全取决于你使用的字典。因此,在开始之前,准备一个庞大且详细的字典是非常重要的。尽管 Kali 带有自带字典,但有时它可能不够充分,可能需要更多的单词,特别是考虑到本地化因素。

大胆尝试——使用 Cowpatty 破解 WPA-PSK

Cowpatty 是一款工具,使用字典攻击也可以破解 WPA-PSK 密码短语。这个工具包含在 Kali 中。我留给你作为练习,使用 Cowpatty 来破解 WPA-PSK 密码短语。

此外,设置一个字典中没有的罕见密码短语,并再次尝试攻击。现在,你将无法使用 Aircrack-ng 和 Cowpatty 破解密码短语。

需要注意的是,同样的攻击也适用于 WPA2 PSK 网络。我鼓励你自行验证这一点。

加速 WPA/WPA2 PSK 破解

正如我们在上一节中所见,如果我们的字典中有正确的密码短语,破解 WPA-Personal 将每次都像魅力一样顺利。那么,为什么不创建一个包含数百万常见密码和短语的庞大字典呢?这将对我们非常有帮助,而且大多数时候,我们最终会破解密码短语。一切听起来很棒,但我们忽略了一个关键因素——时间。最耗费 CPU 和时间的计算之一是通过 PBKDF2 使用 PSK 密码短语和 SSID 计算 PSK。此函数会将两者的组合哈希 4,096 次,然后输出 256 位的 PSK。破解的下一步是使用该密钥与四次握手中的参数一起验证,并与握手中的 MIC 进行比对。此步骤的计算开销不大。而且,握手中的参数每次都会变化,因此此步骤无法预计算。因此,为了加速破解过程,我们需要尽可能快地计算密码短语生成的 PSK。

我们可以通过预先计算 PSK,也就是在 802.11 标准术语中称为 Pairwise Master KeyPMK)的方法来加速这一过程。需要注意的是,由于 SSID 也用于计算 PMK,使用相同的密码短语和不同的 SSID 时,我们将得到不同的 PMK。因此,PMK 依赖于密码短语和 SSID。

在下一个练习中,我们将了解如何预计算 PMK 并将其用于 WPA/WPA2 PSK 的破解。

行动时间——加速破解过程

我们可以继续进行以下步骤:

  1. 我们可以使用genpmk工具和以下命令预计算给定 SSID 和字典的 PMK:

    **genpmk -f <chosen wordlist> -d PMK-Wireless-Lab -s "Wireless Lab"**
    
    

    这将创建一个名为PMK-Wireless-Lab的文件,其中包含预生成的 PMK:

    行动时间——加速破解过程

  2. 我们现在创建一个 WPA-PSK 网络,密码是abcdefgh(它在我们使用的字典中),并像上一个练习一样捕获该网络的 WPA 握手;或者使用我们之前使用的文件。然后,我们使用 Cowpatty 破解 WPA 密码,如下图所示:行动时间——加速破解过程

    使用预先计算的 PMK,Cowpatty 破解密钥大约需要 7.18 秒。

  3. 我们现在使用相同的字典文件,使用aircrack-ng进行破解,整个过程需要超过 22 分钟。这表明通过预计算,我们节省了大量时间。

刚才发生了什么?

我们查看了多种不同的工具和技术来加速 WPA/WPA2-PSK 的破解。其核心思想是为给定的 SSID 和字典中的密码列表预先计算 PMK。

解密 WEP 和 WPA 数据包

在我们到目前为止做过的所有练习中,我们使用各种技术破解了 WEP 和 WPA 密钥。那么我们如何利用这些信息呢?第一步是使用这些密钥解密我们捕获的数据包。

在下一个练习中,我们将使用我们破解的密钥解密我们在空中捕获的同一跟踪文件中的 WEP 和 WPA 数据包。

行动时间——解密 WEP 和 WPA 数据包

我们可以继续进行以下步骤:

  1. 我们将解密之前创建的 WEP 捕获文件中的数据包:WEPCrackingDemo-01.cap。为此,我们将使用 Aircrack-ng 套件中的另一个工具airdecap-ng。我们将运行以下命令,如下图所示,使用我们之前破解的 WEP 密钥:

    **airdecap-ng -w abcdefabcdefabcdefabcdef12 WEPCrackingDemo-01.cap**
    
    

    行动时间——解密 WEP 和 WPA 数据包

  2. 解密后的文件存储在名为WEPCrackingDemo-01-dec.cap的文件中。我们使用tshark工具查看文件中的前十个数据包。请注意,根据你捕获的内容,显示的可能会有所不同:行动时间——解密 WEP 和 WPA 数据包

  3. WPA/WPA2 PSK 的工作方式与 WEP 完全相同,使用airdecap-ng工具,如下图所示,运行以下命令:

    **airdecap-ng -p abcdefgh WPACrackingDemo-01.cap -e "Wireless Lab"**
    
    

    行动时间——解密 WEP 和 WPA 数据包

刚才发生了什么?

我们刚刚看到如何使用airdecap-ng解密 WEP 和 WPA/WPA2-PSK 加密的数据包。有趣的是,我们也可以使用 Wireshark 做到这一点。我们建议你通过查阅 Wireshark 文档,探索如何进行操作。

连接到 WEP 和 WPA 网络

我们在破解网络密钥后,也可以连接到授权网络。这在渗透测试中非常有用。通过破解的密钥登录授权网络是向客户证明其网络不安全的终极证据。

行动时间 - 连接到 WEP 网络

我们可以继续进行以下步骤:

  1. 使用iwconfig工具连接到 WEP 网络,一旦获得密钥。在之前的练习中,我们破解了 WEP 密钥—abcdefabcdefabcdefabcdef12:行动时间 - 连接到 WEP 网络

刚刚发生了什么?

我们刚刚学习了如何连接到 WEP 网络。

行动时间 - 连接到 WPA 网络

我们可以继续进行以下步骤:

  1. 对于 WPA,情况稍微复杂一些。iwconfig工具不能与 WPA/WPA2 个人版和企业版一起使用,因为它不支持。我们将在本实验中使用一个名为wpa_supplicant的新工具。为了在网络上使用wpa_supplicant,我们需要创建一个配置文件,如下图所示。我们将此文件命名为wpa-supp.conf行动时间 - 连接到 WPA 网络

  2. 然后,我们将使用以下命令调用wpa_supplicant工具:

    **wpa_supplicant -D wext -i wlan0 -c wpa-supp.conf**
    
    
  3. 这将把设备连接到我们刚刚破解的 WPA 网络。一旦连接成功,wpa_supplicant会给出以下信息:与 XXXX 的连接完成

  4. 对于 WEP 和 WPA 网络,一旦连接,你可以使用dhclient从网络获取 DHCP 地址,只需输入dhclient3 wlan0

刚刚发生了什么?

默认的 Wi-Fi 工具iwconfig不能用于连接到 WPA/WPA2 网络。用于此目的的实际工具是wpa_supplicant。在这个实验中,我们看到如何使用它连接到 WPA 网络。

随堂小测 - WLAN 加密漏洞

Q1. 哪些数据包用于数据包重放?

  1. 去认证数据包

  2. 关联数据包

  3. 加密的 ARP 数据包

  4. 以上都不是

Q2. WEP 什么时候会被破解?

  1. 总是

  2. 只有选择了弱密钥/密码短语时

  3. 仅在特殊情况下

  4. 只有当接入点运行旧软件时

总结

在这一章中,我们学习了 WLAN 加密。WEP 是有缺陷的,无论 WEP 密钥是什么,只要有足够的数据包样本,就总是可以破解 WEP。目前,WPA/WPA2 在加密上是无法破解的;然而,在特殊情况下,比如在 WPA/WPA2-PSK 中选择了弱密码短语时,使用字典攻击有可能恢复密码短语。

在下一章,我们将看看针对 WLAN 基础设施的不同攻击方式,比如恶意接入点、双胞胎攻击、位翻转攻击等。

第五章 WLAN 基础设施的攻击

"因此,战争中最重要的是攻击敌人的战略"
--孙子,《孙子兵法》

在本章中,我们将攻击 WLAN 基础设施的核心!我们将重点介绍如何使用各种新的攻击向量渗透到授权网络中,并诱使授权客户端连接到我们——攻击者。

WLAN 基础设施为系统中的所有 WLAN 客户端提供无线服务。本章将介绍针对基础设施可能实施的各种攻击:

  • 接入点的默认账户和凭据

  • 拒绝服务攻击

  • 恶意双胞胎和接入点 MAC 欺骗

  • 恶意接入点

接入点的默认账户和凭据

WLAN 接入点是无线基础设施的核心组成部分。尽管它们在整个系统中扮演着如此重要的角色,但在安全性方面它们有时是最被忽视的部分。在本次练习中,我们将检查接入点的默认密码是否已更改。然后,我们将继续验证,即使密码已更改,是否仍然容易猜测,并能通过基于字典的攻击破解。

需要注意的是,随着我们进入更高级的章节,将假设你已经完成了前面的章节并且熟悉了那里讨论的所有工具的使用。这样,我们就可以在此基础上构建知识,并尝试更复杂的攻击!

行动时刻 – 破解接入点的默认账户

请按照以下说明开始:

  1. 首先,让我们连接到我们的无线实验室接入点,并尝试访问 HTTP 管理界面。我们看到接入点的型号是TP-LINK 无线 N 路由器 WR841N,如以下截图所示:行动时刻 – 破解接入点的默认账户

  2. 从制造商的网站上,我们发现admin的默认密码是admin。我们在登录页面尝试了这个密码,并成功登录。这表明,使用默认凭据破入账户是多么容易。我们强烈建议你在线获取路由器的用户手册。这将帮助你在渗透测试过程中了解自己正在处理的内容,并为你提供其他可能检查的配置缺陷。

刚才发生了什么?

我们验证了该接入点的默认凭据从未更改,这可能导致整个网络遭到完全的妥协。此外,即使默认凭据已更改,结果也不应该是容易猜测的,或者容易通过简单的字典攻击破解。

来吧,英雄 – 使用暴力破解攻击破解账户

在上一个练习中,将密码更改为难以猜测或在字典中查找的内容,并查看是否能够通过暴力破解法将其破解。限制密码的长度和字符,使你最终能够成功。最常用的 HTTP 身份验证破解工具之一叫做Hydra,它可以在 Kali 上使用。

服务拒绝攻击

WLAN 易受到服务拒绝DoS)攻击,使用各种技术,包括但不限于:

  • 去认证攻击

  • 去关联攻击

  • CTS-RTS 攻击

  • 信号干扰或频谱干扰攻击

在本书的范围内,我们将通过以下实验讨论 WLAN 基础设施上的去认证攻击。

行动时间 – 去认证 DoS 攻击

按照以下说明开始操作:

  1. 让我们配置无线实验室网络,使用开放认证并不加密。这将使我们能够轻松地使用 Wireshark 查看数据包:行动时间 – 去认证 DoS 攻击

  2. 让我们将 Windows 客户端连接到接入点。我们将在 airodump-ng 屏幕上看到连接:行动时间 – 去认证 DoS 攻击

  3. 现在,在攻击者的机器上,让我们对其进行定向去认证攻击:行动时间 – 去认证 DoS 攻击

  4. 注意客户端如何完全断开与接入点的连接。我们也可以在 airodump-ng 屏幕上验证这一点:行动时间 – 去认证 DoS 攻击

  5. 如果我们使用 Wireshark 查看流量,你会注意到我们刚刚通过空中发送了大量去认证包:行动时间 – 去认证 DoS 攻击

  6. 我们可以通过代表接入点向整个无线网络发送广播去认证包来进行相同的攻击。这将导致断开所有已连接的客户端:行动时间 – 去认证 DoS 攻击

刚刚发生了什么?

我们成功地向接入点和客户端发送了去认证帧。这导致它们被断开连接,并完全失去通信。

我们还发送了广播去认证包,这将确保附近的任何客户端都无法成功连接到我们的接入点。

需要注意的是,一旦客户端断开连接,它将尝试重新连接到接入点,因此去认证攻击必须以可持续的方式进行,以产生完全的 DoS 效果。

这是最容易组织的攻击之一,但它具有最具破坏性的效果。这可以很容易地在现实世界中用来让无线网络崩溃。

来试试吧,英雄 – 去关联攻击

尝试检查如何使用 Kali 中可用的工具对基础设施进行去关联攻击。你能进行广播去关联攻击吗?

恶意双胞胎与接入点 MAC 伪造

对 WLAN 基础设施的最强攻击之一就是恶意双胞胎。这个思路基本上是将一个攻击者控制的接入点引入 WLAN 网络的附近。这个接入点将广播与授权 WLAN 网络完全相同的 SSID。

许多无线用户可能会不小心连接到这个恶意接入点,误以为它是授权网络的一部分。一旦建立连接,攻击者就可以策划一个中间人攻击,并在透明地转发流量的同时监听整个通信。我们将在后续章节中看看如何进行中间人攻击。在现实世界中,攻击者通常会在靠近授权网络的地方发起此攻击,这样用户会感到困惑并误连接到攻击者的网络。

拥有与授权接入点相同 MAC 地址的恶意双胞胎更难被发现和防范。这就是接入点 MAC 伪造的作用!在接下来的实验中,我们将看看如何创建一个恶意双胞胎,并结合接入点 MAC 伪造。

行动时刻 – 带有 MAC 伪造的恶意双胞胎

按照以下说明开始操作:

  1. 使用airodump-ng来查找接入点的 BSSID 和 ESSID,我们想要在恶意双胞胎中模仿它们:行动时刻 – 带有 MAC 伪造的恶意双胞胎

  2. 使用这些信息,我们通过以下airbase-ng命令创建一个新的接入点:airbase-ng –essid <你选择的 ssid> -c <频道> <接口>。在较新的版本中可能会出现一些小错误:行动时刻 – 带有 MAC 伪造的恶意双胞胎

  3. 这个新的接入点也会出现在airodump-ng屏幕上。需要注意的是,你需要在一个新的窗口中运行airodump-ng,并使用以下命令:

    **airodump-ng -c <channel> wlan0mon**
    
    

    让我们来看一下这个新的接入点:

    行动时刻 – 带有 MAC 伪造的恶意双胞胎

  4. 现在我们要做的是通过以下命令伪造接入点的 ESSID 和 MAC 地址:

    **airbase-ng –a <router mac> --essid "Wireless Lab" –c 11 wlan0mon**
    
    
  5. 现在如果我们通过airodump-ng查看,几乎无法视觉上区分两者:行动时刻 – 带有 MAC 伪造的恶意双胞胎

  6. 即使是airodump-ng也无法辨别在同一频道上实际上有两个不同的物理接入点。这就是恶意双胞胎的最强形式。行动时刻 – 带有 MAC 伪造的恶意双胞胎

  7. 现在我们向客户端发送去认证帧,让它断开连接并立即尝试重新连接:行动时刻 – 带有 MAC 伪造的恶意双胞胎

  8. 由于我们离这个客户端更近,信号强度更高,因此它连接到了我们的邪恶双胞胎接入点。如以下 airbase-ng 输出所示:行动时间 – 邪恶双胞胎与 MAC 欺骗

刚刚发生了什么?

我们为授权网络创建了一个“邪恶双胞胎”,并使用去认证攻击让合法客户端重新连接到我们,而不是授权网络接入点。

需要注意的是,在使用加密(如 WEP/WPA)的授权接入点情况下,进行能够窃听流量的攻击更加困难。我们将在后续章节中探讨如何使用 Caffe Latte 攻击在仅使用客户端的情况下破解 WEP 密钥。

来吧英雄 – 邪恶双胞胎与频道跳跃

在之前的练习中,在不同频道上运行邪恶双胞胎,并观察客户端一旦断开连接,如何切换频道重新连接接入点。客户端决定连接哪个接入点的决定因素是什么?是信号强度吗?进行实验并验证。

一个 rogue 接入点

rogue 接入点是一个未经授权的接入点,它连接到授权网络。通常,攻击者可以利用这个接入点作为后门,从而绕过网络上的所有安全控制。这意味着,网络边界的防火墙、入侵预防系统等,几乎无法阻止他访问网络。

在最常见的情况下,rogue 接入点设置为开放认证且没有加密。可以通过以下两种方式创建 rogue 接入点:

  • 在授权网络上安装实际的物理设备作为 rogue 接入点。(这是我留给你的练习。)此外,除了无线安全之外,这还涉及到突破授权网络的物理安全。

  • 在软件中创建 rogue 接入点,并将其与本地授权以太网网络进行桥接。这将使任何运行在授权网络上的笔记本电脑都能作为 rogue 接入点。我们将在下一个实验中探讨这一点。

行动时间 – 设置 rogue 接入点

按照以下说明开始:

  1. 让我们首先使用 airbase-ng 启动 rogue 接入点,并将其 ESSID 设置为 Rogue行动时间 – 设置 rogue 接入点

  2. 现在我们想在以太网接口(它是授权网络的一部分)和我们的 rogue 接入点接口之间创建一个桥接。为此,我们将首先安装 bridge-utils 文件,创建一个桥接接口,并将其命名为 Wifi-Bridge

    **apt-get install bridge-utils**
    **brctl addbr Wifi-Bridge**
    
    

    以下截图显示了执行所需命令的操作:

    行动时间 – 设置 rogue 接入点

  3. 然后,我们将把以太网接口和 airbase-ng 创建的 at0 虚拟接口添加到这个桥接中:

    **brctl addif Wifi-Bridge eth0**
    **brctl addif Wifi-Bridge at0**
    
    

    以下是命令的截图:

    行动时间 – 设置恶意接入点

  4. 我们接着通过以下命令启用此接口,以便启动桥接:

    **ifconfig eth0 0.0.0.0 up**
    **ifconfig at0 0.0.0.0 up**
    
    

    以下是命令的截图:

    行动时间 – 设置恶意接入点

  5. 我们接着会在内核中启用 IP 转发,以确保数据包被转发:

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

    以下是命令的截图:

    行动时间 – 设置恶意接入点

  6. 太棒了!我们完成了。现在,任何连接到我们恶意接入点的无线客户端都可以通过我们刚刚建立的无线到有线Wifi-Bridge完全访问授权网络。我们可以通过将客户端连接到恶意接入点来验证这一点。

  7. 然后使用以下命令启动桥接:

    **ifconfig Wifi-Bridge up**
    
    
  8. 注意,它从运行在授权局域网上的 DHCP 守护进程获取了一个 IP 地址。

  9. 现在,我们可以使用这个恶意接入点从无线客户端访问有线网络上的任何主机。

刚才发生了什么?

我们创建了一个恶意接入点,并用它通过无线网络桥接所有授权网络的局域网流量。如你所见,这是一种非常严重的安全威胁,因为任何人都可以通过这个桥接进入有线网络。

来挑战吧英雄 – 恶意接入点挑战

检查你是否可以创建一个使用 WPA/WPA2 加密的恶意接入点,以使其在无线网络上看起来更合法。

快问快答 – 无线局域网基础设施攻击

Q1. 恶意接入点通常使用什么加密?

  1. WEP

  2. WPA

  3. WPA2

Q2. 恶意双胞胎拥有与授权接入点相同的 MAC 地址有什么优势?

  1. 它使得检测恶意双胞胎变得更加困难

  2. 它强制客户端连接到它

  3. 它增加了网络的信号强度

  4. 以上都不是

Q3. 拒绝服务攻击做什么?

  1. 它们降低了网络的整体吞吐量

  2. 它们不针对客户端

  3. 只有在我们知道网络 WEP/WPA/WPA2 凭据的情况下才能完成这些攻击

  4. 以上所有

Q4. 恶意接入点做什么,它们如何被创建?

  1. 它们允许通过后门进入授权网络

  2. 它们仅使用 WPA2 加密

  3. 它们可以作为基于软件的接入点创建,或者可以是实际的设备

  4. 1 和 3 都对

总结

在本章中,我们探讨了破坏无线局域网基础设施安全的不同方式:

  • 破坏接入点上的默认帐户和凭据

  • 拒绝服务攻击

  • 恶意双胞胎和 MAC 伪造

  • 企业网络中的恶意接入点

在下一章,我们将查看针对无线局域网客户端的不同攻击。有趣的是,大多数管理员认为客户端没有什么安全问题需要担心。我们将看到,事实远非如此。

第六章:攻击客户端

“安全就像是最弱的一环。”
--信息安全领域的名言

大多数渗透测试人员似乎把所有注意力都集中在 WLAN 基础设施上,却没有给予无线客户端同等的关注。然而,有趣的是,黑客也可以通过攻破无线客户端来访问授权的网络。

在本章中,我们将把注意力从 WLAN 基础设施转移到无线客户端。客户端可以是已连接的,也可以是孤立的未关联客户端。我们将探讨可以用来针对客户端的各种攻击。

我们将覆盖以下主题:

  • 蜜罐和错误关联攻击

  • Caffe Latte 攻击

  • 去认证和断开关联攻击

  • Hirte 攻击

  • 无 AP 的 WPA-Personal 破解

蜜罐和错误关联攻击

通常,当一个无线客户端(如笔记本电脑)开启时,它会探测之前连接过的网络。这些网络会存储在 Windows 系统中的 首选网络列表 (PNL) 中。同时,客户端会显示其范围内的任何可用网络。

黑客可能会做以下一项或多项事情:

  • 静默监控探测并启动一个虚假接入点,使用客户端正在搜索的相同 ESSID。这将导致客户端连接到黑客机器,认为它是合法的网络。

  • 创建具有相同 ESSID 的虚假接入点,以劝说用户连接到黑客的设备。这类攻击在咖啡馆和机场等场所非常容易进行,因为用户可能正在寻找 Wi-Fi 连接。

  • 使用记录的信息来了解受害者的活动和习惯,我们将在后续章节中详细介绍。

这些攻击被称为蜜罐攻击,因为黑客的接入点与合法的接入点发生了错误关联。

在接下来的练习中,我们将在实验室中进行这两种攻击。

行动时间 – 策划一个错误关联攻击

按照以下说明开始操作:

  1. 在前面的实验中,我们使用了一个已连接到 Wireless Lab 接入点的客户端。现在让我们打开客户端,但不启动实际的 Wireless Lab 接入点。接下来运行 airodump-ng wlan0mon 并查看输出。你很快就会发现客户端处于 未关联 模式,并在其存储的配置文件中查找 Wireless Lab 和其他 SSID:行动时间 – 策划一个错误关联攻击

  2. 为了了解发生了什么,让我们运行 Wireshark 并开始在wlan0mon接口上嗅探。正如预期的那样,你可能会看到很多与我们分析无关的数据包。应用 Wireshark 过滤器,只显示来自你使用的客户端 MAC 的探测请求数据包。过滤器应为wlan.addr==<你的 mac> && wlan.fc.subtype==0x04)行动时刻 – 编排一个误关联攻击

  3. 现在,你应该只看到来自客户端的探测请求数据包,且这些数据包是针对先前识别的 SSID 的。

  4. 现在,让我们在黑客机器上使用以下命令启动一个名为Wireless Lab的伪接入点:

    **airbase-ng -a <MAC> --essid "Wireless Lab" -c <channel> wlan0mon**
    
    

    行动时刻 – 编排一个误关联攻击

  5. 一分钟左右,客户端应该会自动连接到我们。这表明让客户端与伪接入点断开关联是多么容易:行动时刻 – 编排一个误关联攻击

  6. 现在,我们将与另一个路由器竞争。我们将在合法接入点存在的情况下创建一个名为Wireless Lab的伪接入点。让我们打开我们的接入点,确保Wireless Lab对客户端可用。为了进行此实验,我们已将接入点的频道设置为13。让客户端连接到接入点。我们可以从airodump-ng中验证这一点,如下图所示:行动时刻 – 编排一个误关联攻击

  7. 现在,让我们启动一个 SSID 为Wireless Lab的伪接入点:行动时刻 – 编排一个误关联攻击

  8. 请注意,客户端仍然连接到Wireless Lab,即合法接入点:行动时刻 – 编排一个误关联攻击

  9. 现在,我们将代表合法接入点向客户端发送广播去认证消息,以断开它们的连接:行动时刻 – 编排一个误关联攻击

假设我们伪造的接入点Wireless Lab的信号强度比合法接入点的信号强,客户端将连接到我们的伪接入点,而不是合法接入点。

我们可以通过查看airbase-ng的输出,验证客户端与我们伪接入点的新关联:

行动时刻 – 编排一个误关联攻击

刚刚发生了什么?

我们刚刚使用客户端探测到的列表并使用与邻近接入点相同的 ESSID 创建了一个蜜罐。在第一种情况下,客户端在搜索网络时自动连接到了我们;在后一种情况下,由于我们离客户端比真实接入点更近,我们的信号强度更高,客户端连接到了我们。

来试试吧英雄 – 强制客户端连接到蜜罐

在之前的练习中,如果客户端没有自动连接到我们,我们该怎么办?我们需要发送去认证包(deauthentication packet)来断开合法客户端与接入点的连接,然后,如果我们的信号强度更强,客户端就会连接到我们伪造的接入点。试试这个方法:将客户端连接到一个合法接入点,然后强制它连接到你的蜜罐。

Caffe Latte 攻击

在蜜罐攻击中,我们注意到客户端会不断地探测之前连接过的 SSID。如果客户端曾连接到一个 WEP 加密的接入点,像 Windows 这样的操作系统会缓存并存储 WEP 密钥。下次客户端连接到同一个接入点时,Windows 无线配置管理器会自动使用已存储的密钥。

Caffe Latte 攻击是由本书的作者之一 Vivek 发明的,并在美国圣地亚哥的 Toorcon 9 大会上进行了展示。Caffe Latte 攻击是一种 WEP 攻击,允许黑客通过客户端仅仅从客户端获取授权网络的 WEP 密钥。这个攻击不要求客户端必须靠近授权 WEP 网络,它可以仅使用隔离的客户端来破解 WEP 密钥。

在下一个练习中,我们将通过 Caffe Latte 攻击从客户端获取一个网络的 WEP 密钥。

行动时刻 – 执行 Caffe Latte 攻击

按照以下说明开始操作:

  1. 让我们首先为网络Wireless Lab设置一个合法的 WEP 接入点,使用ABCDEFABCDEFABCDEF12这个十六进制密钥:行动时刻 – 执行 Caffe Latte 攻击

    让我们将客户端连接到该接入点,并使用airodump-ng验证连接是否成功,如下图所示:

    行动时刻 – 执行 Caffe Latte 攻击

  2. 让我们拔掉接入点电源,确保客户端处于未关联状态,并开始搜索 WEP 网络Wireless Lab

  3. 现在,我们使用airbase-ng启动一个接入点,SSID 设置为Wireless Lab,命令参数为airbase-ng -a <AP MAC> --essid <AP SSID> -L -W 1 -c <channel> wlan0mon,如下所示:行动时刻 – 执行 Caffe Latte 攻击

  4. 一旦客户端连接到该接入点,airbase-ng将启动 Caffe Latte 攻击,如下所示:行动时刻 – 执行 Caffe Latte 攻击

  5. 现在我们启动airodump-ng,只收集该接入点的数据包,正如我们在 WEP 破解场景中做的那样,命令为airodump-ng wlan0mon -c <AP channel> --essid <AP SSID> -w <prefix>行动时刻 – 执行 Caffe Latte 攻击

  6. 我们还像之前 WEP 破解练习中那样启动aircrack-ng来开始破解过程。命令行格式为aircrack-ng filename,其中 filename 是由airodump-ng创建的文件名。

刚刚发生了什么?

我们成功地从无线客户端中提取了 WEP 密钥,而无需实际使用或接近接入点。这就是 Caffe Latte 攻击的威力。

简单来说,WEP 接入点不需要向客户端证明它知道 WEP 密钥就能接收加密流量。每次连接到新网络时,发送到路由器的第一个数据流量将是一个 ARP 请求,请求一个 IP 地址。

攻击通过翻转位并重放无线客户端在与我们创建的伪接入点关联后发送的 ARP 数据包来进行。这些翻转的 ARP 请求数据包导致无线客户端发送更多的 ARP 响应数据包。

位翻转会改变加密值,生成不同的加密值。在这种情况下,我们可以通过翻转加密的 ARP 请求来创建一个高精度的 ARP 响应。一旦我们发送回有效的 ARP 响应,就可以反复重放该值,以生成我们需要的流量来解密 WEP 密钥。

请注意,所有这些数据包都是使用存储在客户端上的 WEP 密钥加密的。一旦我们能够收集到大量这些数据包,aircrack-ng就能够轻松恢复 WEP 密钥。

加油英雄 – 练习成就完美!

尝试更改 WEP 密钥并重复攻击。这是一个难度较大的攻击,成功组织它需要一些练习。使用 Wireshark 并检查无线网络上的流量也是一个不错的主意。

去认证和去关联攻击

我们在之前的章节中也看到过去认证攻击,尤其是在接入点的上下文中。在本章中,我们将探索客户端上下文中的这种攻击。

在下一个实验中,我们将只向客户端发送去认证数据包,打破接入点与客户端之间已建立的连接。

行动时间 – 使客户端断开连接

按照以下说明开始:

  1. 让我们首先重新启动我们的接入点Wireless Lab。我们保持其在 WEP 模式下运行,以证明即使启用了加密,仍然可以攻击接入点和客户端连接。我们将使用airodump-ng验证接入点是否已启动:行动时间 – 使客户端断开连接

  2. 让我们将客户端连接到这个接入点,并使用airodump-ng验证:行动时间 – 使客户端断开连接

  3. 现在我们将运行aireplay-ng来针对接入点连接进行攻击:行动时间 – 使客户端断开连接

  4. 客户端被断开连接并尝试重新连接到接入点。我们可以使用 Wireshark 来验证这一点,就像我们之前做的一样:行动时间 – 使客户端断开连接

  5. 我们现在已经看到,即使在 WEP 加密存在的情况下,也可以取消认证客户端并断开连接。在 WPA/WPA2 加密存在的情况下也是如此。现在让我们将接入点设置为 WPA 加密并进行验证:行动时间 – 取消认证客户端

  6. 让我们将客户端连接到接入点并确保它已连接:行动时间 – 取消认证客户端

  7. 现在让我们运行aireplay-ng,将客户端从接入点断开:行动时间 – 取消认证客户端

刚才发生了什么?

我们刚刚学会了如何使用去认证帧在即使存在像 WEP/WPA/WPA2 这样的加密协议时,选择性地将无线客户端从接入点断开连接。这是通过仅向接入点-客户端对发送去认证数据包,而不是向整个网络发送广播去认证来实现的。

动手吧,英雄 – 对客户端进行去关联攻击

在上一个练习中,我们使用了取消认证攻击来中断连接。尝试使用去关联数据包来中断客户端与接入点之间的已建立连接。

Hirte 攻击

我们已经看到如何进行 Caffe Latte 攻击。Hirte 攻击通过使用分片技术扩展了 Caffe Latte 攻击,并允许几乎任何数据包都能被使用。

有关 Hirte 攻击的更多信息,请访问 Aircrack-ng 官网:www.aircrack-ng.org/doku.php?id=hirte

现在我们将使用aircrack-ng对同一客户端进行 Hirte 攻击。

行动时间 – 使用 Hirte 攻击破解 WEP

按照以下步骤开始:

  1. 使用airbase-ng工具创建一个与 Caffe Latte 攻击中完全相同的 WEP 接入点。唯一的额外选项是使用-N选项而不是-L选项来启动 Hirte 攻击:行动时间 – 使用 Hirte 攻击破解 WEP

  2. 在一个单独的窗口中启动airodump-ng,以捕获无线实验室蜜罐的数据包:行动时间 – 使用 Hirte 攻击破解 WEP

  3. 现在,airodump-ng将开始监控该网络,并将数据包存储在Hirte-01.cap文件中:行动时间 – 使用 Hirte 攻击破解 WEP

  4. 一旦漫游客户端连接到我们的蜜罐接入点,Hirte 攻击将由airbase-ng自动启动:行动时间 – 使用 Hirte 攻击破解 WEP

  5. 我们像进行 Caffe Latte 攻击一样启动aircrack-ng,最终密钥将被破解。

刚才发生了什么?

我们针对一个被隔离且远离授权网络的 WEP 客户端发起了 Hirte 攻击。我们用与 Caffe Latte 攻击相同的方式破解了密钥。

动手吧,英雄 – 练习,练习,再练习

我们建议在客户端设置不同的 WEP 密钥,并尝试多次进行这个练习,以增强信心。你可能会注意到,很多时候你需要重新连接客户端才能使其正常工作。

无 AP WPA-Personal 破解

在第四章中,WLAN 加密漏洞一节,我们演示了如何使用aircrack-ng破解 WPA/WPA2 PSK。基本的思路是捕获四路 WPA 握手数据包,然后发起字典攻击。

一百万美元的问题是:仅凭客户端是否能破解 WPA-Personal?不,接入点不需要!

让我们回顾一下 WPA 破解练习,唤起我们的记忆:

无 AP WPA-Personal 破解

要破解 WPA,我们需要从四路握手中获取以下四个参数——认证者随机数ANonce)、请求者随机数SNonce)、认证者 MAC 地址和请求者 MAC 地址。现在,有趣的是,我们并不需要四个握手数据包中的所有数据包就能提取这些信息。我们可以通过四个数据包,数据包 1 和 2,或者仅仅是数据包 2 和 3 来获取这些信息。

为了破解 WPA-PSK,我们将启动一个 WPA-PSK 蜜罐,当客户端连接到我们时,只有消息 1消息 2会传递过来。由于我们不知道密码短语,我们无法发送消息 3。然而,消息 1消息 2包含了开始破解密钥过程所需的所有信息:

无 AP WPA-Personal 破解

行动时间——无 AP WPA 破解

  1. 我们将设置一个 WPA-PSK 蜜罐,ESSID 为Wireless Lab-z 2选项会创建一个使用 TKIP 的 WPA-PSK 接入点:行动时间——无 AP WPA 破解

  2. 让我们同时启动airodump-ng来捕获这个网络的数据包:行动时间——无 AP WPA 破解

  3. 现在,当我们的漫游客户端连接到这个接入点时,它会启动握手过程,但在消息 2后未能完成,正如之前所讨论的那样;然而,破解握手所需的数据已经被捕获。

  4. 我们将airodump-ng捕获的文件通过aircrack-ng与之前相同的字典文件进行处理;最终,密码短语像之前一样被破解。

刚刚发生了什么?

我们成功地通过仅使用客户端破解了 WPA 密钥。这是因为,即使只有前两个数据包,我们也已经具备了发起字典攻击所需的所有信息。

来一场挑战吧——无 AP WPA 破解

我们建议在客户端设置不同的 WEP 密钥,并尝试多次进行这个练习,以增强信心。你可能会注意到,很多时候你需要重新连接客户端才能使其正常工作。

快速测试——攻击客户端

Q1. Caffe Latte 攻击可以恢复哪个加密密钥?

  1. WEP

  2. WPA

  3. WPA2

Q2. 蜜罐接入点通常会使用什么?

  1. 无加密,开放认证

  2. 无加密,共享认证

  3. WEP 加密,开放认证

  4. 上述内容都不包括

Q3. 以下哪个是 DoS 攻击?

  1. 误关联攻击

  2. 去认证攻击

  3. 去关联攻击

  4. 2 和 3 都正确

Q4. Caffe Latte 攻击需要什么?

  1. 无线客户端必须处于接入点的无线范围内

  2. 客户端包含一个缓存和存储的 WEP 密钥

  3. WEP 加密至少使用 128 位加密

  4. 1 和 3 都正确

总结

在这一章中,我们了解到即使是无线客户端也容易受到攻击。这些攻击包括蜜罐攻击和其他误关联攻击;Caffe Latte 攻击,用来从无线客户端获取密钥,去认证和去关联攻击导致拒绝服务(Denial of Service),Hirte 攻击作为从漫游客户端获取 WEP 密钥的替代方法,最后是仅通过客户端破解 WPA-Personal 密码。

在下一章中,我们将利用目前所学的知识,对客户端和基础设施侧进行各种高级无线攻击。所以,赶紧翻到下一章吧!

第七章 高级 WLAN 攻击

“知己知彼,百战不殆。”
--孙子,《孙子兵法》

作为一名渗透测试员,了解黑客可以执行的高级攻击非常重要,即使你在渗透测试中可能不会检查或演示这些攻击。本章将展示黑客如何利用无线接入点作为起点来实施高级攻击。

在本章中,我们将探讨如何利用到目前为止学到的知识进行高级攻击。我们将主要关注中间人MITM)攻击,这种攻击需要一定的技巧和实践才能成功实施。一旦我们完成这一步,我们将利用 MITM 攻击作为基础,进行更复杂的攻击,比如窃听和会话劫持。

本章将涵盖以下主题:

  • 中间人攻击

  • 使用 MITM 进行无线窃听

  • 使用 MITM 进行会话劫持

中间人攻击

MITM 攻击可能是对 WLAN 系统最具威胁的攻击之一。可以使用不同的配置来进行此攻击。我们将使用最常见的配置——攻击者通过有线局域网连接到互联网,并在其客户端卡上创建一个虚假的接入点。这个接入点广播一个与附近本地热点相似的 SSID。用户可能会不小心连接到这个虚假的接入点(或者根据我们在前几章讨论的较强信号理论,被迫连接到该接入点),并可能继续认为自己连接的是合法的接入点。

攻击者现在可以通过他在有线和无线接口之间创建的桥接,透明地转发所有用户的互联网流量。

在接下来的实验中,我们将模拟此攻击。

行动时间 – 中间人攻击

按照以下指示开始:

  1. 为了创建 MITM 攻击环境,我们将首先在黑客的笔记本上使用airbase-ng创建一个名为mitm的软接入点。我们运行以下命令:

    **airbase-ng --essid mitm -c 11 wlan0mon**
    
    

    该命令的输出如下:

    行动时间 – 中间人攻击

  2. 需要注意的是,当运行airbase-ng时,它会创建一个接口at0(一个 tap 接口)。可以把它当作我们基于软件的接入点mitm的有线侧接口:行动时间 – 中间人攻击

  3. 现在我们在黑客的笔记本上创建一个由有线接口(eth0)和无线接口(at0)组成的桥接。使用的命令序列如下:

    • brctl addbr mitm-bridge

    • brctl addif mitm-bridge eth0

    • brctl addif mitm-bridge at0

    • ifconfig eth0 0.0.0.0 up

    • ifconfig at0 0.0.0.0 up

    行动时间 – 中间人攻击

  4. 我们可以为这个桥接分配一个 IP 地址,并检查与网关的连接性。请注意,我们也可以使用 DHCP 来完成此操作。我们可以通过以下命令为桥接接口分配 IP 地址:

    **ifconfig mitm-bridge 192.168.0.199 up**
    
    

    行动时刻 – 中间人攻击

    然后我们可以尝试 ping 网关192.168.0.1,以确保我们已连接到网络的其余部分。

  5. 现在让我们开启内核中的 IP 转发功能,以便路由和数据包转发能够正确进行,使用以下命令:

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

    命令的输出如下:

    行动时刻 – 中间人攻击

  6. 现在让我们将一个无线客户端连接到我们的接入点mitm。它将自动通过 DHCP(运行在有线网关上的服务器)获取 IP 地址。在这种情况下,客户端机器接收到 IP 地址192.168.0.197。我们可以通过 ping 有线网关192.168.0.1来验证连接性:行动时刻 – 中间人攻击

  7. 我们可以看到主机响应了ping请求,如下所示:行动时刻 – 中间人攻击

  8. 我们还可以通过查看黑客机器上的airbase-ng终端来验证客户端是否已连接:行动时刻 – 中间人攻击

  9. 有趣的是,由于所有流量都从无线接口转发到有线接口,我们可以完全控制流量。我们可以通过启动 Wireshark 并在at0接口上嗅探来验证这一点:行动时刻 – 中间人攻击

  10. 现在让我们从客户端机器 ping 网关192.168.0.1。即使这些数据包并不发送给我们,我们也能在 Wireshark 中看到这些数据包(应用 ICMP 显示过滤器)。这就是 MITM 攻击的威力:行动时刻 – 中间人攻击

刚刚发生了什么?

我们成功地创建了一个无线中间人攻击(MITM)的设置。我们通过创建一个假接入点,并将其与以太网接口桥接来实现这一点。这确保了任何连接到假接入点的无线客户端都会感知到自己通过有线局域网连接到了互联网。

来吧,英雄 – 纯无线 MITM 攻击

在上一个练习中,我们将无线接口与有线接口桥接。如前所述,这是 MITM 攻击的一种可能连接架构。还有其他组合也是可能的。一种有趣的方式是使用两张无线网卡,其中一张用于创建假接入点,另一张则连接到授权的接入点。这两张网卡会被桥接。因此,当无线客户端连接到我们的假接入点时,它会通过攻击者的机器连接到授权的接入点。

请注意,这个配置需要攻击者的笔记本电脑上使用两张无线网卡。

检查是否可以使用笔记本电脑内置的网卡与外部网卡一起进行此攻击——请注意,您可能没有执行此操作所需的注入驱动程序。这应该是一个不错的挑战!

使用 MITM 进行无线窃听

在前一个实验中,我们学习了如何创建 MITM 设置。现在,我们将看看如何使用此设置进行无线窃听。

整个实验的核心原则是:受害者的所有流量现在都通过攻击者的计算机路由。因此,攻击者可以无线窃听受害者计算机发送和接收的所有流量。

行动时间 - 无线窃听

按照以下说明开始操作:

  1. 复制前一个实验中的所有设置。启动 Wireshark。有趣的是,即使是 MITM-bridge 也显示了出来。如果我们愿意,可以通过此接口查看桥接流量:行动时间 - 无线窃听

  2. at0接口上开始嗅探,以便我们可以监控无线客户端发送和接收的所有流量。在无线客户端上,打开任意网页。以我的情况为例,无线接入点还连接到 LAN,我将通过地址http://192.168.0.1打开它:行动时间 - 无线窃听

  3. 使用密码登录并进入管理界面。

  4. 在 Wireshark 中,我们应该看到大量的活动:行动时间 - 无线窃听

  5. 设置 HTTP 过滤器,仅查看网页流量:行动时间 - 无线窃听

  6. 我们可以轻松找到用于将密码发送到无线接入点的 HTTP post 请求:行动时间 - 无线窃听

刚刚发生了什么?

我们创建的 MITM 设置现在允许我们在受害者不知情的情况下窃听其无线流量。这之所以可能,是因为在 MITM 中,所有流量都通过攻击者的机器中转。因此,受害者的所有未加密流量都可以被攻击者窃听。

无线会话劫持

另一个我们可以在 MITM 攻击之上构建的有趣攻击是应用会话劫持。在 MITM 攻击过程中,受害者的数据包被发送到攻击者。此时,攻击者的责任是将这些数据包转发到合法目的地,并将目的地的响应转发给受害者。需要注意的是,在此过程中,攻击者可以修改数据包中的数据(如果未加密且未防篡改)。这意味着他可以修改、篡改,甚至默默丢弃数据包。

在下一个例子中,我们将查看如何使用 MITM 设置进行无线 DNS 劫持。然后,利用 DNS 劫持,我们将劫持浏览器会话并访问www.google.com

行动时间 - 无线会话劫持

  1. 按照 MITM 攻击实验中的设置进行测试。在受害者机器上,启动浏览器并输入www.google.com。我们使用 Wireshark 来监控此流量。你的屏幕应该类似于以下内容:行动时间 – 无线网络中的会话劫持

  2. 对 DNS 应用 Wireshark 过滤器,如我们所见,受害者正在为www.google.com发出 DNS 请求:行动时间 – 无线网络中的会话劫持

  3. 为了劫持浏览器会话,我们需要发送伪造的 DNS 响应,将www.google.com的 IP 地址解析为黑客机器的 IP 地址192.168.0.199。我们将使用的工具是dnsspoof,其语法如下:

    **dnsspoof –i mitm-bridge**
    
    

    命令的输出如下:

    行动时间 – 无线网络中的会话劫持

  4. 刷新浏览器窗口,现在,我们可以通过 Wireshark 看到,一旦受害者向任何主机(包括www.google.com)发出 DNS 请求,dnsspoof便会回复。

  5. 在受害者机器上,我们看到错误提示无法连接。这是因为我们将www.google.com的 IP 地址设置为192.168.0.199,即黑客机器的 IP,但80端口上没有服务在监听:行动时间 – 无线网络中的会话劫持

  6. 使用以下命令在 Kali 上运行 Apache:

    **apachet2ctl start**
    
    

    命令的输出如下:

    行动时间 – 无线网络中的会话劫持

  7. 现在,一旦我们刷新受害者的浏览器,浏览器便显示 Apache 的默认It Works!页面:行动时间 – 无线网络中的会话劫持

  8. 本示范展示了如何拦截数据并发送伪造的响应来劫持受害者的会话。

发生了什么?

我们进行了一次应用劫持攻击,基于无线 MITM 攻击。那幕后发生了什么?MITM 的设置确保我们能够看到受害者发送的所有数据包。一旦我们看到受害者发出的 DNS 请求数据包,运行在攻击者笔记本上的dnsspoof程序就会向受害者发送一个 DNS 响应,包含攻击者机器的 IP 地址(即www.google.com的地址)。受害者的笔记本接受了这个响应,并且浏览器向攻击者的 IP 地址发出了 HTTP 请求,端口为80

在实验的第一部分,攻击者机器的80端口上没有监听进程,因此,Firefox 报错。然后,一旦我们在攻击者的机器上启动了80端口(默认端口)的 Apache 服务器,浏览器的请求便收到了攻击者机器的响应,并显示了默认的It Works!页面。

本实验向我们展示了,一旦我们完全控制了较低层(在此为第二层),就很容易劫持运行在更高层的应用程序,如 DNS 客户端和网页浏览器。

动手吧,英雄——应用程序劫持挑战

使用无线 MITM 进行会话劫持的下一步是修改客户端传输的数据。探索 Kali 中可用的软件Ettercap。这将帮助你创建用于网络流量的搜索和替换过滤器。

在这个挑战中,编写一个简单的过滤器,将网络流量中所有的安全出现的地方替换为不安全。尝试在 Google 上搜索安全,查看结果是否会显示为不安全。

查找客户端的安全配置

在前几章中,我们已经看到如何为开放接入点、WEP 保护和 WPA 创建蜜罐,但是,当我们在现场并看到客户端的探测请求时,如何知道探测的 SSID 属于哪个网络呢?

尽管这开始看起来有点棘手,但这个问题的解决方案其实很简单。我们需要同时创建广播相同 SSID 但具有不同安全配置的接入点。当客户端漫游时,它会根据存储在客户端上的网络配置,自动连接到这些接入点之一。

那么,让游戏开始吧!

行动时刻 – 对客户端的去认证攻击

我们假设无线客户端上配置了一个名为Wireless Lab的网络,并且当它未连接到任何接入点时,会主动发送该网络的探测请求。为了找到该网络的安全配置,我们需要创建多个接入点。对于我们的讨论,我们假设客户端配置的网络为开放网络、WEP 保护、WPA-PSK 或 WPA2-PSK。这意味着我们将需要创建四个接入点:

  1. 为此,我们将首先创建四个虚拟接口——从wlan0monwlan0mon3,使用命令iw wlan0 interface add wlan0mon type monitor多次执行,每次将监视器名称的末尾加 1:行动时刻 – 对客户端的去认证攻击

  2. 你可以使用命令iwconfig查看所有这些新创建的接口:行动时刻 – 对客户端的去认证攻击

  3. 现在我们将在wlan0mon上创建开放 AP:行动时刻 – 对客户端的去认证攻击

  4. 让我们在wlan0mon1上创建 WEP 保护的 AP:行动时刻 – 对客户端的去认证攻击

  5. WPA-PSK AP 将位于wlan0mon2上:行动时刻 – 对客户端的去认证攻击

  6. WPA2-PSK AP 将位于wlan0mon3上:行动时刻 – 对客户端的去认证攻击

  7. 我们可以在相同的频道上运行airodump-ng,以确保所有四个接入点都在正常运行, 如下图所示:行动时间 – 客户端去认证攻击

  8. 现在让我们切换漫游客户端的 Wi-Fi。根据您之前连接的 Wireless Lab 网络,它将连接到相应的安全配置。以我的情况为例,它连接到 WPA-PSK 网络,如下图所示:行动时间 – 客户端去认证攻击

刚刚发生了什么?

我们创建了多个具有相同 SSID 但不同安全配置的蜜罐。根据客户端为 Wireless Lab 网络存储的配置,它将连接到相应的网络。

这一技巧非常有用,因为在进行渗透测试时,您并不清楚客户端笔记本上存储的具体安全配置。通过设置诱饵,您可以找到合适的配置。这种技术也称为WiFishing

试试看 – 诱饵客户端

在客户端上为相同的 SSID 创建不同的安全配置,并检查您的蜜罐集合是否能够检测到它们。

需要注意的是,许多 Wi-Fi 客户端可能不会主动探测它们在配置文件中存储的网络。使用我们在这里讨论的技术可能无法检测到这些网络。

快速小测验 – 高级 WLAN 攻击

Q1. 在 MITM 攻击中,谁处于中间?

  1. 接入点

  2. 攻击者

  3. 受害者

  4. 以上都不是

Q2. dnsspoof

  1. 欺骗 DNS 请求

  2. 欺骗 DNS 响应

  3. 需要在 DNS 服务器上运行

  4. 需要在接入点上运行

Q3. 无线 MITM 攻击可以通过以下方式进行:

  1. 同时在所有无线客户端上

  2. 一次只能使用一个频道

  3. 在任何 SSID 上

  4. 2 和 3

Q4. 在我们的 MITM 设置中,哪个接口最接近受害者?

  1. at0

  2. eth0

  3. br0

  4. en0

总结

在本章中,我们学习了如何利用无线进行高级攻击。我们为无线 MITM 攻击创建了一个设置,然后用它窃听受害者的流量。接着,我们利用相同的设置,通过 DNS 欺骗攻击劫持了受害者的应用层(具体来说是 Web 流量)。

在下一章中,我们将学习如何从规划、发现、攻击到报告阶段进行无线渗透测试。我们还将讨论如何保护 WLAN 的最佳实践。

第八章 KRACK 攻击

"无视山脉,获取帝国"
--汉尼拔(可能)

本章讨论了最近发现的 KRACK 漏洞,并探讨了当前能够识别易受攻击设备的工具的状态。本章深入分析了 WPA2 握手的内部工作原理,推荐给高级读者。

KRACK 攻击概述

KRACK 代表 密钥重安装攻击。这是一个在 2017 年 10 月由 KU Leuven 团队公开披露的漏洞集合。该攻击利用了 WPA2 握手中的基本缺陷,允许重新发送握手的某个阶段,以便覆盖加密数据。本章将从理论层面介绍该攻击,并提供成功识别和利用此漏洞的一些指导。

让我们看看 WPA2 握手,标准可以在 IEEE 802.11 标准中找到,链接如下:ieeexplore.ieee.org/document/7792308/。在此解释中,我们从关联和身份验证后的阶段开始,因为该漏洞不受这些阶段的影响。

用于加密的 对等临时密钥 (PTK) 由五个属性组成:

  • 一个共享的秘密密钥,称为对等主密钥 (PMK)

  • 由接入点创建的一个随机数值 (ANonce)

  • 由用户站点创建的一个随机数值 (SNonce)

  • 接入点 MAC 地址 (APMAC)

  • 用户站点 MAC 地址 (STAMAC)

在整个过程中,消息标识码 (MIC) 被用来提供一定程度的完整性和安全性。尽管它们在过程中至关重要,但在最终的加密数据中并未使用。以下是一个表示:

KRACK 攻击概述

此时,由于初始的身份验证和关联过程,用户站点和接入点都拥有 PMK、接入点 MAC 地址和用户站点 MAC 地址。此外,每个阶段将有一个密钥重放计数器,跟踪数据包的顺序;这将在稍后发挥作用:

  1. 阶段 1:接入点将 ANonce 值传输给用户站点,这为用户站点提供了生成 PTK 所需的一切。用户站点创建 PTK,并持有将用于加密的密钥。

  2. 阶段 2:用户站点返回其自己的随机数值和 MIC。接入点现在持有创建 PTK 所需的一切。接入点创建 PTK,并处于与用户站点相同的状态。

  3. 阶段 3:接入点创建并发送 组临时密钥 (GTK) 给用户,使其能够读取非定向流量,如多播/广播流量。

  4. 阶段 4:用户站点返回一个确认的声明。

在四阶段握手完成后,用户站点现在可以向接入点发送加密数据,并被接纳。在此时,协商阶段已完成,用户站点可以自由使用网络。

刚刚发生了什么?

我们在为 KRACK 攻击的解释做准备时讨论了四阶段握手。到这一阶段时应该是回顾,但在深入技术细节之前,复习基础是很重要的。

四阶段握手 KRACK 攻击

记住我们刚才讨论的内容,你现在可能会惊讶地发现这个过程容易受到攻击!然而,问题并不在于核心概念,而是在于标准的实际实施。与大多数技术标准一样,为了使其易于使用,安全性在某些方面被妥协。具体而言,为了使解决方案可用,妥协的部分是使握手中的某些阶段在消息丢失时可以重放。

尽管对大多数过程而言这不是一个大问题,但第三阶段是可重放的,可能会对整体解决方案的安全性产生重大影响。通过在身份验证过程中处于中间人(MITM)位置,攻击者可以在某些情况下阻止正确协商的 PTK,并安装他们自己的 PTK。密钥协商时会重置密钥重放计数器和相关的 nonce 值。因此,通过阻止某些数据包,MITM 攻击者可以预测密钥重装时计数器和 nonce 值,并强迫重新安装密钥。这将使未来的攻击者能够执行恶意操作,例如解密、伪造和数据包重放。

然而,考虑到安全行业的运作方式,研究人员明智地只发布了概念验证(PoC)脚本,显示攻击可以在客户端设备上执行,并且他们没有发布完整的攻击脚本来完全对已建立的网络进行攻击。值得注意的是,他们已经宣布,Android 和 Linux 发行版易受密钥重装攻击的影响,该攻击迫使使用全零密钥,从而使流量解密变得轻而易举。

行动时间 – 开始破解 KRACK

我们现在将通过 Mathy VanHoef 的 GitHub 页面分发的脚本进行操作。

  1. 首先,在 Kali 中打开终端并输入如下面截图所示的命令:行动时间 – 开始破解 KRACK

  2. 我们需要安装项目所依赖的依赖项。我们将通过以下命令来实现:

    **apt-get install libnl-3-dev libnl-genl-3-dev pkg-config libssl-dev net-tools git sysfsutils python-scapy python-pycryptodome**
    
    
  3. 进入创建的krackattacks-scripts目录并检查其中的内容。它应该如下所示:行动时间 – 开始破解 KRACK

    在这个文件夹中,你可以看到测试脚本的主体和 Mathy 以及团队共同编写的解决方案。不过,在开始使用它们之前,我们需要将hostapd编译成它们需要的格式。

    脚本本身在首次使用时会提供这些说明。不过,我在这里写出来以便更清楚。

  4. 使用以下命令进入hostapd目录,如下截图所示:Action Time – getting KRACKing

    这将编译出可供 KRACK 攻击 PoC 脚本使用的hostapd。要验证它是否正确构建,文件夹应该如下所示:

    Action Time – getting KRACKing

  5. 进入项目根目录下的krackattack目录。它应该看起来像以下截图所示:Action Time – getting KRACKing

    脚本建议首次使用时执行disable-hwcrypto.sh脚本。然而,在使用 Alfa AWUS051NH 和 Kali Linux 虚拟机时,我发现这个脚本会导致虚拟机崩溃,而脚本本身仍然能正常工作。是否执行这一步是用户的选择,但建议谨慎操作。

    该目录中还有另外三个重要的文件。首先,hostapd.conf定义了要生成的网络的 Wi-Fi 细节。默认值为testnetwork作为 SSID 和abcdefgh作为密码短语。可以根据需要更改这些设置。

    第二个,krack-test-client.py脚本是我们用来识别易受攻击设备的脚本。这是本章的主要内容。

    最后,有一个krack-ft-test.py脚本,由于它适用于一些特殊的无线设备,本章不会讲解如何使用它。

    接下来,我们就开始KRACKing

  6. 我们需要禁用网络管理器,以避免冲突,使用以下命令:

    **systemctl stop NetworkManager.service**
    **systemctl disable NetworkManager.service**
    
    
  7. 然后,我们可以使用以下命令执行krack-test-client.py脚本:

    **python krack-test-client.py**
    
    

    然后你将看到以下截图:

    Action Time – getting KRACKing

  8. 现在拿起一台测试设备,任何支持 Wi-Fi 的设备,并使用之前描述的凭据或你自己设置的凭据连接到创建的网络。

    终端将显示大量文本,但脚本会友好地将任何成功的攻击标记为绿色,如下截图所示:

    Action Time – getting KRACKing

该脚本将遍历潜在的攻击并通知用户所测试的设备是否存在漏洞。

刚刚发生了什么?

我们成功地从 Mathy VanHoef 的 GitHub 页面获取了 PoC,并测试了一个用户设备,看看它是否存在漏洞。

总结

在本章中,我们已经讲解了新的 KRACK 攻击,介绍了 WPA2 握手的工作原理,并展示了如何对设备进行 PoC 检查。随着时间的推移,KRACK 攻击会不断发展,更多的脚本会被释放到网络中。读者应关注社区,保持对这一研究的新应用和有趣发展的关注。

读者还应访问研究人员的网页:www.krackattacks.com/

此外,阅读白皮书以便更好地理解,白皮书地址为:papers.mathyvanhoef.com/ccs2017.pdf

第九章 攻击 WPA-Enterprise 和 RADIUS

"个子越大,摔得越重。"
--流行语

WPA-Enterprise 一直被认为是一个无懈可击的安全方案。大多数网络管理员将其视为解决所有无线安全问题的万能药。在本章中,我们将看到,事实远非如此。

在本章中,我们将学习如何使用 Kali 上可用的不同工具和技术攻击 WPA-Enterprise。

在本章中,我们将涵盖以下主题:

  • 设置 FreeRADIUS-WPE

  • 攻击 Windows 客户端上的 PEAP

  • 企业安全最佳实践

设置 FreeRADIUS-WPE

我们需要一个 RADIUS 服务器来协调 WPA-Enterprise 攻击。最广泛使用的开源 RADIUS 服务器是 FreeRADIUS。然而,设置它是很困难的,而且为每个攻击配置它可能非常繁琐。

著名的安全研究员 Joshua Wright 为 FreeRADIUS 创建了一个补丁,使其更容易进行设置和攻击。这个补丁以 FreeRADIUS-WPE(无线破坏版)发布。Kali 默认不带 FreeRADIUS-WPE,因此你需要执行以下步骤来设置 FreeRADIUS-WPE:

使用apt-get install freeradius-wpe安装 FreeRADIUS-WPE。现在检查输出,确保它看起来像以下截图:

设置 FreeRADIUS-WPE

现在让我们快速在 Kali 上设置 RADIUS 服务器。

操作时间 – 使用 FreeRADIUS-WPE 设置 AP

按照以下说明开始:

  1. 将接入点的一个 LAN 端口连接到运行 Kali 的计算机上的以太网端口。在我们的案例中,接口是eth0。启动该接口,并通过运行 DHCP 获取 IP 地址,如下所示的截图所示:操作时间 – 使用 FreeRADIUS-WPE 设置 AP

  2. 登录到接入点并将安全模式设置为WPA/WPA2-Enterprise,将版本设置为WPA2加密方式设置为AES。然后,在 EAP(802.1x)部分,输入Radius 服务器 IP地址作为 Kali 构建的 IP 地址。Radius 密码test,如下所示的截图所示:操作时间 – 使用 FreeRADIUS-WPE 设置 AP

  3. 现在让我们打开一个新的终端并进入目录/etc/freeradius-wpe/3.0。这里是所有 FreeRADIUS-WPE 配置文件所在的地方。操作时间 – 使用 FreeRADIUS-WPE 设置 AP

  4. 打开/mods-available/eap。你会发现default_eap_type命令设置为md5操作时间 – 使用 FreeRADIUS-WPE 设置 AP

  5. 让我们将其更改为peap操作时间 – 使用 FreeRADIUS-WPE 设置 AP

  6. 让我们打开clients.conf文件。这是我们定义可以连接到 RADIUS 服务器的客户端列表的地方。有趣的是,如果你直接浏览到文件的底部,忽略示例设置,客户端的secret默认为testing123。我们需要将其更改为test,以匹配步骤 2:行动时间 – 使用 FreeRADIUS-WPE 设置 AP

  7. 现在,我们已经准备好通过freeradius-wpe –s –X命令启动 RADIUS 服务器:行动时间 – 使用 FreeRADIUS-WPE 设置 AP

  8. 一旦运行此命令,您将看到屏幕上显示大量调试信息,但最终服务器会稳定下来,开始监听请求。太棒了!我们现在已经准备好开始本章的实验。

刚才发生了什么?

我们已经成功设置了 FreeRADIUS-WPE。我们将在本章接下来的实验中使用它。

大胆尝试,英雄 – 玩转 RADIUS

FreeRADIUS-WPE 有很多选项,熟悉这些选项可能是个好主意。最重要的是,花时间查看不同的配置文件以及它们如何协同工作。

攻击 PEAP

受保护的扩展认证协议PEAP)是最常用的 EAP 版本。它是 Windows 系统原生支持的 EAP 机制。

PEAP 有两个版本:

  • PEAPv0 与 EAP-MSCHAPv2(这是最流行的版本,因为 Windows 本身支持此协议)

  • PEAPv1 与 EAP-GTC

PEAP 使用服务器端证书来验证 RADIUS 服务器。几乎所有针对 PEAP 的攻击都利用了证书验证中的错误配置。

在下一个实验中,我们将看看当客户端关闭证书验证时,如何破解 PEAP。

行动时间 – 破解 PEAP

按照给定的说明开始:

  1. 我们再次检查eap.conf文件,确保启用了 PEAP:行动时间 – 破解 PEAP

  2. 然后,我们通过freeradius-wpe –s –X命令重新启动 RADIUS 服务器:行动时间 – 破解 PEAP

  3. 我们监控 FreeRADIUS-WPE 创建的日志文件:行动时间 – 破解 PEAP

  4. Windows 本身支持 PEAP。让我们确保证书验证已关闭:行动时间 – 破解 PEAP

  5. 我们需要点击配置选项卡,在安全密码(EAP-MSCHAP v2)旁边,并告诉 Windows 不要自动使用我们的 Windows 登录名和密码:行动时间 – 破解 PEAP

  6. 我们还需要强制它在高级设置对话框中选择用户认证行动时间 – 破解 PEAP

  7. 一旦客户端连接到接入点,客户端将被提示输入用户名和密码。我们使用Monster作为用户名,abcdefghi作为密码:行动时间 – 破解 PEAP

  8. 一旦我们这样做,您应该能在日志文件中看到 MSCHAP-v2 挑战响应的出现。

  9. 我们现在使用asleap工具,通过包含密码abcdefghi的密码列表文件来破解密码,我们成功破解了密码!

刚刚发生了什么?

我们使用 FreeRADIUS-WPE 设置了我们的蜜罐。企业客户端错误配置,未使用 PEAP 的证书验证。这使得我们可以向客户端呈现自己的假证书,而客户端欣然接受。一旦这样做,MSCHAP-v2(内层身份验证协议)就会启动。当客户端使用我们的假证书加密数据时,我们能够轻松恢复用户名、挑战和响应元组。

MSCHAP-v2 容易受到字典攻击。我们使用asleap破解挑战和响应对,因为它似乎基于字典单词。

挑战一下,英雄 – 攻击 PEAP 的变种

PEAP 可能会被错误配置。即使启用了证书验证,如果管理员没有在“连接到这些服务器列表”中提到真实的服务器,攻击者也可以从任何列出的认证机构获得另一个域的真实证书。客户端仍然会接受这个证书。这个攻击还有其他变种。

我们鼓励您在本节中探索不同的可能性。

EAP-TTLS

我们鼓励您尝试类似于我们为 PEAP 建议的攻击方法,来攻击 EAP-TTLS。

企业的安全最佳实践

我们已经见识了大量针对 WPA/WPA2 的攻击,包括个人版和企业版。根据我们的经验,我们推荐以下做法:

  • 对于 SOHO 和中型企业,使用带有强密码的 WPA2-PSK。您可以使用最多 63 个字符,充分利用它们。

  • 对于大型企业,使用带有 EAP-TLS 的 WPA2-Enterprise。这种方式使用客户端和服务器端证书进行身份验证,目前是无法破解的。

  • 如果您必须在 WPA2-Enterprise 中使用 PEAP 或 EAP-TTLS,请确保启用证书验证,选择正确的认证机构,使用授权的 RADIUS 服务器,最后关闭任何允许用户接受新的 RADIUS 服务器、证书或认证机构的设置。

小测验 – 攻击 WPA-Enterprise 和 RADIUS

Q1. 以下哪项是 FreeRADIUS-WPE?

  1. 从零开始编写的 RADIUS 服务器

  2. 一个针对 FreeRADIUS 服务器的补丁

  3. 默认在所有 Linux 系统中附带

  4. 以上都不是

Q2. 以下哪项可以用来攻击 PEAP?

  1. 假凭证

  2. 假证书

  3. 使用 WPA-PSK

  4. 以上所有

Q3. EAP-TLS 使用什么?

  1. 客户端证书

  2. 服务器端证书

  3. 选项 1 或 2

  4. 选项 1 和 2

Q4. EAP-TTLS 使用什么?

  1. 仅客户端证书

  2. 服务器端证书

  3. 基于密码的身份验证

  4. LEAP

总结

在本章中,我们看到了如何 compromise 一种运行 PEAP 或 EAP-TTLS 的 WPA-Enterprise 网络的安全,这两种是企业中最常见的认证机制。

在下一章中,我们将看看如何在实际渗透测试中将我们所学的所有内容付诸实践。

第十章 无线局域网渗透测试方法论

“实践出真知。”
--流行说法

本章将概述将前几章中教授的技巧转化为完整无线渗透测试的步骤。

无线渗透测试

为了执行无线渗透测试,重要的是要遵循定义好的方法论。简单地启动airbaseairodump命令并希望得到最好的结果,是无法满足测试目标的。作为渗透测试者,你必须确保遵循你所服务组织的标准,如果他们没有相关标准,那么你应该遵循最高标准。

广义上,我们可以将无线渗透测试活动分为以下几个阶段:

  1. 规划阶段

  2. 发现阶段

  3. 攻击阶段

  4. 报告阶段

现在我们将单独查看这些阶段。

规划

在此阶段,我们必须理解以下内容:

  • 评估范围:渗透测试者应与客户合作,定义一个可实现的范围,并且能够提供最大程度的网络安全洞察。通常,收集以下信息:

    • 渗透测试的位置。

    • 场地的总覆盖范围。

    • 估算部署的接入点和无线客户端的数量。

    • 评估中包括哪些无线网络?

    • 是否在范围内进行利用?

    • 攻击用户是否在范围内?

    • 拒绝服务攻击是否在范围内?

  • 工作量估算:根据已定义的范围,测试者需要估算所需时间。请记住,在此估算之后可能会重新定义范围,因为组织可能在时间和资金上都有限制。

  • 合法性:在进行测试之前,客户必须给予同意。这应该说明所涵盖的测试内容,并明确界定赔偿、保险和范围的限制。如果你不确定,需与相关领域的专业人士沟通。大多数组织会有自己的版本,可能还会包含保密协议NDA)。

一旦所有前置要求到位,我们就准备好了!

发现

在此阶段,目标是识别并应用无线设备和无线网络的特征。

所有执行这些操作的技巧已经在前几章中阐述,但简而言之,目标是:

  • 列举区域内可见和隐藏的无线网络

  • 列举区域内的设备,以及连接到目标网络的设备

  • 映射网络的范围,了解它们的可达性以及是否存在恶意个人可以利用的地方来发起攻击,例如,一家咖啡馆。

所有这些信息都应被记录。如果测试仅限于侦查阶段,那么测试将到此为止,测试者将尝试根据这些信息得出结论。以下是一些对客户有用的陈述:

  • 拥有与开放网络及公司网络相关联的设备数量

  • 可以通过 WiGLE 等解决方案将设备与位置链接的网络数量

  • 存在弱加密

  • 网络限制过于严格,阻止了标准用户

攻击

一旦完成侦查,必须进行利用,以证明概念是否有效。如果该攻击是作为红队或更大范围评估的一部分进行的,那么利用应该尽可能悄悄地获得对网络的访问权限。

在我们的攻击阶段,我们将探索以下内容:

  • 破解加密

  • 攻击基础设施

  • 妥协客户端

  • 查找脆弱的客户端

  • 查找未经授权的客户端

破解加密

第一步是获取任何已识别的脆弱网络的密钥。如果存在 WEP 网络,请执行第四章中解释的 WEP 破解方法,WLAN 加密漏洞。无论你是否能够破解它,WEP 的存在仍然被视为一种漏洞。如果存在 WPA2 保护的系统,你有两种选择。如果希望保持隐秘,可以选择在人员可能进行身份验证或重新验证的时间到达现场。此类时间通常为:

  • 一天开始时

  • 午餐时间

  • 一天结束时

此时,设置你的 WPA 密钥获取配置,如第四章中所示,WLAN 加密漏洞。或者,执行去认证攻击,如第六章中所示,攻击客户端

这在成熟的组织中更加嘈杂,更容易被发现。

如果已经部署了 WPA-Enterprise,请记住你需要利用侦查中收集的信息来瞄准正确的网络,并设置你的虚拟企业配置,如第九章中的攻击 PEAP部分所示,攻击 WPA-Enterprise 和 RADIUS

你可以尝试破解所有密码短语,但请记住,某些密码是无法破解的。测试完成后,向无线管理员确认正在使用的密码短语。检查它是否为安全密码短语,确保你作为测试者没有遇到工具故障,或者仅仅是运气不好。

攻击基础设施

如果通过破解加密获得了网络访问权限,并且该测试被允许在范围内进行渗透测试,则应至少执行以下操作:

  • 端口扫描

  • 确定哪些服务正在运行

  • 枚举任何开放的服务,如未认证的 FTP、SMB 或 HTTP

  • 利用任何已识别的漏洞服务

攻击客户端

在枚举和测试所有无线系统后,有多种参与方式适合对客户端进行攻击。

如果需要,在确定哪些客户端容易受到 KARMA 攻击之后,创建一个蜜罐,迫使它们按照攻击 PEAP章节中第九章的内容进行连接,攻击 WPA-Enterprise 和 RADIUS。通过此方法可以收集到许多有用的信息,但请确保收集到的数据是有意义的,并以伦理和安全的方式进行存储、传输和使用。

报告

最后,在测试结束时,必须将你的发现报告给客户。确保报告的质量与测试的质量相匹配非常重要。因为客户只会看到报告,你必须像对待测试一样给予它足够的关注和用心。以下是报告布局的指南:

  1. 管理总结

  2. 技术总结

  3. 发现:

    • 漏洞描述

    • 严重性

    • 受影响的设备

    • 漏洞类型—软件/硬件/配置

    • 修复

  4. 附录

管理总结应面向高级非技术观众,重点讨论高层次的影响和所需的缓解措施。避免过于技术化的语言,确保涵盖根本原因。

技术总结应在管理总结和发现列表之间找到平衡。它应面向开发者或技术负责人,重点讨论如何修复问题和可以实施的广泛解决方案。

发现列表应以低层次描述每个漏洞,解释识别、复制漏洞的方法。

附录应包含任何在简短描述中无法涵盖的额外信息。在这里,任何屏幕截图、概念验证代码或被盗数据应予以展示。

总结

在本章中,我们讨论了一种执行各种无线测试的方法,并参考了每个步骤的相关章节。我们还列出了报告漏洞的方法和使技术数据易于展示的技巧。在下一章也是最后一章中,我们将介绍自本书首次出版以来开发的新技术,包括 WPS 和用于监控监视的探针。

第十一章:WPS 和探测

“太阳底下无新事。”
--俗话说

本章涵盖了与 WPS 攻击和探测监控相关的新技术,还介绍了让无线测试变得更加简单的菠萝工具。这些攻击和工具自原书发布以来已出现,我们将确保尽可能全面地涵盖这些内容。

WPS 攻击

无线保护设置WPS)于 2006 年推出,旨在帮助没有无线知识的用户建立安全网络。其理念是,Wi-Fi 设备会有一个单一的隐藏硬编码值,允许通过记住密钥进行访问。新设备将通过 Wi-Fi 路由器上的按钮进行身份验证。没有访问设备的外部人员将无法访问,从而减少了记住 WPA 密钥或设置较短密钥的问题。

在 2011 年末,发现了一个安全漏洞,使得 WPS 身份验证系统可以受到暴力破解攻击。协商 WPS 交换所需的流量是可以伪造的,而且 WPS PIN 只有八个字符,范围为 0-9。与八个字符的 azAZ09 密码相比,这一设置提供的可能组合只有 100,000,000,而后者有 218,340,105,584,896 种组合。

然而,仍然存在其他漏洞:

  • 在 WPS PIN 的八个字符中,最后一个字符是前七个字符的校验和,因此是可预测的,这就只剩下最多 10,000,000 种可能性。

  • 此外,剩余字符中的前四个和接下来的三个字符是分别检查的,这意味着有 104 + 103 种选择,或者说 11,000 种可能性。

通过在身份验证机制中做出的两个决策,我们将可能的组合从 100,000,000 个缩减到了 11,000 个。这意味着在暴力破解算法时,差距达到了六个小时。正是这些决策使得针对 WPS 的攻击变得可行。

在接下来的实验中,我们将通过使用 Wash 和 Reaver 来识别和攻击脆弱的 WPS 设置。

行动时间 – WPS 攻击

按照给定的说明开始:

  1. 在我们攻击一个启用 WPS 的接入点之前,需要先创建一个。我们使用的 TP-Link 路由器默认开启了这一功能,这虽然让人担心,但也很方便。为了再次确认这一点,我们可以登录到路由器并点击 WPS。它应该如下所示:行动时间 – WPS 攻击

  2. 现在我们已经确认它准备好了。我们需要设置目标。我们需要设置测试环境。我们将使用 Wash 工具,而 Wash 需要一个监控接口才能工作。像之前做过的多次一样,我们需要通过以下命令设置一个接口:

    **airmon-ng start wlan0**
    
    

    输出将如下所示:

    行动时间 – WPS 攻击

  3. 我们已设置好监控接口 wlan0mon,并可以通过以下命令调用 Wash:

    **wash -i wlan0mon**
    
    

    行动时间 – WPS 攻击

  4. Wash 会显示所有支持 WPS 的附近设备,指示它们是否已启用 WPS,是否解锁,并显示运行的版本:行动时间 – WPS 攻击

  5. 我们可以看到Wireless Lab网络支持 WPS。它使用的是版本 1,并且没有被锁定。太棒了。我们记录下 MAC 地址,在我的案例中是E8:94:F6:62:1E:8E,因为它将用于定位我们接下来的工具:reaver

  6. Reaver 尝试通过暴力破解给定 MAC 地址的 WPS 密码。启动该过程的语法如下:

    **reaver -i wlan0mon -b <mac> -vv**
    
    

    输出结果如下:

    行动时间 – WPS 攻击

  7. 一旦启动,该工具将遍历所有可能的 WPS 密码组合并尝试进行认证。成功后,它将返回 WPS 密码和密码,如下所示的截图所示:行动时间 – WPS 攻击

  8. 拥有 WPA-PSK 后,我们现在可以正常认证了。我将我的设备保持在与 WPS 密码匹配的默认 WPA-PSK 上。然而,如果你想使用 WPS 密码进行认证,可以通过在reaver中指定密码来实现,命令如下:

    **reaver -i wlan0mon -b <mac> -vv -p 88404148**
    
    

    用你的密码替换我的密码。

刚刚发生了什么?

我们成功地通过 Wash 识别了一个存在 WPS 漏洞的无线网络。然后我们使用 Reaver 恢复了 WPA 密钥和 WPS 密码。有了这些信息,我们就能认证该网络并继续进行网络渗透测试。

尝试一下,英雄 – 限制速率

在前面的练习中,我们攻击了一个完全没有保护的 WPS 安装。为了进一步保障安全,可以采用多种方法来保护安装,而无需完全移除 WPS。

尝试将 WPS 密码设置为任意值,然后再试一次,看看 Reaver 是否同样有效地破解它。

获取一款可以限制 WPS 尝试次数的无线路由器。尝试配置你的攻击,避免触发锁定。

探测嗅探

我们之前讨论过探测,以及它们如何用于识别隐藏网络和执行有效的恶意接入点攻击。它们还可以用来识别个体作为目标,或者通过最少的设备在大范围内跟踪他们。

当设备想要连接到一个网络时,它会发送一个包含其 MAC 地址和希望连接的网络名称的探测请求。我们可以使用诸如airodump-ng之类的工具来跟踪这些请求。然而,如果我们想确定某个特定时间、特定地点是否有某个个体出现,或者寻找 Wi-Fi 使用趋势,我们就需要使用不同的方法。

在本节中,我们将使用tshark和 Python 来收集数据。你将收到代码和关于正在做的事情的解释。

行动时间 – 收集数据

按照给出的说明开始:

  1. 首先,我们需要一个能够搜索多个网络的设备。通常,一个普通的智能手机,如安卓设备或 iPhone 就可以达到目的。台式机通常不适合作为目标,因为它们往往停留在一个位置。更新的 iPhone 和安卓设备可能禁用了探测请求或进行了混淆,所以在放弃之前,请确认一下。

  2. 一旦你有了设备,确保开启 Wi-Fi。

  3. 然后,像之前做过的那样,设置你的监控接口:开始行动 - 收集数据

  4. 下一步是通过以下命令使用 tシャーク查找探测请求:

    **tshark -n -i wlan0mon subtype probereq**
    
    

    以下命令的截图如下:

    开始行动 - 收集数据

  5. 目前你的输出有点粗糙,因为 tシャーク的默认输出并不是为了可读性设计的,而是尽可能包含更多信息。它应该像下面这样:开始行动 - 收集数据

  6. 你可以清楚地看到探测请求的 MAC 地址和 SSID;然而,这个输出还可以进一步优化。我们可以使用以下命令来使其更具可读性:

    **tshark –n –i wlan0mon –T fields -e wlan.sa –e wlan.ssid**
    
    

    以下命令的截图如下:

    开始行动 - 收集数据

  7. 这里的输出更加易于阅读:开始行动 - 收集数据

  8. 现在我们有了可读格式的输出,接下来做什么呢?我们要做的是创建一个 Python 脚本,该脚本将运行命令并记录输出以供后续分析。在运行代码之前,你需要确保你的监控接口已经准备好,并且在你所在的目录下创建了一个名为results.txt的文件。Python 脚本如下:

    import subprocess
    import datetime
    results = open("results.txt", "a")
    while 1:
        cmd = subprocess.check_output(["tshark –n –i wlan0mon –T fields -e wlan.sa –e wlan.ssid –c 100"], shell=True)
        split = cmd.split("\n")
        for value in split[:-1]:
               if value.strip():
                       splitvalue = value.split("\t")
                       MAC = str(splitvalue[0])
                       SSID = str(splitvalue[1])
                       time = str(datetime.datetime.now())
                       results.write(MAC+" "+SSID+" "+time+"\r\n")
    

    让我们简要了解一下 Python 脚本:

    • import subprocessimport datetime:这两行代码允许我们引用subprocessdatetime库。subprocess库让我们能够通过 Linux 命令行监控接口,而datetime库则帮助我们获取准确的时间和日期信息。

    • results = open("results.txt", "a"):这行代码打开一个具有追加权限的文件,并将其赋值给results。追加权限只允许脚本向文件中添加内容,这样可以避免文件被不断覆盖。

    • while 1:这一行表示一直运行,直到停止。

    • cmd = subprocess.check_output(["tshark –n –i wlan0mon –T fields -e wlan.sa –e wlan.ssid –c 100"], shell=True):这会打开一个 shell 来执行我们之前测试过的tshark命令。唯一的不同是这次添加了-c 100。这个标志的作用是限制命令执行 100 次查询。这样,我们可以将结果返回而无需停止程序。由于我们已经设定了程序执行完后会继续运行,脚本会重新启动。此行代码将 shell 的输出赋值给变量cmd。脚本将显示计数至 100,停止,然后重新启动。也就是说,如果你希望它结束,你必须终止进程。

    • split = cmd.split("\n"):这会将变量按行拆分。

    • for value in split[:-1]:这会对输出中的每一行执行以下操作,忽略包含标题的第一行。

    • if value.strip():这检查值是否为空,在继续之前考虑到非探测请求。

    • value = value.split("\t"):这将每一行根据制表符拆分成更小的块。

    • 以下三行将每个文本块分配给一个变量:

      MAC = str(splitvalue[0])
      SSID = str(splitvalue[1])
      time = str(datetime.datetime.now())
      
    • results.write(MAC+" "+SSID+" "+time+"\r\n"):这会将所有值写入文件,值之间用空格分隔,最后加上回车和换行符以保持格式整齐。输出将是整齐的文本行写入文件。

刚才发生了什么?

我们从探测请求中获取输入,并使用 Python 将其输出到文件。你可能会问,这样做的目的是什么?其实,可以通过简单地执行原始的tshark命令,并在末尾添加>> results.txt命令来实现。你是对的;然而,我们创建的是一个与其他工具、可视化平台、数据库和服务集成的框架。

例如,使用 WiGLE 数据库将 SSID 映射到位置,你可以添加几行代码来获取 SSID 变量并查询 WiGLE 数据库。或者,你可以设置一个 MySQL 数据库,将结果输出到数据库中并执行 SQL 命令。本节为你提供了创建自己探测监控工具的第一步。通过实验和使用这段简单代码作为起点,你可以创建多种有用的工具。

加油,英雄——扩展想法

研究哪些工具可以进行可视化或数据分析,并且易于与 Python 集成。像 Maltego 这样的工具有免费的版本,可以用来绘制信息。

设置一个 MySQL 数据库来记录数据,并重新配置前面的 Python 脚本将结果输出到数据库中。然后,构建另一个脚本(或者在同一个脚本中完成)来检索数据并将其输出到 Maltego。

重新配置脚本以查询 WiGLE,并收集探测请求的地理位置数据。通过 Maltego 将这些数据输出。

尝试通过 Flask、Django 或 PHP 搭建一个基于 Web 的前端来展示你的结果。调查目前存在的展示数据的解决方案,并通过与其创作者的讨论来尝试模仿或改进这些解决方案。

总结

在本章中,我们讨论了自原书发布以来出现的针对 WPS 的攻击,并且初步探讨了如何将无线工具与 Python 集成。唉,书籍已经接近尾声,希望它对你有所启发并且有趣。

附录 A. 快速测验答案

第一章,无线实验室设置

快速测验 – 理解基础知识

Q1 运行命令 ifconfig wlan0。在输出中,你应该能看到 "UP" 标志,这表示网卡功能正常。
Q2 如果你希望在重启后保存某些内容,比如配置设置或脚本,才需要硬盘。
Q3 它显示了本地机器上的 ARP 表。
Q4 我们将使用 WPA_Supplicant。

第二章,无线局域网及其固有的安全隐患

快速测验 – 理解基础知识

Q1 3
Q2 3
Q3 1

第三章,绕过 WLAN 认证

快速测验 – WLAN 认证

Q1 4
Q2 2
Q3 1

第四章,WLAN 加密缺陷

快速测验 – WLAN 加密缺陷

Q1 3
Q2 1

第五章,WLAN 基础设施攻击

快速测验 – WLAN 基础设施攻击

Q1 1
Q2 1
Q3 1
Q3 4

第六章,攻击客户端

快速测验 – 攻击客户端

Q1 1
Q2 1
Q3 2
Q3 4

第七章,高级 WLAN 攻击

快速测验 – 高级 WLAN 攻击

Q1 2
Q2 2
Q3 4
Q3 1

第九章,攻击 WPA-Enterprise 和 RADIUS

快速测验 – 攻击 WPA-Enterprise 和 RADIUS

Q1 2
Q2 2
Q3 4
Q3 2
posted @ 2025-06-19 16:03  绝不原创的飞龙  阅读(7)  评论(0)    收藏  举报