风险评估中的渗透测试

    [多云 August 11, 2008 12:36 | by !4p47hy ]
作者:冷漠 (C.R.S.T)    来源:http://www.lengmo.net

最近一直出差在外在做项目,在评估项目中学到很多东西,也积累了一点经验,总想抽时间整理下,也算是对自己前一段时间的工总结吧。

本次要总结的是关于风险评估项目中的渗透测试,可能提到渗透测试,大家就会想到黑客入侵,而渗透测试和黑客入侵的最大区别在于渗透测试是经过客户授权的,采用可控制、非破坏性质的方法和手段发现目标服务器和网络设备中存在的弱点。

渗透测试只是风险评估项目中一部分,一个完整的评估项目应包括管理评估和技术评估两方面,而管理类评估主要从管理制度、人员的访谈、问卷调查等几方面展开,技术类评估采用的主要手段是工具扫描、人工评估、应用评估、渗透测试、网络架构评估等。渗透测试只是技术评估的一个部分,它和工具扫描互相补充,因为大家都知道工具扫描有很高的效率和速度,但是因为软件的局限性,在实际的扫描中会存在一定的漏报和误报的问题,不能发现高层次、复杂性的安全问题,这时就需要渗透测试作为补充。
一个完整的渗透测试流程应包括范围的确定、制定方案、具体的实施、撰写报告几部分构成,具体如下图:



下面将从以上几个方面谈谈个人对渗透测试的理解

一、 确定渗透测试范围

在我们进行渗透测试之前,首先要知道我们渗透的目标是什么?这个目标即是客户给出的渗透测试的范围,明确了渗透测试的范围,下面我们要做的是制定渗透测试方案。

二、
制定渗透测试方案

渗透测试方案是对渗透测试工作的说明,即向用户展示你在渗透测试过程可能会采取的测试手段以及工具的说明等。下面给出一份渗透测试方案的整体框架:

1、目标
2、范围
3、渗透测试的必要性
4、渗透测试的可行性
5、系统备份和恢复措施
6、风险规避

目标 :阐述本次渗透测试的目标是什么?即通过渗透测试我们能帮助用户发现哪些问题?譬如发现服务器和网络设备中存在的弱点和威胁等。

范围: 说明渗透测试的范围,渗透测试都会有范围的限定,即用户会给定范围,可能是一个应用系统或者一个IP 地址甚至整个内网,这便是渗透测试的范围。渗透测试原则上是不允许对授权范围外的主机和网络设备进行渗透的。

渗透测试的必要性:主要说明为什么要做渗透测试?渗透测试能帮助解决哪些问题等。

渗透测试的可行性:因为一般客户对渗透测试不是很了解,通常会将渗透测试和黑客入侵归于同一类,因此我们在渗透测试方案中要向用户说明什么是渗透测试?渗透测试的流程和采取的方法与手段是什么?以及渗透测试可能会采用的工具有哪些?譬如:

AppScan 扫描web应用的基础架构,进行安全漏洞测试并提供可行的报告和建议。

Acunetix Web Vulnerability Scanner 网络漏洞扫描工具,通过网络爬虫测试你的网站安全,检测流行的攻击方式等,它会自动检查您的网页程序漏洞,例如SQL注入、跨网站脚本和验证页面弱密码破解。

WebInspect 用于网络应用程序扫描工具。

thc-orakel Oracle测试工具

系统备份和恢复措施: 虽然渗透测试采用的是可控制、非破坏性质方法,但在实际的渗透测试过程中可能会发生不可预知的风险,所以在渗透测试前要提醒用户进行渗透测试前要进行系统的备份。防止在出现问题时,可以及时的恢复。

风险规避: 主要对渗透测试中可能发生的风险进行说明,并针对这些风险我们将采取哪些手段进行有效的控制。譬如渗透测试的扫描不采用带有拒绝服务的策略、渗透测试安排在业务低峰期进行等。值得提醒的是在渗透测试过程中,如果发现被评估系统发生服务停止或者服务器宕机的现象,应立即停止测试,并联系客户的管理人员进行原因的分析,在查明原因后方可继续进行测试。

三、 渗透测试的实施

渗透测试的具体实施,即模拟黑客攻击的手段,对被评估系统进行渗透。一般渗透测试采取的步骤如下图:




对于以上的渗透测试过程,大家都很熟悉了,因为这些都是经常使用的一些方法,采取的手段无非是以上几种。但需要说明的是在内网渗透中,最大的安全隐患是弱口令的的问题。我们在渗透内网时,应在渗透过程中,根据用户的密码规律制定字典,因为内网的管理员一般都会管理多台机器,在我们通过弱口令等方式进入一台服务器时,应通过抓取HASH 、破解 SAM 等方式来收集当前服务器上的密码,密码应包括但不限于以下几个方面:

1、系统管理密码
2、FTP 密码
3、应用系统密码(通常在配置文件可以查看到)
4、远程管理工具的密码,如 PcAnywherRadminVNC

将这些密码做成字典,然后对目标机器进行扫描,一般都会得到一定的信息。

另外一个值得注意的是截图的问题,因为在渗透测试结束后,我们要根据渗透测试的结果撰写渗透测试报告,在报告中要使用图片来展现我们的渗透结果。在截图时,也有一定的技巧。因为渗透测试报告和我们平时看到的黑客入侵的文章不一样,区别在于面向的读者是不一样的,渗透测试的阅读者往往是安全部门的主管和高层领导等,他们往往对黑客攻击不是很了解,举例来说我们截3389 远程桌面的图远不如截数据库里的数据来得有说服力,很多领导可能你和他说我获得了系统权限,他并不认为有什么危害,而如果你告诉他你获得他们的敏感数据,譬如财务数据、客户数据等,他就会觉得这是一个很严重的问题。

四、 撰写渗透测试报告

渗透测试报告是提交给用户的最终成果,渗透测试报告应将你渗透过程中采用的方法和手段进行说明,这个过程和我们平常写入侵类的教程相似,即漏洞的发现 --> 漏洞的利用 --> 获取权限 --> 权限的提升等。报告的最后应给出漏洞的加固建议,值得注意的是加固建议的可操作性。譬如 SQL 注入,对于懂得 SQL 注入的人来说,你和他说过滤相关敏感函数、进行输入输出验证等,他就会明白,而对于用户来说,应该更详细,最好能详细到每一步的操作步骤。关于渗透测试报告,根据自己的经验总结如下几点:

1、 渗透测试报告应考虑报告阅读者的技术层次,报告应力求通俗易懂,但又不能过多的透露详细的技术细节。前面已经提过,渗透测试报告不是黑客入侵教程,我们只需将发现漏洞的过程以及漏洞的危害阐述清楚即可,而不是将每一步使用了哪些方法甚至命令都详细的罗列出来。

2、 报告应注重用户关心的方面。很多用户关心的是数据的安全,而对于系统的隐患并不会有太多的关注。譬如一个财务系统,获取了财务数据远比获取系统权限来得有说服力。

3、 渗透测试报告应体现你的工作成果。这里的成果并不是你获取了哪些数据或者系统权限,而是本次渗透测试你到底做了哪些工作?因为渗透测试是靠运气和技术的,并不是每次渗透都能获得结果。在我们没有获得任何结果的情况下,我们怎样撰写报告?我们不可能只写一句话“本次渗透测试没有发现任何问题!”,这会让用户有种被欺骗的感觉!他们会认为自己花的钱没有体现出价值。所以我们必须要在渗透测试报告中说明我们尝试了哪些方法和手段?譬如使用了 SQL 注入、跨站、Sniffer 等方法,但是没有发现问题,最后定论用户的系统是安全的。这样会让用户觉得自己花钱来请你做渗透测试是值得的,毕竟你做这么多的工作。这一点是比较重要的,因为在实际的评估项目中,渗透没有结果的情况,是经常发生的,渗透测试人员应学会在渗透没有获得任何结果的情况下,撰写渗透测试报告。

4、 渗透测试报告应注意细节的美观。细节方面主要是文档的排版。一份好的渗透测试报告,应当给人一种专业的感觉,而不是随便写写,这也是对自己的工作态度的一种展示,千万不要给用户留下不专业的感觉。

以上只是个人在渗透测试项目的一点看法和总结,因技术有限,难免有遗漏的地方,大家作为参考吧。

InfoSecurity | Comments(8) | Trackbacks(0) | Reads(11199)
shutd0wn
February 16, 2009 23:37
不错,有点思想了。
ArtHack Homepage
August 23, 2008 12:44
写的不错,做业务有时候不光是靠技术,而是要善于突破老板的心理防线。你所说的“举例来说我们截3389 远程桌面的图远不如截数据库里的数据来得有说服力,很多领导可能你和他说我获得了系统权限,他并不认为有什么危害,而如果你告诉他你获得他们的敏感数据,譬如财务数据、客户数据等,他就会觉得这是一个很严重的问题。”这就是一个很好的开始。
加油……
从容
August 15, 2008 09:28
好文章
小子哥
August 13, 2008 06:46
文章写的很全zanzanzan
00amxku
August 12, 2008 22:43
zanzan
laozang Homepage
August 11, 2008 19:12
安全检测,报告最重要...
po
August 11, 2008 18:32
很好很强大
报告写的不错love
冷焰
August 11, 2008 13:54
客户所关注的是渗透测试会跟他们的业务或者系统造成多大的影响,所以渗透测试的结果往往不是很全面的,因为局限太多.所以专业只能凸显在文档上.
Pages: 1/1 First page 1 Final page
Add a comment
Emots
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
Enable HTML
Enable UBB
Enable Emots
Hidden
Nickname   Password   Optional
Site URI   Email   [Register]
               

Security code Case insensitive