标题：渗透测试
渗透测试
渗透测试 (penetration test)并没有一个标准的定义，国外一些安全组织达成共识的通用说法是：渗透测试是通过模拟恶意黑客的攻击方法，来评估计算机网络系统安全的一种评估方法。这个过程包括对系统的任何弱点、技术缺陷或漏洞的主动分析，这个分析是从一个攻击者可能存在的位置来进行的，并且从这个位置有条件主动利用安全漏洞。
我们认为渗透测试还具有的两个显著特点是：渗透测试是一个渐进的并且逐步深入的过程。渗透测试是选择不影响业务系统正常运行的攻击方法进行的测试。
作为网络安全防范的一种新技术，对于网络安全组织具有实际应用价值。但要找到一家合适的公司实施渗透测试并不容易。
渗透测试是专业服务
渗透测试有时是作为外部审查的一部分而进行的。这种测试需要探查系统，以发现操作系统和任何网络服务，并检查这些网络服务有无漏洞。你可以用漏洞扫描器完成这些任务，但往往专业人士用的是不同的工具，而且他们比较熟悉这类替代性工具。 
渗透测试的作用一方面在于，解释所用工具在探查过程中所得到的结果。只要手头有漏洞扫描器，谁都可以利用这种工具探查防火墙或者是网络的某些部分。但很少有人能全面地了解漏洞扫描器得到的结果，更别提另外进行测试，并证实漏洞扫描器所得报告的准确性了。
执行网络渗透测试的原因
渗透测试能够通过识别安全问题来帮助一个单位理解当前的安全状况。这使促使许多单位开发操作规划来减少攻击或误用的威胁。 
撰写良好的渗透测试结果可以帮助管理人员建立可靠的商业案例，以便证明所增加的安全性预算或者将安全性问题传达到高级管理层。 
安全性不是某时刻的解决方案，而是需要严格评估的一个过程。安全性措施需要进行定期检查，才能发现新的威胁。渗透测试和公正的安全性分析可以使许多单位重视他们最需要的内部安全资源。此外，独立的安全审计也正迅速成为获得网络安全保险的一个要求。 
现在符合规范和法律要求也是执行业务的一个必要条件，渗透测试工具可以帮助许多单位满足这些规范要求。 
启动一个企业电子化项目的核心目标之一，是实现与战略伙伴、提供商、客户和其他电子化相关人员的紧密协作。要实现这个目标，许多单位有时会允许合作伙伴、提供商、B2B 交易中心、客户和其他相关人员使用可信连接方式来访问他们的网络。一个良好执行的渗透测试和安全性审计可以帮助许多单位发现这个复杂结构中的最脆弱链路，并保证所有连接的实体都拥有标准的安全性基线。 
当拥有安全性实践和基础架构，渗透测试会对商业措施之间的反馈实施重要的验证，同时提供了一个以最小风险而成功实现的安全性框架。
如何进行渗透测试
有些渗透测试人员通过使用两套扫描器进行安全评估。这些工具至少能够使整个过程实现部分自动化，这样，技术娴熟的专业人员就可以专注于所发现的问题。如果探查得更深入，则需要连接到任何可疑服务，某些情况下，还要利用漏洞。 
商用漏洞扫描工具在实际应用中存在一个重要的问题：如果它所做的测试未能获得肯定答案，许多产品往往会隐藏测试结果。譬如，有一款知名扫描器就存在这样的缺点：要是它无法进入Cisco路由器，或者无法用SNMP获得其软件版本号，它就不会做出这样的警告：该路由器容易受到某些拒绝服务（DoS）攻击。如果不知道扫描器隐藏了某些信息（譬如它无法对某种漏洞进行测试），你可能误以为网络是安全的，而实际上，网络的安全状况可能是危险的。 
除了找到合适工具以及具备资质的组织进行渗透测试外，还应该准确确定测试范围。攻击者会借助社会工程学、偷窃、贿赂或者破门而入等手法，获得有关信息。真正的攻击者是不会仅仅满足于攻击某个企业网络的。通过该网络再攻击其它公司往往是黑客的惯用伎俩。攻击者甚至会通过这种方法进入企业的ISP。
方法
为了从渗透测试上获得最大价值，应该向测试组织提供尽可能详细的信息。这些组织同时会签署保密协议，这样，你就可以更放心地共享策略、程序及有关网络的其它关键信息。 
还要确定的是，哪些系统需要测试。虽然你不想漏掉可能会受到攻击的某个系统，但可能仍想分阶段把渗透测试外包出去，以便每个阶段专注于网络的不同部分。 
你还应该制订测试准则，譬如说：渗透测试人员可以探查漏洞并进行测试，但不得利用，因为这可能会危及到你想要保护的系统。 
此外，你还要提供合适的测试途径。如果你想测试在非军事区（DMZ）里面的系统，最好的测试地方就是在同一个网段内测试。让渗透测试人员在防火墙外面进行测试听起来似乎更实际，但内部测试可以大大提高发现防火墙原本隐藏的服务器安全漏洞的可能性。因为，一旦防火墙设置出现变动，就有可能暴露这些漏洞，或者有人可能通过漏洞，利用一台DMZ服务器攻击其它服务器。还记得尼姆达病毒吗？它就是首次攻击得逞后、利用一台Web服务器发动其它攻击的。 
以外部需要访问的Web或应用服务器为例，你应该考虑与渗透测试人员共享这些应用的源代码，如果测试涉及这些脚本或程序的话。没有源代码，很难测试ASP或CGI脚本，事先认定攻击者根本不会看到源代码是不明智的。Web服务器软件里面的漏洞往往会把脚本和应用暴露在远程攻击者面前。如果能够获得应用的源代码，则可以提高测试该应用的效率。毕竟，你出钱是为了让渗透测试人员查找漏洞，而不是浪费他们的时间。
安全审查的一部分
渗透测试旨在证明，网络防御机制的运行与你认为的一样良好。往往系统和网络管理员视审查人员或渗透人员为敌人，但实际上他们却是朋友。到位的渗透测试可以证明你的防御确实有效，或者查出问题，帮助你阻挡未来攻击。出钱请自己知道的人来发现网络中的漏洞，总比让自己不知道的人发现漏洞好得多。 
渗透测试可以用来向第三方，譬如投资方或者你的管理人员提供网络安全状况方面的具体证据。事实上，你知道网络中存在的漏洞可能已有一段时日，但无法说服管理人员分配必要资源以补救漏洞。光靠自己，网络或安全管理员的意见往往不会被董事会采纳。如果外面的顾问赞同你的评估，或许会有奇迹出现。 
有关渗透测试的合同或工作说明应该包括你从所得报告中想要获得的各个方面。如果你请人进行有限的测试，得到的只是计算机生成的报告。而渗透测试的真正价值在于由报告所衍生出的分析。进行测试的一方会详细介绍发现结果，并说明其重要性。在有的地方，测试人员还会提议采取何种补救方法，譬如更新服务器、禁用网络服务、改变防火墙规则等等。
发展
如今，大多数攻击进行的是最基本的漏洞扫描，如果攻击得逞，目标就岌岌可危。如果攻击者企图对你站点进行漏洞扫描，他就会获得大量的防火墙日志消息，而监控网络的任何入侵检测系统（IDS）也会开始发送有关当前攻击的警报。如果你还没有试过，不妨利用漏洞扫描器结合IDS对网络来一番试验。别忘了首先获得对方的许可，因为，运行漏洞扫描器会使IDS引发警报。 
渗透测试也许是你的网络防御工具箱当中的重要武器之一。应该视之为各种安全审查的一部分，但要确保审查人员胜任这项工作。
渗透测试的分类
实际上渗透测试并没有严格的分类方式，即使在软件开发生命周期中，也包含了渗透测试的环节，但根据实际应用，普遍认同的几种分类方法如下：根据渗透方法分类1、黑箱测试 
黑箱测试又被称为所谓的“Zero-Knowledge Testing”，渗透者完全处于对系统一无所知的状态，通常这类型测试，最初的信息获取来自于DNS、Web、Email及各种公开对外的服务器。 
2、白盒测试 
白盒测试与黑箱测试恰恰相反，测试者可以通过正常渠道向被测单位取得各种资料，包括网络拓扑、员工资料甚至网站或其它程序的代码片断，也能够与单位的其它员工（销售、程序员、管理者……）进行面对面的沟通。这类测试的目的是模拟企业内部雇员的越权操作。 
3、隐秘测试 
隐秘测试是对被测单位而言的，通常情况下，接受渗透测试的单位网络管理部门会收到通知：在某些时段进行测试。因此能够监测网络中出现的变化。但隐秘测试则被测单位也仅有极少数人知晓测试的存在，因此能够有效地检验单位中的信息安全事件监控、响应、恢复做得是否到位。根据渗透目标分类1、主机操作系统渗透 
对Windows、Solaris、AIX、Linux、SCO、SGI等操作系统本身进行渗透测试。 
2、数据库系统渗透
对MS-SQL、Oracle、MySQL、Informix、Sybase、DB2、Access等数据库应用系统进行渗透测试。 
3、应用系统渗透 
对渗透目标提供的各种应用，如ASP、CGI、JSP、PHP等组成的WWW应用进行渗透测试。 
4、网络设备渗透 
对各种防火墙、入侵检测系统、网络设备进行渗透测试。