信息安全公益宣传,信息安全知识启蒙。
加微信群回复公众号:微信群;QQ群:16004488
加微信群或QQ群可免费索取:学习教程
教程列表见微信公众号底部菜单
渗透测试,是为了证明网络防御按照预期计划正常运行而提供的一种机制。不妨假设,你的公司定期更新安全策略和程序,时时给系统打补丁,并采用了漏洞扫描器等工具,以确保所有补丁都已打上。如果你早已做到了这些,为什么还要请外方进行审查或渗透测试呢?因为,渗透测试能够独立地检查你的网络策略,换句话说,就是给你的系统安了一双眼睛。而且,进行这类测试的,都是寻找网络系统安全漏洞的专业人士。
一、渗透测试
渗透测试 (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、网络设备渗透
对各种防火墙、入侵检测系统、网络设备进行渗透测试。
下面阅读原文,有啥 ?