4、渗透测试:漏洞分析(Pentest-Standard)

admin 2023年1月30日18:46:47评论23 views字数 8495阅读28分19秒阅读模式

关注公众号,回复“河南等保1101” 获取“Metasploit渗透测试指南:修订版”PDF版 


渗透测试:漏洞分析

测试

漏洞测试是发现系统和应用程序中的缺陷的过程,攻击者可以利用这些缺陷。这些缺陷的范围可以从主机和服务配置错误或不安全的应用程序设计。尽管用于查找缺陷的过程各不相同,并且高度依赖于要测试的特定组件,但一些关键原则适用于该过程。

在进行任何类型的漏洞分析时,测试人员应根据适用的深度和广度正确确定测试范围,以满足所需结果的目标和/或要求。深度值可以包括评估工具的位置、身份验证要求等。例如;在某些情况下,验证缓解措施的测试目标可能是到位且有效,并且漏洞无法访问;而在其他情况下,目标可能是使用经过身份验证的访问测试每个适用的变量,以发现所有适用的漏洞。无论您的范围如何,都应量身定制测试以满足深度要求,以实现您的目标。应始终验证测试深度,以确保评估结果符合预期(即所有计算机是否都进行了身份验证等)。除了深度之外,在进行漏洞测试时还必须考虑广度。广度值可以包括目标网络、分段、主机、应用程序、清单等内容。最简单的元素是,您的测试可能是查找主机系统上的所有漏洞;而在其他情况下,您可能需要在给定清单或边界中查找主机上的所有漏洞。此外,应始终验证测试的广度,以确保您符合测试范围(即,扫描时库存中的每台机器是否都处于活动状态?如果没有,为什么)。

4、渗透测试:漏洞分析(Pentest-Standard)

积极

主动测试涉及与正在测试的安全漏洞的组件进行直接交互。这可以是低级组件,例如网络设备上的 TCP 堆栈,也可以是堆栈上更高的组件,例如用于管理此类设备的基于 Web 的界面。与目标组件交互有两种不同的方式:自动和手动。

自动化

自动化测试利用软件与目标交互,检查响应,并根据这些响应确定是否存在漏洞。自动化流程有助于减少时间和劳动力需求。例如,虽然连接到系统上的单个 TCP 端口以确定它是否打开以接收传入数据很简单,但如果手动完成,则对可用的 65,535 个可能端口中的每个端口执行一次此步骤需要大量时间。当必须在多个网络地址上重复此类测试时,所需的时间可能太大,无法在没有某种形式的自动化的情况下完成测试。使用软件执行这些功能使测试人员能够完成手头的任务,并将注意力集中在处理数据和执行更适合手动测试的任务上。

网络/常规漏洞扫描程序

基于端口

基于端口的自动扫描通常是传统渗透测试的第一步,因为它有助于获得目标网络或主机上可用内容的基本概述。基于端口的扫描程序会进行检查以确定远程主机上的端口是否能够接收连接。通常,这将涉及使用IP的协议(例如TCP,UDP,ICMP等),但是,其他网络协议上的端口也可能取决于环境(例如,在大型大型机环境中使用SNA是很常见的)。通常,端口可以具有以下两种可能的状态之一:

    Open - the port is able to receive data

    Closed - the port is not able to receive data

如果扫描程序无法准确确定给定端口是打开还是关闭,则扫描程序可能会列出其他状态,例如“已筛选”。

当扫描程序确定端口已打开时,扫描程序会假定是否存在漏洞。例如,如果基于端口的扫描程序连接到 TCP 端口 23,并且该端口正在侦听,则扫描程序可能会报告 telnet 服务在远程主机上可用,并将其标记为已启用明文身份验证协议。

基于服务

基于服务的漏洞扫描程序是利用特定协议与远程主机上的开放端口进行通信的扫描程序,以确定有关该端口上运行的服务的更多信息。这比端口扫描更精确,因为它不单独依赖端口来确定正在运行的服务。例如,端口扫描可能能够识别主机上的 TCP 端口 8000 已打开,但它不会仅根据该信息知道那里正在运行的服务。服务扫描程序将尝试使用不同的协议与端口通信。如果在端口 8000 上运行的服务能够使用 HTTP 正确通信,则它将被标识为 Web 服务器。

横幅抓取

横幅抓取是连接到特定端口并检查从远程主机返回的数据以识别绑定到该端口的服务/应用程序的过程。通常在连接过程中,软件将提供一个标识字符串,其中可能包括诸如应用程序名称之类的信息,或有关正在运行的软件的特定版本的信息。


Web 应用程序扫描程序

一般应用缺陷扫描仪

大多数 Web 应用程序扫描从网站、Web 应用程序或 Web 服务的地址开始。然后,扫描程序通过跟踪链接和目录结构对网站进行爬网。在编译提供的网页、资源、服务和/或其他媒体的列表后,扫描程序将根据爬网结果执行测试或审核。例如,如果在爬网中发现的网页具有表单字段,则扫描程序可能会尝试 SQL 注入或跨网站脚本。如果已爬网网页包含错误,则扫描程序可能会查找错误详细信息中显示的敏感信息,依此类推。

应该注意的是,爬网和测试阶段可以交错并同时执行,以减少总体扫描时间。这是许多 Web 应用程序扫描程序的默认行为。

目录列表/暴力破解

假设网站上存在爬网程序无法通过以下链接找到的可用目录。在没有事先了解用户提供的这些目录的情况下,扫描程序至少有两个附加选项。

扫描程序/爬网程序可以搜索“公共”目录。这些目录包含常用的名称和名称变体,并包含在由于多年的经验和扫描而编译的列表中。大多数Web应用程序都有这种类型的“内置”列表,而一些渗透测试人员维护自己的自定义列表。有时,目录名称足够唯一,可用于以相当高的准确度标识第三方 Web 应用程序。准确的目录列表通常是查找网站“管理”部分的关键 - 大多数渗透测试人员应该对发现部分非常感兴趣。

暴力破解目录是一种类似的方法,但不是使用静态列表,而是使用工具来枚举目录名称可能具有的所有可能性。使用此方法的缺点是,它有可能使 Web 服务器崩溃或用请求淹没,从而导致拒绝服务条件。当有人密切关注 Web 服务器的状况时,应注意执行目录暴力破解,尤其是在生产环境中。

作为渗透测试人员,您希望执行目录列表的原因是扩展您的攻击领域或查找可能包含敏感信息的目录(这取决于渗透测试的目标,可能会导致其中的重大发现)。

网络服务器版本/漏洞识别

许多 Web 应用程序扫描程序会尝试将 Web 服务器的版本与安全公告中的已知易受攻击版本进行比较。这种方法有时会导致误报;因为在某些情况下,开源 Web 服务器被分叉或复制并被赋予新名称、横幅并分配不同的版本号。应采取其他步骤来验证 Web 服务器是否确实正在运行横幅或 Web 扫描程序报告的内容。

方法

几种 Web 服务器方法被认为是不安全的,并且可能允许攻击者获得对 Web 服务器内容的不同级别的访问权限。这些方法是Web服务器软件的一部分,而不是网站内容,这一事实将其与迄今为止讨论的其他漏洞区分开来。一些不安全的方法包括:

选项

虽然 HTTP OPTIONS 方法本身并不不安全,但它允许攻击者轻松枚举目标服务器接受的 HTTP 方法类型。请注意,OPTIONS 方法并不总是准确的,以下每种方法都应单独验证。

放置/删除

使用 PUT 方法,攻击者可以上传恶意内容,例如可用于在 Web 服务器上传输信息、更改 Web 内容或安装恶意软件的 HTML 页面。使用 DELETE 方法,攻击者可以删除内容或破坏网站,从而导致服务中断。


网络DAV

WebDAV 是 Microsoft Internet Information Server (IIS) 的一个组件。WebDAV 代表“基于 Web 的分布式创作和版本控制”,用于编辑和文件管理。管理员使用 WebDAV 扩展在 IIS Web 服务器上远程管理和编辑 Web 内容,并且可以包括 PROPFIND、COPY、MOVE、PROPPATCH、MKCOL、LOCK 和 UNLOCK 。WebDAV 与核心操作系统组件交互,这可能会使系统面临多个可能的漏洞。其中一些潜在风险包括:

    Buffer overflow conditions due to improper handling of user requests

    Denial-of-service conditions from malformed requests

    Domain based scripting attacks

    Privilege escalation

    Execution of arbitrary code

追踪/跟踪

现代 Web 服务器支持 TRACE HTTP 方法,该方法包含一个可能导致未经授权的信息泄露的缺陷。TRACE 方法用于调试 Web 服务器连接,并允许客户端查看请求链另一端接收的内容。远程攻击者可在所有主要 Web 服务器中默认启用此功能,从而滥用 HTTP TRACE 功能泄露敏感信息,从而导致机密性丢失。


网络漏洞扫描程序/特定协议

断续器

传统的漏洞评估工具无法与为 Internet 密钥交换 (IKE) 提供服务的 VPN 设备执行正确的协议协商。在使用 IKE 的情况下,有必要使用其他工具包来执行诸如准确指纹识别、退避模式和识别正在使用的身份验证机制等功能。通过识别 VPN 设备的这些属性,可以识别正在运行的代码版本以及身份验证类型(如静态预共享密钥)中的弱点。

语音网络扫描仪

战争拨号

许多组织仍然通过电话线使用带外访问。使用旨在执行战争拨号的漏洞评估工具可以确定身份验证和网络体系结构中的弱点。

网络电话

IP 语音技术现在在大多数组织中都很丰富。已经开发了许多工具来对VoIP基础设施进行漏洞分析。使用这些工具,人们可以确定VoIP网络是否被正确分段,并且可能存在利用这些网络访问核心基础设施系统或在目标网络上记录电话交谈的潜力。

手动直接连接

与任何自动化流程或技术一样,误差幅度始终存在。系统、网络设备和网络连接的不稳定性可能会在测试过程中引入不准确的结果。始终建议对目标系统上可用的每个协议或服务执行手动直接连接,以验证自动测试的结果,并识别所有潜在的攻击媒介和以前未识别的弱点。

混淆

多个出口节点

安全监控和防御系统以识别来自特定 IP 地址的恶意活动为幌子运行。在部署入侵检测系统并监控活动的情况下,来自多个 IP 地址的源评估和攻击活动可提供更准确的结果,并减少目标网络上的监控设备识别和响应的机会。TOR代理等技术可以提供一种无需从单个IP地址采购即可进行评估活动的方法。

IDS规避

在针对部署了IDS技术的目标环境进行评估活动时,可能需要进行规避。使用字符串操作、多态性、会话拼接和分段等方法可以提供更准确的结果,同时绕过 IDS 设备中实现的签名匹配模式。


被动

元数据分析

元数据分析涉及查看描述文件的数据,而不是文件数据本身。例如,Microsoft Office 文档可能会列出文档作者、公司、上次保存文档的时间、创建文档的时间等。许多文档甚至允许输入自定义元数据。这可能包含内部地址和服务器路径、内部 IP 地址以及渗透测试人员可用于获取其他访问权限或信息的其他信息。

尽管元数据在位于公司内部网络上的文档上很常见,但公司应注意在向公众或公共 Internet 提供文档之前清除元数据。因此,攻击者可以被动访问的任何元数据(不直接攻击目标)都应被视为安全问题。

流量监控

流量监控是连接到内部网络并捕获数据以进行离线分析的概念。路由中毒被排除在此阶段之外,因为这些会在网络上产生“噪音”并且很容易被检测到。从“交换”网络中收集到多少敏感数据通常令人惊讶。这种“数据泄漏”到交换网络上的情况可以分类如下:

ARP/MAC 缓存溢出,导致交换数据包被广播 - 这在 ARP/MAC 缓存计时配置不正确的 Cisco 交换机上很常见。

Etherleak - 一些较旧的网络驱动程序和一些嵌入式驱动程序将使用系统内存中的数据来填充ARP数据包。如果可以收集足够的 ARP 数据包,则可以捕获来自内部存储器的敏感信息

配置错误的集群或负载均衡器

插入网络的集线器 请注意,其中一些类别仅导致数据泄漏到单个子网,而其他类别则可能导致泄漏到更大的网段。


验证

工具之间的关联

当使用多个工具时,对结果相关性的需求可能会变得复杂。相关性可以分为两种不同的样式,项目的特定和分类关联,根据您尝试在给定目标上收集的信息、指标和统计信息的类型,两者都很有用。

特定相关性与特定的可定义问题相关,例如漏洞 ID、CVE、OSVDB、供应商索引号、软件产品的已知问题等,并且可以与主机名、IP、FQDN、MAC 地址等微观因素分组。例如,按 CVE 编号对主机 x 的结果进行分组,因为它们会在多个工具中索引同一问题。

分类关联涉及合规性框架(即 NIST SP 800-53、DoD 5300 系列、PCI、HIPPA、OWASP LIST 等)等问题的分类结构,允许您按宏因素(如漏洞类型、配置问题等)对项目进行分组。例如,将具有默认密码的主机的所有结果分组到NIST 800-53 (IA-5) 中的密码复杂性组中。

在大多数情况下,渗透测试人员将专注于同一主机上多个工具之间的冗余中发现的特定漏洞的微观问题。这种冗余可能会扭曲测试输出中的统计结果,从而导致错误的风险状况增加。

与此相反的是宏观相关性(即前 10/20 个列表)的过度减少或简化,因为结果可能会扭曲输出,从而导致错误的风险降低。


手动测试/协议特定

断续器

指纹

指纹识别对于确定 VPN 设备的类型和安装的已发布代码的正确版本非常有用。通过对设备进行准确的指纹识别,可以针对目标系统进行适当的研究和分析。

认证

VPN 设备可以使用各种形式的身份验证进行操作。使用不属于传统漏洞评估工具的 VPN 工具包可以正确识别身份验证机制并确定可能存在的弱点,例如预共享密钥或默认组 ID。

思杰

列举

许多默认安装和配置不佳的 Citrix 设备提供了一种枚举已发布应用程序并确定配置为向设备进行身份验证的有效用户名的方法。在暴力攻击和尝试突破授权用户的预定义配置文件期间,此信息变得至关重要。

域名解析

域名系统在未正确强化时可以向攻击者提供大量信息。版本信息允许正确识别和准确的研究分析。区域传输等弱点提供了其他攻击目标的详尽列表,以及与目标组织有关的潜在敏感数据的信息泄露。

Web 服务为攻击者提供了广阔的环境。与大多数其他协议和服务不同,Web 服务通常在单个系统的多个端口上运行。管理员可能会将强化重点放在 Web 服务或已发布目录的公共端口上,而忽略正确强化其他属性。应始终以手动方式审查 Web 服务,因为自动评估工具无法识别其服务中的大多数弱点。

邮件

邮件服务器可以提供有关目标组织的大量信息。使用目标设备中的固有功能,可以确认有效帐户,并开发潜在用户名列表,以便对其他系统进行其他攻击。可以利用邮件中继等漏洞对组织进行其他攻击,例如网络钓鱼。通常,邮件服务器会提供一个用于远程访问的 Web 界面,该界面可以成为暴力活动的目标。


攻击大道

创建攻击树

在安全评估期间,随着测试的进行,开发攻击树对于最终报告的准确性至关重要。随着新系统、服务和潜在漏洞的识别;应开发并定期更新攻击树。这在参与的利用阶段尤其重要,因为实现的一个入口点可以在攻击树开发期间绘制的其他向量上重复。

隔离实验室测试

在隔离的实验室中设置复制环境时,漏洞分析和利用的准确性要高得多。通常,系统可能会使用特定的控制集或额外的保护机制进行强化。通过设计一个模仿目标组织的实验室,顾问可以确保针对所需目标识别的漏洞和尝试的漏洞利用是可靠的,并减少结果不准确或系统无法操作的机会。

视觉确认

手动连接审核

虽然适当的关联有助于减少错误发现并提高整体准确性,但目视检查目标系统是无可替代的。评估工具旨在查看协议/服务连接或响应的结果,并与已知的漏洞特征进行比较。但是,工具在识别不常见端口上的服务或可能内置到应用程序中的自定义逻辑时并不总是准确的。通过手动评估目标系统、其可用服务以及为这些服务提供功能的应用程序,测试人员可以确保完成正确的验证和漏洞识别。

研究

公共研究

一旦在目标系统中报告了漏洞,就有必要确定问题识别的准确性,并在渗透测试范围内研究漏洞的潜在可利用性。在许多情况下,该漏洞将是商业或开源软件包中报告的软件漏洞,而在其他情况下,该漏洞可能是业务流程中的缺陷,或者是常见的管理错误,如配置错误或默认密码使用。

漏洞数据库

漏洞数据库可用于验证自动化工具报告的问题,或手动查看目标应用程序的漏洞。大多数工具将使用给定漏洞的 CVE 标识符,该标识符可用于访问摘要信息和指向 CVE 数据库中其他源的链接。CVE还可用于在OSVDB和Bugtraq等漏洞数据库中搜索问题,或者在漏洞利用数据库和框架中搜索问题。

应使用漏洞数据库来验证所报告问题的准确性。例如,ApacheWeb服务器缺陷可能存在于Windows上,但不能存在于Linux上,自动扫描程序可能不会考虑到这一点。

供应商公告

供应商发布的安全公告和更改日志可以提供指向任何自动化工具可能不会报告的漏洞信息的指针。许多主要软件供应商报告的内部发现问题和独立研究人员协调漏洞披露的问题的详细信息有限。如果研究人员选择对漏洞的细节保持沉默,供应商公告通常是唯一可用的数据。在这些情况下,其他研究人员可能会独立发现更多详细信息,并将详细信息添加到漏洞数据库中。搜索供应商公告中使用的 CVE 可能会找到有关潜在可利用问题的更多详细信息。

更改日志可以为其他研究提供指导,尤其是在开源产品中,版本之间的差异可以揭示已修复但未广为人知的漏洞,因此可能没有优先进行升级或安装。

利用数据库和框架模块

许多漏洞利用数据库在互联网上得到积极维护并可公开访问。安全研究人员和漏洞利用编写者并不总是将他们的漏洞利用代码提交到多个站点,因此建议熟悉多个站点,并检查每个站点是否有漏洞利用代码用于潜在易受攻击的应用程序。虽然一些漏洞数据库跟踪漏洞利用的可用性,但它们的覆盖范围通常不完整,不应被视为详尽无遗。

商业和开源漏洞利用框架在研究漏洞方面也很有用。在大多数情况下,可用的漏洞利用模块列在其公共网站上,可以作为问题可利用性的宝贵指示。

通用/默认密码

通常,管理员和技术人员会选择弱密码,从不更改默认值或根本不设置任何密码。大多数软件和硬件的手册都可以在网上轻松找到,并将提供默认凭据。互联网论坛和官方供应商邮件列表可以提供有关未记录帐户,常用密码和经常配置错误的帐户的信息。最后,许多网站记录了默认/后门密码,应该检查每个已识别的系统。

强化指南/常见配置错误

渗透测试的主要目标之一是模拟实际攻击者的策略和行为。虽然自动扫描可以缩短测试的时间窗口,但没有任何扫描仪可以像人类一样运行。硬化导轨可以成为渗透测试仪的宝贵参考。它们不仅突出显示了系统最薄弱的部分,而且您可以通过验证已实施的建议数量来了解管理员的勤奋程度。在每次渗透测试期间,都应花时间查看每个主要系统及其建议的强化设置,以发现管理员留下的漏洞。

用户论坛和邮件列表可以提供有关系统以及管理员在配置和保护它们时遇到的各种问题的宝贵信息。测试人员应该像自己安装目标系统一样研究目标系统,并发现痛点和可能的配置错误在哪里。

私人研究

设置副本环境

虚拟化技术允许安全研究人员运行各种操作系统和应用程序,而无需专用硬件。确定目标操作系统或应用程序后,可以快速创建虚拟机 (VM) 环境来模拟目标。测试人员可以使用此 VM 来探索应用程序的配置参数和行为,而无需直接连接到目标。

测试配置

测试虚拟机实验室应包含所有常见操作系统的基础映像,包括Windows XP,Vista,7,Server 2003和Server 2008,Debian,Ubuntu,Red Hat和Mac OS X(如果可能)。为每个服务包级别维护单独的映像将简化重新创建目标环境的过程。完整的 VM 库与支持克隆的 VM 环境相结合,将允许测试人员在几分钟内启动新的目标 VM。此外,使用快照功能将允许更有效地工作并重现错误。

模糊

模糊测试或错误注入是一种暴力技术,用于通过以编程方式向应用程序提交有效、随机或意外的输入来查找应用程序缺陷。基本过程包括将调试器附加到目标应用程序,然后针对特定输入区域运行模糊测试例程,然后在发生任何崩溃后分析程序状态。许多模糊测试应用程序都可用,尽管一些测试人员为特定目标编写自己的模糊测试器。

确定潜在的途径/载体

登录或连接到目标网络应用程序以识别命令和其他输入区域。如果目标是读取文件和/或网页的桌面应用程序,请分析接受的文件格式以获取数据输入途径。一些简单的测试涉及提交无效字符或非常长的字符串以导致崩溃。附加调试器以在成功崩溃时分析程序状态。

反汇编和代码分析

一些编程语言允许反编译,一些特定的应用程序使用符号进行编译以进行调试。测试人员可以利用这些功能来分析程序流程并识别潜在的漏洞。应分析开源应用程序的源代码是否存在缺陷。用PHP编写的Web应用程序共享许多相同的漏洞,它们的源代码应作为任何测试的一部分进行检查。

人为因素越来越多,黑客渗透测试驱动的安全发展
专业人士使用的 11 种渗透测试工具
渗透测试过程中所需工具
什么是渗透测试?
渗透测试:信息安全测试和评估技术指南NIST SP 800-115
Offensive Security渗透测试报告模板
渗透测试过程中所需工具
影响渗透测试成本的7大因素
渗透测试过程中的情报收集
渗透测试是检查安全操作的引擎灯
应用程序安全渗透测试指南

原文始发于微信公众号(河南等级保护测评):4、渗透测试:漏洞分析(Pentest-Standard)

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年1月30日18:46:47
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   4、渗透测试:漏洞分析(Pentest-Standard)https://cn-sec.com/archives/1389904.html

发表评论

匿名网友 填写信息