渗透测试是模拟恶意攻击者的技术与方法,挫败目标系统安全控制措施,取得访问控制权,并发现具备业务影响后果安全隐患的一种安全测试与评估方法。
渗透过程最主要的底层基础是目标系统中存在安全漏洞(指信息系统中存在的缺陷或不适当的配置,可使攻击者在未授权情况下访问或破坏系统,导致信息系统面临安全风险。漏洞不同于bug,bug是不正确的配置所导致出现的一种错误,而漏洞是硬件、软件或者网络协议存在一定缺陷。)
利用安全漏洞来造成入侵或者破坏效果的程序就被称为渗透代码(Exploit)或者漏洞利用代码。(POC:漏洞验证程序 RCE:远程命令执行)
黑盒测试(black-box testing)/外部测试(external testing):从远程网络位置评估网络基础设施,并没有任何目标网络拓扑等相关信息。完全模拟真实网络环境中的外部攻击者,采用流行的攻击技术与工具,有组织有步骤地对目标组织进行逐步渗透和入侵,揭示目标网络中一些已知或未知的安全漏洞,并评估这些漏洞能否被利用,以获取控制权或者操作业务造成资产损失等。优点:有利于挖掘潜在漏洞,以及脆弱环节和薄弱点。缺点:费时费力,同时需要渗透测试者具备较高技术能力。
白盒测试(white-box testing)/内部测试(internet testing):测试者可了解关于目标环境的所有内部和底层信息,以最小代价发现和验证系统中最严重的漏洞。与黑盒测试的区别在于无须进行目标定位和情报收集。测试者可从被测试机构获取网络拓扑甚至是网站程序的代码片段等资料,也可与单位其他员工进行面对面沟通。优点:发现和解决安全漏洞所花费的时间和代价比黑盒测试少很多。缺点:无法有效地测试客户组织的应急响应程序,也无法判断其安全防护计划对特定攻击的检测效率。
灰盒测试(grey-box testing):白+黑组合,可对目标系统更加深入和全面的安全审查。好处是能够同时发挥两种测试方法的优势。采用灰盒测试的外部渗透攻击场景中,渗透测试者也类似地需要从外部逐步渗透进目标网络,但他所拥有的目标底层网络拓扑与架构将有助于更好的选择攻击途径与方法,从而达到更好的渗透测试效果。
渗透测试——目标分类
1.主机操作系统渗透:对Windows、AIX、Linux、SCO、SGI等操作系统进行渗透。
2.数据库系统渗透:对MySQL、oracle、MS-SQL、informix、Sybase、DB2、Access等数据库应用系统进行渗透测试。
3.应用系统渗透:对渗透目标提供的各种应用,如ASP、CGI、JSP、PHP等组成的WWW应用进行渗透测试。
4.网络设备渗透:对各种防火墙、入侵检测系统、网络设备进行渗透测试。
渗透测试过程环节(PTES)
1.前期交互阶段(pre-engagement interaction):最重要的是确定测试范围、目标、限制条件以及服务合同细节
2.情报搜集阶段(information gathering):尝试获取更多关于目标组织网络拓扑、系统配置与安全防御措施的信息。测试者可使用的情报搜集方法包括公开来源信息查询、google、hacking、社会工程学、网络踩点、扫描探测、被动监听、服务查点等。而对目标系统的情报探查能力是渗透测试者一项非常重要的技能,情报搜集是否充分在很大程度上决定了渗透测试的成败,因为如果你遗漏关键的情报信息,你将可能在后面的阶段里一无所获。
3.威胁建模阶段(threat modeling):对所获取的信息进行威胁建模与攻击规划,确定最可行的攻击通道。
4.漏洞分析阶段(vulnerability analysis):确定攻击通道后,开始考虑如何取得目标系统的访问控制权。
5.渗透攻击阶段(exploitasion):利用所找出的目标系统安全漏洞入侵系统,获得访问控制权。渗透攻击可以利用公开渠道可获取的渗透代码,但一般在实际应用场景中,渗透测试者还需要充分考虑目标系统特性来定制渗透攻击,并需要挫败目标网络系统中实施的安全防御措施,才能成功达到渗透的目的。在黑盒测试中,渗透测试者还需要考虑对目标检测系统机制的逃逸,从而避免造成目标组织安全响应团队的警觉和发现。
6.后渗透攻击阶段(post exploitation)(记得清除痕迹):根据目标组织的业务经营模式、保护资产形式与安全防护计划的不同特点,自主设计出攻击目标,识别关键基础设施,并寻找客户组织最具价值和尝试安全保护的信息和资产,最终达成能够对客户组织造成最重要业务影响的攻击途径。
7.报告阶段(reporting):渗透报告凝聚了之前所以阶段之中渗透测试团队所获取的关键情报信息、探测和发掘出的系统安全漏洞、成功渗透攻击的过程,以及造成业务影响后果的攻击途径。同时还要站在防御者的角度上分析安全防御体系中的薄弱环节、存在的问题,以及修补与升级技术方案。