概述
渗透测试(Penetration Testing)是由具备高技能和高素质的安全服务人员发起、并模拟常见黑客所使用的攻击手段对目标系统进行模拟入侵。
渗透测试服务的目的在于充分挖掘和暴露系统的弱点,从而让管理人员了解其系统所面临的威胁。渗透测试工作往往作为风险评估的一个重要环节,为风险评估提供重要的原始参考数据。
渗透测试方法论
1. 信息收集技术
无论是恶意用户的攻击还是安全人员的渗透测试工作,信息采集都是非常必要的一步工作,只有做到了“知己知彼”,才有可能针对被测试目标的弱点进行深度的挖掘和测试工作。
(1) 系统和应用信息收集
通过对远程服务的所启动的服务进行扫描和手工提交等工作,根据其返回信息可以获取远程系统及应用的版本号等信息,对于存在弱点的应用还可以进一步挖掘更多的系统信息,例如:SMB、SNMP等。
(2) 站点信息收集
站点信息主要包括三个部分:WEB服务信息,数据库信息和站点结构。
通过上面所介绍的手段可获取WEB和数据库信息。而若想进一步获取站点结构,需要使用爬虫程序。目前,一般WEB扫描器都具备比较强大的爬虫功能,通过爬虫程序可以快速的遍历出站点结构,这对于后期的漏洞挖掘是必不可少的基础信息。
2. 溢出攻击技术
溢出是比较传统却又很常见的一种漏洞。
溢出攻击的测试过程中,测试人员将根据收集的信息以确认应用或系统的版本,从而判断在当前应用或系统上是否存在已知溢出漏洞和可利用的攻击程序,同时,测试人员会在攻击程序对系统的稳定运行不产生影响的前提下使用攻击程序发起溢出攻击。
3. 口令猜解技术
大部分常见的操作系统及应用均使用帐号/口令的认证方式,因此,在渗透测试过程中,对用户口令的猜解测试也是一个重要的工作环节,天磊卫士在渗透测试过程中,根据系统的不同,至少可以进行以下服务或应用的口令测试:
• SMB/CIFS
• TELNET
• SSH
• FTP
• POP/SMTP/IMAP
• Terminal Service
• MySQL
• MSSQL
• Oracle
• HTTP
• HTTP Form
4. WEB漏洞技术
WEB应用与操作系统不同,WEB应用可很容易的根据用户需求而进行编写,因此,大部分WEB应用并不具备“通用的漏洞”。因此,这就决定了渗透测试人员需具备一定的WEB漏洞挖掘能力,这样才能保证在面对陌生系统时进行有针对性的测试工作。
(1) 跨站脚本
跨站脚本(XSS,Cross Site Script),指服务端程序在接收用户提交信息时没有对信息进行必要的检查或编码而导致页面包含了可能对客户端造成伤害的脚本。跨站脚本直接对客户端浏览器产生影响,如:窃取敏感信息、下载恶意程序、钓鱼等,而由于跨站而形成的XSS Worm可能造成更大的威胁。
测试人员根据经验,在可能出现程序交互的位置插入自己构造的测试脚本进行提交,观察返回结果并判断插入的测试脚本是否生效,如不生效则结合返回结果对测试脚本进行进一步的修正,如此反复最终形成可利用的攻击脚本。
(2) 注入漏洞
注入漏洞中常见的为SQL注入(SQL Injection),SQL注入是指当服务端接受客户端信息时,未对客户端信息进行任何校验就将其送入数据库中进行查询操作,而恶意用户只需对客户端提交信息进行一定的构造,就可以导致数据执行一些危险操作。
类似的,注入漏洞还存在其他方式,如:LDAP注入、XPath注入、系统命令注入等。
测试人员在测试注入漏洞前,会先根据收集到的一些信息判断远程目标系统类型、编写程序脚本所使用的语言以及后台数据库类型等信息,然后结合交互查询过程中产生的信息提交测试脚本,以确认系统是否存在注入漏洞。
(3) 参数错误
参数错误与注入漏洞相似,但一般参数错误漏洞是直接作用在WEB程序本身,而不像注入漏洞那样作用于后台支撑的应用。
参数错误主要是指在程序接收客户端参数时(一般为GET和POST两种参数),对客户端提交参数未做过滤,而同时WEB脚本之间又不具备严格的访问控制,进而导致通过错误的参数直接浏览、修改甚至获得WEB Shell。
对于错误参数的测试,测试人员需对网站的整体结构有一定的了解,通过测试人员对站点结构的精确掌握,构造错误的参数便可能造成恶意修改站点数据。
(4) 信息泄露
信息泄露往往来自多个层面,而其中由于服务配置错误引起的信息泄露最为常见。
测试人员在测试信息泄露时,需收集应用服务器的信息,结合该信息测试人员可确认该应用上可能出现的错误配置,并通过各种手段针对每种可能的错误配置进行逐一排查。
除此之外,测试人员还会结合个人经验对站点的一些目录或文件进行猜解,例如:针对后台管理地址的猜解。
(5) 其他
除以上四种常见WEB漏洞外,还有很多可能造成WEB应用被入侵的问题。例如,最为常见的是口令易被猜解和用户之间存在越权访问,这些问题在漏洞挖掘过程中,测试人员都会根据现场情况并结合个人经验进行必要的测试工作。
渗透测试的必要性
渗透测试是脆弱性评估的一种很好的补充。
同时,由于主持渗透测试的测试人员一般都具备丰富的安全经验和技能,所以其针对性比常见的脆弱性评估会更强、粒度也会更为细致。
另外,渗透测试的攻击路径及手段不同于常见的安全产品,所以它往往能暴露出一条甚至多条被人们所忽视的威胁路径,从而暴露整个系统或网络的威胁所在。
最重要的是,渗透测试最终的成功一般不是因为某一个系统的某个单一问题所直接引起的,而是由于一系列看似没有关联而且又不严重的缺陷组合而导致的。日常工作中,无论是进行怎么样的传统安全检查工作,对于没有相关经验和技能的管理人员都无法将这些缺陷进行如此的排列组合从而引发问题,天磊卫士的渗透测试人员可以靠其丰富的经验和技能将它们进行串联并展示出来。
渗透测试与脆弱性评估区别
渗透测试不同于脆弱性评估,而且在实施方式和方向上也与其有着很大的区别。
脆弱性评估是在已知系统上,对已知的弱点进行排查。渗透测试往往是“黑盒测试”,测试者模拟黑客,不但要在未知系统中发现弱点,而且还要验证部分高危险的弱点,甚至还会挖掘出一些未知的弱点。
测试方式
渗透测试根据测试的位置不同可以分为内部测试和外部测试,根据测试的方法不同分为黑盒测试和白盒测试。
1. 内部测试和外部测试
内部测试是指经过用户授权后,测试人员到达用户工作现场,根据用户的期望测试的目标直接接入到用户的办公网络甚至业务网络中。这种测试的好处就在于免去了测试人员从外部绕过防火墙、入侵保护等安全设备的工作。一般用于检测内部威胁源和路径。
外部测试与内部测试相反,测试人员无需到达客户现场,直接从互联网访问用户的某个接入到互联网的系统并进行测试即可。这种测试往往是应用于那些关注门户站点的用户,主要用于检测外部威胁源和路径。
2. 黑盒测试和白盒测试
黑盒测试是指测试人员对除目标系统的IP或域名以外的信息一无所知的情况下对系统发起的测试工作,这种方式可以较好的模拟黑客行为,了解外部恶意用户可能对系统带来的威胁。
白盒测试则是指测试人员通过用户授权获取了部分信息的情况下进行的测试,如:目标系统的帐号、配置甚至源代码。这种情况用户模拟并检测内部的恶意用户可能为系统带来的威胁。
目标对象的选择
为更大程度的避免风险的产生,渗透测试还经常选择对备份系统进行测试。因为备份系统与在线系统所安装的应用和承载的数据差异较小,而其稳定性要求又比在线系统低,因此,选择对备份系统进行测试也是规避风险的一种常见方式。
对于企业而言,做渗透测试有什么好处?
随着安全事件的频频发生,国家越发重视信息安全,在互联网时代下,企业更该重视安全工作,提高网络安全意识。
1.明确安全隐患点
渗透测试是一个从空间到面再到点的过程,测试人员模拟黑客的入侵,从外部整体切入最终落至某个威胁点并加以利用,最终对整个网络产生威胁,以此明确整体系统中的安全隐患点。
2. 提高安全意识
如上所述,任何的隐患在渗透测试服务中都可能造成“千里之堤溃于蚁穴”的效果,因此渗透测试服务可有效督促管理人员杜绝任何一处小的缺陷,从而降低整体风险。
3. 提高安全技能
在测试人员与用户的交互过程中,可提升用户的技能。另外,通过专业的渗透测试报告,也能为用户提供当前流行安全问题的参考。
最后
以上就是听话路人为你收集整理的何为渗透测试的全部内容,希望文章能够帮你解决何为渗透测试所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复