第01课:了解渗透测试

第01课:了解渗透测试

什么是渗透测试?

渗透测试,是为了证明网络防御按照预期计划正常运行而提供的一种机制。不妨假设,你的公司定期更新安全策略和程序,时时给系统打补丁,并采用了漏洞扫描器等工具,以确保所有补丁都已打上。如果你早已做到了这些,为什么还要请外方进行审查或渗透测试呢?因为,渗透测试能够独立地检查你的网络策略,换句话说,就是给你的系统安了一双眼睛。而且,进行这类测试的,都是寻找网络系统安全漏洞的专业人士。

渗透测试,较为通俗的说法就是模拟黑客的攻击去测试计算机网络安全的一种方法。从事渗透测试的安全人员,在不同的的位置(外网、内网等)用某种特定的手段对某个特定地址来进行安全测试。发现网络中存在的安全漏洞,接着写“渗透测试报告文档”并提交给该网络管理员,网络管理员可以从“渗透测试报告文档”中清楚的查看到系统所存在的安全漏洞以及修复方案。

渗透测试者尽可能完整的模拟黑客的攻击方法,对目标网络、系统、主机、应用程序的安全性做深入的测试,来发现系统最薄弱的环节。

为什么要执行渗透测试?

在有的管理员看来,不必要花钱去测试一次安全服务,因为 Web 漏洞扫描器扫描出的结果是不存在安全问题的,但是结果恰恰相反,有的时候,Web 漏洞扫描器可不那么灵,隐藏在逻辑中的安全问题,就不是 Web 漏洞扫描器所能检测到的地方。

打个比方来说,你要修建一家牢固无比的金库,按照设计蓝图一家修好了,那么此时是否就可以投入使用了呢?肯定不存在,因为你不知道这个金库的安全性如何,没有投入实践、没有风险方案,那么怎么去保证金库里面的资产安全呢?正确的做法就应该是在投入使用之前,请一些专家来进行一次模拟风险的一次攻击,来测试你的金库大门是否真正的安全。

安全行业的渗透测试也如银行的金库一样,需要专业人员进行系统的安全测试,来验证安全性。渗透测试可以促使许多企业管理人员减少损失或者是减少威胁。

渗透测试评估系统的安全须是长期性的、定时的测试,原因在于现在很多的企业业务线拉的非常长,加上还有外包的因素,导致开发人员水平不齐,造成漏洞的出现。

渗透测试的流程?

渗透测试人员在实施渗透测试的过程中多会使用漏洞扫描器,工具会使渗透测试流程中时间大大缩小,同时会把网络拓扑结构、程序信息理清,使一些部分成为自动化,但仅仅是使用工具是完全不够的,因为工具存在误报的情况,有时候需要人工手动逐一排查问题。

渗透测试流程基本都遵从 PTES(Penetration Testing Execution Standard)渗透测试执行标准是安全业界在渗透测试技术领域中正开发的一个新标准,目标是在对渗透测试进行重新定义,新标准的核心理念是通过建立起进行渗透测试所要求的基本准则基线,来定义一次真正的渗透测试过程,并得到安全业界的广泛认同。

PTES 包含了七个阶段。

前期交互阶段

在前期交互(Pre-Engagement Interaction)阶段,渗透测试团队与客户组织进行交互讨论,最重要的是确定渗透测试的范围、目标、限制条件以及服务合同细节。

情报收集阶段

在目标范围确定之后,将进入情报搜集(Information Gathering)阶段,渗透测试团队可以利用各种信息来源与搜集技术方法,尝试获取更多关于目标组织网络拓扑、系统配置与安全防御措施的信息。

渗透测试者可以使用的情报搜集方法包括公开来源信息查询、Google Hacking、社会工程学、网络踩点、扫描探测、被动监听、服务查点等。而对目标系统的情报探查能力是渗透测试者一项非常重要的技能,情报搜集是否充分在很大程度上决定了渗透测试的成败,因为如果你遗漏关键的情报信息,你将可能在后面的阶段里一无所获。

威胁建模阶段

在搜集到充分的情报信息之后,渗透测试团队的成员们停下敲击键盘,大家聚到一起针对获取的信息进行威胁建模(Threat Modeling)与攻击规划,这是渗透测试过程中非常重要,但很容易被忽视的一个关键点。

通过团队共同的缜密情报分析与攻击思路头脑风暴,可以从大量的信息情报中理清头绪,确定出最可行的攻击通道。

漏洞分析阶段

在确定出最可行的攻击通道之后,接下来需要考虑该如何取得目标系统的访问控制权,即漏洞分析(Vulnerability Analysis)阶段。

在该阶段,渗透测试者需要综合分析前几个阶段获取并汇总的情报信息,特别是安全漏洞扫描结果、服务查点信息等,通过搜索可获取的渗透代码资源,找出可以实施渗透攻击的攻击点,并在实验环境中进行验证。在该阶段,高水平的渗透测试团队还会针对攻击通道上的一些关键系统与服务进行安全漏洞探测与挖掘,期望找出可被利用的未知安全漏洞,并开发出渗透代码,从而打开攻击通道上的关键路径。

渗透攻击阶段

渗透攻击(Exploitation)是渗透测试过程中最具有魅力的环节。在此环节中,渗透测试团队需要利用他们所找出的目标系统安全漏洞,来真正入侵系统当中,获得访问控制权。

渗透攻击可以利用公开渠道可获取的渗透代码,但一般在实际应用场景中,渗透测试者还需要充分地考虑目标系统特性来定制渗透攻击,并需要挫败目标网络与系统中实施的安全防御措施,才能成功达成渗透目的。在黑盒测试中,渗透测试者还需要考虑对目标系统检测机制的逃逸,从而避免造成目标组织安全响应团队的警觉和发现。

后渗透攻击阶段

后渗透攻击(Post Exploitation)是整个渗透测试过程中最能够体现渗透测试团队创造力与技术能力的环节。前面的环节可以说都是在按部就班地完成非常普遍的目标,而在这个环节中,需要渗透测试团队根据目标组织的业务经营模式、保护资产形式与安全防御计划的不同特点,自主设计出攻击目标,识别关键基础设施,并寻找客户组织最具价值和尝试安全保护的信息和资产,最终达成能够对客户组织造成最重要业务影响的攻击途径。

在不同的渗透测试场景中,这些攻击目标与途径可能是千变万化的,而设置是否准确并且可行,也取决于团队自身的创新意识、知识范畴、实际经验和技术能力。

报告阶段

渗透测试过程最终向客户组织提交,取得认可并成功获得合同付款的就是一份渗透测试报告(Reporting),这份报告凝聚了之前所有阶段之中渗透测试团队所获取的关键情报信息、探测和发掘出的系统安全漏洞、成功渗透攻击的过程,以及造成业务影响后果的攻击途径,同时还要站在防御者的角度上,帮助他们分析安全防御体系中的薄弱环节、存在的问题,以及修补与升级技术方案。

实施渗透测试扫描过程中需要遵守以下几个原则

  • 标准性原则:漏洞扫描的方式需要遵守相关规定。
  • 规范性原则:扫描过程中所记录的文档应有良好的写作格式,需清楚的记录所用工具以及扫描策略。
  • 可控性原则:在扫描过程中,需要保证对漏洞扫描工作的可控性。漏洞扫描的方式和策略应该要在双方认可之内的范围内进行。
  • 整体性以及不可缺原则:在扫描的过程中所扫描的内容应该包括用户等各个层面,漏洞扫描的对象不可脱离用户指定范围的设备系统,未经允许不可擅自修改扫描范围和对象。
  • 影响性原则:漏洞扫描工作不可让系统或者网络中断,应在系统业务量较小的时段对系统进行漏洞扫描工作,尽量不对系统或者网络造成破坏,做到影响性最小。
  • 保密原则:漏洞扫描的过程和结果应该严格保密,不可泄露其有效数据文件。

渗透测试分类

现在普遍认同的渗透测试种类包含了两种,他们分别是黑盒测试和白盒测试。

黑盒测试

黑盒测试又被称为所谓的“Zero-Knowledge Testing”,渗透者完全处于对系统一无所知的状态,通常这类型测试,最初的信息获取来自于 DNS、Web、Email 及各种公开对外的服务器。

白盒测试

白盒测试与黑箱测试恰恰相反,测试者可以通过正常渠道向被测单位取得各种资料,包括网络拓扑、员工资料甚至网站或其他程序的代码片断,也能够与单位的其他员工(销售、程序员、管理者……)进行面对面的沟通。这类测试的目的是模拟企业内部雇员的越权操作。

黑盒模拟的完全是对目标系统完全一无所知的情况,而白盒测试则是可以向被测单位索要信息资料和代码,以提供后面的代码审计服务,两者差距较大,所以黑盒测试是最能模拟真实环境的一种渗透测试方法。

目标分类

(1)主机操作系统渗透:对 Windows、Solaris、AIX、Linux、SCO、SGI 等操作系统本身进行渗透测试。

(2)数据库系统渗透:对 MS-SQL、Oracle、MySQL、Informix、Sybase、DB2、Access 等数据库应用系统进行渗透测试。

(3)应用系统渗透:对渗透目标提供的各种应用,如 ASP、CGI、JSP、PHP 等组成的 WWW 应用进行渗透测试。

(4)网络设备渗透:对各种防火墙、入侵检测系统、网络设备进行渗透测试。

已授权的渗透测试流程

对于已授权的渗透测试流程如下:

  • 拿到授权书
  • 查看授权书内容
  • 收集信息并整理
  • 对目标系统进行漏洞扫描
  • 攻击
  • 输出渗透测试报告文档
  • 未授权的渗透测试流程
  • 信息收集
  • 漏洞扫描并测试
  • 清理入侵痕迹
  • 输出渗透测试报告文档

两者区别不大,但是未授权的渗透测试需要清理痕迹,另外“渗透测试”和“渗透”有区别的地方在于:渗透测试的目的的做一个渗透测试,但是并不去利用漏洞或者破坏系统,而渗透则没有明确目与规定。

上一篇
下一篇
目录