【渗透测试基础-1】渗透测试方法论及渗透测试流程

目录

  • 1 渗透测试方法论
    • 1.1 渗透测试方法论的定义
    • 1.2 渗透测试的种类
      • 1.2.1 黑盒测试
      • 1.2.2 白盒测试
    • 1.3 脆弱性评估与渗透测试
  • 2 安全测试方法论
  • 3 渗透测试流程
    • 3.1 渗透测试执行标准PTES
    • 3.2 通用渗透测试框架
      • 3.2.1 范围界定
      • 3.2.2 信息搜集
      • 3.2.3 目标识别
      • 3.2.4 服务枚举
      • 3.2.5 漏洞映射
      • 3.2.6 社会工程学
      • 3.2.7 漏洞利用
      • 3.2.8 权限提升
      • 3.2.9 访问维护
      • 3.2.10 文档报告
    • 3.3 简化渗透测试流程
  • 4 归纳
  • 参考文章

1 渗透测试方法论

1.1 渗透测试方法论的定义

渗透测试(penetration testing)是实施安全评估(审计)的具体手段。方法论是在制定,实施信息安全审计方案时,需要遵循的规则、惯例和过程。人们在评估网络、应用和系统或三者组合的安全状况时,不断摸索各种务实的理念和成熟的做法,并总结了一套理论——渗透测试方法论。
渗透测试的对象为网络应用系统或三者的组合。其中,网站和APP均属于应用,网站为web应用,APP为终端应用;路由器属于网络,社工

1.2 渗透测试的种类

1.2.1 黑盒测试

在进行黑盒测试时,安全审计员在不清楚被测单位的内部技术构造的情况下,从外部评估网络基础设施的安全性。在渗透测试的各个阶段,黑盒测试借助真实世界的黑客技术,暴露出目标的安全问题,甚至可以揭露尚未被他人利用的安全弱点。其中,网络基础设施就包括网络应用系统或三者的组合。

渗透测试人员应能够理解安全弱点,将之分类并按照风险等级(高、中、低)对其进行排序。通常来说,风险等级(级别)取决于相关弱点可能形成危害的大小。老练的渗透测试专家应能够确定可引发的安全事故的所有安全模式。当渗透测试人员完成所有测试工作之后,他们会把测试对象安全状况有关的必要信息进行整理,并使用业务的语言描述这些被识别出来的风险,继而将之汇总为书面报告。黑盒测试的市场报价通常会高于白盒测试。

黑盒测试的例子:直接给一个域名,然后要求渗透测试人员进行测试,渗透测试人员首先需要进行信息收集,收集域名下有哪些资产,如有多少web应用、多少子域名、有多少服务(邮件服务、日志服务器、数据库服务)。

1.2.2 白盒测试

白盒测试的审计员是可以获取被测单位的各种内部资料甚至不公开资料,所以渗透测试人员的视野更为开阔。若以白盒测试的方法评估安全漏洞,测试人员可以以最小的工作量达到最高的评估精确度。白盒测试从被测系统环境本身出发,全面消除内部安全问题。从而增加了从单位外部渗透系统的难度。黑盒测试起不到这样的作用。白盒测试所需要的步骤数目与黑盒测试不相上下。另外若能将白盒测试与常规的研发生命周期相结合,就可以最早的消除全部安全隐患。这使得白盒测试的时间、成本,以及发现、解决安全弱点的技术门槛都全面低于黑盒测试。

白盒测试的例子:杀毒软件、微软的自动更新。

1.3 脆弱性评估与渗透测试

脆弱性评估通过分析企业资产面临安全威胁的情况和程度,评估内部和外部的安全控制的安全性。这种技术上的信息系统评估,不仅揭露现有防范措施里存在的风险,而且要提出多重备选的补救策略,并将这些策略进行比较。内部的脆弱性评估可保证内部系统的安全性,而外部的脆弱性评估则时验证边界防护的有效性。无论进行内部脆弱性评估还是进行外部脆弱性评估,评估人员都会采用各种攻击模式来严格测试网络的资产的安全性,从而验证信息系统处理安全威胁的能力,进而确定应对措施的有效性。不同类型的脆弱性评估需要的测试流程、测试工具和自动化的测试技术也不相同。这可以通过一体化的安全弱点管控平台(vulnerability management)来实现,现在的安全弱点管理平台带有可自动更新的漏洞数数据库,能够测试不同类型的网络设备,而且不会影响配置管理和变更管理的完整性。简单来说脆弱性评估其实就是漏洞扫描,只是在漏洞扫描的基础上要提出防御策略。
加粗样式
脆弱性评估和渗透测试最大的区别就是,渗透测试不仅要识别目标的弱点,它还要设计在目标的系统上进行漏洞利用、权限提升和访问维护。换句话说,脆弱性评价虽然可以充分发现系统里的缺陷,但不会取考虑取衡量这些缺陷对系统造成的危害。另外,相比脆弱性评估,渗透测试更倾向于入侵,会刻意使用各种技术手段利用安全漏洞;所以渗透测试可能对生产环境带来实际的破坏性影响,而脆弱性评估以非入侵的方式,定性、定量得识别已知的安全弱点。简单来说渗透测试就算发现漏洞,并进行漏洞利用

2 安全测试方法论

OWASP:Open Web Application Security Project 开放式Web应用程序安全项目,网址为http://www.owasp.org.cn/

(1)测试指南https://www.owasp.org/index.php/OWASP_Testing_Project
(2)开发人员指南https://www.owasp.org/index.php/OWASP_Guide_Project
(3)代码审查指南:OWASP Top 10 (Web 十大安全漏洞)https://www.owasp.org/index.php/Category:OWASP_Top_Ten_Project。也可以找中国区的官网:http://www.owasp.org.cn/OWASP-CHINA/owasp-project/2021-owasp-top-10/。Web 十大安全漏洞如下,具体详见《OWASP-TOP10-2021中文版》

  • A01:2021-失效的访问控制(Broken Access Control)
    从第5位上升成为Web应用程序安全风险最严重的类别;提供的数据表明,平均3.81%的测试应用程序具有一个或多个CWE,且此类风险中CWE总发生漏洞应用数超过31.8万次。在应用程序中出现的34个匹配为“失效的访问控制”的CWE次数比任何其他类别都多。
  • A02:2021-加密机制失效(Cryptographic Failures)
    排名上升一位。其以前被称为“A3:2017-敏感信息泄漏(Sensitive Data Exposure)”。敏感信息泄漏是常见的症状,而非根本原因。更新后的名称侧重于与密码学相关的风险,即之前已经隐含的根本原因。此类风险通常会导致敏感数据泄露或系统被攻破。
  • A03:2021-注入(Injection)
    排名下滑两位。94%的应用程序进行了某种形式的注入风险测试,发生安全事件的最大率为19%,平均率为3.37%,匹配到此类别的33个CWE共发生27.4万次,是出现第二多的风险类别。原“A07:2017-跨站脚本(XSS)”在2021年版中被纳入此风险类别。
  • A04:2021-不安全设计(Insecure Design)
    2021年版的一个新类别,其重点关注与设计缺陷相关的风险。如果我们真的想让整个行业“安全左移” ,我们需要更多的威胁建模、安全设计模式和原则,以及参考架构。不安全设计是无法通过完美的编码来修复的;因为根据定义,所需的安全控制从来没有被创建出来以抵御特定的安全攻击。
  • A05:2021-安全配置错误(Security Misconfiguration)
    排名上升一位。90%的应用程序都进行了某种形式的配置错误测试,平均发生率为4.5%,超过20.8万次的CWE匹配到此风险类别。随着可高度配置的软件越来越多,这一类别的风险也开始上升。原“A04:2017-XML External Entities(XXE) XML外部实体”在2021年版中被纳入此风险类别。
  • A06:2021-自带缺陷和过时的组件(Vulnerable and Outdated Components)
    排名上升三位。在社区调查中排名第2。同时,通过数据分析也有足够的数据进入前10名,是我们难以测试和评估风险的已知问题。它是唯一一个没有发生CVE漏洞的风险类别。因此,默认此类别的利用和影响权重值为5.0。原类别命名为“A09:2017-Using Components with Known Vulnerabilities 使用含有已知漏洞的组件”。
  • A07:2021-身份识别和身份验证错误(Identification and Authentication Failures)
    排名下滑五位。原标题“A02:2017-Broken Authentication失效的身份认证”。现在包括了更多与识别错误相关的CWE。这个类别仍然是Top 10的组成部分,但随着标准化框架使用的增加,此类风险有减少的趋势。
  • A08:2021-软件和数据完整性故障(Software and Data Integrity Failures)
    2021年版的一个新类别,其重点是:在没有验证完整性的情况下做出与软件更新、关键数据和CI/CD管道相关的假设。此类别共有10个匹配的CWE类别,并且拥有最高的平均加权影响值。原“A08:2017-Insecure Deserialization不安全的反序列化”现在是本大类的一部分。
  • A09:2021-安全日志和监控故障(Security Logging and Monitoring Failures)
    排名上升一位。来源于社区调查(排名第3)。原名为“A10:2017-Insufficient Logging & Monitoring 不足的日志记录和监控”。此类别现扩大范围,包括了更多类型的、难以测试的故障。此类别在 CVE/CVSS 数据中没有得到很好的体现。但是,此类故障会直接影响可见性、事件告警和取证。
  • A10:2021-服务端请求伪造(Server-Side Request Forgery)
    2021年版的一个新类别,来源于社区调查(排名第1)。数据显示发生率相对较低,测试覆盖率高于平均水平,并且利用和影响潜力的评级高于平均水平。加入此类别风险是说明:即使目前通过数据没有体现,但是安全社区成员告诉我们,这也是一个很重要的风险。

【渗透测试基础-1】渗透测试方法论及渗透测试流程_第1张图片

(4)CWE:Common weakness Enumeration,通用缺陷列表,简单来说就是漏洞类别的编号。例如CWE-79:XSS漏洞,网址为http://cwe.mitre.org/data/definitions/79.html;CWE-89:SQL注入,网址为http://cwe.mitre.org/data/definitions/89.html

(5)CVE:Common vulnerabilities and Exposure,通用漏洞与披露,简单来说是具体某一个漏洞的编号.中国网站为信息安全漏洞门户(http://cve.scap.org.cn/),外国网站为http://cve.mitre.org/
【渗透测试基础-1】渗透测试方法论及渗透测试流程_第2张图片
tips:
1)MS17-010:微软在2017年发布的第10个安全公告。一个MS17-010对应多个CVE。可以打补丁修复该漏洞,微软的补丁为KB开头,应该打
2)S2-053:S2为Struts2,为APACHE开源开发java的框架,S2-053为S2发布的第53个安全公告。一般一个安全公告对应一个CVE。

3 渗透测试流程

3.1 渗透测试执行标准PTES

渗透测试执行标准PTES(Penetration Testing Execution Standard)的先驱都是渗透测试行业的精英,渗透测试执行标准包含两个部分:PTES 方法论;PTES 技术指南。这个标准由渗透测试7个阶段的标准组成,可以在任意环境中进行富有成果的渗透测试。官网为http:www.pentest-standard.org/index.php/Main_Page。 渗透测试7个阶段如下:
(1) 事前互动
(2) 情报搜集
(3) 威胁建模
(4)漏洞分析
(5) 漏洞利用
(6) 深度利用
(7) 报告阶段
【渗透测试基础-1】渗透测试方法论及渗透测试流程_第3张图片
主要特点优势:

  • 它是非常全面的渗透测试框架,涵盖了渗透测试的技术方面和其他重要方面,如范围蔓延(scope creep)、报告,以及渗透测试人员保护自身的方法。
  • 它介绍了多数测试任务的具体方法,可指导您准确测试目标系统的安全状态。
  • 它汇聚了多名日行一“渗”的渗透测试专家的丰富经验。
  • 它包含了最常用的以及很罕见的相关技术。
  • 它浅显易懂,您可根据测试工作的需要对相应测试步骤进行调整。

3.2 通用渗透测试框架

从技术管理的角度来看,遵循正规的测试框架对安全测试极为重要。通用渗透测试框架涵盖了典型的审计测试工作和渗透测试工作会涉及到的各个阶段。相关阶段如下:
(1) 范围界定
(2) 信息搜集
(3) 目标识别
(4)服务枚举
(5) 漏洞映射
(6) 社会工程学
(7)漏洞利用
(8)权限提升
(9) 访问维护
(10) 文档报告

3.2.1 范围界定

在开始技术性安全评估之间,务必要观察、研究目标环境的被测范围 。同时还要了解,这个范围牵扯多少个单位,是单个单位还是多个单位会参与到安全评估的工作中来,在范围界定阶段,需要考虑的典型因素如下:

  • 取得授权。
  • 测试对象是什么?
  • 应当采取何种测试方法?
  • 有哪些在测试过程中需要满足的条件?
  • 哪些因素可能会限制测试执行的过程?
  • 需要多久才能完成测试?
  • 此次测试应当达成什么样的任务目标?
  • 是否是复测?

3.2.2 信息搜集

(外围信息收集,非接触式信息收集)在划定了测试范围之后,就需要进入信息收集阶段。在这个阶段,渗透人员需要使用各种公开资源尽可能地获取测试目标的相关信息。他们搜集信息的互联网渠道主要有:
论坛/公告板/新闻组/媒体文章/博客/社交网络/github/其他商业或非商业性的网站。
此外,他们也可以借助各种搜索引擎中获取相关数据,如谷歌、雅虎、MSN必应、百度等。
收集的信息主要包括:

  • DNS 服务器
  • 路由关系
  • whois 数据库
  • 电子邮件地址
  • 电话号码
  • 个人信息
  • 用户账户

收集的信息越多,渗透测试成功的概率越高。

3.2.3 目标识别

这个阶段的主要任务是识别目标的网络状态、操作系统和网络架构。该阶段工作旨在完整地展现目标网络里各种联网设备或技术的完整关系,以帮助测试人员在接下来的工作里枚举目标网络的各种服务。简单来说就是测试哪些主机在线,那些主机的IP地址是什么?被测单位的网络架构是什么?网络节点设备的牌子等

3.2.4 服务枚举

这一阶段会根据前面各个阶段的成果,进一步找出目标系统中所有开放的端口。一旦找到了所有开放的端口,就可以通过这些端口来列出目标系统上运行的服务。主机上开放的端口都有相应的服务程序,对这些信息进行深度分析之后,可进一步发掘目标网络基础设施中可能存在的漏洞。即端口扫描,收集的主要信息如下:

  • 开放了哪些端口
  • 端口上运行的服务以及详细版本
  • 技术架构
  • Web 容器
  • 开发语言以及框架
  • 前后端分离

3.2.5 漏洞映射

可以根据已经发现的开放端口和服务程序,查找、分析目标系统中存在的漏洞。如果能够采用自动和手动这两种不同的测试方法结合起来,审计人员对目标系统的认知就会更为清晰、透彻,并能够仔细地检查任何已知和未知的漏洞即漏洞扫描、漏洞挖掘。

3.2.6 社会工程学

如果目标网络没有直接的入口,欺骗的艺术 将起到抛砖引玉的重要作用。对目标组织中的人员进行定向攻击,很有可能帮助我们找到渗透目标系统的入口。例如,诱使用户运行安装存在后门的恶意程序,就可能为审计人员的渗透工作形成突破。社会工程学渗透分为多种不同实现形式。

  • 伪装成网络管理员,通过电话要求用户提供自己的账户信息;
  • 发送钓鱼邮件来劫持用户的银行账户;
  • 诱使某人出现在某个地点。

在社会工程学中,达成同一既定目标的实现方式应有尽有。需要注意的是,在对目标实施欺骗以达成渗透目标之前,多数情况下需要长时间研究目标人员的心理。另外,在开展这个阶段的工作之前,您需要研究国内的法律是否有关于社会工程学的相关条款。

3.2.7 漏洞利用

在仔细检查和发现目标系统中的漏洞之后,就可以使用已有的漏洞利用程序对目标系统进行渗透。审计人员可以把客户端漏洞利用程序和社会工程学进行结合,进而控制目标系统。这个阶段的主要任务是控制目标系统 。这个流程可以分为三步,涉及攻击前、攻击、攻击后的相关行动。

3.2.8 权限提升

获取目标系统的控制权是渗透成功的标识 。接下来,审计人员就可以根据其所拥有的访问权限,在被测系统中自由发挥。审计人员也可以使用适用于目标系统的本地漏洞来提升自己的权限。只要他们能够在目标系统上运行提权漏洞利用程序,就可以获得主机的超级用户权限或者系统级权限。工程师还可以以该主机为跳板,进一步攻击局域网络。根据之前渗透范围的界定(授权),审计人员接下来会开展的攻击可能是受限制的,也可能是不受限制。然后,他们很有可能个以各种方式获得与控制系统有关的更多信息。具体的说,他们可能是用嗅探手段截获网络数据包,破解各种服务的密码,在局域网络中使用网络欺骗手段。所以说,提升权限的最终目的是获得目标系统的最高访问权限。

3.2.9 访问维护

多数情况下,审计人员需要在一段时间内维护他们对目标系统的访问权限。例如,在演示越权访问目标系统的时候,安装后门将节省重新渗透目标系统所耗费的大量时间。这种情况下,访问维护将节约获取目标系统访问权限所需要的时间、花费和资源。审计人员可以通过一些秘密的通信隧道,在既定时间内维持对目标的访问权限。这些隧道往往基于特定协议、代理或者点对点方法的后门程序。这种对系统的访问方法可以清楚地展示,入侵人员在目标系统实施攻击时隐藏行踪的具体方法。

  • 埋藏后门
  • 隧道技术

3.2.10 文档报告

在渗透测试的最后一个环节里,审计人员要记录、报告并现场演示那些已经识别、验证和利用了的安全漏洞。在被测单位的管理和技术团队会检查渗透时使用的方法,并会根据这些文档修补所有存在的安全漏洞。所以从道德角度来看,文档报告的工作十分重要。为了帮助管理人员和技术人员共同理解、分析当前IT 基础架构中的薄弱环节,可能需要给不同的部门撰写不同措辞的书面报告。

3.3 简化渗透测试流程

简化的渗透测试流程是在进行渗透测试过程中经常使用的流程,具体如下:

【渗透测试基础-1】渗透测试方法论及渗透测试流程_第4张图片
信息收集:

  • 基础信息:网络信息(IP等)
  • 系统信息:网络拓扑图、路由器牌子、网络节点的牌子等
  • 应用信息:终端设备等
  • 人员信息:管理员、财务、人事等
  • 防护信息:网络边界设备或网络节点设备,如有没有防火墙,有没有IPS、IDS或WAF,网络行为管理,全流量分析。

tips:
EXP为漏洞利用程序。

4 归纳

(1)掌握渗透测试的定义
(2)掌握渗透测试的种类,分为黑盒测试和白盒测试,以及黑盒测试和白盒测试的定义
(3)了解脆弱性安全评估与渗透测试的区别
(4)掌握OWASP Top 10 (Web 十大安全漏洞)
(5)掌握渗透测试流程,特别是通用 渗透测试流程和简化渗透测试流程

参考文章

[1]《通用渗透测试框架及简化渗透测试流程》

你可能感兴趣的:(#,入门07,Web安全之渗透测试,渗透测试种类,渗透测试流程)