保护网络设施:使用 NMAP 和 Nessus7 探索实用网络安全(一)
原文:
annas-archive.org/md5/7D3761650F2D50B30F8F36CD4CF5CB9C译者:飞龙
前言
数字化统治着技术世界,因此对于组织来说,为其网络基础架构设计安全机制至关重要。分析漏洞是保护网络基础设施的最佳方式之一。本学习路径首先介绍了网络安全评估、工作流程和架构的各种概念。您将使用开源工具执行主动和被动网络扫描,并利用这些结果来分析和设计网络安全的威胁模型。在对基础知识有了牢固的理解之后,您将学习如何扫描网络漏洞和开放端口,并使用它们作为进入网络的后门,使用网络扫描的顶级工具:Nessus 和 Nmap。随着章节的进展,您将学习执行各种关键扫描任务,如防火墙检测、操作系统检测和访问管理,以检测网络中的漏洞。通过本学习路径的结束,您将熟悉网络扫描工具和漏洞扫描以及网络保护的技术。
本学习路径包括以下 Packt 产品的内容:
-
Sairam Jetty 的《网络扫描食谱》
-
Sagar Rahalkar 的《网络漏洞评估》
本书适合对象
如果您是具有基本计算机视觉和图像处理理解并希望使用 OpenCV 开发有趣的计算机视觉应用程序的软件开发人员,那么本课程适合您。了解 C++的先验知识将有助于您理解本学习路径中涵盖的概念。
本书涵盖内容
第一章,网络漏洞扫描简介,介绍了基本的网络组件及其架构。它还解释了网络漏洞扫描的方法和方法以及其中涉及的复杂性,并探讨了已识别漏洞的缓解计划。
第二章,理解网络扫描工具,包括让您基本了解 Nessus 和 Nmap 工具的配方,包括安装这些工具的技术要求和其工作细节。然后,该章节深入介绍了 Nessus 和 Nmap 的安装和卸载说明。
第三章,端口扫描,包括执行端口扫描技术的配方。它从主机发现的指导和细节开始,然后转向开放端口、脚本和版本扫描。它还提供了关于在执行端口扫描时规避网络保护系统的见解。
第四章,漏洞扫描,包括管理 Nessus 功能的配方,如策略、设置和用户帐户。您还将掌握使用 Nessus 执行网络漏洞扫描的步骤,然后管理扫描结果。
第五章,配置审计,包括使用 Nessus 在多个平台上执行配置审计和差距分析的配方。它将带您逐步创建、选择和配置策略,以执行操作系统、数据库和 Web 应用程序的配置审计。
第六章,报告分析和确认,将教您如何通过分析 Nmap 和 Nessus 扫描的结果来创建有效的报告。本章的配方将详细介绍支持的报告类型以及这些工具允许的定制级别。它还提供了一些确认 Nessus 和 Nmap 报告的漏洞的技术细节,使用各种工具。
第七章,理解 Nessus 和 Nmap 的定制和优化,教你如何为 Nmap 和 Nessus 创建自定义脚本和审计文件。这些配方提供了逐步的程序,用于复制定制审计文件的方法。
第八章,物联网、SCADA/ICS 的网络扫描,包括了理解 SCADA 和 ICS 系统的网络扫描程序的配方。这些配方概述了使用 Nmap 和 Nessus 执行端口扫描和网络漏洞扫描的方法,以确保这些关键系统的高可用性。
第九章,漏洞管理治理,是关于从治理角度理解漏洞管理计划的基本要点,并向读者介绍一些绝对基本的安全术语和启动安全评估的基本先决条件。
第十章,设置评估环境,将介绍建立全面漏洞评估和渗透测试环境的各种方法和技术。
第十一章,安全评估先决条件,是关于了解安全评估的先决条件。我们将学习进行成功安全评估所需的所有规划和范围确定以及文档编制。
第十二章,信息收集,是关于学习有关目标系统的各种工具和技术。我们将学习应用各种技术并使用多种工具有效地收集有关范围内目标的尽可能多的信息。从这个阶段收集的信息将用作输入到
下一阶段。
第十三章,枚举和漏洞评估,是关于探索范围内目标的各种工具和技术,并对其进行漏洞评估。
第十四章,获取网络访问权限,是关于如何利用各种技术和隐蔽通道获取对受损系统的访问权限的见解。
第十五章,评估 Web 应用程序安全性,是关于学习 Web 应用程序安全的各个方面。
第十六章,特权提升,是关于了解与特权提升相关的各种概念。读者将熟悉各种特权提升概念,以及在受损的 Windows 和 Linux 系统上提升特权的实际技术。
第十七章,维持访问和清除痕迹,是关于在受损系统上维持访问并使用反取证技术清除痕迹。我们将学习在受损系统上创建持久后门,并使用 Metasploit 的反取证能力清除渗透痕迹。
第十八章,漏洞评分,是关于理解正确漏洞评分的重要性。我们将了解标准漏洞评分的必要性,并获得使用 CVSS 评分漏洞的实际知识。
第十九章,威胁建模,是关于理解和准备威胁模型。我们将了解威胁建模的基本概念,并获得使用各种工具进行威胁建模的实际知识。
第二十章,修补和安全加固,是关于理解修补和安全加固的各个方面。我们将了解修补的重要性,以及在目标系统上列举修补级别和制定安全配置指南的实际技术,以加固基础设施的安全性。
第二十一章,漏洞报告和指标,是关于探索围绕漏洞管理计划可以建立的各种指标。读者将能够理解组织漏洞管理计划的成功度量的重要性、设计和实施指标。
为了充分利用这门课程
建议使用配有 8GB RAM 的 PC,并在其中安装了 Kali Linux 的虚拟系统设置。可以从www.offensive-security.com/kali-linux-vm-vmware-virtualbox-image-download/下载 VMware/VirtualBox/Hyper-V 的 Kali Linux 镜像文件。
为了遵循食谱,您需要运行 Windows 或 Kali Linux,并需要 Rapid7 的 Metasploitable 2 以及 Nmap 和 Nessus 的最新版本。对于一些食谱,比如与配置审计有关的食谱,您需要拥有 Nessus 专业许可证。
下载彩色图像
我们还提供了一个 PDF 文件,其中包含了本学习路径中使用的屏幕截图/图表的彩色图像。您可以在这里下载:www.packtpub.com/sites/default/ files/downloads/NetworkVulnerabilityAssessment_ColorImages.pdf。
www.packtpub.com/sites/default/files/downloads/ 9781789346480_ColorImages.pdf。
使用的约定
本课程中使用了许多文本约定。
CodeInText:表示文本中的代码词、数据库表名、文件夹名、文件名、文件扩展名、路径名、虚拟 URL、用户输入和 Twitter 句柄。例如:“input()方法用于从用户那里获取输入。”
任何命令行输入或输出都是按照以下格式编写的:
root@kali:~# theharvester -d demo.testfire.net -l 20 -b google -h
output.html
粗体:表示新术语、重要单词或屏幕上看到的单词。例如,菜单或对话框中的单词会以这种方式出现在文本中。例如:“如果您需要其他内容,请点击页眉中的下载链接以获取所有可能的下载内容:”
警告或重要说明会以这种方式出现。
技巧会以这种方式出现。
部分
在学习路径的前八课中,您会经常看到几个标题(准备工作,如何做…,它是如何工作的…,还有更多…,以及参见)。为了清晰地说明如何完成一个食谱,使用这些部分如下:
准备工作
本节告诉您在食谱中可以期待什么,并描述如何设置任何软件
或食谱所需的任何初步设置。
如何做…
本节包含了遵循食谱所需的步骤。
它是如何工作的…
本节通常包括对先前发生的事情的详细解释
部分。
还有更多…
本节包含有关食谱的其他信息,以使您更加了解
对食谱有了解。
参见
本节提供了有关食谱的其他有用信息的链接。
保持联系
我们始终欢迎读者的反馈意见。
一般反馈:如果您对本书的任何方面有疑问,请在邮件主题中提及书名,并发送电子邮件至customercare@packtpub.com。
勘误:尽管我们已经尽一切努力确保内容的准确性,但错误确实会发生。如果您在这本书中发现了错误,我们将不胜感激地希望您向我们报告。请访问www.packt.com/submit-erra…,选择您的书,点击勘误提交表格链接,并输入详细信息。
盗版:如果您在互联网上发现我们作品的任何形式的非法副本,我们将不胜感激地希望您向我们提供位置地址或网站名称。请通过copyright@packt.com与我们联系,并提供材料链接。
如果您有兴趣成为作者:如果您在某个专业领域有专长,并且有兴趣撰写或为一本书做出贡献,请访问authors.packtpub.com。
评论
请留下评论。一旦您阅读并使用了这本书,为什么不在您购买它的网站上留下评论呢?潜在的读者可以看到并使用您的公正意见来做出购买决定,我们在 Packt 可以了解您对我们产品的看法,我们的作者可以看到您对他们的书的反馈。谢谢!
有关 Packt 的更多信息,请访问packt.com。
第一章:网络漏洞扫描简介
在当今时代,黑客普遍存在,每天都会发现各种产品的关键漏洞,企业网络需要制定程序,实时识别、分析和减轻漏洞。在本课程中,我们将研究执行网络安全扫描所需的各种程序和工具,并了解并采取所获得的结果。
本课程将为任何读者提供计算机网络的基础知识,以准备、规划和执行网络漏洞扫描,并确定渗透测试的目标,或者只是了解网络的安全状况。这将帮助初学者渗透测试人员征服并学会制定方法来执行识别漏洞的初步步骤。
本章将向您介绍计算机网络的基础知识。它还深入探讨了执行网络漏洞扫描时需要考虑的程序、用途和各种复杂性。本章将为您提供如何规划网络漏洞扫描的基本知识。
在本章中,我们将涵盖以下内容:
-
基本网络及其组件
-
网络漏洞扫描
-
网络漏洞扫描中使用的程序流程
-
执行网络漏洞扫描的用途
-
执行网络扫描的复杂性
-
如何制定缓解计划和应对
基本网络及其组件
基本的企业网络通常由诸如台式机/笔记本电脑、服务器、防火墙、代理、入侵检测和预防系统以及集线器、交换机和路由器等安全设备组成。大多数情况下,这些设备来自不同的供应商,因此它们容易受到不同的攻击,并使网络暴露于更大的攻击面。黑客可以利用公开可用的漏洞或零日漏洞攻击这些组件,从而可能访问设备/机器,并有可能访问网络中的其他设备/机器或整个网络。请注意以下图表以说明这一点:
网络漏洞扫描
漏洞是系统或设备中存在的一种弱点,可能会受到攻击。网络漏洞扫描是一种查找网络组件(如客户端、服务器、网络设备和终端)中的漏洞的过程,使用各种自动化或手动工具和技术进行识别和检测。它可以广泛分类为两种类型:内部网络漏洞扫描和外部网络漏洞扫描。
内部和外部漏洞扫描在过程上有相似之处,但在扫描设备或系统的网络位置上有所不同。外部漏洞扫描的范围是识别漏洞,考虑到攻击者通过网络上的公共 IP 地址针对网络,而内部漏洞扫描则是考虑攻击者是内部人员,可以访问内部网络,并通过私有 IP 地址针对网络。识别内部和外部威胁对于任何计算机网络都非常重要,以根据识别的漏洞数量实时呈现网络的安全性。
漏洞扫描对网络有其自身的副作用,例如由于流量增加而导致的网络延迟增加,网络资源无响应以及设备和服务器的重启。因此,组织内部网络扫描应该以最大的关注和适当的批准进行。一般来说,可以使用两种扫描技术,即认证和非认证。我们将在第四章 漏洞扫描和第五章 配置审计中看到这些扫描类型的方法。
初学者经常将漏洞扫描与渗透测试混淆。漏洞扫描是识别可以执行渗透测试的主机的初步步骤。例如,作为漏洞扫描的一部分,您确定服务器上的端口80是开放的,并且容易受到远程代码执行(RCE)攻击。对于渗透测试,这些信息将被输入,因为您已经知道服务器容易受到 RCE 攻击,并将尝试执行攻击并破坏服务器。
在执行网络漏洞扫描之前,建议始终通知利益相关者,并根据服务器和托管在服务器上的数据的重要性来获取停机时间。在开始扫描之前和扫描完成后写一封电子邮件是一个好习惯,因为这将帮助各个团队检查服务的连续性。
在本课程的后续章节中,我们将查看许多方法,以了解在进行网络漏洞扫描期间应遵循的各种最佳实践。
程序流程
网络漏洞扫描的活动可以分为三个阶段:
-
发现
-
端口扫描
-
漏洞扫描
发现
发现,也称为主机发现,是枚举活动主机的过程,是安全测试活动侦察阶段的一个非常重要的组成部分。这将帮助您从目标列表中排除不需要的主机,因此它将允许您使用这些枚举的主机执行有针对性的扫描和渗透测试。可以用于执行网络发现的一些工具包括 Nmap、Nessus、OpenVas 和 Wireshark。
以下截图显示了使用 Nmap 进行发现的样本主机。它显示主机是活动的,因此我们可以确定主机是活动的:
如果网络禁用了 ping,这些工具会派上用场。我总是更喜欢使用 Nmap 而不是其他工具,因为它易于使用,而且Nmap 脚本引擎(NSE)允许用户编写和实施自定义脚本。我们将在接下来的章节中讨论 NSE。
在本课程中,我们将进一步介绍如何手动执行主机发现和使用工具的各种方法。
端口扫描
在这个阶段,我们将根据主机在特定端口与您的机器之间的通信执行端口开放的检测。这种技术有助于确定特定端口是开放还是关闭。这种技术因协议而异。例如,对于 TCP,通信和推断端口是否开放的模式与 UDP 相比是不同的。可以用于执行端口扫描的一些工具包括 Nmap、Nessus、OpenVas 和 Wireshark。
以下截图显示了使用 Nmap 扫描端口80的样本主机。截图显示主机是活动的,端口80的状态为开放,因此我们可以确定主机是活动的。如果网络禁用了 ping,这些工具会派上用场:
在本课程中,我们将进一步介绍如何手动执行端口扫描和使用工具的各种方法。
漏洞扫描
一旦确定了发现的活动主机上的开放端口,我们就可以进行漏洞扫描。漏洞扫描可以检测和识别主机上已安装软件和工具的已知问题,例如使用的旧版本软件、启用的易受攻击的协议和默认密码。手动执行此活动很困难;因此,这个阶段需要使用自动化工具来识别开放端口,并尝试在端口上使用各种利用程序,以确定特定进程/软件是否容易受到基于该进程的利用的攻击。用于执行漏洞扫描的一些工具包括 Nessus、OpenVas 和 Qualys。
以下屏幕截图显示了使用 OpenVas 扫描漏洞的样本主机。您可以看到输出显示了主机受影响的漏洞列表:
在本课程中,我们将进一步向您介绍如何使用 Nessus 扫描主机的各种方法,并如何自定义这些扫描以获得特定和更少的误报结果。
用途
正如本章前面部分所述,进行网络漏洞扫描的主要优势是了解网络的安全状况。网络漏洞扫描的结果提供了一系列信息,对管理员和渗透测试人员都很有用,例如以下内容:
-
开放的不需要的端口和运行的服务
-
默认用户帐户和密码信息
-
缺失的补丁、更新和升级
-
安装的软件的易受攻击版本
-
使用的易受攻击的协议
-
使用的易受攻击的算法
-
所有先前漏洞的利用信息
网络漏洞扫描允许识别不必要的开放端口和这些端口上运行的服务。例如,位于非军事区的应用/ Web 服务器不需要打开 TCP 端口22并暴露给互联网。这些不需要的端口使主机/设备容易受到攻击。大多数扫描程序在识别任何托管服务的登录界面时,会尝试使用预先存在的用户名和密码数据库进行登录,并提供所有默认用户名和密码的报告,使用这些用户名和密码可能会危及服务。
经过认证的补丁扫描可以显示各种受支持平台的缺失补丁和更新的详细信息。这些信息至关重要,因为大多数这些缺失的补丁在互联网上都有可用的利用程序,可以用来在网络上重现类似的攻击。这可能还会揭示网络中主机上安装的第三方工具中的各种缺失补丁。这些信息帮助攻击者针对这些工具进行攻击,并获取对节点甚至整个网络的访问权限。
网络漏洞扫描还突出显示网络或节点中使用的各种易受攻击的协议。例如,如果服务器运行支持 SMBv1 协议的 SMB 共享,它将被标记为易受攻击,风险评级高于中等,因为 SMBv1 易受各种已知的恶意软件攻击。此外,扫描还突出显示服务运行时使用的易受攻击的密码和认证方法,这些方法容易受到已知的中间人攻击。例如,如果 Web 服务器在 HTTP 协议上使用基本认证,当网络上执行中间人攻击时,它容易暴露用户凭据。
大多数漏洞扫描程序,无论是开源还是付费软件,都会在漏洞的描述中提供与攻击相关的利用信息。这将通过直接链接提供给攻击者和渗透测试人员,使他们更容易地进行攻击或提供利用代码本身。
以下屏幕截图提供了指向有关扫描器报告的漏洞信息的文件的链接:
除了以前的技术用例之外,网络漏洞还从组织的角度具有各种用途,例如以下用途:
-
重视和关注信息安全
-
帮助主动发现潜在风险
-
导致网络更新
-
推进管理知识的发展
-
防止关键基础设施的财务损失
-
优先考虑需要升级修补程序与延迟修补程序的漏洞
复杂性
今天的网络环境具有复杂的结构,包括防火墙、DMZ 和交换机、路由器等网络设备。这些设备包括复杂的访问列表和虚拟网络配置,这使得很难概括任何活动。在上述配置中的任何变化都可能导致整个网络架构的变化。
如果我们要对任何网络组件进行基于 IP 的扫描,必须确保生成的所有数据包都完好无损地到达目的地,并且不受中间任何设备或解决方案的影响。例如,如果 Alice 正在通过网络扫描 Bob 的计算机,并且他们之间由防火墙分隔,其中 Bob 的子网被配置为处于 WAN Ping Block 模式,作为其中 ping 数据包将在防火墙级别被识别并丢弃,Alice 的主机发现扫描 Bob 的计算机将导致虚假阳性,即机器不在线。
为了成功地使用网络漏洞扫描进行安全配置文件,需要考虑以下因素:
-
扫描范围
-
网络架构
-
网络访问
扫描范围
如果我们需要对特定应用程序的基础设施进行漏洞评估,非常重要的是识别数据传输源和端到端通信中涉及的组件。这将允许渗透测试人员对此范围进行漏洞扫描,并识别特定于此应用程序的漏洞。相反,如果我们选择扫描子网或更广泛范围的 IP 地址,我们可能会突出显示不必要的漏洞,这在大多数情况下会导致在修复阶段混淆。例如,如果我们要审计一个基于 Web 的应用程序,我们可能会包括 Web 应用程序、应用程序服务器、Web 服务器和数据库服务器作为审计范围的一部分。
网络架构
了解进行漏洞扫描的 IP 地址或组件的位置总是很重要。这将帮助我们定制我们的方法并减少虚假阳性。例如,如果 Alice 试图扫描一个托管在 Web 应用程序防火墙后面的 Web 应用程序,她需要定制用于识别漏洞的有效载荷或脚本,使用编码等技术,以确保有效载荷不会被 Web 应用程序防火墙阻止。
网络访问
当被要求在庞大的网络上执行网络漏洞扫描时,非常重要的是要知道是否已为您的设备或主机提供了适当的访问权限以执行扫描活动。在没有适当网络访问权限的情况下执行的网络漏洞扫描将产生不完整的结果。始终建议将扫描器设备或主机 IP 地址列入网络设备的白名单,以获得对扫描范围的完全访问权限。
响应
一旦获得网络漏洞扫描报告,就重要制定缓解计划,以减轻报告中突出的所有漏洞。以下是网络安全扫描报告的一些解决方案:
-
关闭不需要的端口并禁用不需要的服务
-
使用强大且不常见的密码
-
始终应用最新的补丁和更新
-
卸载或更新旧版本的软件
-
禁用正在使用的旧版和旧协议
-
使用强大的算法和认证机制
报告需要根据调查结果编制,并将任务分配给各个部门。例如,所有与 Windows 相关的漏洞都应由负责维护 Windows 机器的相应团队来减轻。一旦责任在团队之间分配好,团队就应对报告中提供的解决方案进行影响和可行性分析。团队必须根据安全目标、机密性、完整性和可用性检查解决方案。这些减轻措施可以用作创建加固文档的基线,其中包括公共或私有领域中的任何其他可用基线。
一旦解决方案在受影响的主机上实施,团队就需要将这些推荐的补救措施纳入现有政策中,以避免将来的配置错误。这些政策需要不时更新,以符合当前的安全标准。
任何组织或个人都需要遵守并创建以下活动的循环,以实现其信息安全目标:
-
漏洞评估
-
减轻分析
-
打补丁,更新和减轻
如前所述,漏洞评估将导致网络中存在的所有漏洞,之后需要进行减轻分析,以了解必须实施的补救措施,并对其是否会对网络组件的连续性产生影响进行可行性检查。一旦所有的补救措施都被确定,就实施这些补救措施并跳转到第一步。如果每季度执行一次这个循环,可以确保网络得到最大程度的保护。
始终确保解决方案已在测试环境中实施,以查看对网络上托管的应用程序连续性的影响;还要查找任何依赖关系,以确保网络功能不受影响。
总结
总之,网络漏洞扫描是一个包括发现、端口扫描和漏洞扫描的三阶段过程。如果执行正确,这将帮助组织识别其当前的安全状况,并创建可操作的解决方案以改善这种状况。在本章中,我们已经了解了规划网络漏洞扫描的步骤以及涉及的各种因素。在接下来的章节中,我们将深入研究如何执行这种网络漏洞扫描以识别漏洞并采取行动的教程。
第二章:了解网络扫描工具
在本章中,我们将涵盖以下内容:
-
介绍 Nessus 和 Nmap
-
安装和激活 Nessus
-
下载和安装 Nmap
-
更新 Nessus
-
更新 Nmap
-
删除 Nessus
-
删除 Nmap
介绍 Nessus 和 Nmap
在本节中,我们将了解 Nmap 和 Nessus 中提供的各种功能。这有助于用户在使用它们之前充分了解工具及其功能。
Nessus 的有用功能
Nessus 网页界面的默认屏幕“扫描”如下截图所示;这是您可以查看所有已安排/执行的扫描的地方。在右上方,您可以在“扫描”和“设置”页面之间切换。接下来,我们将进入扫描界面:
Nessus 默认屏幕的左窗格显示了多个选项卡,分类为文件夹和资源。文件夹基本上是服务器上扫描的不同视图。例如,选择“垃圾”会显示用户已删除的扫描。您可以通过选择“垃圾”文件夹右上方的“清除垃圾”选项来进一步清除垃圾。
资源是 Nessus 运行其扫描的基础。资源窗格中可见三个选项:
-
策略
-
插件规则
-
扫描器
策略
要执行 Nessus 扫描,您必须创建一个策略。策略是各种配置、方法和正在执行的扫描类型的集合。多个扫描可以使用一个策略,但每次扫描只适用一个策略。用户可以导入以前创建的策略,该策略以.nessus格式存储,或单击“创建新策略”。一旦用户选择创建策略,他们将看到 Nessus 中提供的各种策略模板,这些模板是基于要在主机上执行的测试用例而提供的。以下是 Nessus 提供的各种策略模板的列表:
这些模板包括执行从通用到特定攻击的扫描所需的一系列配置。在屏幕截图中显示的 21 个模板中,我们将查看一些模板,以了解策略的构成和工作方式。
我们将在第四章 漏洞扫描中查看策略模板的内容。
插件规则
插件规则允许用户隐藏或更改 Nessus 提供的风险评级;这将允许对大量主机执行扫描的分析人员配置插件,以降低已应用解决方法的风险评级。这将减少大量手动工作。
自定义报告
此选项允许用户通过上传和添加徽标到报告来定制或个性化特定组织或客户的报告:
扫描器
扫描器选项卡显示了可用于扫描的扫描器数量及其详细信息。在 Nessus Home 和专业版中无法添加扫描器,但可以在 Nessus 安全中心中添加:
单击“设置”以显示设置菜单。接下来,我们将讨论设置菜单中各种选项的详细信息。
在前面的部分中,概述选项卡提供了工具概述,例如许可信息、插件信息等;我们将在更新 Nessus配方中查看软件更新选项卡的使用:
- 主密码:Nessus 提供了一个选项,可以使用主密码对在策略中使用的所有扫描策略和凭据进行加密,以在文件级别提供额外的保护层。您可以在 Web 控制台的设置菜单中找到这一点:
- 代理服务器:代理服务器用于在不进行任何更改的情况下转发请求和响应来连接多个网络。如果您的网络需要代理服务器,您可以在 Nessus 中添加一个代理服务器,以便 Nessus 能够到达要扫描的主机。您可以在设置菜单中找到代理服务器选项,如下所示:
- SMTP 服务器:发送电子邮件需要一个简单邮件传输协议(SMTP)服务器。Nessus 提供了在扫描完成后通过电子邮件通知的选项。您可以配置一个 SMTP 服务器,以便 Nessus 能够使用该邮件服务器发送通知电子邮件。SMTP 配置选项可以在设置菜单中找到,如下所示:
- 自定义 CA:Nessus 默认使用在其安装过程中签名的证书进行基于 Web 的访问,以便浏览器信任该证书并消除所有证书错误。Nessus 提供了保存自定义 CA 的选项。自定义 CA 选项可以在设置菜单中找到,如下所示:
- 密码管理:默认和弱密码是系统中最常见的漏洞之一,因此为了保护 Nessus 控制台免受未经授权的访问,我们需要配置强密码。为了确保管理员使用强密码,Nessus 提供了密码管理选项,管理员可以配置密码复杂性、会话超时、最大登录尝试次数和最小密码长度等参数。这些可以用来保护 Nessus 控制台免受密码和会话相关的攻击。密码管理选项可以在设置菜单中找到,如下所示:
Nmap 的各种功能
使用 Nmap 执行网络扫描涉及多个阶段。这些步骤可以由 Nmap 实用程序提供的各种选项定义。用户可以根据自己的需求选择这些选项中的任何一个,以获得特定的网络扫描结果。以下是 Nmap 实用程序提供的选项:
-
主机发现
-
扫描技术
-
端口规范和扫描顺序
-
服务或版本检测
-
脚本扫描
-
OS 检测
-
时间和性能
-
规避和欺骗
-
输出
-
目标规范
主机发现
一个网络包括许多基于提供的子网的主机。例如,具有掩码值 27 的子网将有 32 个主机,而具有掩码值 24 的子网将有 256 个主机。在不知道哪些主机是活动的情况下对 256 个主机进行全端口扫描可能需要很长时间。为了减少 Nmap 生成和处理的流量,我们可以根据活动和非活动主机过滤网络主机。这将允许 Nmap 减少不必要的分析并更快地获得结果。
扫描技术
Nmap 根据要生成的数据包类型提供了各种扫描技术选项,这取决于网络中使用的各种保护机制。这些技术使用不同的标头值构造数据包,以获取 ACK 或 RST 数据包,根据这些数据包决定并显示端口的性质。如前所述,其中一些扫描类型用于规避检测并确保用户在网络中的匿名性。
端口规范和扫描顺序
默认情况下,如果未规定要扫描的端口范围,Nmap 将扫描最常用的前 1000 个端口,即在网络中最常开放的端口。这些扫描选项允许用户指定要扫描的端口和扫描顺序。
服务或版本检测
Nmap 拥有大约 2,200 个知名服务的数据库。一旦检测到端口打开,可以使用这些选项来识别正在运行的服务的确切类型和版本。Nmap 通过查询这些端口并分析收到的响应来实现这一点。
脚本扫描
Nmap 具有脚本引擎,这是该程序的一个特别强大的功能,它允许用户编写或使用已有的脚本来对开放端口执行特定任务。
操作系统检测
Nmap 的操作系统检测选项帮助用户识别远程主机使用的操作系统。这将帮助用户进一步创建针对特定目标的操作并解决未来的兼容性问题。Nmap 使用 TCP/UDP 堆栈指纹机制来识别操作系统。
时间和性能
Nmap 提供了多个选项,用户可以使用这些选项定义与时间相关的多个扫描参数,例如速率、超时和并行性。这将允许用户配置扫描以更快地获取结果,从而提高扫描多个主机和网络时的性能。
逃避和欺骗
今天有许多网络安全解决方案,如防火墙和 IDS/IPS,可以阻止 Nmap 生成的网络流量。Nmap 提供选项,如分段、诱饵扫描、欺骗和代理,以规避这些网络安全解决方案,并成功完成扫描并获取结果。
输出
Nmap 不仅是一个强大的扫描工具,还具有强大的报告机制。它提供多种格式的全面报告,以 XML 和文本格式显示输出。
目标规范
Nmap 提供了多个目标规范选项,用户可以在其中提及子网、单个 IP、IP 范围和 IP 列表进行扫描。这将允许用户扫描从主机发现中识别出的特定主机。
Nmap 的一个完整语法示例如下:
Nmap -sS -sV -PN -T4 -oA testsmtp -p T:25 -v -r 192.168.1.*
根据用户的要求,一旦提供了所需的选项和参数,用户就可以执行扫描并获取输出。我们将在下一章中介绍如何使用 Nmap 执行网络扫描的配方。
作为本章的一部分,我们将介绍如何选择 Nmap 和 Nessus 的正确软件版本,以及它们的安装和卸载。这些配方是为了帮助新的受众了解要求,以及它们在不同平台上的变化。
安装和激活 Nessus
Nessus 是由 Tenable Network Security 开发的漏洞扫描器。它扫描主机和子网以查找网络级和服务级漏洞。Nessus 可供非商业用户免费使用,但功能受限。它由两个主要组件组成:NessusD(Nessus 守护程序)和可以托管在同一台机器上的客户端应用程序。Nessus 守护程序负责执行扫描并将结果传递给客户端应用程序,以多种格式提供这些结果。Tenable 还开发了增量更新和检测机制,称为插件,可以定期下载和更新。它还提供已知漏洞的额外探测功能;例如,如果发现 FTP 端口打开,Nessus 将自动尝试使用anonymous用户登录。Nessus 具有命令行和 Web 界面,但我们将主要关注基于 GUI 的 Web 界面,因为它易于使用。
准备就绪
Nessus 的要求因其不同组件的存在以及可用的许可证类型和使用情况而有所不同。
以下表格描述了 Nessus 的硬件要求:
| 场景 | 最低推荐硬件 |
|---|---|
| Nessus 扫描最多 50,000 个主机 | CPU:4 x 2 GHz 核心内存:4 GB RAM(建议 8 GB RAM)磁盘空间:30 GB |
| Nessus 扫描超过 50,000 个主机 | CPU:8 x 2 GHz 核内存:8 GB RAM(建议 16 GB RAM)磁盘空间:30 GB(报告可能需要额外空间) |
| 具有最多 10,000 个代理的 Nessus Manager | CPU:4 x 2 GHz 核内存:16 GB RAM磁盘空间:30 GB(报告可能需要额外空间) |
| 具有最多 20,000 个代理的 Nessus Manager | CPU:8 x 2 GHz 核内存:64 GB RAM磁盘空间:30 GB(报告可能需要额外空间) |
- Nessus 代理:这是为了消耗更少的内存而设计的,因为该进程是低优先级的,并且在需要时会让出 CPU。Nessus 代理可以安装在满足以下表中规定要求的虚拟机上:
| 硬件 | 最低要求 |
|---|---|
| 处理器 | 1 个双核 CPU |
| 处理器速度 | < 1 GHz |
| RAM | < 1 GB |
| 磁盘空间 | < 1 GB |
| 磁盘速度 | 15-50 IOPS |
- 虚拟机:Nessus 代理支持以下版本的 macOS、Linux 和 Windows 操作系统:
| 操作系统 | 支持的版本(Nessus 代理) |
|---|---|
| Linux | Debian 7, 8 和 9 - i386Debian 7, 8 和 9 - AMD64Red Hat ES 6/CentOS 6/Oracle Linux 6(包括不可破解的企业内核) - i386Red Hat ES 6/CentOS 6/Oracle Linux 6(包括不可破解的企业内核) - x86_64Red Hat ES 7/CentOS 7/Oracle Linux 7 - x86_64Fedora 24 和 25 - x86_64Ubuntu 12.04, 12.10, 13.04, 13.10, 14.04 和 16.04 - i386Ubuntu 12.04, 12.10, 13.04, 13.10, 14.04 和 16.04 - AMD64 |
| Windows | Windows 7, 8 和 10 - i386Windows Server 2008, Server 2008 R2, Server 2012, Server 2012 R2, Server 2016, 7, 8 和 10 - x86-64 |
| macOS X | macOS X 10.8 - 10.13 |
Nessus Manager 支持以下版本的 macOS、Linux 和 Windows 操作系统:
| 操作系统 | 支持的版本(Nessus Manager) |
|---|---|
| Linux | Debian 7, 8 和 9/Kali Linux 1, 2017.1 和 Rolling - i386Debian 7, 8 和 9/Kali Linux 1, 2017.1 和 Rolling - AMD64Red Hat ES 6/CentOS 6/Oracle Linux 6(包括不可破解的企业内核) - i386Red Hat ES 6/CentOS 6/Oracle Linux 6(包括不可破解的企业内核) - x86_64Red Hat ES 7/CentOS 7/Oracle Linux 7(包括不可破解的企业内核) - x86_64FreeBSD 10 和 11 - AMD64Fedora 24 和 25 - x86_64SUSE 11 和 12 Enterprise - i586SUSE 11 和 12 Enterprise - x86_64Ubuntu 12.04, 12.10, 13.04, 13.10, 14.04 和 16.04 - i386Ubuntu 12.04, 12.10, 13.04, 13.10, 14.04 和 16.04 - AMD64 |
| Windows | Windows 7, 8 和 10 - i386Windows Server 2008, Server 2008 R2, Server 2012, Server 2012 R2, Server 2016, 7, 8 和 10 - x86-64 |
| macOS X | macOS X 10.8 - 10.13 |
-
浏览器:Nessus 支持以下浏览器:
-
谷歌 Chrome(50 及以上)
-
苹果 Safari(10 及以上)
-
Mozilla Firefox(50 及以上)
-
Internet Explorer(11 及以上)
-
PDF 报告:Nessus 的
.pdf报告生成功能需要安装最新版本的 Oracle Java 或 OpenJDK。在安装 Nessus 之前安装 Oracle Java 或 OpenJDK。
操作方法…
执行以下步骤:
- 从
www.tenable.com/downloads/nessus下载适用的 Nessus 安装文件,确保选择适用于正在使用的操作系统的正确文件。
对于 64 位 Windows 操作系统,请下载 Nessus-7.1.3-x64.msi。
- 注册并从
www.tenable.com/downloads/nessus获取激活代码。以下屏幕截图显示了带有 Nessus 激活代码的示例电子邮件:
-
按照说明安装下载的
.msi文件。 -
Nessus 要求您在安装过程中创建管理员用户,如下所示:
- 在此处插入从 Tenable 的电子邮件中收到的激活代码:
- 确保系统连接到互联网,以便 Nessus 可以从其服务器自动下载插件。
工作原理…
一旦用户在 Windows 操作系统上下载并安装了可执行文件,就可以在本地主机的端口8834上通过 Web 界面访问 Nessus 软件。为了完成安装,Nessus 需要一个激活码,可以通过在 Tenable 网站上注册并提供一些详细信息来获取。一旦通过电子邮件获得密钥,您需要根据使用情况输入激活码,并单击“继续”以完成安装并下载插件。每当发现新的漏洞时,Tenable 都会创建程序和脚本来识别这些漏洞。这些脚本和程序称为插件,使用Nessus 攻击脚本语言(NASL)编写。为了确保 Nessus 扫描没有漏掉任何最近发现的漏洞,这些插件需要定期更新。典型的插件包括与漏洞相关的信息,如描述、影响、修复措施,以及一些漏洞指标,如 CVSS 和 CVE。
连接到互联网的计算机上,如果您正在使用 Nessus 浏览器界面进行安装,则插件的下载是一个自动过程。一旦您在 Nessus 上注册了许可证,您应该会看到一个插件下载屏幕。如果离线安装 Nessus,您将不得不在注册了 Nessus 许可证后从自定义生成的链接手动下载插件。根据您使用的操作系统,下载插件并将 ZIP 或 TAR 文件夹解压缩到以下目录:
- 在 Linux 中,安装到以下目录:
# /opt/nessus/sbin/
- 在 FreeBSD 中,安装到以下目录:
# /usr/local/nessus/sbin/
- 在 macOS X 中,安装到以下目录:
# /Library/Nessus/run/sbin/
- 在 Windows 中,安装到以下目录:
C:\Program Files\Tenable\Nessus
提取软件包后,您可以使用以下命令根据所使用的操作系统安装这些插件:
- 在 Linux 中,使用以下命令:
# /opt/nessus/sbin/nessuscli update <tar.gz filename>
- 在 FreeBSD 中,使用以下命令:
# /usr/local/nessus/sbin/nessuscli update <tar.gz filename>
- 在 macOS X 中,使用以下命令:
# /Library/Nessus/run/sbin/nessuscli update <tar.gz filename>
- 在 Windows 中,使用以下命令:
C:\Program Files\Tenable\Nessus>nessuscli.exe update <tar.gz filename>
还有更多…
如果连接到互联网时遇到任何问题,您可以选择在离线模式下激活,如下图所示:
为了使 Nessus 能够离线激活,您的本地浏览器上显示了一个挑战代码,Nessus 实例正在运行,或者可以使用以下命令手动显示:
- 在 Linux 中,使用以下命令:
# /opt/nessus/sbin/nessuscli fetch --challenge
- 在 FreeBSD 中,使用以下命令:
# /usr/local/nessus/sbin/nessuscli fetch --challenge
- 在 macOS X 中,使用以下命令:
# /Library/Nessus/run/sbin/nessuscli fetch --challenge
- 在 Windows 中,使用以下命令:
C:\Program Files\Tenable\Nessus>nessuscli.exe fetch --challenge
上述命令已配置为默认安装目录。将目录更改为您计算机上安装 Nessus 的位置。
您可以将此挑战代码复制到可以访问互联网的计算机上,并在 Nessus 网站的离线模块上生成许可证,生成许可证字符串。此许可证字符串可以在计算机上使用,无论是浏览器模式还是离线模式,都可以使用以下命令:
- 在 Linux 中,使用以下命令:
# /opt/nessus/sbin/nessuscli fetch --register-offline /opt/nessus/etc/nessus/nessus.license
- 在 FreeBSD 中,使用以下命令:
# /usr/local/nessus/sbin/nessuscli fetch --register-offline /usr/local/nessus/etc/nessus/nessus.license
- 在 macOS X 中,使用以下命令:
# /Library/Nessus/run/sbin/nessuscli fetch --register-offline /Library/Nessus/run/etc/nessus/nessus.license
- 在 Windows 中,使用以下命令:
C:\Program Files\Tenable\Nessus>nessuscli.exe fetch --register-offline "C:\ProgramData\Tenable\Nessus\conf\nessus.license"
下载和安装 Nmap
Nmap 是一个免费的开源网络扫描和审计工具,可在Nmap.org/上获得。该工具是网络级安全审计的最重要组成部分之一,因为它允许用户通过提供有关开放端口和运行在这些端口上的服务的数据来监视或观察主机的网络级姿态。Nmap 工具还允许使用 Nmap 脚本引擎(NSE)与这些服务进行交互并运行各种脚本。以下命令是在主机127.0.0.1上执行 TCP syn 全端口扫描的语法:
Nmap -sS -p1-65535 127.0.0.1
我们将在后续章节中研究 Nmap 工具的用法。
准备工作
Nmap 根据用户机器支持的架构和操作系统的版本和格式提供。Nmap 还有一个名为 Zenmap 的 GUI 版本,它提供更好的可见性以选择要运行的命令。它还作为操作系统的默认工具的一部分,用于利用和黑客技术,如 Kali Linux。用户可以根据其机器的配置选择 Nmap 的类型或版本;例如,我正在使用 Windows 7 64 位操作系统,因此我将选择支持 64 位 Windows 7 操作系统的最新稳定版本的可执行文件。如果您使用 64 位 Linux 或 Unix 发行版,可以在Nmap.org/上下载 rpm 二进制包。
如何做…
执行以下步骤:
-
从
www.Nmap.org/download.html下载适用的 Nmap 版本。 -
右键单击下载的文件,选择以管理员身份运行。这是为了确保工具在您的机器上正确安装所有权限。
-
之后,您将看到一个开源许可协议。阅读协议并点击同意,如下图所示:
- 选择要作为 Nmap 软件包的一部分安装的各种组件。这些实用程序提供更多功能,如数据包生成和比较。如果您觉得不需要这些额外的实用程序,可以取消选中该功能,如下图所示:
-
选择要安装工具的位置。默认情况下,该工具建议使用
C:\Program Files (x86)\Nmap\路径。点击下一步。 -
安装需要 Npcap,Windows 的 Nmap 数据包嗅探库。按照说明安装 Npcap 以继续安装 Nmap 并等待安装完成。
工作原理…
安装完成后,打开命令提示符并输入Nmap。如果 Nmap 工具安装正确,它应该加载 Nmap 的使用说明,如下所示:
还有更多…
在 Linux 发行版上安装 Nmap 是一个不同的过程。大多数基于 Linux 的操作系统都可以使用yum和apt等软件包管理工具进行单步安装。
确保机器连接到互联网并执行以下命令:
- 在 CentOS 上,使用以下命令:
yum install Nmap
- 在 Debian 或 Ubuntu 上,使用以下命令:
apt-get install Nmap
更新 Nessus
Nessus 可以手动更新,也可以安排自动更新。软件更新选项可以在设置菜单中找到。这可以用于为 Nessus 软件或插件安排每日、每周或每月更新。默认情况下,Nessus 使用其云服务器下载和安装更新,但您也可以配置自定义服务器来下载这些更新。
准备工作
您可以在连接到互联网或离线时更新 Nessus。如果您想要一个无忧的更新或快速更新,您可以确保系统连接到互联网。
但是,要离线更新 Nessus,您必须从 Nessus 网站下载更新包。
如何做…
按照以下步骤:
- 从主页导航到设置,然后选择软件更新:
-
选择更新频率:每天、每周或每月。
-
如果您有任何内部或外部服务器要求 Nessus 获取更新,请提供服务器详细信息。
-
保存设置,它们将自动应用。
-
为了手动安装更新,导航到设置,然后选择软件更新,然后选择手动软件更新,如下所示:
-
选择更新所有组件或更新插件以立即触发更新。
-
如果机器没有连接到互联网,您可以从 Tenable 网站下载更新包,并通过选择上传您自己的插件存档选项进行更新。
还有更多...
Nessus 有一个评估许可证,限制了您可以扫描的 IP 地址数量,还有一个完整的许可证,可以在一定时间内购买,并且没有对可以扫描的 IP 地址数量的任何限制。Nessus 的完全许可版本可在 Nessus 网站上以大约每台扫描仪 2500 美元的价格购买:
-
选择激活码旁边的编辑选项。
-
在显示的框中,选择正在使用的 Nessus 类型。
-
在激活码框中,输入您的新激活码。
-
选择激活。
完成后,Nessus 将下载所需的插件并自动安装它们。
更新 Nmap
更新 Nmap 最直接的方法是下载软件的最新可用版本,并手动安装软件包。
准备就绪
从nmap.org/download.html/下载最新的稳定版本,确保选择适用于当前操作系统的正确版本。
如何做…
执行以下步骤:
-
右键单击下载的文件,然后选择以管理员身份运行。这是为了确保工具具有在您的机器上正确安装的所有权限。
-
之后,您将看到一个开源许可协议。阅读协议并点击同意,如下面的屏幕截图所示:
- 选择要作为 Nmap 软件包的一部分安装的各种组件。这些实用程序提供额外的功能,如数据包生成和比较。如果您不需要这些额外的实用程序,可以取消选中这些功能,如下面的屏幕截图所示:
-
选择要安装工具的位置。工具建议的默认路径是
C:\Program Files (x86)\Nmap\。然后点击下一步。 -
安装需要 Npcap。这是 Nmap 的 Windows 数据包嗅探库。按照说明安装 Npcap 并继续安装 Nmap;等待安装完成。
移除 Nessus
删除 Nessus 软件类似于删除 Nmap。完成后,服务运行的端口将被释放,您将无法再访问 Web 界面。
准备就绪
删除 Nessus 的步骤因平台而异。在卸载 Nessus 之前,您可能希望通过以所需格式导出它们来备份所有策略和扫描数据;例如,NessusDB。
如何做…
按照以下步骤在 Windows 上卸载 Nessus:
-
在 Windows 机器上导航到控制面板
-
选择卸载或更改程序
-
在安装的软件列表中找到并选择 Nessus 软件包
-
点击卸载
这将从任何 Windows 机器中卸载 Nessus 软件及其数据。
还有更多...
在 Linux 上卸载 Nessus 的步骤如下:
为了确定要卸载的 Nessus 软件包的包名称,请使用以下命令来处理不同的平台:
- 在 Open Red Hat、CentOS、Oracle Linux、Fedora、SUSE 或 FreeBSD 中,使用以下命令:
# rpm -qa | grep Nessus
- 在 Open Debian/Kali 和 Ubuntu 中,使用以下命令:
# dpkg -l | grep Nessus
- 在 Open FreeBSD 中,使用以下命令:
# pkg_info | grep Nessus
使用从前述命令中获取的软件包信息作为相应平台的以下软件包移除命令的输入:
- 在 Open Red Hat、CentOS、Oracle Linux、Fedora 或 SUSE 中,如下所示:
# rpm -e <Package Name>
- 在 Open Debian/Kali 和 Ubuntu 中,如下所示:
# dpkg -r <package name>
- 在 Open FreeBSD 中,如下所示:
# pkg delete <package name>
使用此处提到的命令删除 Nessus 目录以删除任何其他文件:
- 在 Open Linux 中,使用以下命令:
# rm -rf /opt/nessus
- 在 Open FreeBSD 中,使用以下命令:
# rm -rf /usr/local/Nessus
如果在移除 Nessus 过程中遇到任何问题,请停止 Nessus 守护程序并尝试再次删除文件。
在 macOS 上卸载 Nessus,请执行以下步骤:
-
导航至系统偏好设置并选择Nessus
-
选择锁定选项
-
输入用户名和密码
-
选择停止 Nessus按钮
删除以下 Nessus 目录、子目录或文件:
-
/Library/Nessus -
/Library/LaunchDaemons/com.tenablesecurity.nessusd.plist -
/Library/PreferencePanes/Nessus Preferences.prefPane -
/Applications/Nessus
删除这些文件将确保软件从机器上完全卸载。
移除 Nmap
在 Windows 和 Linux 上,卸载 Nmap 的过程非常简单。这将删除 Nmap 安装的所有依赖和库。
如何操作…
按照以下步骤在 Windows 上卸载 Nmap:
-
导航至 Windows 机器的控制面板
-
选择卸载或更改程序
-
在已安装软件列表中找到并选择 Nmap 软件包
-
点击卸载
这将从任何 Windows 机器中卸载 Nmap 软件及其数据。
还有更多…
在基于 Linux 的发行版中,您可以简单地删除与 Nmap 相关的所有文件夹以卸载 Nmap。如果您从下载的源安装了 Nmap,那么在相同文件夹中将存在一个卸载脚本,可以用它来卸载 Nmap。此外,如果它是安装在默认位置的,可以使用以下命令来删除它:
rm -f bin/Nmap bin/nmapfe bin/xnmap
rm -f man/man1/Nmap.1 man/man1/zenmap.1
rm -rf share/Nmap
./bin/uninstall_zenmap
第三章:端口扫描
在本章中,我们将介绍以下配方:
-
如何指定目标
-
如何执行主机发现
-
如何识别开放端口
-
如何管理规范和扫描顺序
-
如何执行脚本和版本扫描
-
如何检测操作系统
-
如何检测和绕过网络保护系统
-
如何使用 Zenmap
介绍
在本章中,我们将介绍各种配方,解释如何利用 Nmap 执行各种端口扫描技术。每个配方都将包含有关在测试虚拟机上执行 Nmap 扫描的实用见解,从而使您了解 Nmap 支持的各种开关的功能。
如何指定目标
nmap命令将解释附加的任何内容,而不带有关联开关的目标。以下是指定要扫描的 IP 地址或主机名的基本语法:
nmap 127.0.0.1nmap localhost
主机名将与配置的 DNS 服务器解析,并获取 IP 地址执行扫描。如果一个主机名关联多个 IP 地址,则将扫描第一个 IP 地址并显示结果。以下语法允许nmap对命令中提供的主机名解析的所有 IP 地址执行扫描:
nmap xyz.com*
Nmap 还支持扫描整个子网,只要在 IP 地址或主机名的末尾附加掩码即可。然后,Nmap 将考虑所提及掩码范围内的所有解析 IP 地址。例如,10.0.0.1/24将扫描10.0.0.1和10.0.0.255之间的256个主机,包括.1和.255。10.0.0.21/24将扫描完全相同的目标。
Nmap 还允许您解析整个子网,然后排除某些主机进行扫描。例如,以下语法允许您扫描为10.0.0.1/24解析的所有主机,但排除最后网络位为.1或.255的任何 IP 地址:
nmap 10.0.0.2-254
这可以用于四个网络位中的任何一个,例如10.0.1-254.1-254,这将允许您跳过 IP 地址10.0.0.0,10.0.0.255,10.0.255.0和10.0.255.255。Nmap 还支持完全合格的 IPv6 地址,但不支持八位范围。对于具有非全局范围的 IPv6 地址,需要提及区域后缀 ID。
Nmap 支持各种输入格式,供用户指定目标。以下是可以用来提及指定格式上的主机的开关:
nmap –iL <inputfilename>
这将允许用户创建一个文本文件,其中列出了要扫描的所有 IP 地址/范围。当您有许多 IP 地址要扫描时,这是一个可行的选择。例如,如果您要扫描来自不同子网的所有 IP 地址,用于具有超过 10,000 个资产的中型组织,那么在命令行中输入这些 IP 地址是不可行的。相反,创建一个文本文件,列出要扫描的所有 IP 地址,并在-iL之后提及带有绝对路径的文件名。然后,Nmap从文件中获取 IP 地址列表并执行扫描:
nmap -iR <num hosts>
对于大型组织和基于互联网的扫描,您可能希望扫描随机目标或识别未知目标。-iR开关与附加的要识别的随机主机数量将允许用户执行这些操作。例如,如果您要识别具有打开 ftp 端口的八个随机主机,则可以使用以下语法:
nmap –sS –Pn –p 21 –iR 8 --open
以下语法将帮助您在输入为服务器范围、子网或预先存在的大型服务器列表时排除服务器。与此开关一起提及的主机将被排除在扫描之外,从而防止服务器受到任何不必要的流量的影响:
nmap --exclude <host1>[,<host2>[,...]]
以下命令与前面的语法类似,只是主机排除列表是从文件中获取的,而不是手动提及服务器列表。当要排除的主机列表很长时,这是可行的:
nmap --excludefile <exclude_file>
准备工作
为了执行这项活动,您将需要满足您的机器上的以下先决条件:
-
安装 Nmap。
-
为要执行扫描的主机提供网络访问权限。
要安装 Nmap,您可以按照第二章中提供的说明进行操作,了解网络扫描工具。这将允许您下载兼容版本的 Nmap 并安装所有必需的插件。为了检查您的机器是否安装了 Nmap,请打开命令提示符并输入 Nmap。
如果安装了 Nmap,您将看到类似以下截图的屏幕:
如果您没有看到此屏幕,请将命令提示符控件移动到安装了 nmap的文件夹中(C:\Program Files\nmap)重试该步骤。即使这样做后仍然看不到屏幕,请删除并重新安装 nmap。
为了填充要扫描的主机上的开放端口,您需要对该特定主机具有网络级别的访问权限。通过向主机发送 ping 数据包来检查您是否可以访问特定主机的简单方法。但是,如果 ICMP 被禁用,活动主机检测技术会有所不同,我们将在本配方的*如何操作..*部分中看到这一点。
这个配方的先决条件对本章中的所有其他配方都是通用的。
如何操作...
以下是步骤:
-
在命令提示符中打开
nmap。 -
在命令提示符中输入以下语法,扫描 IP 地址
192.168.75.136:
nmap 192.168.75.136
- 在命令提示符中输入以下语法,扫描
ip.txt文件中存在的 IP 地址:
nmap -iL ip.txt
- 在命令提示符中输入以下语法,从扫描列表中排除
192.168.75.136IP 地址:
nmap -v 192.168.75.135/28 --exclude 192.168.75.136
- 在命令提示符中输入以下语法,从扫描列表中排除
ip.txt文件中提到的 IP 地址:
nmap –v 192.168.75.135/28 --excludefile ip.txt
它是如何工作的...
本配方中提到的选项帮助用户根据自己的便利选择目标,而不管他们的网络规模或提供的主机列表大小如何。Nmap 不需要用户输入要扫描的最终主机列表。相反,正如本配方所示,它提供了各种选项,以动态允许 Nmap 根据各种过滤器选择目标。基于文件的过滤器允许 Nmap 输入一个现成的主机列表,从而减少了定制或格式化列表所需的工作量。
如何执行主机发现
识别运行主机的基本技术之一是发送 ICMP ping 数据包并分析响应以得出结论。如果主机或网络在网络级别或主机级别阻止 ICMP 数据包,会怎么样?根据 ICMP 技术,主机或网络将不会出现在活动主机列表中。主机发现是网络渗透测试或漏洞扫描的核心组成部分。未完成的主机发现可能会忽略主机或网络的范围并执行任何进一步的操作,从而使网络变得脆弱。
Nmap 提供各种选项和技术,通过发送定制的数据包来识别活动主机以满足特定的网络条件。如果没有提供这样的选项,Nmap 默认发送 ICMP 回显以识别活动主机。提供的探针选项可以组合以增加识别更多端口的几率。一旦 Nmap 探测到活动主机并获得活动主机列表,它将默认扫描开放端口。
Nmap 提供以下选项来执行主机发现:
-
–sL:此选项列出提供的子网中存在的 IP 地址。它还尝试将 IP 地址解析为其主机名。主机名可以帮助攻击者或渗透测试人员了解网络的大量信息。您将无法将其与其他选项(如 OS 发现)结合使用,因为其功能仅是列出 IP 地址。
-
-sn:此选项告诉 Nmap 在执行主机发现后不执行端口扫描。而是只列出找到的活动 IP 地址。这使用 ICMP 回显来识别可用主机,如果网络中存在防火墙,则无法正常工作。 -
-Pn(无 ping):通常,Nmap 仅在发现主机活动时执行诸如探测、端口检测、服务检测和 OS 检测选项等活动。此选项允许 Nmap 对提供的主机列表执行所有扫描操作。例如,如果指定了一个带有子网/28的 C 类 IP 地址,则 Nmap 将对所有255个主机进行探测,而不是检查活动主机并对其执行活动。这是一个广泛的扫描选项,会产生大量流量。 -
-PS(端口列表):此选项发送一个带有 SYN 标志的空 TCP 数据包。这也被称为 syn ping 数据包。通常,要进行完整的 TCP 连接,主机在接收到 SYN 数据包后会生成一个 ACK。一旦收到 ACK 数据包,Nmap 主机会生成一个 SYN/ACK 数据包,然后建立连接。相反,Nmap 发送一个 RST,即重置标志数据包,以关闭连接并声明端口为打开。这将允许您确定打开的端口,而无需实际创建连接,因为任何建立的连接都将在网络和系统级别记录下来。此选项还允许攻击者在执行检测时不留下任何痕迹。
-PS和端口号之间没有空格。您还可以指定要执行操作的端口范围。
-
-PA(端口列表):这类似于 SYN 扫描,也称为 TCP ACK ping 扫描。Nmap 生成带有 ACK 的 TCP 数据包。ACK 基本上是确认连接传输的任何数据,但从 Nmap 机器到主机没有现有连接,因此会返回一个启用了 RST 标志的数据包。这将允许 Nmap 确定端口是打开的并且有服务正在运行。 -
-PU(端口列表):这与 TCP 扫描类似,但此 UDP ping 扫描用于 UDP 端口。对于大多数端口,数据包为空,除非是特定于服务的端口,例如 DNS 和 NTP。如果 DNS ping 数据包到达关闭的端口,则 UDP 探测应该触发主机的 ICMP 不可达响应。如果未生成此响应或连接似乎处于空闲状态,则意味着端口正在运行并且端口上正在运行服务。 -
-PY(端口列表):此开关生成包含 INIT 数据部分的 SCTP 数据包。这意味着您正在尝试建立连接。如果目标端口关闭,则会发送一个 ABORT 数据包;否则,连接将继续到四次握手的下一步,通过回复 INIT-ACK。一旦收到 INIT-ACK,Nmap 机器发送一个 INIT-ACK 并将端口标记为打开,而不是创建连接。 -
-PO(协议列表):此协议列表扫描允许 Nmap 在数据包头中配置启用了一对协议的数据包,例如 ICMP 和 IGMP,以查看是否有任何主机不可达响应,从而确定目标端口不支持这些协议,从而将端口标记为关闭。 -
-PR(ARP Ping):ARP 扫描允许 Nmap 向远程主机发送 ARP 请求。如果有任何响应,Nmap 会将主机标记为活动,而不检查任何其他结果。它还支持 IPv6。 -
--disable-arp-ping:这允许用户在网络设备或代理响应 ARP 请求时获得特定结果,从而使所有主机看起来都是活动的。 -
--traceroute:Traceroute 是一个后扫描模块,用于确定到达远程主机的最佳端口。这通过发送低 TTL 数据包来实现。 -
-n:这允许用户跳过 DNS 解析过程。这可能会很慢,因此扫描需要很长时间。 -
-R:此选项是-n的对应项。它要求 Nmap 对所有活动主机执行反向 DNS 解析。 -
--system-dns:这可以用来指定解析时使用的 DNS 服务器应该是主机上配置的 DNS 服务器。 -
--dns-servers <server1>[,<server2>[,...]]:此选项可用于定义用于反向 DNS 解析的特定 DNS 地址。
如何…
以下是步骤:
-
在命令提示符中打开
nmap。 -
在命令提示符中运行以下语法,只执行活动扫描,而不探测端口扫描:
nmap –sn -v 192.168.75.135/28
- 在命令提示符中运行以下语法以执行无 ping 扫描:
nmap –Pn -v 192.168.75.135/28
工作原理…
这些选项帮助用户简化其要求,以识别活动主机并进一步进行探测。使用这些不同的扫描选项,用户可以针对特定端口和协议获取主机的当前状态。大多数这些选项可以进一步配置高级探测技术,例如服务检测和操作系统检测的参数,以获取有关这些实例的更多信息。
如何识别打开的端口
以下是 Nmap 中存在的六种端口状态:
-
open:这意味着端口正在运行并且有一个服务正在访问它。因此,该服务可以接受根据端口上使用的协议和服务进行的任何连接。 -
closed:关闭的端口没有被任何服务访问,上面没有运行任何服务。因此,外部不会成功连接到这些端口。 -
filtered:此状态与由于网络中存在的数据包过滤机制而未收到响应的端口相关。这可能是由中间网络保护设备引起的。 -
unfiltered:此状态与 Nmap 无法确定端口是打开还是关闭有关。大多数 ACK 扫描标签端口处于未过滤状态;此外,SYN 和 FIN 等扫描可以帮助解决此类问题。 -
Open|filtered:当没有从端口收到响应时,Nmap 将此类型的端口分类。UDP、IP 协议、FIN、NULL 和 Xmas 扫描将此状态与端口相关联。 -
closed|filtered:此状态与 Nmap 无法确定端口是打开还是关闭有关。只有空闲扫描使用此状态。Nmap 为用户提供各种扫描选项,以便用户制作数据包以获取 Nmap 所需的结果,以便分类端口是打开还是关闭。大多数这些扫描类型仅允许管理员用户使用,因为他们可以创建和发送原始数据包。 -
-sS(TCP SYN 扫描):这也被称为半开放扫描,因为 TCP 在建立连接之前需要完成三次握手。Nmap 机器生成一个 TCP SYN 数据包,远程端口响应 TCP ACK,然后 Nmap 发送一个 RST 标志来破坏握手,从而阻止连接。如果 Nmap SYN 数据包收到 ACK 或 SYN 数据包作为响应,则端口被认为是打开的。 -
-sT(TCP 连接扫描):如果用户没有发送原始数据包的必要权限,或者 SYN 扫描不可行,将使用 TCP 连接扫描。顾名思义,Nmap 执行完整的三次握手并创建连接以将端口视为打开。 -
-sU (UDP 扫描): UDP 扫描向知名端口发送一个数据包,如53和61,然后可以在所有端口上执行。它向著名端口发送特定于协议的数据包,并向其余端口发送通用 UDP 数据包。如果扫描的端口返回 ICMP 不可达错误,则该端口已关闭。但如果端口没有响应,则标记为开放过滤。为了找出端口是否实际运行了服务并且是开放的,我们可以运行服务检测扫描。 -
-sY (SCTP INIT 扫描): SCTP INIT 扫描已经在如何执行主机发现部分讨论过。要执行此扫描,应该有一个正在运行的 SCTP 模块。 -
-sN; -sF; -sX (TCP NULL、FIN 和 Xmas 扫描): 为了进行更深入的探测,Nmap 提供了一个选项,可以制作带有不同标志的数据包,如 FIN、PSH 和 URG。如果没有设置任何标志,则称为 Null 扫描。如果设置了 FIN 标志,则称为 FIN 扫描,如果设置了所有三个标志,则称为 Xmas 扫描。 -
-sA (TCP ACK 扫描): TCP ACK 扫描已经在如何执行主机发现部分讨论过。 -
-sW (TCP 窗口扫描): TCP 窗口扫描通过接收到的 RST 数据包的 TCP 窗口字段的值来工作。大多数系统对于关闭端口的 RST 数据包具有零窗口值,对于打开端口则具有正值。一旦接收到 RST 数据包,它将把端口列为关闭而不是未过滤。 -
--scanflags (自定义 TCP 扫描):自定义 TCP 扫描允许用户在 TCP 数据包中设置各种标志,如 URG、SYN、ACK、FIN、PSH、URG 和 RST,从而允许用户为探测创建自定义数据包。 -
-sO (IP 协议扫描): 此扫描允许您定义正在执行扫描的协议,如 TCP、UDP、ICMP 和 IGMP,因此为探测创建了一个特定的数据包。 -
-b <FTP 中继主机> (FTP 反弹扫描): 这允许用户连接到一个 FTP 主机,然后将文件中继到另一个 FTP 主机,该主机在参数中提到。
如何做...
以下是步骤:
-
在命令提示符中打开
nmap。 -
在命令提示符中运行以下语法以执行 TCP SYN 扫描:
nmap –v –sS 192.168.75.137
- 在命令提示符中运行以下语法以执行 TCP 连接扫描:
nmap –v –sT 192.168.75.137
- 在命令提示符中运行以下语法以执行 TCP NULL 扫描:
nmap –v –sN 192.168.75.137
它是如何工作的...
这些选项帮助用户简化其需求,以识别开放的端口,从而执行进一步的攻击。使用这些不同的端口扫描选项,用户可以针对特定端口和协议获取端口的当前状态。可以通过获取确切的服务名称和版本来对端口进行进一步的侦察,我们将在本书的后续部分中看到。
如何管理规范和扫描顺序
Nmap 提供了各种选项,以随机或顺序指定要扫描的端口。所有 Nmap 扫描,默认情况下只扫描前 1,000 个端口,没有指定任何端口或提供任何特定的 NSE 脚本作为参数:
-
-p <端口范围>: 此选项可用于配置要以多种格式扫描的端口。它可以是一个范围或一个列表。语法的一般表示形式将是–p1-65535,如果要执行完整的端口扫描,或者–p1、2、3或4作为一个非连续的随机列表。 -
--exclude-ports <端口范围>: 当需要全端口扫描并排除一些端口时,准备要扫描的端口列表是一项繁琐的任务。在这种情况下,您可以使用排除端口标志来排除不需要扫描的端口。 -
-F (快速(有限端口)扫描): 快速扫描进一步将默认扫描的端口数量从 1,000 减少到 100。这将极大地减少扫描时间,从而提供更快的结果,正如其名称所示。 -
-r(不要随机化端口):默认情况下,Nmap 会对扫描的端口顺序进行随机化。此选项允许用户指示 Nmap 按照严格的顺序扫描端口。 -
--port-ratio <ratio>:使用比给定比例大的比例扫描 Nmap-services 文件中的所有端口。<ratio>必须在0.0和1.0之间。 -
--top-ports <n>:在排除了--exclude-ports指定的所有端口后,扫描 Nmap-services 文件中找到的<n>个最高比例的端口。<n>必须是1或更大。
如何做…
以下是步骤:
-
在命令提示符中打开
nmap。 -
在命令提示符中运行以下语法以在端口
0-100之间执行扫描:
nmap 192.168.75.137 –p0-100
- 在命令提示符中运行以下语法以在前
100个端口上执行快速扫描:
nmap –F 192.168.75.137
- 在命令提示符中运行以下语法以执行不带任何端口规范的扫描:
nmap 192.168.75.137
工作原理…
提供指定范围和列表中的端口的选项将允许用户优化其扫描,从而提供更快的结果,因为一般来说完整的端口扫描需要的时间是 1000 端口扫描或指定端口扫描的 10 倍。这也将允许用户找出具有特定开放端口的主机。
如何执行脚本和版本扫描
在进行渗透测试时,侦察对于通知测试的下一步非常重要。即使 Nmap 提供了开放端口和端口上运行的服务的版本,您仍需要知道正在运行的服务的确切版本或名称,以准备进一步的利用或获取对系统的进一步了解。
Nmap-service-probes 数据库包含特定的数据包构造技术,用于探测特定服务并分析从中收到的响应。Nmap 提供有关服务协议、应用程序名称、版本号、主机名、设备类型和操作系统系列的信息。有时还会确定服务是否开放连接,或者服务是否有默认登录可用:
-
-sV(版本检测):此标志使 Nmap 能够对特定主机执行版本检测。此标志有可以与其一起使用的选项。 -
--allports:Nmap 跳过了一些在建立连接时启用默认功能的端口。此选项将使用户跳过任何此类排除,并根据提供的语法执行全端口扫描。 -
--version-intensity <intensity>:定义了配置探测版本的强度。此标志的值在0-9之间, 默认值为7。值越高,服务版本准确性越高。 -
--version-light:用于配置轻量级探测以减少扫描时间。 -
--version-all:这将将探测强度设置为9,从而使扫描变慢,并且结果有可能更准确。 -
--version-trace:这将打印有关正在执行的版本扫描的大量信息。
如何做…
以下是步骤:
-
在命令提示符中打开
nmap。 -
在命令提示符中运行以下语法以在端口范围
0-100上执行服务扫描:
nmap –sV 192.168.75.137 –p0-100
- 在命令提示符中运行以下语法以在端口范围
0-100上执行服务扫描,并查看扫描的调试信息:
nmap –sV 192.168.75.137 –p0-100 –version-trace
工作原理…
版本扫描有助于用户获取运行的服务的近似版本和名称。例如,如果用户确定远程主机上运行的 FTP 的某个版本,他们可以搜索该版本的相关漏洞,因为会有版本相关的漏洞。
如何检测操作系统
Nmap 使用 TCP/IP 堆栈指纹识别进行操作系统检测。这是通过制作自定义 TCP 和 UDP 数据包并分析它们的响应来完成的。在生成各种此类探测并将结果与Nmap-os-db数据库中的 2600 多个已知操作系统指纹进行比较后,提供操作系统版本。指纹提供了供应商名称、操作系统名称、操作系统生成、设备类型,以及它们的通用平台枚举(CPE)表示。Nmap 还为用户提供了一个选项,如果获得的指纹不在 Nmap 操作系统签名数据库中,则可以提交该指纹:
-
-O(启用操作系统检测):这将为 Nmap 扫描启用操作系统检测。该标志进一步具有可以与其一起使用的选项。
-
--osscan-limit:当扫描主机列表时,此选项将通过跳过没有用于操作系统检测的开放端口的主机来减少扫描时间,从而为活动主机提供更快的结果。
-
--osscan-guess; --fuzzy:如果 Nmap 无法识别操作系统,它会尝试提供最接近的签名,签名之间的相似性应该非常高。这里列出的标志将允许 Nmap 更积极地猜测是否找到了确切的操作系统。
-
--max-os-tries:如果操作系统探测无法识别完美匹配,默认情况下 Nmap 会重试五次。这将允许用户限制这些尝试,从而节省大量扫描时间。
如何做…
以下是步骤:
-
在命令提示符中打开
nmap。 -
在命令提示符中运行以下语法以执行操作系统检测:
nmap –O 192.168.75.137
它是如何工作的…
识别远程主机上运行的操作系统对于任何漏洞扫描或渗透测试过程都非常有用,因为这将使您能够区分适用的漏洞和利用。
如何检测和绕过网络保护系统
Nmap 的基本功能是生成自定义数据包并分析它们的响应,一旦它们被发送到远程主机。这有时是不被防火墙和入侵预防和检测系统等网络保护系统允许的。在本教程中,我们将讨论一些可以用来绕过这些保护的方法。
-
-f(分段数据包):大多数防火墙执行有状态和无状态数据包检查,它们检查数据包的内容并根据其内容决定是否允许数据包通过。为了绕过这一点,Nmap 提供了一个选项来分段数据包,以便网络设备无法构造数据包以读取正确的内容,从而绕过保护。
-
--mtu(最大传输单元规范):这与创建不同大小的数据包的先前方法类似。使用 MTU,您可以指定数据包大小的倍数为
8,如8、16、24、32等。这将允许 Nmap 创建这个大小的数据包,从而绕过保护。 -
-D(伪装地址):这将允许 Nmap 从伪装地址生成数据包。这将使用多个源 IP 地址生成类似的流量,从而使网络保护系统难以确定流量生成的来源。
-
--source-port(源端口规范):如果网络设备配置为禁止从特定端口生成的流量,使用此选项设置一个随机端口号将允许您绕过网络保护系统上的此配置。
-
--data-length(随机数据附加):使用此选项,您可以向 Nmap 生成的数据包添加数据,然后创建一个包含大量不必要的随机数据的数据包,使网络保护系统难以理解和阻止流量。
-
--randomize-hosts(随机化主机):此选项将允许 Nmap 通过生成无模式流量来随机扫描主机,这可能会被网络保护系统忽略。
-
--spoof-mac(MAC 地址欺骗):此选项将允许用户绕过网络保护系统设置的任何 MAC 地址限制。
如何做…
以下是步骤:
-
在命令提示符中打开
nmap。 -
在命令提示符中运行以下语法以执行生成分段数据包的扫描:
nmap -f 192.168.75.137
- 在命令提示符中运行以下语法以执行扫描以生成具有 MTU 规范的数据包:
nmap –mtu 24 192.168.75.137
- 在命令提示符中运行以下语法以执行从所述 IP 地址进行的诱饵扫描:
nmap –D 192.168.75.138 192.168.75.137
- 在命令提示符中运行以下语法以执行扫描以向数据包附加随机数据:
nmap -v --data-length 25 192.168.75.137
它是如何工作的…
诸如防火墙、入侵预防和检测系统之类的网络保护系统可能会通过丢弃 Nmap 生成的探测数据包而产生误报。绕过技术可用于在侦察中获得更好的结果。
如何使用 Zenmap
Zenmap 是 Nmap 的图形界面。它是开源的,并且与 Nmap 相同的安装包一起提供:
有时,使用命令行工具对管理员来说可能很繁琐,因此 Zenmap 充当了替代的图形用户界面选项。
如何做…
以下是步骤:
-
从程序列表中打开 Zenmap。
-
在提供的文本字段中输入要扫描的目标,如下所示:
- 从配置文件下拉列表中选择快速扫描,如下所示:
- 这将使用
-F选项执行快速扫描,从而在不同选项卡中显示前 100 个端口的结果以及详细分析,如下图所示:
端口/主机选项卡显示了基于扫描中选择的选项的各种开放端口以及运行在其上的服务和版本:
拓扑选项卡显示了检测到的网络拓扑结构。这将帮助攻击者在扫描整个子网时绘制整个网络:
主机详细信息选项卡提供有关 MAC 地址、主机状态、开放和过滤端口数量等信息:
它是如何工作的…
一旦用户选择了扫描类型和 Zenmap 提供的各种其他选项,并继续扫描,Zenmap 界面将调用后端的 Nmap 引擎来执行类似于命令行界面的操作:
Zenmap 还提供了各种其他选项,用于过滤主机、比较结果、搜索扫描结果、保存扫描结果等。
第四章:漏洞扫描
在本章中,我们将介绍以下方法:
-
如何管理 Nessus 策略
-
如何管理 Nessus 设置
-
如何管理 Nessus 用户帐户
-
如何选择 Nessus 策略
-
如何使用 Nessus 执行漏洞扫描
-
如何管理 Nessus 扫描
介绍
在本章中,我们将介绍有关如何管理 Nessus 作为工具及其各个组件的各种方法。这些方法将帮助我们详细了解安装后需要执行的步骤,以便能够配置 Nessus 以执行各种网络扫描。
如何管理 Nessus 策略
我们已经在第二章,了解网络扫描工具中详细了解了 Nessus 策略。简而言之,Nessus 扫描策略包括各种设置和内容,这些内容在执行网络漏洞扫描或合规性审计时使用。任何 Nessus 用户都可以创建此扫描,并且可以供其他用户使用。这些策略可以根据用户的需求进行复制、导入和导出。策略导出的唯一限制是无法导出特定于主机的数据,例如 Nessus 审计文件和凭据详细信息。这些策略可作为资源菜单的一部分,在用户登录 Nessus Web 控制台后的主屏幕上提供:
当用户尝试创建新策略时,Nessus 提供预先存在的扫描模板,可以使用这些模板通过自定义扫描模板的参数来创建新模板:
扫描模板
准备工作
为了执行此活动,您必须满足计算机上的以下先决条件:
-
您必须安装 Nessus
-
您必须能够访问要执行扫描的主机的网络
要安装 Nesus,可以按照第二章,了解网络扫描工具中提供的说明。这将允许您下载兼容版本的 Nessus 并安装所有必需的插件。要检查您的计算机是否已安装 Nessus,请打开搜索栏并搜索Nessus Web 客户端。一旦找到并单击,它将在默认浏览器窗口中打开:
如果您确定 Nessus 已正确安装,可以直接从浏览器使用https://localhost:8834 URL 打开 Nessus Web 客户端。如果找不到 Nessus Web 客户端,应删除并重新安装 Nessus。有关删除 Nessus 和安装说明,请参阅第二章,了解网络扫描工具。如果找到了 Nessus Web 客户端,但无法在浏览器窗口中打开它,则需要检查 Nessus 服务是否在 Windows 服务实用程序中运行:
此外,您可以根据需要使用服务实用程序启动和停止 Nessus。为了进一步确认安装是否成功,您可以转到安装目录,那里您将能够查看和访问 Nessus 命令行实用程序:
如何做…
执行以下步骤:
-
打开 Nessus Web 客户端。
-
使用在安装期间创建的用户登录 Nessus 客户端:
- 在主屏幕左侧的资源下,单击策略选项,以查看策略屏幕:
- 单击创建新策略,然后单击基本网络扫描:
- 填写名称和描述的详细信息如下:
-
将组权限设置为“可以使用”。
-
导航到“发现”选项卡,并从下拉菜单中选择要执行的端口扫描类型:
- 导航到“评估”选项卡,并从下拉菜单中选择要执行的评估类型:
- 导航到“报告”选项卡,并根据您的要求选择 Nessus 的报告设置:
- 导航到“高级”选项卡,并根据您的要求从下拉菜单中选择扫描设置:
- 如果选择“自定义”,则“高级”选项卡下方将出现一个新的“常规”选项卡,以便您可以进一步自定义扫描设置:
- 保存扫描。这将带您到步骤 2中的策略屏幕,列出您创建的当前策略:
- 您可以在策略名称旁边勾选复选框,并在右上角点击“更多”下拉菜单,选择“复制”、“导出”和“删除”策略:
- 注意上一步,并单击“导出”将策略导出到您的系统上:
- 点击“导出”。一个
.nessus文件将被下载到您的系统上:
- 要导入此内容,请单击“导入”并上传下载的
.nessus文件:
- 已上传的策略现在在用户的策略屏幕上可见:
工作原理...
已创建的策略可用于由不同用户执行扫描。这些策略可以导入和导出到另一个 Nessus 环境中,从而避免创建新策略。
如何管理 Nessus 设置
我们已经在第二章中学到了关于 Nessus 设置的很多知识,了解网络扫描工具。简要回顾一下,在 Nessus 设置中,我们可以查看 Nessus 中提供的各种选项。Nessus 设置包括关于、高级、代理服务器、SMTP 服务器、自定义 CA 和密码管理。这些菜单还有进一步的子设置,具有特定的目的。我们将在*如何操作…*部分看看每个菜单可以配置哪些内容。
准备工作
这一部分与准备工作部分的如何管理 Nessus 策略食谱相同。
如何操作…
执行以下步骤:
-
打开 Nessus Web 客户端。
-
使用在安装过程中创建的用户登录 Nessus 客户端。
-
通过在主屏幕上点击“设置”选项直接显示“关于”菜单下的选项,导航到设置屏幕:
- 通过导航到“软件更新”菜单并选择您喜欢的更新频率和类型来管理软件更新设置:
- 通过导航到“主密码”部分设置主密码,以加密所有 Nessus 存储库、策略、结果和配置:
- 在“设置”下的左侧窗格中导航到“高级”选项卡。这允许用户配置 45 个不同的全局设置,这些设置适用于所有配置的策略和用户,例如日志文件、插件和路径设置:
- 在“设置”下的左侧窗格中导航到“代理服务器”选项卡。在这里,您可以为 Nessus 配置代理服务器以转发请求。当被扫描的主机和 Nessus 之间有代理服务器时使用:
- 在左侧窗格中导航到 SETTINGS 下的 SMTP Server 选项卡。这允许用户为用户需要 Nessus 发送的任何电子邮件通知配置 SMTP 设置,例如扫描完成后:
- 在左侧窗格中导航到 SETTINGS 下的 Custom CA 选项卡。在这里,用户可以上传自定义 CA 签名,该签名将用于避免 SSL 相关发现中的误报:
- 在左侧窗格中导航到 SETTINGS 下的 Password Mgmt 选项卡。在这里,管理员可以配置所有用户和组应遵循的密码策略:
它是如何工作的...
这些是为所有用户配置的全局设置,并允许管理员管理所有用户的 Nessus 控制台。这些设置对于一些功能的功能也至关重要,例如电子邮件通知和代理服务器配置。
如何管理 Nessus 用户帐户
Nessus 是一个多用户环境,其中一个管理员用户可以创建多个用户帐户并配置全局设置,并允许他们配置本地策略设置。为了能够使用用户管理,Nessus 提供了两个菜单选项:My Account 和 Users。 My Account 用于管理您自己的帐户,而 Users 选项卡用于管理员管理/创建/删除用户。在本食谱中,我们将看到这些设置的各个组件以及如何使用这些组件来管理 Nessus 用户。
准备工作
此部分与如何管理 Nessus 策略食谱中的准备工作部分相同。
如何做…
执行以下步骤:
-
打开 Nessus Web 客户端。
-
使用在安装期间创建的用户登录 Nessus 客户端。
-
通过单击主屏幕下的 ACCOUNTS 部分导航到我的帐户屏幕,该部分有两个子选项,帐户设置和 API 密钥:
此页面上的设置可用于更改管理员用户的密码,并设置可由电子邮件通知功能使用的电子邮件 ID,并保存设置。
- 通过单击 Account Settings 旁边的 API Keys 选项卡导航到 API Keys 选项卡。在这里,您可以配置 API 密钥以与 Nessus rest API 进行身份验证。您可以通过单击 Generate 按钮创建新的 API 密钥,如下所示:
确保将这些密钥存储在私人文件夹中,并应用所有与密钥管理相关的安全最佳实践。
- 通过单击主屏幕下的 ACCOUNTS 部分导航到用户屏幕。这将显示当前在 Nessus 中存在的用户:
- 单击右上角的 New User 创建新用户并填写详细信息:
在上面的屏幕截图中,您可以观察到管理员可以将用户角色分配为标准或系统管理员。让我们分配标准角色并检查用户权限之间的差异:
已创建了一个名为show_user_create的新用户,具有标准权限。您可以清楚地看到用户权限之间的差异,如下图所示。在这里,标准用户没有用户创建和帐户管理权限。
它是如何工作的...
用户管理允许管理员创建新用户并管理其自己的帐户。这允许执行各种扫描的分离,而不是必须使用一个单一帐户执行所有扫描。这是因为 Nessus 还允许同时登录。具有不同用户扫描的一个帐户使用户难以在给定时间点识别其扫描,尽管它们可以移动到不同的文件夹中。
如何选择 Nessus 扫描模板和策略
Nessus 允许用户将其扫描定制到最低程度,甚至允许他们过滤要使用的插件,并禁用不使用的插件。每次扫描都有其独特之处。例如,如果用户想要执行凭证扫描,他/她不能使用主机发现扫描模板来创建新策略。为了执行凭证扫描,用户必须选择基本网络扫描或具有用户输入凭据以对要扫描的机器进行身份验证的高级扫描。因此,在创建策略之前选择适当的扫描模板非常重要,并且在创建不同策略后选择适当的策略也很重要。第二个选项是选择先前创建的模板或导入现有模板,该模板可用于执行扫描。
用户还可以通过点击新扫描并选择现有模板来即时创建策略。这种方法的唯一缺点是您无法保存使用自定义设置的策略或扫描模板。您将不得不创建一个类似的新策略或使用相同的主机重新扫描,这将创建扫描历史。这会在重新访问扫描结果时产生复杂性。在本教程中,我们将研究免费版本中可用的扫描模板和用户可以创建的策略。
准备工作
此部分与“准备工作”部分相同,即“如何管理 Nessus 策略”教程。
如何做…
执行以下步骤:
-
打开 Nessus Web 客户端。
-
使用在安装期间创建的用户登录 Nessus 客户端。
-
在主屏幕的资源部分下导航到策略选项卡。这将列出所有用户创建的预设策略(只配置为与所有人共享):
-
您可以从现有策略中选择,也可以导入策略。
-
如果没有现有的策略满足您的要求,您可以创建一个新策略:
-
- 如果用户选择高级扫描,他们可以配置策略中的每个参数,从而定义策略的性质以及是否应该是网络/网络应用程序/恶意软件扫描。评估菜单使其与其他扫描模板不同:
除了高级扫描之外,没有其他扫描模板可以配置插件。
-
- Badlock 发现模板允许用户检查远程 Windows 主机是否容易受到 Samba Badlock 漏洞的影响:
-
- 基本网络扫描模板用于执行网络级端口扫描,并识别远程主机的服务级漏洞,无论是否具有凭据。
-
凭证补丁审核扫描可用于检查远程主机的补丁级别。
-
Drown 检测模板可用于检测远程主机是否容易受到 Drown 攻击的影响:
-
- 主机发现模板用于从用户提供的大范围或 IP 地址列表中识别活动主机。
-
Intel AMT 安全绕过扫描模板用于识别远程主机是否容易受到 Intel AMT 安全绕过的影响:
-
- 内部 PCI 网络扫描模板用于对远程主机执行 ASV 扫描,以查明主机配置是否符合 PCI 标准。
-
恶意软件扫描模板用于在 Windows 和 Unix 系统上执行恶意软件检测扫描。在提供凭据时效果更好。
-
策略合规性审核模板可用于对上传或现有的 Nessus 审核文件执行基线配置审核。我们将在未来的章节中看到这个教程。
-
Shadow Brokers 扫描模板用于检查远程主机是否容易受到 Shadow Broker 泄露中描述的攻击:
-
- Spectre、Meltdown 和 WannaCry 勒索软件模板用于验证远程主机是否容易受到相应攻击。
-
Web 应用程序模板用于通过提供远程 HTTP 身份验证详细信息,执行托管在远程主机上的 Web 应用程序扫描。
-
选择特定模板后,创建并保存策略,如“如何管理 Nessus 策略”中所示。
-
创建策略后,您可以在“新扫描”任务的策略屏幕下的用户创建的策略部分中选择进行扫描。
- 在创建新的扫描时,您也可以在创建新的扫描时选择模板并填写详细信息。
工作原理…
为了正确执行扫描,选择适当的策略同样重要。这将帮助用户获得正确的结果,并在确认和报告漏洞时节省大量时间。例如,如果用户想要了解开放端口,而他/她进行高级扫描,他/她将获得配置审核、补丁审核和许多不必要的插件的结果。相反,如果用户选择了基本网络扫描,他/她将只会找到开放端口和影响这些主机上运行的服务的漏洞列表。
如何使用 Nessus 执行漏洞扫描
通过遵循前面的步骤,用户应该能够理解策略的创建和选择。一旦确定了策略,用户所需做的就是确定要扫描的主机,选择策略,然后单击“扫描”。对于单个主机的非凭证扫描,Nessus 的一般扫描时间将需要几分钟。随着主机和端口数量的增加,扫描所需的时间也会增加。
在执行 Nessus 扫描之前,通常建议通知利益相关者,因为这样可以在发生攻击时进行调查,也可以通知网络管理员网络带宽利用率是否比平时高。
准备工作
这一部分与“准备工作”部分相同,该部分也需要用户学习本章中的先前内容。
如何操作…
执行以下步骤:
-
打开 Nessus Web 客户端。
-
使用在安装过程中创建的用户登录 Nessus 客户端。
-
单击“创建新的扫描”。
-
选择“基本网络扫描”模板,并填写扫描所需的详细信息,如名称、描述、用于扫描的远程主机,并且对于非凭证扫描,将凭证留空:
您可以逐行输入要扫描的主机,也可以用逗号分隔。您还可以上传要扫描的主机列表:
您还可以通过在“计划”菜单中启用配置选项来安排将来的时间和日期进行扫描:
- 启动扫描:
- 完成扫描后,打开扫描以查看结果:
此外,要查看漏洞的名称,可以单击条或“漏洞”选项卡:
- 选择“基本网络扫描”模板,并填写扫描所需的详细信息,如名称、描述、用于扫描的远程主机,以及用于凭证扫描的凭证:
我们将输入基于密码的 SSH 认证的凭据,因为主机是 Linux 平台。Nessus 还支持基于 Windows 的认证:
- 启动扫描:
- 扫描完成后,打开扫描以查看结果:
此外,要查看漏洞的名称,您可以单击条形图或“漏洞”选项卡:
Nessus 还为 Nessus 应提到的特定补救措施提供单独的选项卡。您还可以查看扫描历史记录:
- 如果扫描未按照您的要求执行,您不需要重新执行整个扫描。相反,您可以使用扫描结果页面右上角的“配置”选项来重新配置扫描设置并启动新的扫描:
- 这将创建使用相同模板执行的扫描的历史记录。您可以单击历史记录中要查看结果的相应扫描,从而获取扫描结果:
同样,您可以通过在新扫描屏幕上选择“用户定义”模板来使用用户定义的策略执行扫描:
您可以通过从下拉菜单中选择相应的格式,将执行的扫描报告导出为 Nessus 中可用的不同格式。我们将在接下来的章节中进一步了解报告。
它是如何工作的…
Nessus 扫描有各种选项,如有凭证、无凭证、合规审计和 ASV 扫描。通过执行这些自动化扫描,简单的网络工程师将能够确定组织的 IT 基础设施的安全状况。
如何管理 Nessus 扫描
执行完毕后,Nessus 扫描可以进一步分隔到文件夹中,以避免不同的扫描被聚集在一起。这也使审计人员可以轻松访问结果。用户可以在 Nessus 上创建/删除/移动/复制扫描。在本食谱中,我们将看看用户可以在已完成的 Nessus 扫描上执行的各种操作。
准备就绪
这一部分与“如何管理 Nessus 策略”食谱中的“准备就绪”部分相同。本食谱还要求用户已经学习并完成了本章中的先前食谱。
如何做…
执行以下步骤:
-
打开 Nessus Web 客户端。
-
使用在安装过程中创建的用户登录 Nessus 客户端。
-
您可以通过在主屏幕右上角使用“新建文件夹”选项来创建新文件夹:
- 新文件夹创建后,用户可以进入文件夹并创建新的扫描,以便结果显示在该文件夹中,不会出现在主屏幕上:
- 您还可以通过选择扫描并单击 Nessus 主屏幕右上角的“移至文件夹”选项,将现有的已完成扫描复制或移动到创建的文件夹中:
这将在文件夹中创建扫描的副本,并将主扫描报告保留在主屏幕上:
- 扫描在“测试文件夹”中创建的副本:
将扫描移至“测试文件夹”将从主屏幕中删除扫描,并将原始扫描移至文件夹中:
现在,您可以删除移至“测试文件夹”的扫描:
- 您还可以通过选择特定的扫描并将其移至垃圾箱来删除扫描:
它是如何工作的…
当默认的 Nessus 文件夹中有大量扫描结果时,对扫描结果进行排序可能会变得乏味。相反,前面的选项将帮助用户对 Nessus 扫描进行分类,并维护文件夹,以便他们可以随时访问结果。
第五章:配置审计
在本章中,我们将涵盖以下内容:
-
介绍合规性扫描
-
选择合规性扫描策略
-
介绍配置审计
-
执行操作系统审计
-
执行数据库审计
-
执行 Web 应用程序扫描
介绍合规性扫描
在本章中,我们将介绍有关 Nessus 的各种用途的重要性,例如进行认证扫描和执行策略合规性审计,如操作系统审计、数据库审计和应用程序审计。这是网络安全白盒评估的重要部分,因为这使内部管理员或审计员能够了解组织中系统的安全状况。
选择合规性扫描策略
整个合规性扫描或审计与典型的脆弱性扫描不同;它完全依赖于插件和 Nessus 审计文件。我们已经介绍了如何在第二章中下载和更新插件的基础知识,了解网络扫描工具。现在我们将进一步揭示有关插件和 Nessus 审计文件的详细信息。在这个示例中,我们将看看如何从 Nessus 预装的一组策略中选择正确的基线策略,以执行 Linux 主机的配置审计。
插件
每个插件都包含用于检查软件、服务和操作系统的特定版本或多个版本的特定脆弱性的语法。一组用于类似操作系统/服务/软件的插件被分组为插件系列,如下所示:
这些插件系列扩展为不同的插件,每个插件执行特定的检查。用户无法手动添加插件;他们只能在 Tenable 提供时下载或更新新的或缺失的插件。每个插件都有一组参数,以帮助用户了解插件。这些参数将在下一节中更详细地讨论。
简介
该部分包括有关脆弱性的简要信息,并充当脆弱性的标题。
描述
本节提供了有关确切组件和版本(如果可用)的脆弱性的更深入了解,以及有关脆弱性的详细信息。这使用户能够了解服务或软件的哪个部分是脆弱的,以及整体的脆弱性。
解决方案
该部分为用户提供了有关补救措施的详细信息,例如需要执行的配置更改或代码更改,或者提供了一个由 Tenable 或其他可信来源的文章的链接,介绍如何减轻脆弱性。
插件信息
该部分包括区分该插件与其他插件的参数。参数包括 ID、版本、类型、发布日期和修改日期。这些参数充当插件的元数据。
风险信息
该部分提供了有关脆弱性严重程度的信息,以及通用漏洞评分系统(CVSS)数据,这是全球公认的评分脆弱性的标准之一。严重性评级从关键到信息;CVSS 评分在 1-10 的范围内。
脆弱性信息
本节提供了有关插件适用的平台的详细信息,使用通用平台枚举(CPE)索引,该索引目前由国家漏洞数据库(NVD)维护。此外,它还提供了有关脆弱性的可利用性的信息,使用可利用性参数,如可用的利用和利用的便利性。它还包括插件的发布日期。
参考信息
本节包括有关由各种已知机构发送给插件的漏洞的参考 ID 的信息,例如 NVD 和 Secunia。这些参考包括 EDB-ID、BID、Secunia 和 CVE-ID。
每个插件、插件系列甚至所有插件都可以根据用户的要求启用和禁用,从而允许用户减少扫描时间并仅使用必要的插件执行扫描。以下截图显示了一个单个插件被禁用:
以下截图显示了一个完整的插件系列被禁用:
以下截图显示了使用屏幕右上角的“禁用所有”按钮禁用了所有插件:
执行合规性扫描所需的插件的非常重要的组件是策略合规性插件。这些插件将与提供的审计文件一起使用,以识别操作系统级、服务级和配置级的漏洞。例如,如果您想对 Windows 执行合规性扫描,可以禁用所有其余插件,仅启用 Windows 合规性检查,如下所示:
合规标准
不同领域有许多必须遵循的标准,组织必须符合这些标准,以执行某些业务操作或确保其信息的安全。例如,大多数支付网关或任何与支付相关的功能都必须根据 PCI 标准进行测试,才能被认为是安全的。
以下是市场上一些标准,相关组织应该符合这些标准:
-
ETSI 网络安全技术委员会(TC CYBER)
-
ISO/IEC 27001 和 27002
-
CISQ
-
DoCRA
-
NERC
-
NIST
-
ISO 15408
-
RFC 2196
-
ANSI/ISA 62443(前身为 ISA-99)
-
ISA 安全合规性研究所(ISCI)符合评估计划
-
ISCI 认证产品
-
ISO 17065 和全球认证
-
化学、石油和天然气行业
-
IEC 62443
-
IEC 62443 认证计划
-
IASME
-
银行监管机构
审计员创建一个清单,以识别与行业标准基线的差距,从而使组织能够填补差距以达到合规并获得认证。Nessus 中的合规模块以类似的方式工作。它用于识别配置差距、数据泄漏和对各种基准的合规性。
Nessus 合规模块提供默认的审计文件,以检查操作系统、网络设备、软件和服务的合规性。Nessus 预装了用于互联网安全中心(CIS)、健康保险可移植性和责任法案(HIPAA)和Tenable 网络安全(TNS)的审计文件。它还允许用户使用Nessus 攻击脚本语言(NASL)编写自定义审计文件。我们将在第七章中看到这方面的定制和优化,了解 Nessus 和 Nmap 的定制和优化。
准备就绪
为了执行这项活动,您必须满足计算机上的以下先决条件:
-
安装 Nessus
-
获取对要执行扫描的主机的网络访问
为了安装 Nesus,您可以按照第二章中提供的说明,了解网络扫描工具。这将允许您下载兼容版本的 Nessus 并安装所有必需的插件。为了检查您的计算机是否已经安装了 Nessus,请打开搜索栏并搜索 Nessus Web 客户端。一旦找到并点击,它将在默认浏览器窗口中打开:
如果您确定 Nessus 已正确安装,可以直接在浏览器中使用https://localhost:8834 URL 打开 Nessus Web 客户端。如果找不到 Nessus Web 客户端,您应该删除并重新安装 Nessus。有关删除 Nessus 和安装说明,请参阅第二章,了解网络扫描工具。如果找到了 Nessus Web 客户端,但无法在浏览器窗口中打开它,您需要检查 Windows 服务实用程序中是否正在运行 Nessus 服务,如下所示:
您还可以使用服务实用程序根据需要启动和停止 Nessus。为了进一步确认安装,您可以导航到安装目录以查看和访问 Nessus 命令行实用程序:
建议始终具有管理员或根级凭据,以便为扫描仪提供对所有系统文件的访问权限。这将允许扫描仪执行更深入的扫描,并生成比非凭证扫描更好的结果。策略合规模块仅在 Nessus 的付费版本(如 Nessus 专业版或 Nessus 管理器)中可用。对于这些版本,您将需要从 Tenable 购买激活密钥,并在设置页面中更新,如下所示:
单击编辑按钮打开窗口并输入从 Tenable 购买的新激活码:
为了测试扫描,我们需要安装一个虚拟机。为了运行虚拟机,我建议使用可以从www.vmware.com/products/workstation-pro/workstation-pro-evaluation.html下载并安装的 VMware。
对于测试系统,读者可以从information.rapid7.com/download-metasploitable-2017.html下载 Metasploitable(Rapid 7 提供的一个易受攻击的虚拟机)。按照以下步骤打开 Metasploitable。这提供了各种组件,包括操作系统、数据库和易受攻击的应用程序,这将帮助我们测试当前章节中的方法:
- 解压下载的 Metasploitable 软件包:
- 使用安装的 VMware Workstation 或 VMware Player 打开
.vmx文件:
- 使用
msfadmin/msfadmin作为用户名和密码登录:
如何操作…
执行以下步骤:
-
打开 Nessus Web 客户端。
-
使用安装期间创建的用户信息登录 Nessus Web 客户端。
-
单击策略选项卡并选择创建新策略。
-
选择高级扫描并填写所需的详细信息:
- 导航到合规选项卡并搜索 Nessus 中可用的 Linux 基准:
这显示了不同版本 Ubuntu 的各种基准。但是为了选择适当的配置文件,我们首先必须确定测试机上运行的 Ubuntu 版本。
- 在测试机上使用
lsb_release -a命令显示正在运行的 Ubuntu 版本:
很明显,远程测试机正在运行 Ubuntu 8.04,因此我们必须选择可用审核文件中的最低版本以获得近似结果。
- 选择 Ubuntu 12.04 的 CIS 基准文件,因为这是可用的最低版本:
如果有特定的服务器/位置需要配置,可以选择更改可用的参数,例如 NTP 服务器地址、Hosts.allow 网络、Shadow Group ID、Syslog 主机地址和 Banner 文件位置。此外,如前面的屏幕截图所示,还必须输入远程 Ubuntu 主机的 SSH 凭据。
它是如何工作的...
选择适当的 Nessus 文件对于执行任何合规性扫描非常重要,因为 NASL 中的底层语法是根据所选择的操作系统定制的每个审计文件。Windows 审计文件在 Linux 上不起作用,反之亦然。为了确保选择了正确的策略,建议始终检查操作系统版本到最后一个小数点,并选择最接近的可用小数点的策略。
引入配置审计
配置审计是一种信息安全程序,您在其中准备一个基线配置,然后将其与当前配置进行比较,以执行差距分析,然后努力关闭这些差距,尽可能接近基线配置。关闭这些差距并实现最大加固状态的过程称为风险或漏洞缓解。
大多数公司和组织依赖强大的配置来确保系统的安全性。一个经过良好加固和修补的系统对于黑客来说是一场噩梦。随着许多公司选择将他们的业务迁移到云上,配置在安全方面的作用比以往任何时候都更加重要。网络设备的简单疏忽,允许默认用户登录,将帮助黑客在几分钟内获得对整个网络的访问权限。
常规应用程序有两个主要组件:前端和后端。前端是最终用户访问应用程序的可见资源。任何对最终用户不可见或不可访问的内容可以被视为后端。这包括 Web 服务器、应用服务器、数据库服务器、路由器、防火墙和入侵预防和检测系统。所有这些设备可能在物理上是不同的,或者由单个服务器集群处理。所有这些都是可以安装在任何物理服务器上的软件;也就是说,Apache Web 服务器可以安装在带有 Windows 操作系统的普通计算机上。一个简单的 XAMPP 软件包安装了一个 Web/应用服务器、一个数据库和一个应用框架。所有这些不同的组件都带有不同的配置——在应用程序架构的任何层级上的简单配置错误都可能危及整个系统的安全性:
配置审计将确保任何组织的网络安全结构得到加强。对基础设施中网络设备和服务的配置更改进行持续监控也有助于确保设备和服务器的安全配置。以下是一些可以采取的步骤,以确保服务器的严格加固:
-
检测配置中的任何动态更改
-
应对新的或更改的配置进行配置审计
-
严格审查设备和服务器日志
-
应对网络的端到端进行审计,从 Web 应用程序到数据库
在配置审计期间可以执行四种主要类型的审计,如下节所述。
数据库审计
作为数据库审计的一部分,建议对数据库配置、模式、用户、权限和结构进行审计。可以使用各自制造商制定的安全配置指南创建基线,并分析配置中存在的差距。以下是一些示例数据库配置检查:
-
认证方法
-
撤销公共角色的不必要权限和角色
-
限制运行时设施的权限
-
确保在
tnsnames.ora文件的ADDRESS参数中指定 TCP 作为PROTOCOL
网络设备审计
作为网络配置审计的一部分,建议对防火墙配置、防火墙规则库、路由器配置、Web 应用程序防火墙签名和电子邮件客户端配置进行审计。这些是任何网络中的基本组件,因为防火墙中的一个故障规则可能会将整个网络暴露给互联网。以下是要在网络设备上执行的一些检查:
-
认证方法
-
访问控制列表审查
-
通信安全
操作系统审计
作为操作系统审计的一部分,始终建议审计访问控制、安全设置、错误报告、密码策略和文件夹权限。这些检查将在同一类别中,或多或少,除了实际获取和审计操作系统的方法。以下是要执行的一些操作系统检查:
-
认证方法
-
密码策略
-
分区和数据隔离
-
公共股份
应用程序审计
应用程序审计是配置和合规审计中要执行的主要组件之一。与仅检查配置使用不同,始终建议搜索应用程序中由于构建不良的模块和服务而导致的安全漏洞;例如,允许用户直接将用户输入到 SQL 查询中而没有任何消毒的应用程序模块。这可能允许具有 SQL 基本知识的攻击者构建查询并在没有直接访问数据库的情况下转储整个数据库。每个人都理解端到端安全的重要性非常重要。
以下是 OWASP 列出的前 10 个最严重的 Web 应用程序安全风险:
-
注入
-
破损的认证
-
敏感数据暴露
-
XML 外部实体(XXE)
-
破损的访问控制
-
安全配置错误
-
跨站脚本(XSS)
-
不安全的反序列化
-
使用已知漏洞的组件
-
日志记录和监控不足
执行操作系统审计
在先前的食谱中,我们已经对配置审计的需求以及它们对更安全网络的贡献有了很多了解。在这个食谱中,我们将看看如何使用 Nessus 的合规扫描功能来执行操作系统的配置审计。
准备就绪
这个食谱的准备就绪部分与选择合规扫描策略部分的准备就绪部分相同。这个食谱还要求您已经学习并练习了本章中的先前食谱。
如何做…
执行以下步骤:
-
打开 Nessus Web 客户端。
-
使用在安装期间创建的用户详细信息登录 Nessus Web 客户端。
-
按照选择合规扫描策略食谱中的步骤。
-
导航到凭据选项卡,并选择要输入的 SSH 凭据,因为这是一个 Ubuntu 测试系统。选择基于密码的身份验证,并填写用户名和密码(不安全!)字段,如下所示:
如果在任何 Linux 系统中禁用了远程根登录,您可以以低特权用户登录并提升为根特权,因为 Nessus 提供了一个提升特权的选项。您只需从下拉菜单中选择 Root 并输入 root 密码。Nessus 将以低特权用户身份登录,并在后台运行su命令以使用root登录:
- 现在导航到插件选项卡,并仅启用此扫描所需的插件-如本书中早期提到的,这将减少扫描时间并提供更快的结果:
- 然后保存策略,如下所示:
- 导航到扫描,选择新扫描,然后在扫描模板屏幕上选择用户定义,找到您创建的 Linux 合规扫描策略:
选择策略并输入所需的详细信息,如名称、描述和目标列表。要识别测试系统的 IP 地址,请运行ifconfig命令:
- 输入
192.168.75.137IP 地址并从下拉菜单中选择启动:
- 扫描完成后,点击打开扫描,如下所示:
打开结果后应该会出现四个选项卡:
-
主机
-
漏洞
-
合规
-
历史
这些选项卡显示在以下截图中:
导航到漏洞列。这将显示远程 Ubuntu 主机中缺失的补丁:
每个由 Nessus 列出的漏洞都包括以下部分,以及额外的插件详细信息,以帮助用户更好地理解漏洞并通过应用推荐的解决方案来减轻风险:
-
描述
-
解决方案
-
另请参阅
-
输出
-
端口
-
主机
导航到合规选项卡,检查使用 CIS 基准审计文件的配置中的差距:
每个合规性包括以下部分和参考信息,以帮助用户了解基线和当前配置之间的差距:
-
描述
-
解决方案
-
另请参阅
-
输出
-
审计文件
-
策略值
-
端口
-
主机
漏洞扫描和合规扫描之间的主要区别是评级。漏洞扫描的结果以严重程度报告:高、中、低和信息风险,基于包括 CVSS 分数和利用难度在内的多个因素。相比之下,在合规扫描中,观察结果报告为失败、警告和通过,通过表示配置是安全的,失败指向配置中的差距。
它是如何工作的...
操作系统的配置审计允许用户了解操作系统配置中存在的差距。如今,简单的 USB 开放访问就可能导致网络被攻陷,鉴于市场上提供的复杂病毒、恶意软件和广告软件。Windows 中的 WannaCry 恶意软件就是一个例子,其中过时的 SMB 版本允许攻击者针对全球数百万台机器。因此,作为例行程序,将操作系统的配置包括在审计中是非常必要的,以便完全安全和合规。
执行数据库审计
在之前的示例中,我们已经看到了对配置审计的需求以及它对更安全网络的贡献。在这个示例中,我们将使用 Nessus 的合规扫描功能来执行 MariaDB 数据库的配置审计。
准备工作
本示例的准备工作部分与选择合规扫描策略部分的准备工作部分相同。此外,我们将使用 Kali Linux 操作系统而不是 Metasploitable 虚拟机作为测试设置。您可以从www.offensive-security.com/kali-linux-vm-vmware-virtualbox-image-download/下载 Kali Linux ISO。下载并解压缩软件包以找到.vmx文件,就像选择合规扫描策略部分的准备工作部分一样。
使用以下语法启动 MySQL 服务并为默认用户 root 设置密码,以便我们可以使用相同凭据远程登录到服务执行审计:
-
- 服务 myql start:启动 MySQL 服务
-
- mysql –u root:使用 root 用户登录 -
- use mysql:选择 MySQL 表 -
- update user set password=PASSWORD("NEW-ROOT-PASSWORD") where User='root';:更新 MySQL 表中 root 用户的密码
这应该看起来像下面这样:
如何做…
执行以下步骤:
-
打开 Nessus Web 客户端。
-
使用在安装期间创建的用户详细信息登录 Nessus Web 客户端。
-
单击策略选项卡,选择创建新策略。
-
选择高级扫描并填写以下必要的细节:
- 转到合规标签并搜索 Nessus 中可用的 MySQL 基准:
-
准备就绪部分的屏幕截图显示远程主机运行 MariaDB 10.1.26;因此,我们可以得出兼容版本为 MySQL 5.6,如
mariadb.com/kb/en/library/mariadb-vs-mysql-compatibility/所示。 -
选择 CIS MySQL 5.6 作为 Linux OS 的策略执行合规扫描:
如果需要,可以更改策略的默认路径。
- 转到凭据选项卡,从下拉菜单中选择数据库,并输入必要的细节:
- 转到插件选项卡,禁用所有不需要的插件进行扫描:
-
保存策略并转到扫描页面创建新扫描。
-
转到用户定义策略部分,查找为数据库合规性扫描创建的策略:
- 选择策略并填写必要的细节,如扫描名称、描述和要扫描的目标:
可以使用ifconfig命令获取远程主机的 IP 地址。在目标字段中输入192.168.75.136 IP 地址,然后选择启动开始扫描:
工作原理…
数据库配置审计涵盖了从登录到用户授予的模式级访问的广泛检查范围。先前的扫描技术有助于突出 MySQL 服务器中缺少的补丁和未通过的合规性检查。
执行 Web 应用程序扫描
Nessus 还支持 Web 应用程序扫描。这可以用来审计和识别 Web 应用程序中的漏洞。
Nessus 插件足够有效,可以从 OWASP 十大漏洞中识别关键漏洞。Nessus 提供选项供用户提供认证细节,以执行详细扫描并报告各种漏洞。作为 Web 应用程序测试的一部分,Nessus 还扫描应用程序服务器、Web 服务器和数据库中的漏洞;即端到端的漏洞扫描。
准备就绪
本食谱的准备就绪部分与选择合规性扫描策略部分的准备就绪部分相同。本食谱还要求您已经学习并练习了本章中的先前食谱。Metasploitable 包含多个易受攻击的应用程序。在本食谱中,我们将使用 DVWA 来演示 Nessus 执行 Web 应用程序测试的能力:
DVWA 应用程序的默认登录凭据为用户名字段中的admin,密码字段中的password,如下所示:
如何做…
执行以下步骤:
-
打开 Nessus Web 客户端。
-
使用安装期间创建的用户详细信息登录 Nessus Web 客户端。
-
导航到策略页面,并通过选择 Web 应用程序测试扫描模板创建新策略。
-
填写策略的名称并导航到凭据:
- 选择 HTTP 身份验证并根据要审计的应用程序填写剩余的参数:
对于此身份验证表单,有多个参数需要填写,例如用户名、密码、登录页面路径、登录提交页面路径、登录参数、检查身份验证页面路径以及用于验证成功身份验证的正则表达式。大多数这些参数可以通过花几分钟观察应用程序的工作方式以及浏览器控制台发送到服务器的请求来获得:
-
保存策略并导航到扫描页面创建新扫描。
-
导航到用户定义的策略,找到 Web 应用程序审计策略文件:
- 选择适当的策略并填写详细信息,如名称、描述和目标。您可以简单地输入主机的 IP 地址或域名,不带任何前缀或后缀路径:
-
启动扫描并等待其完成。
-
扫描完成后,打开它以查看以下信息:
- 导航到漏洞选项卡以检查报告的观察结果:
每个漏洞包括以下部分,以及其他插件详细信息,以帮助您了解漏洞,如下所示:
-
描述
-
解决方案
-
另请参阅
-
输出
-
端口
-
主机
它是如何工作的...
Nessus 插件测试 Web 应用程序与配置的测试用例,并报告失败的漏洞以及相应的输出。报告还揭示了扫描器执行的漏洞利用的大量信息,以帮助用户重新创建问题并创建更好的缓解方法。Nessus Web 应用程序扫描器无法执行任何业务逻辑检查,因为它缺乏这方面的决策算法。因此,最好只使用 Nessus Web 应用程序扫描器模块进行快速测试,然后对应用程序执行全面的渗透测试以获得更好的结果。