
什么是渗透测试?
渗透测试的起源与定义
熟悉军事的朋友都应该了解,各个国家的军队每年都会组织一些军事演习来检验部队的攻防战术和作战能力,在超级大国美国,一般会将美军称为蓝军,将假想敌称为红军,这种军事演戏的方式,也在上个世纪90年代引入美军的网络安全和信息基础设施的的实际攻防测试过程。由一群接受过职业培训的安全专家作为红方,对防御方蓝方进行安全攻击,以实战的方式来检验目标系统的防御体系和应急响应计划的有效性,这种通过实际的攻击方式进行安全测试和评估的方法就是安全渗透测试(Penetration testing, Pentest)。
在20实际90年代后期,逐步开始从军队和情报部门拓展到安全界,一些对安全需求很高的企业开始采用这种方式来对他们的网络和系统进行测试。
简而言之,渗透测试就是一种通过模拟使用黑客的技术和方法,挖掘目标系统的安全漏洞,取得系统的控制权,访问系统的机密数据,并发现可能影响业务持续运作安全隐患的一种安全测试和评估方式。
渗透测试和黑客入侵最大区别在于渗透测试是经过客户授权,采用可控制、非破坏性质的方法和手段发现目标和网络设备中存在弱点,帮助管理者知道自己网络所面临的问题,同时提供安全加固建议, 帮助客户提升系统的安全性。
渗透测试包括黑盒测试,白盒测试和 灰盒测试
黑盒测试:是指测试人员在不清楚被测单位内部技术架构的情况下,从外部对网络设施的安全性进行测试的过程。黑盒测试借助于真实世界的黑客方法,黑客工具,有组织有步骤的对目标系统进行逐步的渗透和入侵,揭示目标系统中一些已知的和未知的安全漏洞,并评估这些漏洞是否可以被不法分子利用,并造成业务和资产损失。
白盒测试: 测试人员可以获取被测单位的网络结构和各种底层技术. 在此基础上,使用针对性的测试方法和工具,可以以较小的代价发现和验证系统最严重的安全漏洞 。 两者各有利弊,需结合进行。
灰盒测试:渗透测试人员可以根据对目标系统获取的有限的知识和信息,选择渗透测试的最佳路径,渗透测试者也需要从外部逐渐的渗透进入内部网络,同时,他们所拥有的目标网络底层拓扑结构有助于他更好的选择攻击途径和方法,从而达到更好的渗透测试效果。
渗透测试的过程
PTES(PenTest execution standards )是由安全界领军企业共同发起起草的渗透测试执行标准。
PTES标准中定义的渗透测试过程获得了业界的普遍认可和支持,具体包括7个阶段,
渗透测试执行标准http://www.pentest-standard.org/
1:前期交互阶段
在前期交互(Pre-Engagement Interaction)阶段,渗透测试团队与客户组织进行交互讨论,最重要的是确定渗透测试的范围、目标、限制条件以及服务合同细节。
该阶段通常涉及收集客户需求、准备测试计划、定义测试范围与边界、定义业务目标、项目管理与规划等活动。
2:情报收集阶段
在目标范围确定之后,将进入情报搜集(Information Gathering)阶段,渗透测试团队可以利用各种信息来源与搜集技术方法,尝试获取更多关于目标组织网络拓扑、系统配置与安全防御措施的信息。
渗透测试者可以使用的情报搜集方法包括公开来源信息查询、Google Hacking、社会工程学、网络踩点、扫描探测、被动监听、服务查点等。而对目标系统的情报探查能力是渗透测试者一项非常重要的技能,情报搜集是否充分在很大程度上决定了渗透测试的成败,因为如果你遗漏关键的情报信息,你将可能在后面的阶段里一无所获。
3:威胁建模阶段
在搜集到充分的情报信息之后,渗透测试团队的成员聚到一起针对获取的信息进行威胁建模(Threat Modeling)与攻击规划。这是渗透测试过程中非常重要的一个关键点。
通过团队共同的缜密情报分析与攻击思路头脑风暴,可以从大量的信息情报中理清头绪,确定出最可行的攻击通道。
4:漏洞分析阶段
在确定出最可行的攻击通道之后,接下来需要考虑该如何取得目标系统的访问控制权,即漏洞分析(Vulnerability Analysis)阶段。
在该阶段,渗透测试者需要综合分析前几个阶段获取并汇总的情报信息,特别是安全漏洞扫描结果、服务查点信息等,通过搜索可获取的渗透代码资源,找出可以实施渗透攻击的攻击点,并在实验环境中进行验证。在该阶段,高水平的渗透测试团队还会针对攻击通道上的一些关键系统与服务进行安全漏洞探测与挖掘,期望找出可被利用的未知安全漏洞,并开发出渗透代码,从而打开攻击通道上的关键路径。
5:渗透攻击阶段
渗透攻击(Exploitation)是渗透测试过程中最具有魅力的环节。在此环节中,渗透测试团队需要利用他们所找出的目标系统安全漏洞,来真正入侵系统当中,获得访问控制权。
渗透攻击可以利用公开渠道可获取的渗透代码,但一般在实际应用场景中,渗透测试者还需要充分地考虑目标系统特性来定制渗透攻击,并需要挫败目标网络与系统中实施的安全防御措施,才能成功达成渗透目的。在黑盒测试中,渗透测试者还需要考虑对目标系统检测机制的逃避,从而避免造成目标组织安全响应团队的警觉和发现
6:后渗透攻击阶段
后渗透攻击(Post Exploitation)是整个渗透测试过程中最能够体现渗透测试团队创造力与技术能力的环节。前面的环节可以说都是在按部就班地完成非常普遍的目标,而在这个环节中,需要渗透测试团队根据目标组织的业务经营模式、保护资产形式与安全防御计划的不同特点,自主设计出攻击目标,识别关键基础设施,并寻找客户组织最具价值和尝试安全保护的信息和资产,最终达成能够对客户组织造成最重要业务影响的攻击途径。
在不同的渗透测试场景中,这些攻击目标与途径可能是千变万化的,而设置是否准确并且可行,也取决于团队自身的创新意识、知识范畴、实际经验和技术能力。
7:报告阶段
渗透测试过程最终向客户组织提交,取得认可并成功获得合同付款的就是一份渗透测试报告(Reporting)。这份报告凝聚了之前所有阶段之中渗透测试团队所获取的关键情报信息、探测和发掘出的系统安全漏洞、成功渗透攻击的过程,以及造成业务影响后果的攻击途径,同时还要站在防御者的角度上,帮助他们分析安全防御体系中的薄弱环节、存在的问题,以及修补与升级技术方案。
渗透测试都做什么?
● 信息收集
信息收集分析是所有入侵攻击的前提/前奏/基础。通过对网络信息收集分析,可以相应地、有针对性地制定模拟黑客入侵攻击的计划,以提高入侵的成功率、减小暴露或被发现的几率。信息收集的方法包括主机网络扫描、操作类型判别、应用判别、账号扫描、配置判别等等。
● 端口扫描
通过对目标地址的TCP/UDP端口扫描,确定其所开放的服务的数量和类型,这是所有渗透测试的基础。通过端口扫描,可以基本确定一个系统的基本信息,结合测试人员的经验可以确定其可能存在,以及被利用的安全弱点,为进行深层次的渗透提供依据。
● 权限提升
通过收集信息和分析,存在两种可能性,其一是目标系统存在重大弱点:测试人员可以直接控制目标系统,然后直接调查目标系统中的弱点分布、原因,形成最终的测试报告;其二是目标系统没有远程重大弱点,但是可以获得远程普通权限,这时测试人员可以通过该普通权限进一步收集目标系统信息。接下来,尽最大努力获取本地权限,收集本地资料信息,寻求本地权限升级的机会。这些不停的信息收集分析、权限升级的结果将构成此次项目整个渗透测试过程的输出。
● 溢出测试
当测试人员无法直接利用帐户口令登陆系统时,也会采用系统溢出的方法直接获得系统控制权限,此方法有时会导致系统死机或从新启动,但不会导致系统数据丢失,如出现死机等故障,只要将系统从新启动并开启原有服务即可。一般情况下,如果未授权,将不会进行此项测试。
● WEB应用测试
Web脚本及应用测试专门针对Web及数据库服务器进行。根据最新的统计,脚本安全弱点为当前Web系统,尤其是存在动态内容的Web系统比较严重的安全弱点之一。利用脚本相关弱点轻则可以获取系统其他目录的访问权限,重则将有可能取得系统的控制权限。因此对于含有动态页面的Web、数据库等系统,Web脚本及应用测试将是必不可少的一个环节。
● SQL注入攻击
SQL注入常见于应用了SQL 数据库后端的网站服务器,入侵者通过提交某些特殊SQL语句,最终可能获取、篡改、控制网站服务器端数据库中的内容。此类漏洞是入侵者最常用的入侵方式之一。
● 检测页面隐藏字段
网站应用系统常采用隐藏字段存储信息。许多基于网站的电子商务应用程序用隐藏字段来存储商品价格、用户名、密码等敏感内容。恶意用户通过操作隐藏字段内容达到恶意交易和窃取信息等行为,是一种非常危险的漏洞。
● 跨站攻击
入侵者可以借助网站来攻击访问此网站的终端用户,来获得用户口令或使用站点挂马来控制客户端。
● Cookie利用
网站应用系统常使用cookies 机制在客户端主机上保存某些信息,例如用户ID、口令、时戳等。入侵者可能通过篡改cookies 内容,获取用户的账号,导致严重的后果。
● 后门程序检查
系统开发过程中遗留的后门和调试选项可能被入侵者所利用,导致入侵者轻易地从捷径实施攻击。
● 第三方软件误配置
第三方软件的错误设置可能导致入侵者利用该漏洞构造不同类型的入侵攻击。