Kali Linux 2019 学习手册(一)
原文:
annas-archive.org/md5/29591BFA2DAF3F905BBECC2F6DAD8828译者:飞龙
前言
《学习 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 应用程序注入漏洞,以及最古老的漏洞,即缓冲区溢出。
现在我们知道了漏洞是什么,让我们在下一节中看看黑客用来利用安全漏洞的工具。
利用
利用攻击是黑客利用系统内的弱点或漏洞的方式。例如,拿一把锤子、一块木头和一颗钉子。漏洞是木头的柔软、可渗透的特性,而利用是将钉子钉进木头的行为。
作为一名网络安全专业人员,你必须了解漏洞和利用,以减少被攻击的可能性。在下一节中,我们将描述风险。
风险
风险是漏洞、威胁或资产对组织造成的潜在影响,与所有其他漏洞、威胁和资产相对比计算。评估风险有助于确定特定问题引发数据泄露对组织财务、声誉或法规合规性造成损害的可能性。
减少风险对许多组织至关重要。有许多认证、标准和框架旨在帮助公司了解、识别和减少风险。稍后,在渗透测试方法部分,我们将介绍这些标准和框架。接下来,我们将看看公司不知道的威胁,因为还没有人识别它们——零日攻击。
零日
零日攻击是指世界上包括供应商在内都不知道的漏洞利用,这意味着供应商没有修补它。这些攻击通常在国家级攻击中使用,以及由大型犯罪组织使用。发现零日漏洞利用对道德黑客来说非常有价值,可以为他们赚取漏洞赏金。这些赏金是供应商支付给发现其应用程序中以前未知漏洞的安全研究人员的费用。
今天,许多组织建立了漏洞赏金计划,允许发现供应商系统中漏洞的感兴趣的人报告。报告漏洞的人,通常是零日漏洞,会得到一份奖励。然而,有些黑客故意尝试利用系统或网络以获取某种个人利益;这就是黑客价值,我们将在下一节中探讨。
黑客价值
黑客价值通常指进行系统或网络入侵的动机或原因。它是实现入侵系统目标的价值。
现在你能更好地描述渗透测试中使用的术语了。在下一节中,我们将介绍渗透测试的每个阶段。
渗透测试阶段
渗透测试虽然很有趣,但我们不能在没有作战计划的情况下攻击目标。规划确保渗透测试按照顺序的步骤来实现期望的结果,即识别漏洞。每个阶段都概述和描述了在进入下一步之前需要做什么。这确保了所有关于工作和目标的细节都能有效地收集,并且渗透测试人员清楚地了解了前方的任务。
以下是渗透测试的不同阶段:
-
预先参与
-
信息收集
-
威胁建模
-
漏洞分析
-
利用
-
后利用
-
报告撰写
这些阶段中的每一个将在接下来的部分中更详细地介绍。
预先参与
在预先参与阶段,选择了关键人员。这些人员对于提供信息、协调资源和帮助测试人员了解评估的范围、广度和参与规则至关重要。
这个阶段还涵盖了法律要求,通常包括保密协议(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 平台上进行渗透测试,您将需要微软的合法许可。
在下一节中,我们将介绍物理渗透测试的基本知识。
物理渗透测试
物理渗透测试侧重于测试用于保护组织数据的物理安全访问控制系统。办公室和数据中心内存在安全控制,以防止未经授权的人员进入公司的安全区域。
物理安全控制包括以下内容:
-
安全摄像头和传感器:安全摄像头用于监视区域内的物理行为。
-
生物识别认证系统:生物识别用于确保只有授权人员才能进入某个区域。
-
门和锁:锁定系统用于防止未经授权的人员进入房间或区域。
-
保安人员:保安人员是被指派保护某物、某人或某个区域的人。
完成了这一部分,你现在能够描述各种类型的渗透测试。你的旅程还不完整,没有理解黑客的各个阶段。黑客的不同阶段将在下一部分中介绍。
黑客阶段
在任何渗透测试培训中,你将会遇到五个黑客阶段。这些阶段如下:
-
侦察
-
扫描
-
获取访问权限
-
维持访问
-
覆盖踪迹
在接下来的部分中,我们将详细描述每个阶段。
侦察或信息收集
侦察或信息收集阶段是攻击者专注于获取有关目标的有意义信息的阶段。这是黑客中最重要的阶段:对目标了解的越多,就越容易发现并利用弱点。
以下是侦察阶段使用的技术:
-
使用搜索引擎收集信息
-
使用社交网络平台
-
执行 Google 黑客攻击
-
执行 DNS 查询
-
社会工程
在这个阶段,目标是尽可能多地收集有关目标的信息。在下一部分中,我们将讨论使用更有针对性的方法,接触目标以获取更具体和详细的信息。
扫描
黑客的第二阶段是扫描。扫描涉及使用直接方法来接触目标,以获取侦察阶段无法访问的信息。这个阶段涉及对目标组织、其系统和网络基础设施进行概要。
以下是扫描阶段使用的技术:
-
检查任何活动系统
-
检查防火墙及其规则
-
检查开放的网络端口
-
检查运行的服务
-
检查安全漏洞
-
创建目标网络的网络拓扑
这个阶段非常重要,因为它帮助我们创建目标的概要。在这个阶段找到的信息将帮助我们继续对目标系统或网络进行利用。
获得访问
这个阶段有时可能是最具挑战性的阶段。在这个阶段,攻击者利用从前几个阶段获得的信息来利用目标。成功利用漏洞后,攻击者可以远程执行恶意代码并远程访问受损系统。
一旦获得访问权限,以下情况可能发生:
-
密码破解
-
利用漏洞
-
提升权限
-
隐藏文件
-
横向移动
获得访问(利用)阶段有时可能很困难,因为漏洞可能在一个系统上起作用,而在另一个系统上则不起作用。一旦利用成功并获得系统访问权限,下一个阶段就是确保你能够与目标保持持久连接。
维持访问
在利用系统后,攻击者通常应确保只要系统在线,他们就能随时访问受害者的系统。这是通过在目标上创建后门访问并在攻击者的机器和受害者的系统之间建立持久的反向或绑定连接来实现的。
维持访问的目标如下:
-
横向移动
-
数据外泄
-
创建后门和持久连接
维持访问对于确保你,渗透测试人员,始终能够访问目标系统或网络非常重要。一旦渗透测试的技术方面完成,就该是清理网络的时候了。
覆盖踪迹
最后一个阶段是覆盖痕迹。这确保您在被攻击的系统上不留下任何痕迹。作为渗透测试人员,我们希望在目标网络上尽可能不被发现,不触发任何警报,同时清除在渗透测试期间执行的任何残留痕迹。
覆盖痕迹确保您在网络上不留下任何存在的痕迹,因为渗透测试旨在隐秘进行,并模拟对组织的真实世界攻击。
总结
在本章中,我们讨论了不同类型的黑客,概述了它们的主要特征。我们涵盖了各种类型的渗透测试和阶段,包括探讨了在网络安全行业中使用的流行测试方法和方法。
您现在能够比较和对比不同类型的黑客。您已经获得了网络安全行业中使用的各种术语的知识和理解,并且已经掌握了渗透测试的重要性和不同阶段。您能够区分各种类型的渗透测试,例如网络、Web 甚至云渗透测试。
在第二章,“设置 Kali-第 1 部分”,和第三章,“设置 Kali-第 2 部分”,我们将介绍设置自己的虚拟渗透测试实验室的步骤,以便练习和建立技能。我希望本章对您的学习和职业有所帮助和信息。
问题
-
什么类型的黑客依赖于他人创建的指令和工具,但不了解黑客的技术方面?
-
黑客的最后阶段是什么?
-
哪种渗透测试方法用于 Web 应用程序?
-
在哪种方法中,渗透测试人员对目标了解最少?
-
一个国家政府雇佣了什么类型的黑客?
进一步阅读
-
渗透测试方法学:
www.owasp.org/index.php/Penetration_testing_methodologies -
渗透测试阶段:
www.imperva.com/learn/application-security/penetration-testing/
第二章:设置 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)分配,而其他一些则没有。由于我们将继续构建一个隔离的虚拟实验室,我们将需要一个单独的虚拟交换机来将我们的攻击者机器与其他易受攻击的机器连接起来。
操作系统
作为未来的道德黑客、渗透测试员或网络安全专业人员,建议您测试各种技术,模拟对不同类型操作系统的真实攻击。有时,在对组织的网络和服务器进行渗透测试或进行漏洞评估时,您会遇到许多不同的操作系统。我们将在实验室环境中使用以下操作系统,并为每个操作系统提供下载链接:
-
Windows 10:
www.microsoft.com/en-us/evalcenter/evaluate-windows-10-enterprise -
Windows Server 2016:
www.microsoft.com/en-us/evalcenter/evaluate-windows-server-2016 -
Ubuntu Server:
www.ubuntu.com/download/server -
Kali Linux:
www.kali.org/downloads/ -
Metasploitable:
sourceforge.net/projects/metasploitable/files/Metasploitable2/ -
OWASPBWA:
sourceforge.net/projects/owaspbwa/
此处列出的每个操作系统在我们的实验室中都有独特的用途。在本章的其余部分,我们将对每个操作系统执行各种类型的攻击。
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:
- 转到www.virtualbox.org,然后转到网站的下载部分,并根据当前操作系统选择您的平台类型:
- 应用程序下载完成后,是时候安装它了。确保在安装向导期间使用默认配置。安装完成后,打开 VirtualBox 以确保安装成功。您应该看到类似以下截图的内容:
- 如果您更喜欢使用 VMware Workstation 进行实验,您可以在
www.vmware.com/products/workstation-pro.html上找到它。下载后,按照安装过程中的默认配置安装应用程序。完成后,您将看到用户界面,如下截图所示:
如果您使用的是较旧版本的 Oracle VM VirtualBox 或 VMware Workstation,则无需升级,因为先前的版本已经包含了继续配置我们实验室所需的功能。
设计适当的渗透测试实验室最重要的一点是确保我们有最佳的网络设计来互连我们的虚拟机。在接下来的部分中,我们将详细介绍如何使用 Oracle VM VirtualBox 和 VMware Workstation Pro 创建虚拟网络。
创建虚拟网络
以下图表显示了我们将在虚拟实验室环境中使用的一般网络拓扑结构:
在接下来的部分中,我们将为实验室中的每台虚拟机分配适当的 IP 地址。每台虚拟机使用虚拟机监控程序内的虚拟交换机进行互连。路由器不是必需的,因为这只是一个简单的实验室设计。
Windows Server 2008 机器是可选的,不是必需的。
让我们看看如何构建虚拟网络:
- 如果您使用的是 VirtualBox,请单击右侧的菜单图标,然后单击“工具”|“网络”:
将打开一个新窗口,让您选择创建、删除或修改虚拟网络适配器的属性。在本练习中,我们将创建一个新的虚拟适配器,用于连接我们的每台虚拟机在虚拟机监控程序中。这实现了虚拟交换机的效果。
- 单击“创建”以添加新的虚拟适配器:
您的主机操作系统将花费几分钟的时间在计算机上创建新的虚拟网络适配器。
-
创建虚拟网络适配器后,VirtualBox 中的网络管理器组件将自动为接口分配 IP 地址。但是,我们将根据自己的偏好配置 IP 地址方案。首先,只需选择虚拟网络适配器,然后单击“属性”以修改配置。
-
确保选择手动配置适配器的选项,使用以下截图中显示的 IP 地址和子网掩码。单击“应用”以在网络适配器上注册配置:
- 可选地,我们可以在虚拟网络适配器上配置动态主机配置协议(DHCP)服务器,以为连接到此虚拟网络的每台虚拟机提供一系列 IP 地址。如果您想启用 DHCP 服务,请使用以下配置:
- 对于那些更喜欢 VMware Workstation 的人,我们也为您提供了支持。在 VMware Workstation 中配置虚拟网络非常简单。打开 VMware Workstation 应用程序,然后选择“编辑”|“虚拟网络编辑器...”,如下截图所示:
- Windows 上的用户访问控制(UAC)将提示您获取管理员权限。在提供授权后,虚拟网络编辑器窗口将打开。如您所见,有三个虚拟网络适配器:
我们将修改 VMnet1 虚拟适配器。主机专用适配器为所有连接的虚拟机和主机计算机创建了一个虚拟网络。这种类型的配置允许所有虚拟机在没有互联网连接的情况下无缝通信。
- 要修改 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 在大多数情况下也更有效。要开始,我们可以采取以下步骤:
- 转到
www.offensive-security.com/kali-linux-vm-vmware-virtualbox-image-download/,根据您的操作系统架构下载 32 位或 64 位的 Kali Linux VMware 映像。根据您的虚拟化程序软件的供应商选择 VMware 或 VirtualBox 映像:
- 无论您下载了 VirtualBox 还是 VMware 映像,请确保解压内容。如果您下载了 VirtualBox 映像,在文件夹中将会有一个类似命名约定的文件,如下面的屏幕截图所示:
- 您可以右键单击文件,然后选择“打开方式”| VirtualBox Manager:
- 接下来,导入虚拟设备向导将出现。只需单击导入。导入过程将需要几分钟才能完成:
导入过程完成后,您将在 VirtualBox 仪表板上看到新的虚拟机可用:
- 将 Kali Linux 导入 VMware Workstation。确保您已经下载并解压了虚拟映像文件夹。以下是提取文件夹的内容。右键单击下面屏幕截图中显示的突出显示的文件,然后选择“打开方式”| VMware Workstation:
- VMware Workstation 将打开,提供导入虚拟机窗口。单击导入:
这个过程应该需要几分钟的时间来完成。完成后,新的虚拟机将在 VMware Workstation 的库中可用:
导入虚拟镜像的好处是自动完成所有配置,而不是手动使用 ISO 镜像安装操作系统。配置将包括为存储创建虚拟硬盘以及分配资源,如处理器、RAM 和 NIC。导入虚拟镜像消除了在安装阶段发生任何错误配置的可能性。导入阶段完成后,用户随后可以对各个虚拟机进行调整,例如增加或减少每个虚拟机的资源。
将虚拟网络连接到虚拟机
此时,我们已经创建了我们的虚拟网络适配器,并将 Kali Linux 导入到我们的 hypervisor 中。现在是时候将我们的攻击者机器 Kali Linux 连接到我们的虚拟网络(虚拟交换机)。
首先,我将指导您通过 Oracle VM VirtualBox 配置硬件资源的步骤:
- 选择 Kali Linux 虚拟机,然后点击设置:
- 一旦设置窗口打开,选择网络选项。在这里,您可以启用/禁用当前虚拟机上的网络适配器。选择仅主机适配器选项,虚拟网络适配器将自动选择在下面:
- 接下来,我们将在 VMware Workstation 上进行相同的调整。首先,在 Kali Linux 虚拟机上点击编辑虚拟机设置:
虚拟机设置窗口将打开。在这里,您可以自定义 hypervisor 菜单中的任何硬件组件的设置。
- 选择网络适配器,然后选择自定义:特定虚拟网络| VMnet1(仅主机):
请记住,VMnet1 适配器具有我们的自定义 IP 方案。
-
我们可以启动 Kali Linux 虚拟机,以确保它正常工作。Kali Linux 的默认用户名/密码是
root/toor。 -
一旦您成功登录,您将可以访问桌面:
现在我们清楚地了解了如何在 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,请按照以下步骤进行:
- 打开终端并运行以下命令,以升级平台上当前安装的所有应用程序:
apt-get update && apt-get upgrade
-
通过在
www.tenable.com/products/nessus/nessus-essentials完成注册表格,从 Tenable 获取激活代码。 -
转到
www.tenable.com/downloads/nessus的 Nessus 下载页面,并根据您的操作系统架构下载 32 位或 64 位版本:
- 一旦 Nessus 在 Kali Linux 上被下载,打开终端,将目录更改为
Downloads文件夹,并使用以下命令开始安装:
dpkg -i Nessus-8.3.1-debian6_amd64.deb
运行上述命令的输出如下:
- 安装完成后,使用以下命令在 Kali Linux 上启动 Nessus 服务:
/etc/init.d/nessusd start
如果您希望 Nessus 服务在 Kali Linux 启动过程中自动启动,可以使用以下命令启用此功能:
update-rc.d nessusd enable
- 一旦在 Kali Linux 上完成安装,输入
https://localhost:8834/到您的网络浏览器。此时,您将被提示创建用户帐户:
- 接下来,您将被提示输入您的 Nessus 许可证以激活产品。您需要来自 步骤 2 的激活代码来完成此阶段:
- 完成激活阶段后,Nessus 将尝试连接到互联网以下载其他资源。此过程应该需要几分钟来完成:
- 一旦您登录,您的用户仪表板将可用。在这里,您可以根据自己的喜好创建新的扫描和模板,并修改现有资源:
在本书的过程中,我们将在渗透测试阶段探索 Nessus 的功能。
完成本节后,您现在可以在 Kali Linux 上安装和设置 Nessus 漏洞扫描器。在下一节中,您将学习如何在实验室环境中安装 Android 作为虚拟机。
设置 Android 模拟器
作为渗透测试人员和/或道德黑客,您将在现场遇到许多不同类型的目标和操作系统。已经进入网络安全领域的一种操作系统是移动平台 Android。在本节中,我们将发现如何将 Android 操作系统版本 4.4 设置为虚拟机,以成为您渗透测试实验室环境的一部分。
请注意,www.osboxes.org 拥有几乎每种类型操作系统的虚拟镜像仓库,包括桌面、服务器甚至移动操作系统。该网站允许您下载您选择的虚拟镜像,并将其无缝加载到诸如 Oracle VM VirtualBox 或 VMware Workstation 等虚拟化软件中。
让我们学习如何在您的渗透测试实验室中创建一个虚拟的 Android 机器:
-
首先,转到
www.osboxes.org/android-x86/下载实验室的 Android 移动操作系统。 -
搜索 Android-x86 4.4-r4 版本,并下载适用于您的虚拟机管理程序的 VirtualBox 或 VMware 虚拟镜像:
-
文件下载到您的台式电脑后,解压缩文件夹以查看内容。
-
接下来,右键单击
.ovf文件,选择打开方式,然后选择 VMware 或 VirtualBox 选项,如下截图所示:
- 导入向导将出现。选择导入开始过程:
导入过程需要几分钟时间完成,新的 Android 虚拟机将出现在您的虚拟机库中。
- 我选择在我的 Android 虚拟机上使用以下配置。但是,您可以根据需要增加或减少虚拟机上的资源。确保虚拟网络适配器分配给 Custom(VMnet1),如下截图所示:
- 启动您的 Android 虚拟机后,一旦完全加载完成,您将看到一个界面。 Android 4.4 的全部功能在您的虚拟机中都可以使用。
一旦 Android 虚拟机启动,它将在您的实验室网络中充当真实的物理 Android 设备。这模拟了一个环境,不仅具有典型的操作系统,如 Windows 和 Linux,还有移动平台,如 Android。现在您在实验室中有了一个虚拟的 Android 机器,让我们在下一节中看看如何设置一个易受攻击的基于 Linux 的虚拟机。
安装 Metasploitable 2
如前所述,Metasploitable 虚拟机是由 Rapid7 团队(www.rapid7.com)创建的,目的是进行网络安全意识和培训。在本节中,我将带您了解在实验室中设置 Metasploitable 虚拟机所涉及的步骤:
-
首先,您需要从
sourceforge.net/projects/metasploitable/files/Metasploitable2/下载虚拟镜像文件。下载到计算机后,解压缩 ZIP 文件以查看内容。 -
接下来,右键单击以下突出显示的文件,然后选择导入或使用您选择的虚拟机管理程序打开:
- 导入过程完成后,新的虚拟机将出现在您的虚拟机库中(VirtualBox 或 VMware)。确保网络适配器设置为 Custom(VMnet1),就像我们实验室的虚拟网络一样:
- 要测试虚拟机,将其启动并让其引导。引导过程完成后,您将看到登录凭据(用户名/密码)是系统横幅的一部分,
msfadmin/msfadmin:
- 使用凭据登录虚拟机,并使用
ifconfig命令验证其是否具有有效的 IP 地址:
对于每台虚拟机,请确保您已记录下 IP 地址。我在本书的剩余章节中将使用的 IP 地址可能与您的有些不同,但操作系统和虚拟机配置将是相同的。
您现在在实验室中有一个易受攻击的基于 Linux 的操作系统。在练习渗透测试技术和磨练技能时,建议在实验室中拥有各种不同目标操作系统的混合。这种方法可以让您学习如何对各种不同的目标进行攻击,这很重要,因为企业网络通常有许多不同的设备和操作系统。您不希望参与的渗透测试中,目标组织主要使用 Linux 设备,而您的技能只针对基于 Windows 的系统;这对您作为渗透测试人员来说是一个不好的迹象!因此,在实验室尽可能地模拟企业网络将有助于您提高技能。
总结
在本章中,我们首先讨论了拥有自己隔离的实验室环境进行攻击性安全培训的重要性。我们深入探讨了虚拟化的概念,以及它如何在现在和将来帮助我们。在本章后期,我们介绍了如何在 Oracle VM VirtualBox 和 VMware Workstation 上配置虚拟网络,因为这些网络将用于连接所有虚拟机(攻击者和受害者机器)。然后,我们演示了如何将 Kali Linux 和 Android 部署到我们的渗透测试实验室中。
现在我们对设计和构建实验室环境有了基本的了解,让我们在下一章继续部署基于 Windows 和 Linux 的操作系统。
问题
-
哪种类型的 hypervisor 安装在主机操作系统之上?
-
虚拟化有哪些好处?
-
一些免费的 hypervisor 的例子是什么?
-
如何在 Kali Linux 中安装离线软件/应用程序?
-
在 hypervisor 中的操作系统通常被称为什么?
进一步阅读
以下链接建议进行额外阅读:
-
Kali Linux 文档:
docs.kali.org/ -
Nessus 用户指南:
docs.tenable.com/Nessus.htm
第三章:设置 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 虚拟机:
- 首先,您需要使用以下 URL 下载 Windows 10 和 Windows Server 2016 的 ISO 映像:
-
Windows 10:
www.microsoft.com/en-us/evalcenter/evaluate-windows-10-enterprise -
Windows Server 2016:
www.microsoft.com/en-us/evalcenter/evaluate-windows-server-2016
Windows 桌面和 Windows 服务器的安装程序是相同的。
- 一旦 ISO 文件成功下载,打开您的虚拟机监控程序并选择新的虚拟机:
- 如果您使用 VMware,新虚拟机向导将提示您在“典型(推荐)”或“自定义(高级)”模式下继续设置。在本练习中,我选择了典型选项,因为它包括一些简单的步骤:
- 接下来,选择“安装程序光盘映像文件(iso)”选项,通过单击“浏览”添加 ISO 文件。一旦文件成功添加,单击“下一步”继续:
- VMware 将呈现一个自定义窗口,允许您在安装阶段插入产品密钥(在注册阶段从 Microsoft 评估中心获取)并创建管理员帐户。只需填写详细信息,使用下拉框选择要安装的操作系统版本,然后单击“下一步”:
- 接下来,您可以选择为 Windows 虚拟机命名并选择存储其配置的位置。此步骤可以保持默认设置:
- 接下来,您可以选择为 Windows 虚拟机创建新的虚拟硬盘。我选择了其大小为 100 GB,并将其文件分割成多个部分以便更容易地移植:
您可以选择任何硬盘大小,只要它是建议的大小或以上。系统要求可以在docs.microsoft.com/en-us/windows-server/get-started/system-requirements找到。
- 最终窗口将显示配置的摘要。您可以通过单击“自定义硬件...”选项来自定义硬件资源:
-
单击“完成”后,Windows 10/Server 2016 虚拟机将出现在您的库中。您还可以在虚拟机关闭时修改硬件配置。
-
现在,是时候启动 Windows 虚拟机了。确保选择相应的语言、时间和键盘格式。
-
选择“立即安装”选项开始安装阶段。
-
选择要安装的 Windows 版本。如果您使用的是 Windows Server 2016,请使用数据中心版。如果您使用的是 Windows 10,请选择企业版:
- 接下来,您需要阅读并接受最终用户许可协议(EULA),然后选择虚拟硬盘驱动器(HDD)上的安装类型。由于这是一个新安装,选择“自定义:仅安装 Windows(高级)”选项,如下截图所示:
- 选择虚拟硬盘作为安装目标,如下截图所示,并单击“下一步”继续:
- 安装过程可能需要一段时间,这取决于为虚拟机分配的 CPU 和 RAM 资源的数量。
完成此过程后,Windows 将向您呈现登录窗口。
现在我们已经安装了 Windows 虚拟机,我们将看看如何在 Microsoft Windows 上创建其他用户帐户。
创建用户帐户
在本节中,我将指导您如何在 Windows 上创建用户帐户:
-
首先,您需要访问“控制面板”,然后单击“用户帐户”选项。
-
您将看到系统中的所有本地用户帐户。选择“管理其他帐户”。
-
接下来,单击“添加用户帐户”。
-
Windows 10/Server 2016 将向您提供一个窗口,询问用户名、密码和提示(以帮助您记住密码)等各种详细信息,以便您在本地系统上创建新用户帐户。
现在您已经掌握了创建新用户帐户的知识,我们将看看如何在 Microsoft Windows Server 上禁用自动更新。
选择退出自动更新
供应商为其软件产品和操作系统提供更新,原因有很多,例如添加新功能、提高性能以及修复安全漏洞和崩溃等问题。在 Windows 上禁用自动更新将确保您的操作系统在实验中保持安装时建立的相同安全级别。
使用 Windows 10 和 Windows Server 2016,Microsoft 已经从控制面板中删除了禁用 Windows 更新的功能。在本节中,我将演示如何在 Windows Server 2016 中禁用 Windows 更新功能:
- 首先,打开“命令提示符”并输入
sconfig,如下截图所示:
- 将出现以下屏幕。使用选项
5访问“Windows 更新设置”:
- 交互式菜单将询问您希望 Windows 如何处理更新的检查和安装—
(A)utomatic、(D)ownloadOnly或(M)anual。我们将选择“手动”选项:
然后 Windows 将确认我们的选择。“手动”确保 Windows 不会在没有我们的许可下检查任何更新。
现在您可以禁用自动更新,让我们看看如何在 Windows 虚拟机上设置静态 IP 地址。
设置静态 IP 地址
在网络资源和设备上设置静态 IP 地址非常重要。静态 IP 地址将确保 IP 地址不会更改,因此一旦建立了网络连接,网络上的用户将始终能够访问资源/服务器。
在组织或实验室中拥有服务器肯定需要一个不会更改的地址。要做到这一点,请按照以下步骤进行:
- 首先,登录到您的 Windows Server 2016,然后单击左下角的 Windows 图标以查看开始菜单。单击 Server Manager,如下截图所示:
- Server Manager 是一个单一的仪表板,允许服务器管理员使用图形用户界面(GUI)控制、管理和监视 Windows Server。在窗口的左侧,选择本地服务器,然后单击 Ethernet0 部分,如下截图所示:
- 网络连接窗口将打开,显示在您的虚拟 Windows Server 2016 机器上可用的所有网络适配器。要为网络适配器添加静态 IP 地址,只需右键单击适配器,然后选择属性,如下截图所示:
- 选择 Internet Protocol Version 4(TCP/IPv4)|属性,如下截图所示:
- 现在,您将有选择为其分配静态 IP 地址、子网掩码和默认网关,以及 DNS 配置的选项:
请确保您的 IP 地址配置与 DHCP 服务器(您的 hypervisor)和其他 VM 在同一子网内。您的 IP 地址应该在10.10.10.2和10.10.10.254之间,子网掩码应该是255.255.255.0,默认网关应该是10.10.10.1,对于您实验室中的每个 VM。
现在您可以为 Windows 配置静态 IP 地址,让我们看看如何添加额外的网络接口。
添加额外的接口
有时,拥有额外的网络接口卡(NIC)可以在许多方面非常有用,比如确保网络冗余,甚至可以启用 NIC Teaming,将多个 NIC 组合成一个逻辑接口以实现组合吞吐量。
让我们向 VM 添加额外的 NIC:
- 要向 VM 添加额外的 NIC,只需访问 VM 的设置:
- 单击添加... 这将允许您从各种虚拟硬件组件中进行选择:
- 选择网络适配器,然后单击完成,如下截图所示:
- 新的 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,以快速找到官方相关存储库:
- 您还可以使用
old-releases.ubuntu.com/releases/8.10/下载 Ubuntu 服务器和桌面 ISO 映像。
一旦 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 服务器的说明:
- 启动 VM 后,将显示以下屏幕。选择安装 Ubuntu 服务器并按Enter:
-
设置向导将要求指定您的语言。
-
然后,您将被要求选择您的国家或地区。
-
安装向导将询问您是否要检测键盘布局。选择“否”并继续:
- 在设置过程中,您将被要求为 Ubuntu 服务器分配主机名,您可以将其保留为默认值,如下图所示:
-
在此阶段,您还将被要求指定您的时区。选择一个合适的时区。
-
选择引导-使用整个磁盘选项,然后按Enter继续。这将允许 Ubuntu 操作系统擦除整个磁盘驱动器并安装自身,从而占用整个磁盘:
- 您将被要求选择您希望安装 Ubuntu 服务器的目的地;选择具有sda(*主磁盘分区)的磁盘:
sda用于表示 Linux 操作系统上主要磁盘驱动器的主分区。这通常是您在磁盘驱动器上安装任何操作系统的位置。
- 在执行安装之前,选择“是”以确认配置:
-
然后,您将被要求提供您的全名,并且还需要创建一个用户帐户。接下来,为用户帐户分配一个密码。
-
完成用户帐户创建过程后,您将被询问是否要设置加密私人目录。我使用了默认值(否),如下图所示:
- 此时,安装过程将需要几分钟才能完成。之后,您将需要设置系统时钟:
- 接下来,指定操作系统应如何检查更新。我选择了不自动更新选项,如下截图所示:
- 在接下来的屏幕上,您仍然可以选择安装各种服务。我再次使用了默认设置(未选择任何软件/服务),然后选择了继续:
- 安装完成后,Ubuntu 服务器将启动到登录窗口,如下截图所示:
您的 Ubuntu 虚拟机现在已经设置好,准备进行未来的练习。
现在您已经在虚拟实验室环境中安装了一些虚拟机,让我们花几分钟时间来讨论在虚拟化工作中定期创建快照的重要性。
创建和使用快照
创建快照可以节省大量时间,以恢复虚拟机的先前状态。快照就像一个即时系统还原点。在对虚拟机进行重大更改之前和之后拍摄快照将帮助您从虚拟机中遇到的任何关键问题中恢复过来。
要在 VirtualBox 和 VMware Workstation 上创建快照,请执行以下步骤:
-
在 VirtualBox 中,选择您选择的虚拟机。
-
单击菜单图标,如下截图所示,并选择快照。
-
使用 VMware Workstation,选择您选择的虚拟机。在 VMware Workstation Pro 上,快照菜单位于工具栏上,如下截图所示,位于右侧:
我建议在成功安装虚拟机之后,以及在对虚拟机进行任何重大更改或配置之前和之后,创建一个快照。创建快照会占用本地存储驱动器上的磁盘空间。但是,可以随时删除快照。
完成了这一部分,您现在可以在虚拟化环境中高效地安装 Linux,并了解使用快照的好处。
Kali Linux 故障排除
现在您已经可以访问 Kali Linux,您可能会遇到一些问题。这些问题可能包括以下内容:
-
网络适配器和 USB 不兼容
-
虚拟机内存问题
让我们看看如何解决这些问题。
网络适配器和 USB 不兼容
学生在导入 Kali Linux 虚拟机到 VirtualBox 后经常遇到的问题之一是不兼容。这种不兼容通常与 VirtualBox 上的网络适配器或 USB 设置有关。如果这些问题没有解决,虚拟机将无法启动。
要确定是否存在问题,我们可以执行以下操作:
-
在 Oracle VM VirtualBox 上打开虚拟机设置。
-
如果看到检测到无效设置,则无法启动虚拟机。单击其中一个图标(例如网络图标或 USB 图标),将显示相关的错误消息。
下面的截图表明虚拟机上的虚拟网络适配器存在问题。正如我们所看到的,实际上没有适配器连接。执行以下操作:
-
只需单击下拉菜单中的名称,如下截图所示。
-
选择适当的网络适配器,例如适配器 1,以解决问题:
现在我们已经解决了网络适配器的潜在问题,让我们看看如果 USB 软件总线不兼容会发生什么。通常您会在设置窗口底部看到一个 USB 图标。单击它将显示以下消息:
使用 VirtualBox 扩展包将解决此问题,通过启用 USB 2.0 或 3.0。这将确保虚拟机兼容,并能够发送和接收数据到主机的 USB 端口。
要解决这个问题,只需访问 USB 设置,并选择适当的 USB 控制器(最好是 USB 1.1 或 2.0),如下面的屏幕截图所示:
在 Oracle VM VirtualBox 设置界面中,如果你仔细观察,窗口底部包括每个警告标志的图标。将鼠标悬停在底部的每个图标上,将为您提供阻止虚拟机启动的问题描述。
虚拟机内存问题
很多学生有时会创建一个虚拟机,并分配比可用的内存更多的内存给 hypervisor。这可能导致虚拟机无法启动或主机操作系统不稳定。要解决这个问题,请执行以下操作:
-
打开虚拟机设置。
-
打开“系统”选项卡。
-
接下来,调整基本内存,使其位于绿色区域内(这里我们谈论的是随机存取内存):
hypervisor 将始终通知您任何问题。但是,请确保您在处理器中启用了虚拟化功能。要做到这一点,您需要访问计算机的 BIOS/UEFI 设置以打开虚拟化。
如果你遇到这些问题,现在你已经有了解决方法。
总结
在本章的过程中,我们延续了上一章的内容,并通过部署和设置 Windows 和 Ubuntu 虚拟机来扩展我们的实验环境。此外,我们还研究了在虚拟环境中部署 Kali Linux 时最常见的两个问题。
完成了本章后,您将具备在虚拟实验室环境中安装 Windows 和 Ubuntu 服务器、创建用户帐户并选择不自动更新、向虚拟机添加额外的网络接口以及使用 hypervisor 管理器、VirtualBox 和 VMware Workstation Pro 创建快照的技能。这完成了我们构建虚拟渗透测试实验室环境的目标。
现在我们已经建立并准备好自己的实验室,是时候进入下一章了,这一章是关于熟悉 Kali Linux 2019。
进一步阅读
以下链接建议进行进一步阅读:
-
Kali Linux 文档:
docs.kali.org/ -
Windows 10:
docs.microsoft.com/en-us/windows/windows-10/ -
Windows Server 2016:
docs.microsoft.com/en-us/windows-server/index -
Ubuntu:
tutorials.ubuntu.com/tutorial/tutorial-install-ubuntu-desktop和tutorials.ubuntu.com/tutorial/tutorial-install-ubuntu-server
第四章:熟悉 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 Unhatched和Linux 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 具有任何其他操作系统具有的所有常规功能和功能。这意味着有用户目录,如Home,Desktop,Documents,Downloads,Music和Pictures。要快速访问 Kali 的任何位置,只需单击“位置”下拉菜单:
现在,普通的 Windows 用户在没有类似控制面板的东西之前,他们的体验不会完整。要访问 Kali Linux 中的控制面板等效物,只需单击右上角的电源按钮图标。这将创建一个下拉菜单,在那里您将看到一个扳手和螺丝刀图标,如下面的屏幕截图所示。
单击此图标将打开操作系统的设置菜单:
在左侧列中,您将找到主要类别。右侧显示了每个类别的扩展:
在对 Kali Linux 进行任何配置更改之前,请确保记录您的默认设置。这是为了确保在您进行更改后出现任何问题时,您可以恢复到先前的状态。此外,在进行任何重大更改之前,请创建虚拟机的快照。
现在您对热门目录和设置的位置有了更好的了解,我们可以继续学习在 Kali Linux 上更新和安装程序。
更新源并安装程序
有时,工具可能无法按预期工作,甚至在渗透测试或安全审计期间意外崩溃。开发人员经常发布他们应用程序的更新。这些更新旨在修复错误并为用户体验添加新功能。
要更新我们的 Kali Linux 操作系统上的软件包,我们必须首先将软件包索引文件与它们的源重新同步。让我们开始吧:
- 打开终端,并执行
apt-get update命令:
索引位于/etc/apt/sources.list文件中。
这个过程通常需要一两分钟才能完成,前提是有稳定的互联网连接。
- 如果要将 Kali Linux 机器上的当前软件包(应用程序)升级到其最新版本,请使用
apt-get upgrade命令:
在进行升级时,请确保在进行渗透测试之前,所有工具和脚本都能完美运行。
如果在 Kali Linux 上升级软件包时遇到错误,请使用apt-get update --fix-missing命令解决任何依赖关系,然后再次执行apt-get upgrade命令。
- 在输出的末尾,交互式菜单将要求您选择是(
y)或否(n)以继续升级过程。选择是后,操作系统将下载每个软件包的最新版本并逐个安装它们。这个过程需要一些时间才能完成。
如果您想将 Kali Linux 的当前版本升级到最新的发行版,请使用apt-get dist-upgrade命令。在撰写本文时,我们使用的是 Kali Linux 2019.2。
此外,执行apt autoremove命令将通过删除任何旧的或不再需要的软件包文件来执行 Kali Linux 操作系统的清理操作:
现在我们清楚了如何更新和升级我们的操作系统,让我们看看如何在 Kali Linux 2019 中安装新应用程序(软件包)。一个非常著名的漏洞扫描器是Open Vulnerability Assessment System(OpenVAS)。但是,默认情况下,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 操作系统中,用户可以使用许多方法来定位文件和目录。在本节中,我将向您介绍find、locate和which实用程序。这些实用程序中的每一个都执行类似的任务,但从不同的角度返回所请求的信息。
在使用这些命令之前,我们必须首先执行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实用程序比locate和which更具侵略性。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 操作系统作为首选的渗透测试发行版的好处。我们介绍了在操作系统中操纵和找到我们的方法的基础知识,就像您在任何其他操作系统中一样。然后,我们看了看如何更新我们的源文件和升级我们现有的软件包,并演示了如何安装新应用程序和删除过时的软件包。最后,我们介绍了如何使用find、locate和which实用程序快速找到 Kali Linux 操作系统中的文件和目录。
学习 Kali Linux 的基本知识将对您未来的旅程产生丰硕的成果。本章教授的技能将帮助您了解在使用 Kali Linux 时经常被忽视的简单事物。知道如何在目标上收集信息,但不知道如何在 Kali Linux 操作系统中找到或定位文件和目录将是毫无意义的,因此学习基础知识将使您走得更远。
在下一章中,我们将介绍被动信息收集,这是渗透测试中侦察阶段的开始。
问题
-
Kali Linux 的前身是什么?
-
你如何在 Kali Linux 上更新存储库?
-
你如何在 Linux 上升级当前软件包?
-
哪个命令从官方在线存储库安装新应用程序?
-
你如何快速在文件系统中找到一个文件?
进一步阅读
-
Kali Linux 2019.2 发布信息:
www.kali.org/news/kali-linux-2019-2-release/ -
官方 Kali Linux 文档:
www.kali.org/kali-linux-documentation/
第二部分:侦察
本节教导读者在启动任何攻击或载荷之前对目标进行广泛侦察的重要性。读者将学习各种信息收集技术,以及各种在线和离线工具,以帮助检索与目标相关的信息和具体细节。完成本节后,读者将具备作为网络安全专业人员执行各种信息收集技术的理论和实践经验的基本知识。
本节包括以下章节:
-
第五章,被动信息收集
-
第六章,主动信息收集
第五章:被动信息收集
开始从事道德黑客和/或渗透测试工作可能会非常令人兴奋,大多数情况下,我们的思维会有些不知所措,导致我们只阅读这样一本书中有关利用系统的章节。然而,进行渗透测试就像在家里开始一个新项目。在你的后院建造游泳池之前,有一些事情你必须考虑,比如可用空间、材料成本、承包商费用和其他细节。信息收集是黑客生命周期和渗透测试的非常重要的阶段。
在本章中,我们将专注于被动信息收集技术和方法。我们将学习如何利用互联网通过在线资源和 Kali Linux 上的工具获取有关目标的信息和具体细节。
我们将涵盖以下主题:
-
侦察和足迹
-
了解被动信息收集
-
了解开源情报(OSINT)
-
使用顶级 OSINT 工具
-
识别目标技术和安全控制
-
在云资源中查找数据泄漏
-
了解 whois 和使用 HTTrack 复制网站
-
使用 Sublist3r 查找子域
亲爱的读者!请确保您在没有适当的法律许可的情况下不要对任何目标组织、网络或系统进行扫描。
技术要求
本章的技术要求如下:
-
Kali Linux:
www.kali.org/ -
Maltego: www.paterva.com
-
Recon-ng:
bitbucket.org/LaNMaSteR53/recon-ng -
theHarvester:
github.com/laramies/theHarvester -
OSRFramework:
github.com/i3visio/osrframework -
HTTrack: www.httrack.com
-
Sublist3r:
github.com/aboul3la/Sublist3r -
S3Scanner:
github.com/sa7mon/S3Scanner
侦察和足迹
黑客攻击的各个阶段包括侦察、扫描、获取访问权限、保持访问权限和清除痕迹。侦察阶段是渗透测试中最重要的阶段,因为这是道德黑客或渗透测试人员进行广泛研究,尽可能收集有关目标的信息的阶段。此外,足迹将有助于创建目标的概况,收集诸如运行服务、开放端口和操作系统等概况信息。
现在我们将更详细地了解侦察和足迹。
侦察
从军事角度来看,侦察是对敌方目标的观察和研究。在网络安全领域,作为渗透测试人员,我们使用各种工具和技术来收集有关目标组织及其基础架构的详细信息。
侦察在渗透测试领域至关重要。作为渗透测试人员,我们在尝试通过利用获取访问权限之前,绝对需要了解我们的目标及其漏洞和操作系统。在侦察阶段收集的信息将帮助我们选择正确的工具和技术成功地利用目标。
侦察可以分为两类:
-
被动: 使用间接方法,不与目标进行互动
-
主动: 直接与目标互动以收集具体细节
接下来,我们将深入了解足迹。
足迹
足迹定位是指尽可能收集与目标相关的信息的过程。在足迹定位中,目标是获取有关目标的特定细节,例如其操作系统和正在运行的应用程序的服务版本。收集到的信息可以以各种方式用于获取对目标系统、网络或组织的访问权限。足迹定位允许渗透测试人员了解目标基础设施的安全状况,快速识别目标系统和网络上的安全漏洞,创建组织的网络地图,并将焦点缩小到需要信息的特定 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 的功能和特性:
- 转到www.paterva.com,然后点击社区。将会出现一个下拉菜单。点击**注册(免费)**以创建用户帐户:
- 创建用户帐户后,请确保在登录之前验证您的电子邮件地址。完成此步骤后,返回到您的 Kali Linux 桌面。点击应用程序|收藏夹|maltego 打开Maltego工具,如下面的屏幕截图所示:
- 应用程序打开后,点击 Maltego CE(免费)以配置和运行 Maltego 的社区版:
- 接下来,您将看到 Maltego 配置向导。确保使用您之前在 Paterva 网站上创建的相同用户帐户登录,然后点击下一步。阅读并遵循配置向导的接下来几个步骤中出现的说明。您可以将一切保持默认状态,然后点击下一步直到过程结束:
- 配置窗口关闭后,将显示一般的 Maltego 界面,如下面的屏幕截图所示。在起始页面上,有许多可以添加到 Maltego 的变换集。变换是 Maltego 可以查询信息的开源资源。添加变换是可选的:
-
要开始收集有关目标组织的信息,我们必须首先打开一个新图。要做到这一点,点击左上角的 Maltego 图标,然后点击新建。创建新图后,您将在左侧看到各种类型的信息(实体),而在右侧,您将看到概述、详细视图和属性视图。
-
添加公司的域名,点击并拖动域实体到图的中心。默认情况下,
paterva.com将出现为目标域。让我们将域值更改为其他内容。在界面的左侧,点击属性视图。您将能够编辑域名字段中的值,如下面的屏幕截图所示:
- 域名更改后,我们可以继续并解析域的网站 URL。右键单击域实体,点击所有变换,然后选择到网站[快速查找]。这个变换将简单地发现网站地址(参考左侧的屏幕截图),并显示关系(参考右侧的屏幕截图):
- 接下来,我们可以尝试获取网站地址的 IP 地址。右键单击网站地址(www.google.com)|所有变换|到 IP 地址(DNS)。右侧的屏幕截图显示了为www.google.com解析的 IP 地址。请注意,这是用于www.google.com URL 的众多 IP 地址之一:
- 我们甚至可以进一步进行这个阶段。试试发现作为google.com域的一部分的顶级域(TLDs)。要完成此任务,我们首先右键单击域实体(google.com),然后选择到域[查找其他 TLDs],如左侧的屏幕截图所示。一旦变换完成,Maltego 将在图平面上以树状结构呈现信息,如右侧的屏幕截图所示:
- 现在,让我们来收集注册到域的联系人的电子邮件地址。我们可以右键单击 IP 地址实体 | 所有变换 | 转换为电子邮件地址[来自 whois 信息]。如果有任何电子邮件地址,它们将显示出来,如右侧的屏幕截图所示。
- 此外,我们可以尝试获取该域的名称服务器(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,请使用以下说明:
- 在终端上执行以下配置以下载最新版本的 Recon-ng 并安装它:
git clone https://github.com/lanmaster53/recon-ng.git
cd recon-ng
pip install -r REQUIREMENTS
./recon-ng
完成后,您的屏幕应与以下屏幕截图类似:
- 如果没有安装或启用任何模块,请使用以下命令将所有模块安装到 Recon-ng 上:
marketplace install all
您还可以使用modules reload命令重新加载所有模块。
现在 Recon-ng 框架已经打开,让我们通过以下说明熟悉其界面:
- 要查看Recon-ng v5中的所有模块,我们必须使用
modules search命令查看所有可用模块的列表。所有模块将按其类别(Discovery、Exploitation、Recon、Reporting等)呈现,如下面的屏幕截图所示:
作为渗透测试人员,您可能会在整个职业生涯中为多个组织使用相同的工具。我们可以在 Recon-ng 中创建工作空间,以帮助更有效地隔离我们的项目/数据。如果您仔细观察命令行界面,您会看到方括号之间的单词default。这意味着我们当前在 Recon-ng 的默认工作空间中。
-
要创建一个工作空间,我们可以使用
workspaces create <worksplace-name>命令。我们将创建一个名为pentest的新工作空间。在 Recon-ng 界面中使用workspaces create pentest命令。 -
要查看所有现有工作空间并验证我们新工作空间的创建,我们可以使用
workspaces list命令:
-
要使用
pentest工作空间,请使用workspaces select pentest命令。您的命令行界面上的工作空间应该会改变。 -
现在我们已经将一个公司及其域添加到我们的数据库中,让我们搜索一个执行
whois查找的模块。我们可以使用modules search whois命令,其中whois是关键字或搜索条件:
- 我们将使用point-of-contacts (POCS)模块来获取与该域相关的人员的更多详细信息。要执行此操作,请执行
modules load recon/domains-contacts/whois_pocs命令。使用info命令将为您提供模块的描述以及是否需要额外的参数:
default值是由模块的开发者设置的;为 Recon-ng 中的每个模块设置自己的源。此外,您可以使用info命令查看有关模块的详细信息。input命令将列出模块SOURCE组件的输入值。input命令对于验证特定模块的SOURCE值非常有用。
- 让我们将
SOURCE值设置为microsoft.com;可以通过使用options set SOURCE microsoft.com命令来完成,如下面的屏幕截图所示:
- 一切设置正确后,使用
run命令来执行该模块对该域的分析。模块完成分析后,我们可以使用show contacts命令来查看信息列表,如人的名字、姓氏、电子邮件地址、地区和国家。
正如您所看到的,Recon-ng 是一个非常强大的工具,能够很好地处理数据管理。组织通常为许多目的创建子域;有些可以用作登录门户,或者只是网站上的另一个目录。
要获取目标的子域列表,请遵循以下步骤:
-
让我们通过使用
modules search site命令来搜索合适的模块。Recon-ng 将返回一些包含site作为名称一部分的模块。 -
我们将使用
google_site_web模块。只需执行modules load recon/domains-hosts/google_site_web命令:
- 接下来,让我们通过使用
options set SOURCE microsoft.com命令来更改此模块的SOURCE值,如下面的屏幕截图所示:
-
使用
run命令来执行此模块。 -
一旦模块完成了查询,使用
show hosts命令来查看为microsoft.com域找到的子域的列表:
- 现在,让我们来点更有趣的。如何获取子域的 IP 地址?为此,我们将运行
module load recon/domains-hosts/brute_hosts命令,并将SOURCE值设置为microsoft.com:
- 一旦模块执行完成,再次使用
show host命令。您应该看到与子域对应的 IP 地址:
作为渗透测试人员,编写报告可能会非常压倒,因为报告是对执行的操作和获得的结果的总结,而您在执行各种任务并使用多种工具时获得了这些结果。Recon-ng 有一些报告模块,能够以多种格式生成报告。dashboard命令将提供使用 Recon-ng 执行的任务的摘要,如下所示:
要生成报告,可以使用modules search report命令。这将让您在 Recon-ng 界面中查看报告模块的列表。我们将创建一个 HTML 格式的报告。要创建报告,请执行以下步骤:
-
执行
modules load reporting/html命令。 -
使用
options set CREATOR命令来设置报告的创建者。 -
使用
options set CUSTOMER命令来设置客户。 -
使用
options set FILENAME命令来设置报告的输出位置和文件名。 -
最后,使用
run命令来执行该模块并生成报告。
以下屏幕截图上有标签,对应于使用reporting/html module生成和导出报告文件的上述步骤:
最后,导航到 Kali Linux 机器上的输出位置,并打开 HTML 文件。视图应该类似于以下内容:
现在,信息已经被很好地分类和总结以供查看。
在下一节中,我们将看看如何使用theHarvester来收集与组织相关的人员的电子邮件地址。
theHarvester
theHarvester 旨在收集给定公司的电子邮件地址、域和员工详细信息。theHarvester 使用互联网上的多个开放源,如搜索引擎,以可读的格式拼凑详细信息。
有关 theHarvester 的更多详细信息可以在其 GitHub 页面上找到:
github.com/laramies/theHarvester
要开始使用 theHarvester,执行以下步骤:
- 打开一个终端窗口并执行
theharvester。工具的描述和用法将显示在终端上,如下面的屏幕截图所示:
- 让我们尝试收集公司员工的电子邮件地址,这些电子邮件地址是公开发布的,比如在论坛、网站、博客和社交媒体平台上。我们可以使用
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 是一个物联网设备的搜索引擎,提供了有关连接到互联网的设备的深入信息。
要开始,请遵循以下步骤:
-
使用您的网络浏览器,访问
www.shodan.io. -
您可能需要注册并创建一个 Shodan 帐户以获得更好的结果。
-
在搜索栏中,输入要搜索设备的组织。以下截图显示了 Shodan 上的搜索栏:
-
一旦搜索完成,点击搜索结果中的目标,以访问 Shodan 找到的信息。
-
在目标页面上,您将看到一个打开的网络端口列表,运行的服务及其版本,以及正在使用的任何技术:
- 向下滚动一点,如果在目标上发现了任何已知的漏洞,Shodan 将提供一个带有描述的列表:
在下一节中,我们将介绍如何使用Netcraft来收集有关目标 Web 服务器底层技术的更详细信息。
Netcraft 的强大
Netcraft 使我们能够收集有关目标域的信息,如网络块信息、注册信息、电子邮件联系人、托管服务器的操作系统和 Web 平台。
要开始,请使用以下说明:
-
使用您的网络浏览器,访问
www.netcraft.com/. -
在下面的截图中突出显示的搜索栏中,输入一个域名:
如果搜索没有返回任何结果,请将www包括在网站地址中。
- 结果页面将显示有关目标的与网络相关的信息。向下滚动一点,直到看到Hosting History。该部分提供了托管服务器的操作系统、Web 服务器平台和服务版本,如下所示:
- 再向下滚动一点,直到看到Site Technology。该部分将告诉您 Netcraft 能够在目标 Web 服务器上识别的技术:
正如您所见,Netcraft 能够为我们提供非常有用的信息。我们现在可以利用找到的信息,进一步研究技术,找到已知的漏洞和利用方式来攻击目标。
使用 WhatWeb 识别技术
最后,我们可以看一下在 Kali Linux 中使用WhatWeb工具。WhatWeb 能够识别网站、电子邮件地址、Web 框架和数据库所使用的技术。
要开始使用 WhatWeb,请遵循以下步骤:
-
打开一个新的终端并输入
whatsweb –h命令以获取帮助菜单,显示语法。 -
在我们的实验室中对目标(如 Metasploitable)运行 WhatWeb,使用
whatweb <target>命令如下所示:
WhatWeb 能够为我们提供在我们的 Metasploitable 虚拟机上的 Web 服务器平台上使用的技术。
- 接下来,使用
whatweb –v <target>命令,提供如下所示的详细输出:
在这里显示的详细输出中,WhatWeb 为我们提供了关于所使用的插件描述和它们的结果的更多细节。
在本节中,我们已经完成了各种旨在帮助我们发现目标网络或系统上正在使用的技术的练习。在下一节中,我们将深入学习云资源。
发现云资源中的数据泄漏
在过去的几年里,云计算已成为 IT 行业增长最快的趋势之一。云计算允许公司在云提供商的数据中心迁移和利用计算资源。云计算提供商采用按使用量付费的模式,这意味着您只需为您使用的资源付费。一些云提供商允许按分钟付费,而其他人则采用按小时付费的结构。
有三个大型云提供商:
-
Amazon Web Services(AWS):亚马逊的云服务
-
Microsoft Azure:微软的云服务
-
Google Cloud Platform(GCP):谷歌的云服务
云提供商通常向客户提供存储设施。AWS 存储设施被称为简单存储服务(S3)。每当客户启用 S3 服务时,都会创建一个存储桶。存储桶是 AWS 平台内的存储单元,客户可以在其中添加或删除文件。在 Microsoft Azure 中,文件存储设施被称为Azure Files。此外,在 GCP 上,存储设施被称为Google Cloud Storage。
在信息安全领域,我们必须记住,当公司使用云平台时,云平台上的数据必须像在本地存储时一样受到保护。有时,管理员忘记启用安全配置或缺乏有关云解决方案安全性的知识。这可能导致攻击者发现目标组织的 AWS S3 存储桶。让我们现在看一个简单的例子。
flaws.cloud/是一个网站,你可以用它来了解云安全漏洞。
在我们的练习中,我们将使用 S3Scanner 工具。按照以下步骤开始:
- 这个工具在 Kali Linux 中没有预先安装,所以我们需要使用以下命令创建 GitHub 存储库的克隆:
git clone https://github.com/sa7mon/S3Scanner.git
-
接下来,使用
cd S3Scanner命令切换到S3Scanner文件夹。 -
现在,您需要为此工具安装额外的依赖项。别担心-开发人员为我们简化了这一步。要完成此步骤,请使用
pip install -r requirements.txt命令。 -
完成后,我们现在可以在目标域上使用我们的工具。使用
python ./s3scanner.py domain语法,工具扫描器将为 AWS S3 存储桶创建一个域,并确定其是否可访问。 -
以下截图显示了使用 S3Scanner 来检查
flaws.cloud域上的任何 AWS S3 存储桶:
- 在该域上找到了一个存储桶。此外,您可以创建一个包含多个域的文本文件,并一次查询整个文件。以下是查询存储在
sites.text文件中的多个域的示例:
- 此外,我们可以使用
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 Database(GHD)(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.net,whois.domaintools.com,who.is和www.whois.com。但是,Kali Linux 包含内置的 whois 工具。要在域上执行whois查找,请执行以下步骤:
- 在终端上使用
whois <domain-name>语法,如下图所示:
- 域的信息将显示在终端上。获得的信息可以被渗透测试人员利用,用于对目标组织进行各种类型的攻击。
在下一节中,您将学习如何使用 HTTrack 将网站复制到本地。
HTTrack
HTTrack (www.httrack.com)允许我们离线查看整个网站。它通过在本地创建在线网站的克隆副本并将其存储在计算机上来实现这一点。要使用 HTTrack,只需打开一个新的终端窗口并执行以下步骤:
-
执行
httrack命令以调用交互式向导。 -
为项目命名。
-
设置目标网站的离线副本存储路径。按Enter将使用括号中的默认值。
-
指定 URL。
-
选择适当的操作。
-
确认详细信息并启动 HTTrack 以镜像网站。
以下是一个屏幕截图,显示了我们刚刚概述的步骤:
克隆网站非常有用,因为您将能够发现和访问在线版本无法访问的隐藏资源和文件。作为渗透测试人员,您可以彻底探索每个离线目录;通常,网站管理员不会总是清理旧数据和文件,因此有很多可以探索的内容。
完成了本节,您已经掌握了将目标网站复制到 Kali Linux 机器上所需的知识。在下一节中,我们将尝试检索目标域的子域。
使用 Sublist3r 查找子域
作为互联网用户,您会意识到多个搜索引擎(如 MSN、谷歌、雅虎和必应)经常学习和索引新的和现有的网站,以改善它们的搜索结果。如果您搜索公司的网站,您很可能会发现主域名,如company.com。然而,许多组织出于各种原因创建子域。作为渗透测试人员,我们希望发现目标组织的所有可能子域,因为它们可能导致登录门户和敏感的企业目录,其中可能包含机密文件和资源。
我们可以利用搜索引擎的强大功能来使用Sublist3r工具。Sublist3r 是一个基于 Python 的工具,用于使用 OSINT(如搜索引擎和其他互联网索引平台)枚举(提取/获取)给定网站的子域。
Sublist3r 工具未在 Kali Linux 上原生安装,因此我们需要从其 GitHub 存储库下载它。
要开始,请执行以下步骤:
- 在您的 Kali Linux 机器上打开终端并执行以下命令:
git clone https://github.com/aboul3la/Sublist3r.git
-
克隆过程完成后,使用
cd Sublist3r命令切换到Sublist3r文件夹。 -
在这一点上,我们可以使用 Sublist3r 工具来搜索目标域(公司)的子域,使用
python sublist3r.py –d domain-name命令。左侧的屏幕截图显示了工具的成功调用,而右侧的屏幕截图显示了结果在终端上的显示:
使用这个工具可以节省我们本来要花在手动搜索互联网上的大量时间。
您现在已经学会了如何在 Kali Linux 上使用 Sublist3r 工具高效地发现目标网站的子域。
摘要
在本章中,我们讨论了在攻击目标之前进行侦察的重要性。在这个阶段收集的信息对渗透测试的后续阶段至关重要。信息收集有助于为渗透测试人员研究目标安全漏洞奠定基础,这对系统和网络利用是必需的。
我们概述了侦察和足迹之间的区别,并且我们还看了如何使用各种 OSINT 工具来获取有关各种目标的信息。
在下一章《主动信息收集》中,我们将进一步涵盖信息收集的主题。
问题
-
足迹的目的是什么?
-
可以使用哪些 OSINT 工具来收集信息?
-
使用 Google 搜索,您如何查看特定域的结果?
-
给出一个值得信赖的在线资源,用于研究漏洞利用。
-
您有兴趣收集目标公司的域注册信息。您会使用哪些资源?
-
您如何发现公司网站的子域?