[TOC]
渗透测试 (penetration test)并没有一个标准的定义,国外一些安全组织达成共识的通用说法是:渗透测试是通过模拟恶意[黑客](https://baike.baidu.com/item/%E9%BB%91%E5%AE%A2)的攻击方法,来评估[计算机网络系统](https://baike.baidu.com/item/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C%E7%B3%BB%E7%BB%9F)安全的一种评估方法。这个过程包括对系统的任何弱点、技术缺陷或漏洞的主动分析,这个分析是从一个攻击者可能存在的位置来进行的,并且从这个位置有条件主动利用安全漏洞。
换句话来说,渗透测试是指渗透人员在不同的位置(比如从内网、从外网等位置)利用各种手段对某个特定网络进行测试,以期发现和挖掘系统中存在的漏洞,然后输出渗透测试报告,并提交给网络所有者。网络所有者根据渗透人员提供的渗透测试报告,可以清晰知晓系统中存在的安全隐患和问题。
## **渗透测试分类**
### **方法分类**
**1、黑箱测试**
黑箱测试又被称为所谓的“Zero-Knowledge Testing”,渗透者完全处于对系统一无所知的状态,通常这类型测试,最初的信息获取来自于DNS、Web、Email及各种公开对外的服务器。
**2、**[白盒测试](https://baike.baidu.com/item/%E7%99%BD%E7%9B%92%E6%B5%8B%E8%AF%95)
[白盒测试](https://baike.baidu.com/item/%E7%99%BD%E7%9B%92%E6%B5%8B%E8%AF%95)与黑箱测试恰恰相反,测试者可以通过正常渠道向被测单位取得各种资料,包括网络拓扑、员工资料甚至网站或其它程序的代码片段,也能够与单位的其它员工(销售、[程序员](https://baike.baidu.com/item/%E7%A8%8B%E5%BA%8F%E5%91%98)、管理者……)进行面对面的沟通。这类测试的目的是模拟企业内部雇员的越权操作。
**3、隐秘测试**
隐秘测试是对被测单位而言的,通常情况下,接受渗透测试的单位网络管理部门会收到通知:在某些时段进行测试。因此能够监测网络中出现的变化。但隐秘测试则被测单位也仅有极少数人知晓测试的存在,因此能够有效地检验单位中的信息安全事件监控、响应、恢复做得是否到位。
引用自[百度百科](https://baike.baidu.com/item/%E6%B8%97%E9%80%8F%E6%B5%8B%E8%AF%95/7363639)
### **目标分类**
**1、**[主机操作系统](https://baike.baidu.com/item/%E4%B8%BB%E6%9C%BA%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F)渗透
对Windows、Solaris、AIX、Linux、SCO、SGI等操作系统本身进行渗透测试。
**2、**[数据库系统](https://baike.baidu.com/item/%E6%95%B0%E6%8D%AE%E5%BA%93%E7%B3%BB%E7%BB%9F)渗透
对MS-SQL、Oracle、MySQL、Informix、Sybase、DB2、Access等[数据库应用系统](https://baike.baidu.com/item/%E6%95%B0%E6%8D%AE%E5%BA%93%E5%BA%94%E7%94%A8%E7%B3%BB%E7%BB%9F)进行渗透测试。
**3、应用系统渗透**
对渗透目标提供的各种应用,如ASP、CGI、JSP、PHP等组成的WWW应用进行渗透测试。
**4、网络设备渗透**
对各种防火墙、[入侵检测系统](https://baike.baidu.com/item/%E5%85%A5%E4%BE%B5%E6%A3%80%E6%B5%8B%E7%B3%BB%E7%BB%9F)、[网络设备](https://baike.baidu.com/item/%E7%BD%91%E7%BB%9C%E8%AE%BE%E5%A4%87)进行渗透测试。
## **安全审查**
渗透测试旨在证明,网络防御机制的运行与你认为的一样良好。往往系统和[网络管理员](https://baike.baidu.com/item/%E7%BD%91%E7%BB%9C%E7%AE%A1%E7%90%86%E5%91%98)视审查人员或渗透人员为敌人,但实际上他们却是朋友。到位的渗透测试可以证明你的防御确实有效,或者查出问题,帮助你阻挡未来攻击。出钱请自己知道的人来发现网络中的漏洞,总比让自己不知道的人发现漏洞好得多。
渗透测试可以用来向第三方,譬如投资方或者你的管理人员提供网络安全状况方面的具体证据。事实上,你知道网络中存在的漏洞可能已有一段时日,但无法说服管理人员分配必要资源以补救漏洞。光靠自己,网络或安全管理员的意见往往不会被董事会采纳。如果外面的顾问赞同你的评估,或许会有奇迹出现。
有关渗透测试的合同或工作说明应该包括你从所得报告中想要获得的各个方面。如果你请人进行有限的测试,得到的只是计算机生成的报告。而渗透测试的真正价值在于由报告所衍生出的分析。进行测试的一方会详细介绍发现结果,并说明其重要性。在有的地方,测试人员还会提议采取何种补救方法,譬如更新服务器、禁用网络服务、改变[防火墙](https://baike.baidu.com/item/%E9%98%B2%E7%81%AB%E5%A2%99)规则等等。
##** 发展**
如今,大多数攻击进行的是最基本的[漏洞扫描](https://baike.baidu.com/item/%E6%BC%8F%E6%B4%9E%E6%89%AB%E6%8F%8F),如果攻击得逞,目标就岌岌可危。如果攻击者企图对你站点进行[漏洞扫描](https://baike.baidu.com/item/%E6%BC%8F%E6%B4%9E%E6%89%AB%E6%8F%8F),他就会获得大量的[防火墙](https://baike.baidu.com/item/%E9%98%B2%E7%81%AB%E5%A2%99)日志消息,而监控网络的任何[入侵检测系统](https://baike.baidu.com/item/%E5%85%A5%E4%BE%B5%E6%A3%80%E6%B5%8B%E7%B3%BB%E7%BB%9F)(IDS)也会开始发送有关当前攻击的警报。如果你还没有试过,不妨利用[漏洞扫描器](https://baike.baidu.com/item/%E6%BC%8F%E6%B4%9E%E6%89%AB%E6%8F%8F%E5%99%A8)结合IDS对网络来一番试验。别忘了首先获得对方的许可,因为,运行[漏洞扫描器](https://baike.baidu.com/item/%E6%BC%8F%E6%B4%9E%E6%89%AB%E6%8F%8F%E5%99%A8)会使IDS引发警报。
渗透测试也许是你的网络防御工具箱当中的重要武器之一。应该视之为各种安全审查的一部分,但要确保审查人员胜任这项工作。
##** 测试方法**
有些渗透测试人员通过使用两套扫描器进行安全评估。这些工具至少能够使整个过程实现部分自动化,这样,技术娴熟的专业人员就可以专注于所发现的问题。如果探查得更深入,则需要连接到任何可疑服务,某些情况下,还要利用[漏洞](https://baike.baidu.com/item/%E6%BC%8F%E6%B4%9E)。
商用[漏洞扫描](https://baike.baidu.com/item/%E6%BC%8F%E6%B4%9E%E6%89%AB%E6%8F%8F)工具在实际应用中存在一个重要的问题:如果它所做的测试未能获得肯定答案,许多产品往往会隐藏测试结果。譬如,有一款知名扫描器就存在这样的缺点:要是它无法进入Cisco[路由器](https://baike.baidu.com/item/%E8%B7%AF%E7%94%B1%E5%99%A8),或者无法用SNMP获得其[软件版本号](https://baike.baidu.com/item/%E8%BD%AF%E4%BB%B6%E7%89%88%E6%9C%AC%E5%8F%B7),它就不会做出这样的警告:该路由器容易受到某些拒绝服务(DoS)攻击。如果不知道扫描器隐藏了某些信息(譬如它无法对某种[漏洞](https://baike.baidu.com/item/%E6%BC%8F%E6%B4%9E)进行测试),你可能误以为网络是安全的,而实际上,网络的安全状况可能是危险的。
除了找到合适工具以及具备资质的组织进行渗透测试外,还应该准确确定测试范围。攻击者会借助社会工程学、偷窃、贿赂或者破门而入等手法,获得有关信息。真正的攻击者是不会仅仅满足于攻击某个企业网络的。通过该网络再攻击其它公司往往是[黑客](https://baike.baidu.com/item/%E9%BB%91%E5%AE%A2)的惯用伎俩。攻击者甚至会通过这种方法进入企业的ISP。
## **测试技巧**
为了从渗透测试上获得最大价值,应该向测试组织提供尽可能详细的信息。这些组织同时会签署保密协议,这样,你就可以更放心地共享策略、程序及有关网络的其它关键信息。
还要确定的是,哪些系统需要测试。虽然你不想漏掉可能会受到攻击的某个系统,但可能仍想分阶段把渗透测试外包出去,以便每个阶段专注于网络的不同部分。
你还应该制订[测试准则](https://baike.baidu.com/item/%E6%B5%8B%E8%AF%95%E5%87%86%E5%88%99),譬如说:渗透测试人员可以探查漏洞并进行测试,但不得利用,因为这可能会危及到你想要保护的系统。
此外,你还要提供合适的测试途径。如果你想测试在非军事区(DMZ)里面的系统,最好的测试地方就是在[同一个网段](https://baike.baidu.com/item/%E5%90%8C%E4%B8%80%E4%B8%AA%E7%BD%91%E6%AE%B5)内测试。让渗透测试人员在[防火墙](https://baike.baidu.com/item/%E9%98%B2%E7%81%AB%E5%A2%99)外面进行测试听起来似乎更实际,但内部测试可以大大提高发现防火墙原本隐藏的服务器[安全漏洞](https://baike.baidu.com/item/%E5%AE%89%E5%85%A8%E6%BC%8F%E6%B4%9E)的可能性。因为,一旦[防火墙](https://baike.baidu.com/item/%E9%98%B2%E7%81%AB%E5%A2%99)设置出现变动,就有可能暴露这些[漏洞](https://baike.baidu.com/item/%E6%BC%8F%E6%B4%9E),或者有人可能通过漏洞,利用一台DMZ服务器攻击其它服务器。还记得[尼姆达病毒](https://baike.baidu.com/item/%E5%B0%BC%E5%A7%86%E8%BE%BE%E7%97%85%E6%AF%92)吗?它就是首次攻击得逞后、利用一台Web服务器发动其它攻击的。
以外部需要访问的Web或应用服务器为例,你应该考虑与渗透测试人员共享这些应用的[源代码](https://baike.baidu.com/item/%E6%BA%90%E4%BB%A3%E7%A0%81),如果测试涉及这些脚本或程序的话。没有[源代码](https://baike.baidu.com/item/%E6%BA%90%E4%BB%A3%E7%A0%81),很难测试ASP或CGI脚本,事先认定攻击者根本不会看到源代码是不明智的。Web[服务器软件](https://baike.baidu.com/item/%E6%9C%8D%E5%8A%A1%E5%99%A8%E8%BD%AF%E4%BB%B6)里面的漏洞往往会把[脚本](https://baike.baidu.com/item/%E8%84%9A%E6%9C%AC)和应用暴露在远程攻击者面前。如果能够获得应用的[源代码](https://baike.baidu.com/item/%E6%BA%90%E4%BB%A3%E7%A0%81),则可以提高测试该应用的效率。毕竟,你出钱是为了让渗透测试人员查找漏洞,而不是浪费他们的时间。
源自[百度百科](https://baike.baidu.com/item/%E6%B8%97%E9%80%8F%E6%B5%8B%E8%AF%95/7363639)