渗透测试
一、简介
渗透测试(Penetration Testing)是一种通过模拟攻击的技术与方法,挫败目标系统的安全控制措施并获得控制访问权的安全测试方法。
网络渗透测试主要依据CVE(Common Vulnerabilities and Exposures,通用漏洞与披露)已经发现的安全漏洞,模拟入侵者的攻击方法对网站应用、服务器系统和网络设备进行非破坏性质的攻击性测试。
1.目的
侵入系统获取机密信息,并将入侵的过程和细节产生报告提供给用户,由此确定用户系统存在的安全威胁,并能提醒安全管理员完善安全策略,降低安全风险。
2.原则
- 应选择不影响业务系统正常运行的攻击方法
- 合规性:应符合测试规范和法律要求
二、分类
1.根据渗透测试方法分类
- 黑盒测试:将测试对象看作一个黑盒子,完全不考虑测试对象的内部结构和内部特性。
- 白盒测试:把测试对象看作一个打开的盒子,测试人员依据测试对象内部逻辑结构相关信息,设计或选择测试用例。
- 灰盒测试:介于白盒与黑盒之间,是基于对测试对象内部细节有限认知的软件测试方法。
2.根据渗透测试的位置分类
- 内网渗透:模拟客户内部违规操作者的行为,在内网中对目标进行渗透测试。
- 外网渗透:模拟对内部状态一无所知的外部攻击者的行为(包括对网络设备的远程攻击、口令管理安全性测试、防火墙规则试探与规避、Web及其他开放应用服务的安全性测试等),从外网对目标进行渗透测试。
3.根据渗透测试目标分类
- 主机操作系统渗透:对Windows、Solaris、AIX、Linux、SCO、SGI等操作系统本身进行渗透测试。
- 数据库系统渗透:对MS-SQL、Oracle、MySQL、Informix、Sybase、DB2Access等数据库应用系统进行渗透测试。
- 应用系统渗透:对渗透目标提供的各种应用,如ASP、CGI、JSP、PHP等组成的WWW应用进行渗透测试。
- 网络设备渗透:对各种防火墙、入侵检测系统、路由器、交换机等网络设备进行渗透测试。
4.针对Web服务体系架构的渗透测试
- 服务器渗透测试:对服务器自身的安全性(如操作系统、数据库是否存在弱口令等)进行检测。
- 中间件渗透测试:对Apache、IIS、Tomcat、Nginx等Web中间件的漏洞(如配置缺陷、文件解析、反序列化漏洞等)进行检测。
- Web应用渗透测试:对CMS、Blog等Web应用程序的漏洞(如SQL注入、XSSCSRF、文件上传与解析、文件包含、命令执行等)进行检测。
- 业务逻辑渗透测试:对业务逻辑安全性(如验证逻辑问题、会话管理问题、权限控制问题等)进行检测。
三、渗透测试标准与执行流程
1.PTES(Penetration Testing Execution Standard,渗透测试执行标准)
《渗透测试执行标准》(PTES :Penetration Testing Execution Standard)的核心理念是通过建立起进行渗透测试所要求的基本准则基线,来定义一次真正的渗透测试过程,并得到安全业界的广泛认同。
2.执行流程
-
第一阶段——前期交互阶段
在前期交互(Pre-Engagement Interaction)阶段,渗透测试团队与客户组织进行交互讨论,最重要的是确定渗透测试的范围、目标、限制条件以及服务合同细节。
该阶段通常涉及收集客户需求、准备测试计划、定义测试范围与边界、定义业务目标、项目管理与规划等活动。
客户书面授权委托,并同意实施方案是进行渗透测试的必要条件。渗透测试首先必须将实施方法、实施时间、实施人员、实施工具等具体的实施方案提交给客户,并得到客户的相应书面委托和授权。应该做到客户对渗透测试所有细节和风险的知晓,所有过程都在客户的控制下进行。 -
第二阶段——信息收集阶段
信息收集是每一步渗透攻击的前提,通过信息收集可以有针对性地制定模拟攻击测试计划,提高模拟攻击的成功率,同时可以有效地降低攻击测试对系统正常运行造成的不利影响。
信息收集的方法包括DNS探测、操作系统指纹判别、应用判别、账号扫描、配置判别等。信息收集常用的工具:
商业网络安全漏洞扫描软件Nessus、开源安全检测工具Nmap等。 操作系统内置的许多功能(Telnet、Nslookup、IE等)也可以作为信息收集的有效工具。
-
第三阶段——威胁建模阶段
威胁建模主要使用在信息收集分析阶段所获取到的信息,来标识出目标系统上可能存在的安全漏洞与弱点。
在进行威胁建模时,将确定最为高效的攻击方法、所需要进一步获取到的信息、以及从哪里攻破目标系统。
在威胁建模阶段,通常需要将客户组织作为敌手看待,然后以攻击者的视角和思维来尝试利用目标系统的弱点。 -
第四阶段——漏洞分析阶段
漏洞分析阶段主要是从前面几个环节获取的信息中分析和理解哪些攻击途径会是可行的。
特别需要重点分析端口和漏洞扫描结果、攫取到的服务“旗帜”信息以及在信息收集分析环节中得到的其他关键信息。 -
第五阶段——渗透攻击阶段
渗透攻击主要是针对目标系统实施深入研究和测试的渗透攻击,并不是进行大量漫无目的的渗透测试。主要包括:
-
精准打击
-
绕过防御机制
-
定制渗透攻击路径
-
绕过检测机制
-
触发攻击响应控制措施
-
渗透代码测试
-
-
第六阶段——后渗透攻击阶段
后渗透攻击阶段从已经攻陷了客户组织的一些系统或取得域管理员权限之后开始,将以特定业务系统为目标,标识出关键的基础设施,并寻找客户组织最具价值和尝试进行安全保护的信息和资产,并需要演示出能够对客户组织造成最重要业务影响的攻击途径。主要包括:
- 基础设施分析
- 高价值目标识别
- 掠夺敏感信息
- 业务影响攻击
- 掩踪灭迹
- 持续性存在
-
第七阶段——报告阶段
报告是渗透测试过程中最为重要的因素,将使用报告文档来交流在渗透测试过程中做了哪些、如何做的,以及最为重要的一-客户组织如何修复你所发现的安全漏洞与弱点
四、渗透测试 vs APT(Advanced Persistent Threat,高级持续威胁)
1.目的
- 渗透测试的目的是评估计算机网络系统的安全性
- APT的目的是对高价值目标进行有组织、长期持续性的控制
2.手段方法
- 渗透测试通过被允许的行为模拟黑客攻击来对目标系统进行测试“鱼叉”攻击
- APT利用任何各种高技术手段(包括0day漏洞、“水坑”攻击、等)进行攻击
3.结果
- 渗透测试提高了目标系统的安全级别
- APT在达成目的的过程中一般会给目标系统带来严重损失