渗透测试(Penetration Test)是完全模拟黑客可能使用的攻击技术和漏洞发现技术,对目标系统的安全做深入的探测,发现系统脆弱的环节。渗透测试能够直观的让管理人员知道自己网络所面临的问题。
  实际上渗透测试并没有严格的分类方式,即使在软件开发生命周期中,也包含了渗透测试的环节:
  但根据实际应用,普遍认同的几种分类方法如下:
  根据渗透方法分类
  黑盒测试
  黑盒测试又被称为所谓的“Zero-Knowledge Testing”,渗透者完全处于对系统一无所知的状态,通常这类型测试,初的信息获取来自于DNS、Web、Email及各种公开对外的服务器。
  白盒测试
  白盒测试与黑盒测试恰恰相反,测试者可以通过正常渠道向被测单位取得各种资料,包括网络拓扑、员工资料甚至网站或其它程序的代码片断,也能够与单位的其它员工(销售、程序员、管理者……)进行面对面的沟通。这类测试的目的是模拟企业内部雇员的越权操作。
  隐秘测试
  隐秘测试是对被测单位而言的,通常情况下,接受渗透测试的单位网络管理部门会收到通知:在某些时段进行测试。因此能够监测网络中出现的变化。但隐秘测试则被测单位也仅有极少数人知晓测试的存在,因此能够有效地检验单位中的信息安全事件监控、响应、恢复做得是否到位。
  根据渗透目标分类
  主机操作系统渗透
  对Windows、Solaris、AIX、Linux、SCO、SGI等操作系统本身进行渗透测试。
  数据库系统渗透
  对MS-SQL、Oracle、MySQL、Informix、Sybase、DB2等数据库应用系统进行渗透测试。
  应用系统渗透
  对渗透目标提供的各种应用,如ASP、CGI、JSP、PHP等组成的WWW应用进行渗透测试。
  网络设备渗透
  对各种防火墙、入侵检测系统、网络设备进行渗透测试。
  从攻方视角看渗透
  攻方既包括了潜在的黑客、入侵者,也可能是经过企业授权的安全专家。在很多黑客的视角中,世界上永远没有不可能渗透的目标,差别仅在时间和耐性上。
  目前我们仅仅从授权渗透的角度来讨论渗透测试的攻击路径及可能采用的技术手段。
  测试目标不同,涉及需要采用的技术也会有一定差异,因此下面简单说明在不同位置可能采用的技术。
  内网测试
  内网测试指的是渗透测试人员由内部网络发起测试,这类测试能够模拟企业内部违规操作者的行为。主要的“优势”是绕过了防火墙的保护。内部主要可能采用的渗透方式:远程缓冲区溢出,口令猜测,以及B/S或C/S应用程序测试(如果涉及C/S程序测试,需要提前准备相关客户端软件供测试使用)。
  外网测试
  外网测试指的是渗透测试人员完全处于外部网络(例如拨号、ADSL或外部光纤),模拟对内部状态一无所知的外部攻击者的行为。包括对网络设备的远程攻击,口令管理安全性测试,防火墙规则试探、规避,Web及其它开放应用服务的安全性测试。
  不同网段/Vlan之间的渗透
  这种渗透方式是从某内/外部网段,尝试对另一网段/Vlan进行渗透。这类测试通常可能用到的技术包括:对网络设备的远程攻击;对防火墙的远程攻击或规则探测、规避尝试。
  信息的收集和分析伴随着每一个渗透测试步骤,每一个步骤又有三个组成部分:操作、响应和结果分析。
  端口扫描
  通过对目标地址的TCP/UDP端口扫描,确定其所开放的服务的数量和类型,这是所有渗透测试的基础。通过端口扫描,可以基本确定一个系统的基本信息,结合安全工程师的经验可以确定其可能存在,以及被利用的安全弱点,为进行深层次的渗透提供依据。
  远程溢出
  这是当前出现的频率高、威胁严重,同时又是容易实现的一种渗透方法,一个具有一般网络知识的入侵者可以在很短的时间内利用现成的工具实现远程溢出攻击。
  对于防火墙内的系统同样存在这样的风险,只要对跨接防火墙内外的一台主机攻击成功,那么通过这台主机对防火墙内的主机进行攻击易如反掌。
  口令猜测
  口令猜测也是一种出现概率很高的风险,几乎不需要任何攻击工具,利用一个简单的暴力攻击程序和一个比较完善的字典,可以猜测口令。
  对一个系统账号的猜测通常包括两个方面:首先是对用户名的猜测,其次是对密码的猜测。
  本地溢出
  所谓本地溢出是指在拥有了一个普通用户的账号之后,通过一段特殊的指令代码获得管理员权限的方法。使用本地溢出的前提是首先要获得一个普通用户密码。也是说由于导致本地溢出的一个关键条件是设置不当的密码策略。
  多年的实践证明,在经过前期的口令猜测阶段获取的普通账号登录系统之后,对系统实施本地溢出攻击,能获取不进行主动安全防御的系统的控制管理权限。
  脚本及应用测试
  eb脚本及应用测试专门针对Web及数据库服务器进行。根据新的技术统计,脚本安全弱点为当前Web系统,尤其是存在动态内容的Web系统比较严重的安全弱点之一。利用脚本相关弱点轻则可以获取系统其他目录的访问权限,重则将有可能取得系统的控制权限。因此对于含有动态页面的Web、数据库等系统,Web脚本及应用测试将是必不可少的一个环节。在Web脚本及应用测试中,可能需要检查的部份包括:
  ◆检查应用系统架构,防止用户绕过系统直接修改数据库;
  ◆检查身份认证模块,用以防止非法用户绕过身份认证;
  ◆检查数据库接口模块,用以防止用户获取系统权限;
  ◆检查文件接口模块,防止用户获取系统文件;
  ◆检查其他安全威胁;
  无线测试
  中国的无线网络还处于建设时期,但是由于无线网络的部署简易,在一些大城市的普及率已经很高了。北京和上海的商务区至少80%的地方都可以找到接入点。
  通过对无线网络的测试,可以判断企业局域网安全性,已经成为越来越重要的渗透测试环节。
  除了上述的测试手段外,还有一些可能会在渗透测试过程中使用的技术,包括:社交工程学、拒绝服务攻击,以及中间人攻击。