Pentesting Fundamentals
房间链接:https://tryhackme.com/room/pentestingfundamentals
渗透测试基础
学习每次渗透测试背后的重要伦理和方法。
任务 1什么是渗透测试?
在教您道德黑客的技术实操方面之前,您需要了解渗透测试员的工作职责以及执行渗透测试(在客户的应用或系统中寻找漏洞)所遵循的过程。
网络安全的重要性和相关性持续增加,它影响着生活的方方面面。新闻头条充斥着屏幕,报道着又一例黑客攻击或数据泄露事件。
网络安全与现代世界中的每个人息息相关,包括制定强密码策略来保护您的电子邮件,以及需要保护设备和数据免受损害的企业和其他组织。
渗透测试或 pentest 是一种以道德为导向的尝试,用于测试和分析保护这些资产和信息片段的安全防御措施。渗透测试涉及使用具有恶意意图的人可能会使用的相同工具、技术和方法,类似于审计。
根据《安全杂志》——一本网络安全行业杂志,每天有超过2,200起网络攻击——平均每39秒就发生一次攻击。
任务 2渗透测试伦理
网络安全领域的法律和伦理之争,更不用说渗透测试,总是充满争议。像“黑客”和“黑客”这样的标签往往带有负面含义,尤其是在流行文化中,这要归功于一些坏苹果。合法获取计算机系统的想法是一个难以理解的概念——毕竟,究竟是什么让它变得合法?
回忆一下,渗透测试是由系统所有者同意的对计算机系统安全和防御的授权审计 。在这个意义上,渗透测试的合法性非常明确;任何超出此协议范围的行为都被视为未授权。
在渗透测试开始之前,渗透测试员和系统所有者之间会进行正式的讨论。双方会就测试的各种工具、技术和系统达成一致。这次讨论构成了渗透测试协议的范围,并将决定渗透测试的进程。
提供渗透测试服务的公司必须遵守法律框架和行业认证。例如,英国的国家网络安全中心(NCSC)有 CHECK 认证方案。这个检查意味着只有 “[CHECK]认证的公司可以开展对公共部门和关键基础设施系统及网络的授权渗透测试。”(NCSC)
道德是关于对与错的道德辩论;一个行为可能是合法的,但它可能违反了一个人的对对与错的信念体系。
渗透测试员在渗透测试过程中经常会面临一些可能具有道德争议的决定。例如,他们可能正在访问一个数据库,并接触到可能敏感的数据。或者,他们可能在进行一项钓鱼攻击 ,以测试一个组织的人身安全。如果这项行动在初始阶段已经达成一致,那么它是合法的——然而在道德上是有争议的。
黑客被分为三个类别,他们的道德和行动背后的动机决定了他们被归入哪个类别。以下表格中我们将介绍这三个类别:
| 类别 | 描述 | 示例 |
|---|---|---|
| 白帽 | 这些黑客被认为是“好人”。他们遵守法律,并利用他们的技能造福他人。 | 例如,一名渗透测试员在公司进行授权的测试。 |
| 灰色帽子 | 这些人经常利用他们的技能来帮助他人;然而,他们并不总是尊重/遵守法律或道德标准。 | 例如,有人关闭了一个诈骗网站。 |
| 黑帽 | 这些人都是罪犯,他们常常寻求损害组织或以牺牲他人为代价获得某种形式的财务利益。 | 例如,勒索软件作者会感染设备,用恶意代码锁定数据并索要赎金。 |
交战规则(ROE)
《ROE 是一个在渗透测试合作初期创建的文档。该文档包含三个主要部分(下表中有解释),这些部分最终负责决定合作如何进行。SANS 学院有一个很好的文档示例,您可以在网上这里查看》
| 章节 | 描述 |
|---|---|
| 权限 | 本文件本节明确授权进行该项活动。此授权对于合法保护个人和组织进行的活动至关重要。 |
| 测试范围 | 本节文档将对应用该活动的特定目标进行标注。例如,渗透测试可能仅适用于某些服务器或应用程序,而不是整个网络。 |
| 规则 | 规则部分将明确界定在活动期间允许使用的技术。例如,规则可能具体规定禁止使用如钓鱼攻击等技术,但 中间人攻击 (MITM)是允许的。 |

任务 3渗透测试方法
渗透测试可以具有广泛的目标和范围,因此没有一种渗透测试是相同的,也没有一种适用于所有情况的渗透测试方法。
渗透测试员在参与测试过程中采取的步骤被称为方法。一种实用的方法是明智的,其中采取的步骤与当前情况相关。 例如,当你需要测试网络的安全性时,使用用于测试 Web 应用程序安全性的方法是不可行的。
在讨论一些不同的行业标准方法之前,我们应该注意,它们都有一个以下阶段的一般主题:
| 阶段 | 描述 |
|---|---|
| 信息收集 | 这一阶段涉及尽可能收集有关目标/组织的公开可访问信息,例如, 开源情报和研究。注意: 这并不涉及扫描任何系统。 |
| 枚举/扫描 | 这一阶段涉及发现系统上运行的应用程序和服务。例如,找到可能存在潜在漏洞的 Web 服务器。 |
| 利用 | 这一阶段涉及利用在系统或应用程序中发现的漏洞。这一阶段可能包括使用公开的漏洞利用或利用应用程序逻辑。 |
| 权限提升 | 一旦成功利用了一个系统或应用程序(称为立足点),这一阶段就是尝试扩大对系统的访问权限。你可以横向和纵向提升权限,其中横向是指访问同一权限组的另一个账户(即另一个用户),而纵向是指另一个权限组(即管理员)。 |
| 后渗透 | 这个阶段包括几个子阶段: 1. 可以针对哪些其他主机进行攻击(跳板攻击)2. 现在我们成为特权用户后,我们能从主机收集哪些额外信息3. 隐藏踪迹4. 报告 |
OSSTMM
《开源安全测试方法论手册》 提供了一个针对系统、软件、应用程序、通信以及网络安全中的人为因素的详细测试策略框架。
该方法主要关注这些系统和应用程序的通信方式,因此包括以下方法:
- 电信(电话、VoIP 等)
- 有线网络
- 无线通信
| 优势 | 劣势 | |
|---|---|---|
| 涵盖各种测试策略的深入内容。 | 该框架难以理解,非常详细,且倾向于使用独特的定义。 | |
| 包括针对特定目标(例如电信和网络)的测试策略 | 故意留空。 | |
| 框架的灵活性取决于组织的需要。 | 故意留空。 | |
| 该框架旨在为系统和应用设定标准,这意味着在渗透测试场景中可以使用通用的方法。 | 故意留空。 |
OWASP
《 开放网络应用安全项目 》框架是一个由社区驱动且经常更新的框架,仅用于测试网络应用和服务的安全性。
该基金会定期撰写报告 ,指出网络应用可能存在的十大安全漏洞、测试方法和补救措施。
| 优势 | 劣势 |
|---|---|
| 易于上手和理解。 | 可能不清楚一个 Web 应用具有哪种类型的漏洞(它们通常可能重叠)。 |
| 积极维护且经常更新。 | OWASP 不对任何特定的软件开发生命周期提出建议。 |
| 它涵盖了合作的各个阶段:从测试到报告和补救。 | 该框架不持有任何认证,如 CHECK。 |
| 专注于 Web 应用程序和服务。 | 故意留空。 |
NIST 网络安全框架 1.1
NIST 网络安全框架 是一个广泛使用的框架,用于提高组织的网络安全标准和管理网络威胁的风险。这个框架因其普及度和详细性而略有些荣誉性的提及。
该框架为从关键基础设施(如发电厂等)到商业组织的安全控制与成功基准提供了指南。关于渗透测试员应采取的方法,有一个有限的标准化指南部分。
| 优势 | 劣势 |
|---|---|
| NIST 框架预计到 2020 年将被 50%的美国组织使用。 | NIST 有许多框架的迭代版本,因此可能难以决定哪个适用于您的组织。 |
| 该框架在制定标准以帮助组织减轻网络威胁带来的风险方面极为详细。 | NIST 框架审计政策薄弱,难以确定漏洞是如何发生的。 |
| 该框架更新非常频繁。 | 该框架未考虑云计算,而云计算正迅速成为组织越来越受欢迎的选择。 |
| NIST 为使用此框架的组织提供认证。 | *故意留空。 * |
| NIST 框架旨在与其他框架一起实施。 | 故意留空。 |
NCSC CAF
《网络安全评估框架》(CAF)是一个包含十四项原则的广泛框架,用于评估各种网络威胁的风险以及组织对这些威胁的防御能力。
该框架适用于被认为提供“至关重要的服务和活动”的组织,例如关键基础设施、银行等。该框架主要关注和评估以下主题:
- 数据安全
- 系统安全
- 身份和访问控制
- 弹性
- 监控
- 响应和恢复计划
| 优势 | 劣势 |
|---|---|
| 此框架由政府网络安全机构支持。 | 该框架在业界仍较新,这意味着组织没有太多时间进行必要的调整以适应它。 |
| 该框架提供认证。 | 该框架基于原则和理念,不像其他一些框架那样直接,有明确的规则。 |
| 该框架涵盖了从安全到响应的十四项原则。 | 故意留空。 |

任务 4黑盒、白盒、灰盒渗透测试
有三个主要范围在进行应用程序或服务测试时。你对目标的理解将决定你在渗透测试中所进行的测试级别。在这个任务中,我们将涵盖这三个不同的测试范围。
黑盒测试
这个过程是一个高级过程,其中测试者没有收到关于应用程序或服务内部工作原理的任何信息。
测试者扮演一个普通用户,测试应用程序或软件的功能和交互。这种测试可能涉及与界面交互,例如按钮,并测试是否返回了预期的结果。进行此类测试不需要编程知识或对程序的任何理解。
黑盒测试显著增加了信息收集和枚举阶段所花费的时间,以便理解目标攻击面。
灰盒测试
这种测试过程是渗透测试等事物中最受欢迎的。它是黑盒测试和白盒测试过程的结合。测试人员将对应用程序或软件的内部组件有一些有限的了解。然而,他们将以黑盒场景的方式与应用程序交互,然后利用他们对应用程序的了解来尝试解决他们发现的问题。
在灰盒测试中,所提供的有限知识可以节省时间,并且通常用于攻击面极其坚固的情况。
白盒测试
这个测试过程是一个低级过程,通常由一个了解编程和应用逻辑的软件开发者执行。测试人员将测试应用程序或软件组件的内部结构,例如,确保特定功能能够正确且在合理的时间内运行。
测试人员将拥有全面的应用程序及其预期行为的知识,这比黑盒测试要耗费更多时间。在白盒测试场景中,全面的知识提供了一种测试方法,可以保证整个攻击面都能得到验证。
